Skip to content

Latest commit

 

History

History
91 lines (64 loc) · 4.41 KB

File metadata and controls

91 lines (64 loc) · 4.41 KB

入口模块介绍

简体中文 | English

本文档主要介绍Sermant入口模块

组成部分

source文件夹下:

  • common目录,存放公共内容。
    • BootArgsBuilder类,用于加载启动配置。
    • PathDeclarer类,用于声明相关资源的路径。
  • exception目录,存放自定义异常。
  • AgentPremain类,为JavaAgent入口,详见使用方式

resources文件夹下:

  • config/bootstrap.properties文件,为启动配置文件,将被BootArgsBuilder类加载出来,连同启动入参共同构成启动参数Map

使用方式

入口模块打包输出JavaAgent入口包sermant-agent.jar,在执行Java命令时,可以添加如下参数带起Sermant

-javaagent:sermant-agent.jar[=${options}]

其中${options}为启动入参,会作为premain方法的入参agentArgs传入。

public static void premain(String agentArgs, Instrumentation inst);

参数agentArgs的格式要求形如key1=value1,key1=value1[(,keyN=valueN)...],以','分割键值对,以'='分割键值,形成Map结构。

其中需要注意的是,agentArgs中必须包含一个keyappName的键值对,因此启动时添加的Java命令参数准确来说应该如下:

-javaagent:sermant-agent.jar=appName=${appName}[,${otherOptions}]

其中${appName}表示应用名称,${otherOptions}表示其他参数。

更多JavaAgent相关内容可以参见官方文档对java.lang.instrument包的详解

功能解析

入口模块作为Sermant的入口,起到的是将程序带入核心功能的作用,入口类AgentPremain所做的工作包括:

  • 防止Sermant被宿主多次带起(JavaAgent命令中添加了复数的Sermant入口包)。
  • 加载核心功能包,这里使用系统类加载器加载。
  • agentArgs和启动配置bootstrap.properties封装为启动参数Map
  • 调用核心功能入口AgentCoreEntrance带起核心功能
  • 注意,带起核心功能时需要将路径相关参数传递进去,这里将这些路径相关参数封装到启动参数Map中。这也说明Sermant AgentCore Premain需要做到对目录、文件位置的把控。

启动参数

启动参数指的是入参agentArgs和启动配置bootstrap.properties封装起来的配置Map,优先取前者的值。启动参数中固定内容如下:

入参键 启动配置键 启动参数键 含义 默认值 不为空 备注
appName app.name appName 应用名称 / 入参中必须存在
instanceName instance.name instanceName 实例名称 default /
appType app.type appType 应用类型 0 /
env env env / / /
envTag env.tag envTag / / /
business business business / / /
subBusiness sub.business subBusiness / / /
envSecret env.secret envSecret / / /
accessKey access.key access.key / / /
secretKey secret.key secret.key / / /
masterAddress master.address master.address / / /
/ / agentPath 入口包目录 入口包目录 无需配置
/ / bootPath / / 已废弃
/ / pluginsPath / / 已废弃
/ / sermant.config.file 统一配置文件 统一配置文件 无需配置
/ / sermant.plugin.setting.file 插件设定文件 插件设定文件 无需配置
/ / sermant.plugin.package.dir 插件包目录 插件包目录 无需配置
/ / sermant.log.setting.file 日志配置文件 日志配置文件 无需配置

入参agentArgs中可以为启动参数配置更多地值,他们可能会在统一配置系统中使用到。

相关文档

文档名称
核心模块介绍
后端模块介绍

返回Sermant说明文档