更新时间:2022-12-19 GMT+08:00

配置应用发现规则

应用发现是指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
表1 过滤规则

过滤规则

举例

如果进程的“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规则的场景下,组件名和应用名配对使用,必须同时设置组件名和应用名信息,取值优先级如下:

  • 应用名称取值优先级:
    1. 取进程的启动命令中“Dapm_application”字段的值。
    2. 如果1为空,则取环境变量“JAVA_TOOL_OPTIONS”中“Dapm_application”字段的值。
    3. 如果2为空,则取环境变量“PAAS_MONITORING_GROUP”的值。
    4. 如果3为空,则取进程的启动命令中“DAOM.APPN”字段的值。
  • 组件名称取值优先级:
    1. 取进程的启动命令中“DAOM.PROCN”字段的值,如果为空则取“Dapm_tier”字段的值。
    2. 如果1为空,则取环境变量“JAVA_TOOL_OPTIONS”中“Dapm_tier”字段的值。
    3. 如果2为空,则取环境变量“PAAS_APP_NAME”的值。
如下示例所示,则组件名为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
Default_Rule(可停用)
  • 如果进程的“COMMAND”列的值为“java”,则组件名依次按照优先级从命令行中的jar包名、命令行中主类名、命令行中第一个非-开头的关键字获取,应用名使用默认值unknownapplicationname。
  • 如果进程的“COMMAND”列的值为“python”,则组件名取命令行中第一个py/pyc脚本名,应用名使用默认值unknownapplicationname。
  • 如果进程的“COMMAND”列的值为“node”,则组件名取命令行中第一个js脚本名,应用名使用默认值unknownapplicationname。

自定义发现规则

  1. 在左侧导航栏中选择“配置管理 > 应用发现”。
  2. 单击“添加自定义应用发现规则”,配置应用发现规则。
  3. 选择预探测主机。

    1. 自定义一个规则规则名称(例如,rule-test)。
    2. 选择一个典型的主机(例如,host-test),用于在应用发现规则配置过程中预验证规则的有效性,最终在哪些主机上执行本规则,将会在6进行配置。完成后单击“下一步”。

  4. 设置应用发现规则。

    1. 单击“添加检查项”,使满足检查项的进程能被AOM发现。
      AOM将发现满足检查项的进程,例如,命令行参数包含“ovs-vswitchd unix:”,且环境变量中包含“SUDO_USER=paas”的进程。
      • 为了能精准的探测到符合您预期的进程,建议您在添加检查项时,填写进程的独有特征,即填写更容易识别出预期进程的关键字作为检查项。
      • 您至少要添加一条检查项,检查项您最多可添加5条。当有多条检查项时,所有检查项同时满足,AOM才能发现进程。
    2. 添加检查项完成后,单击“开始探测”,查找符合的进程。

      如果20s后未探测到符合条件的进程,您需要修改发现规则后继续探测;如果探测到符合的进程,将可进入下一步的操作,否则不能进入后续操作。

  5. 设置应用名称及组件名称。

    设置应用名称。
    1. 设置应用名称。

      在“应用名称设置”下单击“添加命名项”,为已发现的进程设置应用名。

      • 若您未设置应用名,则应用名默认为unknownapplicationname。
      • 当添加了多条命名项时,所有命名项将拼接在一起作为进程的应用名,同应用件的指标将被汇聚在一起。
    2. 设置组件名称。
      输入应用类型后,在“组件名称设置”下单击“添加命名项”,为已发现的进程设置组件名。例如,添加固定文字"app-test"拼接起来作为组件名。
      • 应用类型用于标记应用的分类,仅用于规则分类和界面展示,可以填写任意字段。如按技术栈分类可写Java,Python。按作用分类可填写collector(采集),database(数据库)等。
      • 若您未设置组件名,则组件名默认为unknownapplicationname。
      • 当添加了多条命名项时,所有命名项将拼接在一起作为进程的组件名,同组件的指标将被汇聚在一起。
    3. 预览组件名称。

      若不符合要求,您可在“组件名称预览”表中单击对其重新命名。

  6. 设置优先级和探测范围。

    1. 设置优先级:优先级即当有多个规则时,优先使用哪个规则发现组件。您可输入1~9999,数字越小优先级越高,例如,1优先级最高,9999优先级最小。
    2. 配置探测范围:选择可探测的主机,即已配置规则将会在哪个主机上执行。如果不选任何主机,规则将会在所有主机上执行,包含后续新增的主机。

  7. 单击“添加”,完成配置。AOM会采集进程的指标数据。
  8. 等待大约两分钟后,您可在左侧导航栏中选择“监控 > 组件监控”,在集群下拉列表框中选择主机,找到已被监控的组件。

更多应用发现规则操作

应用发现规则添加完成后,您还可以执行表2中的操作。

表2 相关操作

操作

说明

查看规则详情

在“名称”列单击规则的名称。

启、停规则

  • 单击“操作”列的“启用”。
  • 单击“操作”列的“停用”。停用后,AOM将不采集进程的指标数据。

删除规则

  • 删除一个发现规则:在“操作”列选择“删除”。
  • 删除一个或多个发现规则:选中一个或多个发现规则前的复选框,单击页面上方的“删除”。
说明:

内置发现规则不支持删除操作。

修改规则

在“操作”列选择“修改”。

说明:

内置发现规则不支持修改操作。