应用发现是指AOM通过配置的规则发现和收集您主机上部署的应用和关联的指标。从是否需要您来操作的角度区分应用发现方式,则有两种,自动发现和手动配置。本章节介绍手动配置操作。
- 自动发现
您的主机安装ICAgent后,ICAgent会根据内置发现规则发现主机上的应用,并呈现在“应用监控”界面。
- 手动配置
您可在“应用发现”界面添加一条自定义的应用发现规则,并应用至已安装ICAgent的主机上,ICAgent会根据您配置的应用发现规则发现主机上的应用,并呈现在“应用监控”界面。
过滤规则
ICAgent会在目标主机上进行周期性探测,类似ps -e -o pid,comm,lstart,cmd | grep -v defunct命令的效果,查出目标主机的所有进程。然后将每一个进程分别与过滤规则(过滤规则详见下表)进行匹配。如果进程满足过滤规则,则进程会被过滤掉,不会被AOM发现;如果进程不满足过滤规则,则进程不会被过滤,会被AOM发现。
探测结果类似如下回显信息:
PID COMMAND STARTED CMD
1 systemd Tue Oct 2 21:12:06 2018 /usr/lib/systemd/systemd --switched-root --system --deserialize 20
2 kthreadd Tue Oct 2 21:12:06 2018 [kthreadd]
3 ksoftirqd/0 Tue Oct 2 21:12:06 2018 (ksoftirqd/0)
1140 tuned Tue Oct 2 21:12:27 2018 /usr/bin/python -Es /usr/sbin/tuned -l -P
1144 sshd Tue Oct 2 21:12:27 2018 /usr/sbin/sshd -D
1148 agetty Tue Oct 2 21:12:27 2018 /sbin/agetty --keep-baud 115200 38400 9600 hvc0 vt220
1154 docker-containe Tue Oct 2 21:12:29 2018 docker-containerd -l
unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim
docker-containerd-shim --start-timeout 2m --state-dir
/var/run/docker/libcontainerd/containerd --runtime docker-runc
--metrics-interval=0
过滤规则
过滤规则 | 举例 |
---|---|
如果进程的“COMMAND”列的值为“docker-containe”、“vi”、“vim”、“pause”、“sshd”、“ps”、“sleep”、“grep”、“tailf”、“tail”或“systemd-udevd”,且为非容器内的进程,则该类进程会被过滤掉,不会被AOM发现。 | 例如,上面信息中“PID”为“1154”的进程,因为其“COMMAND”列的值为“docker-containe”,所以该进程不会被AOM发现。 |
如果进程的“CMD”列的值以“[”开头,且以“]”结尾,则该类进程会被过滤掉,不会被AOM发现。 | 例如,上面信息中“PID”为“2”的进程,因为其“CMD”列的值为“[kthreadd]”,所以该进程不会被AOM发现。 |
如果进程的“CMD”列的值以“(”开头,且以“)”结尾,则该类进程会被过滤掉,不会被AOM发现。 | 例如,上面信息中“PID”为“3”的进程,因为其“CMD”列的值为“(ksoftirqd/0)”,所以该进程不会被AOM发现。 |
如果进程的“CMD”列的值以“/sbin/”开头,则该类进程会被过滤掉,不会被AOM发现。 | 例如,上面信息中“PID”为“1148”的进程,因为其“CMD”列的值以“/sbin/”开头,所以该进程不会被AOM发现。 |
内置应用发现规则
AOM提供了Sys_Rule和Default_Rule两个内置的发现规则,ServiceStage提供了servicestage-default-rule内置发现规则,内置的发现规则会在所有主机上执行,包括后续新增的主机。三个内置发现规则的优先级为:Sys_Rule>servicestage-default-rule>Default_Rule。规则内容如下:
Sys_Rule (不能停用)
- 组件名优先取命令行“-Dapm_tier”的值,其次取环境变量“PAAS_APP_NAME”的值,最后取环境变量“JAVA_TOOL_OPTIONS”中“-Dapm_tier”的值。
- 应用名优先取命令行“-Dapm_application”的值,其次取环境变量“PAAS_MONITORING_GROUP”的值,最后取环境变量“JAVA_TOOL_OPTIONS”中“-Dapm_application”的值。
如下示例所示,则组件名为atps-demo,应用名为atpd-test。
PAAS_MONITORING_GROUP=atpd-test
PAAS_APP_NAME=atps-demo
JAVA_TOOL_OPTIONS=-javaagent:/opt/oss/servicemgr/ICAgent/pinpoint/pinpoint-bootstrap.jar
-Dapm_application=atpd-test -Dapm_tier=atps-demo
servicestage-default-rule (可停用)
探测环境变量中包含"CAS_APPLICATION_NAME","CAS_COMPONENT_NAME","CAS_ENVIRONMENT_NAME"的进程。
获取环境变量名为"CAS_COMPONENT_NAME"对应的值拼接起来作为组件名称。
获取环境变量名为"CAS_APPLICATION_NAME"对应的值拼接起来作为应用名称。
Default_Rule (可停用)
- 如果进程的“COMMAND”列的值为“java”,则组件名依次按照优先级从命令行中的jar包名、命令行中主类名、命令行中第一个非-开头的关键字获取,应用名使用默认值unknownapplicationname。
- 如果进程的“COMMAND”列的值为“python”,则组件名取命令行中第一个py/pyc脚本名,应用名使用默认值unknownapplicationname。
- 如果进程的“COMMAND”列的值为“node”,则组件名取命令行中第一个js脚本名,应用名使用默认值unknownapplicationname。
自定义应用发现规则
步骤 1 在左侧导航栏中选择“配置管理 > 应用发现”。
步骤 2 单击“添加自定义应用发现规则”,配置应用发现规则。
步骤 3 选择预探测主机。
- 自定义一个规则规则名称(例如,ruletest)。
- 选择一个典型的主机(例如,hhhhhh-27465),用于在应用发现规则配置过程中预验证规则的有效性,最终在哪些主机上执行本规则,将会在步骤6进行配置。完成后单击“下一步”。
步骤 4 设置应用发现规则。
- 单击“添加检查项”,使满足检查项的进程能被AOM发现。
AOM将发现满足检查项的进程,例如,命令行参数包含“ovs-vswitchd unix:”,且环境变量中包含“SUDO_USER=paas”的进程。
说明为了能精准的探测到符合您预期的进程,建议您在添加检查项时,填写进程的独有特征,即填写更容易识别出预期进程的关键字作为检查项。
您至少要添加一条检查项,检查项您最多可添加5条。当有多条检查项时,所有检查项同时满足,AOM才能发现进程。
- 添加检查项完成后,单击“开始探测”,查找符合的进程。
如果20s后未探测到符合条件的进程,您需要修改发现规则后继续探测;如果探测到符合的进程,将可进入下一步的操作,否则不能进入后续操作。
步骤 5 设置组件名称。
- 设置组件名称。
在“组件名称设置”下单击“添加命名项”,为已发现的进程设置组件名。例如,添加固定文字"app-test"拼接起来作为组件名。
说明若您未设置组件名,则组件名默认为unknownapplicationname。
当添加了多条命名项时,所有命名项将拼接在一起作为进程的组件名,同名组件的指标将被汇聚在一起。
- 预览组件名称。
若不符合要求,您可在“组件名称预览”表中单击对其重新命名。
步骤 6 设置优先级和探测范围。
- 设置优先级:优先级即当有多个规则时,优先使用哪个规则发现组件。您可输入1~9999,数字越小优先级越高,例如,1优先级最高,9999优先级最小。
- 配置探测范围:选择可探测的主机,即已配置规则将会在哪个主机上执行。如果不选任何主机,规则将会在所有主机上执行,包含后续新增的主机。
步骤 7 单击“添加”,完成配置。AOM会采集进程的指标数据。
步骤 8 等待大约两分钟后,您可在左侧导航栏中选择“监控 > 组件监控”,在集群下拉列表框中选择主机(例如,hhhhhh-27465),找到已被监控的组件(例如,/openvswitch/)。
更多应用发现规则操作
应用发现规则添加完成后,您还可以执行下表中的操作。
相关操作
操作 | 说明 |
---|---|
查看规则详情 | 在“名称”列单击规则的名称。 |
启、停规则 | * 单击“操作”列的“启用”。* 单击“操作”列的“停用”。停用后,AOM将不采集进程的指标数据。 |
删除规则 | * 删除一个发现规则:在“操作”列的“更多”下拉列表框中选择“删除”。* 删除一个或多个发现规则:选中一个或多个发现规则前的复选框,单击页面上方的“删除”。说明 内置发现规则不支持删除操作。 |
修改规则 | 在“操作”列的“更多”下拉列表框中选择“修改”。 说明 内置发现规则不支持修改操作。 |