监视操作系统进程

安装 Instana 代理后,系统进程传感器将自动部署并安装。

配置

进程异常终止

Instana 代理程序可以自动检测受监视进程的进程异常终止(例如,死机),以及主机上受监视进程的内存不足杀手事件问题的发出和结果。

需求

  • 只有在 AMD64 体系结构上的 Linux 上才支持检测异常进程终止和内存耗尽的情况。 需要 4.8 或更高版本的 Linux 内核,或者在 RHEL 的情况下需要 Linux 内核 3.10.0-957 或更高版本。
  • 要安装 debugfs,这是 Instana 主机代理程序所支持的所有 Linux 操作系统(Amazon Linux 1 除外)的情况。

检测到异常

异常终止
  • 退出,具有错误状态码,例如,exit 1
  • 通过 kill(也称为 SIGKILL)终止该进程
  • 分段故障
  • 未处理的信号

在流程的仪表板上显示异常流程终止。

内存不足终结者

内存不足杀手事件是由操作系统或容器运行时发送到名为目标流程的进程的事件,该事件所耗用的内存(如:“已分配”)超过所允许的内存。 然后,目标进程可以决定终止,或者指示要改为终止其进程中的哪些进程。

例如,选择要终止的子流程的用例是处理诸如 NGINX 或 PHP-FPM 之类的领导工作程序体系结构,其中领导流程管理工作并将工作委托给工作程序流程,这些工作程序通常会消耗比领导更多的资源。

在 Instana 中,根据两个专用事件记录了内存不足杀手事件:

  • 进程上的 Out of memory 事件表示该进程对内存不足杀手事件的接收;该进程所导致的事件文档已终止,以简化对目标进程未终止自身时所发生情况的了解。
  • 由于 Out of memory 事件而终止了流程的 Killed by out of memory killer 事件文档。 由于 uncaught SIGKILL signal 记录了流程终止的发生方式,因此 Killed by out of memory killer 事件与 Abnormal Termination 事件一起出现。

根据目标是决定终止自身还是终止其某个子代,Instana 中有两种可能的情况:

  • 如果目标流程决定终止其自身,那么您将在目标流程上看到三个事件:Out of memory 事件、Killed by out of memory killer 事件,当然还有 Abnormal Termination 事件。

    在接收到内存不足的致命事件后决定终止自身的目标进程。

  • 如果目标流程选择了其中一个要终止的子流程,那么您将看到目标流程上的 Out of memory 事件,以及所选的子流程上的 Killed by out of memory killerAbnormal Termination 事件。

作为旁注:您可能认为 Abnormal TerminationKilled by out of memory killer 是多余的。 但情况并非如此:它们解释了流程终止的两个不同方面:Abnormal Termination 事件说明了如何Killed by out of memory killer 事件说明了为什么。 此外,我们发现它提供了更好的用户体验,能够找到所有看起来一样的 Abnormal Termination 事件,而无论这些事件是由于内存不足而发生的还是其他原因而发生的。

停用

可以通过 configuration.yaml 文件中的下列设置来禁用异常进程终止的检测:

com.instana.plugin.ebpf:
  enabled: false
 

定制进程

Instana 自动监控更高层级传感器的进程指标,例如 Java 或 MySQL。 若要监控 Instana 默认情况下无法检测到的操作系统级进程,您可以按照以下示例进行配置:

com.instana.plugin.process:
  poll_rate: 3 # values are in seconds. Default value is 3 seconds.
  processes:
    - 'sshd'
    - 'slapd'
  arguments:
    - 'config'
    - 'port'
  services:
    - 'upower.service'
    - 'polkit.service'
 

处理

要在 Instana 中监控特定进程,必须在配置文件的 processes: 部分中以列表形式添加进程名称。 Instana 自动监控名称与您提供的字符串匹配的任何进程。 例如,如果你在 processes: 中列出 sshd slapd 和 , Instana 就会监控所有名称中包含 sshdslapd 或 的进程。

参数

要在 Instana 中根据特定参数监控特定进程,您必须在配置文件的 “arguments:” 部分将这些关键字以列表形式添加进去。 Instana 自动监控任何其参数键或值与您提供的字符串匹配的进程。 例如,如果你在参数中添加 configport 和 , Instana 将会监控所有在参数中包含 config port 或 的进程。

服务

要在 Instana 中监控 Linux 上的特定服务,您必须在配置文件的 services: 部分中以列表形式添加这些服务名称。 Instana 自动监控名称与您指定的字符串匹配的任何服务。 例如,如果您在 services: 中列出 upower.service polkit.service 和 , Instana 将会监控所有与这些名称匹配的服务。

自愿和非自愿的上下文切换

注:此功能仅在基于 Linux 的操作系统上受支持。

您可以通过编辑主机的代理程序配置文件 (/opt/instana/agent/etc/instana/configuration.yaml) 来手动启用上下文切换监视:

...
com.instana.plugin.process:
  ctx_switches_enabled: true
 

操作系统进程环境变量

Instana 的流程传感器会自动捕获任何受监视流程的所有环境变量。 因为环境通常包含敏感或机密数据,所以过程传感器在过滤时将考虑任何已配置的私钥。

有关配置密钥的更多信息,请参阅 “代理配置密钥

您还可以通过编辑主机代理程序配置文件 (/opt/instana/agent/etc/instana/configuration.yaml) 来手动禁用对流程环境变量的监视,如下所示:

...
com.instana.plugin.process:
  env_vars_enabled: false
 

配置私钥

指标收集

要查看指标,请在 Instana 用户界面的侧边栏中选择 “基础设施 ”,点击特定的受监控主机,随后您将看到一个主机仪表板,其中包含所有已收集的指标和受监控的进程。

配置数据

  • PID
  • 可执行文件
  • 开始
  • 用户
  • 最多打开文件数
  • 参数

绩效指标

CPU 使用率

CPU 使用率值以百分比表示:usersystem。 这些值将在选定时间段内显示在图形上。

数据点:Filesystem

粒度:3 秒

规范化的 CPU 使用率

归一化 CPU 使用率值显示了进程在执行用户模式和系统模式代码时所占用的 CPU 资源比例(以百分比表示)。 这些值将在选定时间段内显示在图形上。

数据点:Filesystem

粒度:3 秒

内存

内存使用情况值(字节);virtualresidentshare。 这些值将在选定时间段内显示在图形上。

数据点:Filesystem

粒度:3 秒

打开文件数

打开文件的值 used 为总数字,current 为百分比。 这些值将在选定时间段内显示在图形上。

打开文件 currentmax 在操作系统上可用时将可视。

数据点:Filesystem

粒度:3 秒

上下文切换次数

进程被上下文切换的次数;voluntarynonvoluntary。 这些值将在选定时间段内显示在图形上。

数据点:Filesystem

粒度:3 秒

健康指标

每个传感器都有一个精心组织的运行状况特征符知识库,可以根据传入指标对这些指示符进行持续评估,并这些指示符可用于根据用户影响触发问题或事件。

内置事件会根据实体的健康状态签名出现异常而触发问题或事件,而自定义事件则会根据特定实体的某个指标的阈值触发问题或事件。

有关操作系统进程传感器的内置事件的信息,请参阅内置事件引用