应用发现
应用发现是指AOM通过配置的规则发现和收集您主机上部署的应用和关联的指标。从是否需要您来操作的角度区分应用发现方式,则有两种,自动发现和手动配置。本章节介绍手动配置操作。
- 自动发现
您的主机安装ICAgent后,ICAgent会根据内置发现规则发现主机上的应用,并呈现在“应用监控”界面。
- 手动配置
您可在“应用发现”界面添加一条自定义的应用发现规则,并应用至已安装ICAgent的主机上,ICAgent会根据您配置的应用发现规则发现主机上的应用,并呈现在“应用监控”界面。
过滤规则
ICAgent会在目标主机上进行周期性探测,类似ps -e -o pid,comm,lstart,cmd | grep -v defunct命令的效果,查出目标主机的所有进程。然后将每一个进程分别与过滤规则(过滤规则详见表1)进行匹配。如果进程满足过滤规则,则进程会被过滤掉,不会被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两个内置的发现规则,内置的发现规则会在所有主机上执行,包括后续新增的主机。其中Sys_Rule优先级大于Default_Rule,即优先在主机上执行Sys_Rule,如果满足Sys_Rule,则不执行Default_Rule,如果不满足Sys_Rule,则执行Default_Rule。规则内容如下:
Sys_Rule(不能停用)
使用Sys_Rule规则的场景下,组件名和应用名配对使用,必须同时设置组件名和应用名信息,取值优先级如下:
- 应用名称取值优先级:
- 组件名称取值优先级:
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
- 如果进程的“COMMAND”列的值为“java”,则组件名依次按照优先级从命令行中的jar包名、命令行中主类名、命令行中第一个非-开头的关键字获取,应用名使用默认值unknownapplicationname。
- 如果进程的“COMMAND”列的值为“python”,则组件名取命令行中第一个py/pyc脚本名,应用名使用默认值unknownapplicationname。
- 如果进程的“COMMAND”列的值为“node”,则组件名取命令行中第一个js脚本名,应用名使用默认值unknownapplicationname。
自定义发现规则
- 登录AOM 2.0控制台。
- 在左侧导航栏中选择“基础设施监控 > 进程监控”,在右侧区域选择“应用发现”页签,进入“应用发现”页面。
- 单击“添加自定义应用发现规则”,配置应用发现规则。
- 选择预探测主机。
- 自定义一个规则名称(例如,rule-test)。
- 选择一个典型的主机(例如,host-test),用于在应用发现规则配置过程中预验证规则的有效性,最终在哪些主机上执行本规则,将会在7进行配置。完成后单击“下一步”。
- 设置应用发现规则。
- 设置应用名称及组件名称。
- 设置优先级和探测范围。
- 设置优先级:优先级即当有多个规则时,优先使用哪个规则发现组件。您可输入1~9999,数字越小优先级越高,例如,1优先级最高,9999优先级最小。
- 配置探测范围:选择可探测的主机,即已配置规则将会在哪个主机上执行。如果不选任何主机,规则将会在所有主机上执行,包含后续新增的主机。
- 单击“添加”,完成配置。AOM会采集进程的指标数据。
- 等待大约两分钟后,您可在左侧导航栏中选择“进程监控 > 组件监控”,找到已被监控的组件。
更多应用发现规则操作
应用发现规则添加完成后,您还可以执行表2中的操作。