本文档主要介绍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中必须包含一个key为appName的键值对,因此启动时添加的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中可以为启动参数配置更多地值,他们可能会在统一配置系统中使用到。
| 文档名称 |
|---|
| 核心模块介绍 |
| 后端模块介绍 |