配置参数:Zabbix agent

概述

配置参数可用于自定义 Zabbix agent 的行为。

请在配置文件(zabbix_agentd.conf)中指定参数值。除非明确说明该参数为必填项,否则所有参数均为可选

本页结构如下:

  • 参数概览(要查看某个参数的完整详情,请点击其名称)
  • 参数详情
Parameter Description
Alias 为监控项键设置别名。
AllowKey 允许执行与模式匹配的监控项键。
AllowRoot 允许 agent 以 root 身份运行。
BufferSend 设置将值从缓冲区发送到 Zabbix 服务器/proxy 的频率。
BufferSize 设置内存缓冲区中的最大值数量。
DebugLevel 设置调试级别。
DenyKey 拒绝执行与模式匹配的监控项键。
EnableRemoteCommands 允许来自 Zabbix 服务器的远程命令。
HeartbeatFrequency 设置心跳消息的发送频率(秒)。
HostInterface 指定主机接口。
HostInterfaceItem 指定用于获取主机接口的监控项。
HostMetadata 指定主机元数据。
HostMetadataItem 指定一个 Zabbix agent 监控项用于获取主机元数据。
Hostname 指定主机名。
HostnameItem 指定一个 Zabbix agent 监控项用于获取主机名。
Include 指定要包含到配置文件中的目录或单个文件。
ListenBacklog 设置 TCP 队列中待处理连接的最大数量。
ListenIP 指定 agent 用于接收来自服务器/proxy 连接的监听 IP 地址。
ListenPort 指定 agent 监听端口。
LoadModule 指定 agent 启动时要加载的模块。
LoadModulePath 指定 agent 模块所在位置的完整路径。
LogFile 指定 agent 日志文件。
LogFileSize 设置日志文件的最大大小。
LogRemoteCommands 将已执行的 shell 命令作为警告进行记录。
LogType 指定日志输出类型。
MaxLinesPerSecond 在处理 loglogrt 主动检查时,设置每秒发送到 Zabbix 服务器/proxy 的新增行最大数量。
PidFile 指定 PID 文件。
RefreshActiveChecks 指定刷新主动检查列表的频率。
Server 指定 Zabbix 服务器/proxy 的 IP 地址或 DNS 名称。
ServerActive 指定用于获取主动检查的 Zabbix 服务器/proxy 地址或集群配置。
SourceIP 指定源 IP 地址。
StartAgents 设置用于处理被动检查的 zabbix_agentd 预先 fork 的实例数量。
Timeout 指定与 Zabbix proxy 或服务器建立连接并交换数据时的等待时间(秒)。
TLSAccept 指定入站连接所需的加密级别。
TLSCAFile 指定包含用于对等证书验证的顶级 CA 证书的文件完整路径名,用于 Zabbix 组件之间的加密通信。
TLSCertFile 指定包含 agent 证书或证书链的文件完整路径名,用于 Zabbix 组件之间的加密通信。
TLSCipherAll 指定 GnuTLS 优先级字符串或 OpenSSL(TLS 1.2)密码字符串。覆盖基于证书和 PSK 的加密默认密码套件选择标准。
TLSCipherAll13 指定 OpenSSL 1.1.1 或更新版本在 TLS 1.3 中使用的密码字符串。覆盖基于证书和 PSK 的加密默认密码套件选择标准。
TLSCipherCert 指定 GnuTLS 优先级字符串或 OpenSSL(TLS 1.2)密码字符串。覆盖基于证书的加密默认密码套件选择标准。
TLSCipherCert13 指定 OpenSSL 1.1.1 或更新版本在 TLS 1.3 中使用的密码字符串。覆盖基于证书的加密默认密码套件选择标准。
TLSCipherPSK 指定 GnuTLS 优先级字符串或 OpenSSL(TLS 1.2)密码字符串。覆盖基于 PSK 的加密默认密码套件选择标准。
TLSCipherPSK13 指定 OpenSSL 1.1.1 或更新版本在 TLS 1.3 中使用的密码字符串。覆盖基于 PSK 的加密默认密码套件选择标准。
TLSConnect 指定连接到 Zabbix 服务器或 proxy 所需的加密级别。
TLSCRLFile 指定包含已吊销证书的文件完整路径名。此参数用于 Zabbix 组件之间的加密通信。
TLSKeyFile 指定包含 agent 私钥的文件完整路径名,用于 Zabbix 组件之间的加密通信。
TLSPSKFile 指定包含 agent 预共享密钥的文件完整路径名,用于与 Zabbix 服务器的加密通信。
TLSPSKIdentity 指定预共享密钥标识字符串,用于与 Zabbix 服务器的加密通信。
TLSServerCertIssuer 指定允许的服务器(proxy)证书颁发者。
TLSServerCertSubject 指定允许的服务器(proxy)证书主题。
UnsafeUserParameters 允许将所有字符作为参数传递给用户自定义参数。
User 将权限降级为系统上某个特定的、已存在的用户。
UserParameter 指定要监控的用户自定义参数。
UserParameterDir 指定 UserParameter 命令的默认搜索路径。

请注意:

  • 默认值反映的是守护进程默认值,而不是随软件提供的配置文件中的值。
  • 值支持环境变量
  • Zabbix 仅支持 UTF-8 编码且不含BOM的配置文件。
  • 以 "#" 开头的注释仅在行首支持。

参数详情

别名

为监控项键设置一个别名。 它可用于用更短、更简单的键替代较长且复杂的监控项键。
可以存在多个 Alias 参数。 不允许存在多个具有相同 Alias 键的参数。
不同的 Alias 键可以引用同一个监控项键。
Alias 可用于 HostMetadataItem,但不能用于 HostnameItem 参数。

示例 1:检索用户 'zabbix' 的 ID。

Alias=zabbix.userid:vfs.file.regexp[/etc/passwd,"^zabbix:.:([0-9]+)",,,,\1]

现在可以使用 zabbix.userid 简写键来检索数据。

示例 2:使用默认和自定义参数获取 CPU 利用率。

Alias=cpu.util:system.cpu.util
Alias=cpu.util[*]:system.cpu.util[*]

这允许使用 cpu.util 键获取带默认参数的 CPU 利用率百分比,也可以使用 cpu.util[all, idle, avg15] 获取特定的 CPU 利用率数据。

示例 3:运行多个处理相同发现项的 low-level discovery 规则。

Alias=vfs.fs.discovery[*]:vfs.fs.discovery

现在可以使用 vfs.fs.discovery 并为每条规则设置不同参数来配置多个发现规则,例如 vfs.fs.discovery[foo]vfs.fs.discovery[bar] 等。

AllowKey

允许执行与模式匹配的监控项键。 键模式是一个通配符表达式,支持使用 "*" 字符匹配任意数量的任意字符。
可与 DenyKey 结合定义多个键匹配规则。 参数会按照其出现顺序逐一处理。 另请参见:限制 agent 检查

AllowRoot

允许 agent 以 root 身份运行。 如果禁用且 agent 由 root 启动,agent 将尝试切换到用户 zabbix。 如果在普通用户下启动,则无效。

默认值:0
取值:0 - 不允许;1 - 允许

BufferSend

设置将缓冲区中的值发送到 Zabbix 服务器/proxy 的频率(单位:秒)。

默认值:5
范围:1-3600

BufferSize

设置内存缓冲区中值的最大数量。
如果缓冲区已满,agent 将把所有已收集的数据发送到 Zabbix 服务器或 proxy。

默认值:100
范围:2-65535

DebugLevel

设置调试级别:
0 - 关于 Zabbix 进程启动和停止的基本信息
1 - 关键信息;
2 - 错误信息;
3 - 警告;
4 - 用于调试(会产生大量信息);
5 - 扩展调试(会产生更多信息)。

默认值:3
范围:0-5

DenyKey

拒绝执行与模式匹配的监控项键。 键模式是一个通配符表达式,支持使用 "*" 字符匹配任意数量的任意字符。
可与 AllowKey 组合定义多个键匹配规则。 参数会按照其出现顺序逐个处理。 另请参见:限制 agent 检查

EnableRemoteCommands

允许来自 Zabbix 服务器的远程命令。
此参数已弃用,请改用 AllowKey=system.run[*] 或 DenyKey=system.run[*]。
它是 AllowKey/DenyKey 参数的内部别名,具体取决于取值:
0 - DenyKey=system.run[*]
1 - AllowKey=system.run[*]

默认值:0
取值:0 - 不允许,1 - 允许

HeartbeatFrequency

设置心跳消息的发送频率,单位为秒。 用于监控主动检查的可用性。
0 - 禁用心跳消息。

默认值:60
范围:0-3600

HostInterface

指定在主机 自动注册 期间使用的主机接口(IP 地址或 DNS 名称)。 此值将用于填充新创建主机中的接口,并允许显式配置 IP 或 DNS 地址。 更多详情,请参见 将 DNS 用作默认接口

如果未定义,则该值将从 HostInterfaceItem 获取。

如果该值超过 255 个字符的限制,agent 将报错且不会启动。

范围:0-255 个字符

HostInterfaceItem

指定一个监控项,用于在主机自动注册期间确定主机接口(IP 地址或 DNS 名称)。 仅当未定义 HostInterface 时,才会使用此值。 有关更多详细信息,请参见将 DNS 用作默认接口

在自动注册请求期间,如果指定监控项返回的值超过 255 个字符的限制,agent 将记录一条警告消息。

无论 AllowKey/DenyKey 设置如何,均支持 system.run[] 监控项。

HostMetadata

指定用于在主机自动注册(active agent)期间识别或区分主机的元数据。 HostMetadata 允许在主机名之外区分不同的主机。

如果未定义,则该值将从 HostMetadataItem 获取。

如果指定的值超过 2034 字节,或为非 UTF-8 字符串,agent 将报错且不会启动。 当某个参数需要 IP 地址或 DNS 名称时,虽然值可能是有效的 UTF-8,但如果不是有效的 IP 或 DNS 名称,也会被拒绝并报告为无效。

不支持多行元数据 — 输出将在第一个换行处被截断。

范围:0-2034 字节

HostMetadataItem

指定一个 Zabbix agent 监控项,用于获取主机元数据。 仅当未定义 HostMetadata 时使用此选项。

HostMetadataItem 的值会在每次自动注册尝试时获取,并且仅在主机自动注册过程中使用(active agent)。 HostMetadataItem 允许在主机名之外进一步区分不同的主机。

支持用户参数和别名。 无论 AllowKey/DenyKey 设置如何,均支持 system.run[] 监控项。

在自动注册请求期间,如果指定监控项返回的值超过 65535 个 UTF-8 码点,agent 将记录一条警告消息。 监控项返回的值必须是 UTF-8 字符串,否则将被忽略。 当某个参数期望的是 IP 地址或 DNS 名称时,虽然值可能是有效的 UTF-8,但如果不是有效的 IP 或 DNS 名称,也会被拒绝并报告为无效。

不支持多行元数据 — 输出将在第一个换行处被截断。

主机名

指定唯一且区分大小写的主机名。使用逗号分隔的列表。
这是主动检查所必需的,并且必须与服务器上配置的主机名匹配。
如果未定义,则从 HostnameItem 获取该值。
允许的字符:字母数字、'.'、' '、'_' 和 '-'。 每个主机名的最大长度:128 个字符,整行最大长度:2048 个字符。

默认值:由 HostnameItem 设置

HostnameItem

指定一个用于获取主机名的 Zabbix agent 监控项。
仅当未定义 Hostname 时,才会使用此选项。
不支持用户参数或别名,但无论 AllowKey/DenyKey 的值如何,均支持 system.run[] 监控项。

默认值:system.hostname

包含

指定要包含到配置文件中的目录或单个文件。
若只想包含指定目录中相关的文件,支持使用星号通配符进行模式匹配。
有关限制,请参见 special notes

示例:

Include=/absolute/path/to/config/files/*.conf
ListenBacklog

设置 TCP 队列中待处理连接的最大数量。
默认值是一个硬编码常量,具体取决于系统。
支持的最大值也取决于系统,过高的值可能会被静默截断为“implementation-specified maximum”。

默认值: SOMAXCONN
范围: 0 - INT_MAX

ListenIP

指定 agent 用于接收来自服务器/proxy 连接的监听 IP 地址。使用逗号分隔的列表。

默认值:0.0.0.0

ListenPort

指定 agent 用于接收来自服务器/proxy 连接的监听端口。

默认值:10050
范围:1024-32767

LoadModule

指定在 agent 启动时加载的模块。
模块用于扩展 agent 的功能。
该模块必须位于 LoadModulePath 指定的目录中,或者在模块名称之前提供路径。 如果前面的路径是绝对路径(以 '/' 开头),则会忽略 LoadModulePath。
格式:
LoadModule=<module.so>
LoadModule=<path/module.so>
LoadModule=</abs_path/module.so>
允许包含多个 LoadModule 参数。

LoadModulePath

指定 agent 模块所在位置的完整路径。
默认值取决于编译选项。

LogFile

指定 agent 日志文件。

必填:是,如果 LogType 设置为 file;否则不是

LogFileSize

设置最大日志文件大小(以 MB 为单位)。
0 - 禁用自动日志轮转。
注意:如果达到日志文件大小限制且文件轮转因任何原因失败,现有日志文件将被截断并重新开始。

默认值:1
范围:0-1024

LogRemoteCommands

将已执行的 shell 命令记录为警告。
仅当命令是远程执行时才会记录。
如果 system.run[] 由 HostMetadataItem、HostInterfaceItem 或 HostnameItem 参数在本地启动,则不会创建日志条目。

默认值:0
取值:0 - 禁用,1 - 启用

LogType

指定日志输出类型:
file - 将日志写入由 LogFile 参数指定的文件;
system - 将日志写入 syslog;
console - 将日志写入标准输出。

默认值:file

MaxLinesPerSecond

设置在处理 loglogrt 主动检查时,每秒发送到 Zabbix 服务器/proxy 的最大新行数。
所提供的值将被 'log' 或 'logrt' 监控项键中的 'maxlines' 参数覆盖。
注意:Zabbix 处理的新行数将是 MaxLinesPerSecond 设置值的 10 倍,以便在日志监控项中查找所需字符串。

默认值:20
范围:1-1000

PidFile

指定 PID 文件。

默认值:/tmp/zabbix_agentd.pid

RefreshActiveChecks

指定刷新主动检查列表的频率,单位为秒。
请注意,在刷新主动检查失败后,下一次刷新将于 60 秒后尝试。

默认值:5
范围:1-86400

服务器

指定 Zabbix 服务器/proxy 的 IP 地址,或可选使用 CIDR 表示法,或者 DNS 名称。以逗号分隔的列表。
仅会接受来自此处列出的主机的传入连接。 如果启用了 IPv6 支持,则 '127.0.0.1'、'::127.0.0.1'、'::ffff:127.0.0.1' 会被视为相同,且 '::/0' 将允许任何 IPv4 或 IPv6 地址。 '0.0.0.0/0' 可用于允许任何 IPv4 地址。 请注意,“IPv4-compatible IPv6 addresses”(0000::/96 前缀)受支持,但已被 RFC4291 弃用。 允许使用空格。

示例:

Server=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.example.com

必填:是,如果未将 StartAgents 显式设置为 0

ServerActive

指定用于获取主动检查的 Zabbix 服务器/proxy 地址或集群配置。
服务器/proxy 地址是 IP 地址或 DNS 名称,并可选端口,二者之间用冒号分隔。
集群配置是一个或多个服务器或 proxy 组成员地址,地址之间用分号分隔。 可以指定多个 Zabbix 服务器/集群和 Zabbix proxy,彼此之间用逗号分隔。 除非使用 proxy 组,否则每个 Zabbix 服务器/集群不应指定多个 Zabbix proxy。 如果指定了 Zabbix proxy,则不应再指定该 proxy 对应的 Zabbix 服务器/集群。
可以提供多个以逗号分隔的地址,以并行使用多个独立的 Zabbix 服务器。 允许使用空格。
如果未指定端口,则使用默认端口。
如果为该主机指定了端口,则 IPv6 地址必须用方括号括起来。 如果未指定端口,则 IPv6 地址的方括号可选。
如果未指定此参数,则会禁用主动检查。

Zabbix proxy 示例:

ServerActive=127.0.0.1:10051

Zabbix proxy 组示例:

ServerActive=proxy1.example.com;proxy2.example.com;proxy3.example.com;proxy4.example.com;proxy5.example.com

多个服务器示例:

ServerActive=127.0.0.1:20051,zabbix.domain,[::1]:30051,::1,[12fc::1]

高可用性示例:

ServerActive=zabbix.cluster.node1;zabbix.cluster.node2:20051;zabbix.cluster.node3

包含两个集群和一个服务器的高可用性示例:

ServerActive=zabbix.cluster.node1;zabbix.cluster.node2:20051,zabbix.cluster2.node1;zabbix.cluster2.node2,zabbix.domain
SourceIP

为以下连接指定源 IP 地址:

  • 到 Zabbix 服务器或 Zabbix proxy 的出站连接;
  • 在执行某些监控项(web.page.get、net.tcp.port 等)时建立连接。
StartAgents

设置用于处理被动检查的 zabbix_agentd 预 fork 实例数量。
如果设置为 0,则会禁用被动检查,agent 将不会监听任何 TCP 端口。

默认值:10
范围:0-100

超时

指定建立连接以及与 Zabbix proxy 或服务器交换数据时的等待时间(秒)。

此参数定义了多种通信操作的持续时间,包括:

  • 等待来自 Zabbix 服务器的响应;
  • 向 Zabbix 服务器发送请求,包括监控项配置请求以及 主动检查 中的监控项数据;
  • 通过 logfile 检索日志数据;
  • 发送心跳消息;
  • vfs.* 检查的最长持续时间;
  • 供 Zabbix agent 模块使用;
  • 在服务器或 proxy 版本早于 7.0 且发送不带超时的检查时,作为回退机制。

对于那些在前端中可配置超时设置的 agent 检查(全局、proxy 或单个监控项级别),不会使用此超时。

默认值:3
范围:1-30

TLSAccept

指定传入连接所需的加密级别。
用于被动检查。
可以指定多个值,以逗号分隔:
unencrypted - 接受未加密连接(默认)
psk - 接受使用 TLS 和预共享密钥(PSK)的连接
cert - 接受使用 TLS 和证书的连接

必填:是,如果定义了 TLS 证书或 PSK 参数(即使是 unencrypted 连接);否则为否

TLSCAFile

指定包含用于对等证书验证的顶级 CA 证书的文件的完整路径名,该证书用于 Zabbix 组件之间的加密通信。

TLSCertFile

指定包含 agent 证书或证书链的文件的完整路径名,用于与 Zabbix 组件之间的加密通信。

TLSCipherAll

指定 GnuTLS 优先级字符串或 OpenSSL(TLS 1.2)密码字符串。 覆盖基于证书和 PSK 的加密所使用的默认密码套件选择标准。

示例:

TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256
TLSCipherAll13

为 TLS 1.3 中的 OpenSSL 1.1.1 或更新版本指定密码字符串。 覆盖基于证书和基于 PSK 的加密的默认密码套件选择标准。

GnuTLS 示例:

NONE:+VERS-TLS1.2:+ECDHE-RSA:+RSA:+ECDHE-PSK:+PSK:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+CURVE-ALL:+COMP-NULL::+SIGN-ALL:+CTYPE-X.509

OpenSSL 示例:

EECDH+aRSA+AES128:RSA+aRSA+AES128:kECDHEPSK+AES128:kPSK+AES128
TLSCipherCert

指定 GnuTLS 优先级字符串或 OpenSSL(TLS 1.2)密码字符串。 覆盖基于证书的加密的默认密码套件选择标准。

GnuTLS 示例:

NONE:+VERS-TLS1.2:+ECDHE-RSA:+RSA:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+CURVE-ALL:+COMP-NULL:+SIGN-ALL:+CTYPE-X.509

OpenSSL 示例:

EECDH+aRSA+AES128:RSA+aRSA+AES128
TLSCipherCert13

为 TLS 1.3 指定 OpenSSL 1.1.1 或更新版本的密码字符串。 覆盖基于证书的加密的默认密码套件选择标准。

TLSCipherPSK

指定 GnuTLS 优先级字符串或 OpenSSL(TLS 1.2)密码字符串。 覆盖基于 PSK 的加密的默认密码套件选择标准。

GnuTLS 示例:

NONE:+VERS-TLS1.2:+ECDHE-PSK:+PSK:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+CURVE-ALL:+COMP-NULL:+SIGN-ALL

OpenSSL 示例:

kECDHEPSK+AES128:kPSK+AES128
TLSCipherPSK13

为 TLS 1.3 中的 OpenSSL 1.1.1 或更新版本指定密码字符串。 覆盖基于 PSK 的加密所使用的默认密码套件选择标准。

示例:

TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256
TLSConnect

指定 agent 连接到 Zabbix 服务器或 proxy 所需的加密级别。
用于主动检查。
只能指定一个值:
unencrypted - 不使用加密连接(默认)
psk - 使用 TLS 和预共享密钥(PSK)连接
cert - 使用 TLS 和证书连接

必填:是,如果定义了 TLS 证书或 PSK 参数(即使是 unencrypted 连接);否则为否

TLSCRLFile

指定包含已吊销证书的文件的完整路径名。 此参数用于 Zabbix 组件之间的加密通信。

TLSKeyFile

指定包含 agent 私钥的文件的完整路径名,用于 Zabbix 组件之间的加密通信。

TLSPSKFile

指定包含 agent 预共享密钥的文件的完整路径名,用于与 Zabbix 服务器进行加密通信。

TLSPSKIdentity

指定预共享密钥标识字符串,用于与 Zabbix 服务器进行加密通信。

TLSServerCertIssuer

指定允许的服务器(proxy)证书颁发者。

TLSServerCertSubject

指定允许的服务器(proxy)证书主题。

UnsafeUserParameters

允许将所有字符传递给用户自定义参数的参数。 以下字符不允许使用:\ ' " ` * ? [ ] { } \~ $ ! & ; ( ) < > | # @ %
此外,不允许使用换行符。

默认值:0
取值:0 - 不允许,1 - 允许

用户

将权限降级为系统中某个特定的、已存在的用户。
仅在以 'root' 运行且 AllowRoot 被禁用时生效。

默认值:zabbix

UserParameter

指定一个用户自定义参数用于监控。 可以有多个用户自定义参数。
格式:UserParameter=<key>,<shell command>
请注意,shell 命令不能只返回空字符串或仅返回行尾符。 如果指定了 UserParameterDir 参数,shell 命令可以使用相对路径。

示例:

UserParameter=system.test,who|wc -l
UserParameter=check_cpu,./custom_script.sh
UserParameterDir

指定 UserParameter 命令的默认搜索路径。 如果使用此参数,agent 会在执行命令之前将其工作目录切换到此处指定的目录。 因此,UserParameter 命令可以使用相对的 ./ 前缀,而不是完整路径。
只允许一条配置项。

示例:

UserParameterDir=/opt/myscripts

另请参阅

  1. 从 2.0.0 版本开始,Zabbix agent 的主动和被动检查配置差异