这是原厂英文文档的翻译页面. 欢迎帮助我们 完善文档.
2022 Zabbix中国峰会
2022 Zabbix中国峰会

3 Zabbix agent (UNIX)

概览

本节列出了 Zabbix agent 的配置文件(zabbix_agentd.conf)中支持的参数。 请注意:

  • 默认值反映的是守护进程的默认值,而不是附带的配置文件中的值;
  • 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. 运行多个 自动发现规则来处理相同的自动发现监控项。
Alias=vfs.fs.discovery[*]:vfs.fs.discovery
此时可以用 vfs.fs.discovery 来创建几个带着不同参数的自动发现规则,例如 vfs.fs.discovery[foo]vfs.fs.discovery[bar] 等。
AllowKey 允许执行的符合特定模式的监控项键值。键值模式是一种通配符表达式,它支持以“*”字符来匹配任意数量的任意字符。
可与 DenyKey 结合使用来定义多个键值匹配规则。会根据参数的出现顺序对其逐个进行处理。
自 Zabbix 5.0.0开始支持本参数。
另请参阅:限制 agent 检查
AllowRoot 0 允许 agent 以 ‘root’ 用户身份运行。若本参数设为禁止,且仍以 ‘root’ 用户身份启动 agent,则 agent 会尝试切换为以 ‘zabbix’ 用户启动。若以普通用户身份启动则本参数无效。
0 - 禁止
1 - 允许
BufferSend 1-3600 5 数据在缓冲区中保留不超过 N 秒。
BufferSize 2-65535 100 内存缓冲区中数据的最大条数。
若缓冲区已满,则 agent 会将所有收集到的数据发送到 Zabbix server 或 proxy。
DebugLevel 0-5 3 指定调试级别(debug日志的级别):
0 - Zabbix 进程启停的基本信息
1 - 严重(critical)信息
2 - 错误(error)信息
3 - 警告(warning)信息
4 - 调试(debugging)信息,会产生大量信息
5 - 扩展调试(extended debugging)信息,会产生更大量的信息
DenyKey 禁止执行的符合特定模式的监控项键值。键值模式是一种通配符表达式,它支持以“*”字符来匹配任意数量的任意字符。
可与 AllowKey 结合使用来定义多个键值匹配规则。会根据参数的出现顺序对其逐个进行处理。
自 Zabbix 5.0.0开始支持本参数。
另请参阅:限制 agent 检查
EnableRemoteCommands 0 是否允许来自 Zabbix server 的远程命令。本参数已弃用,请使用 AllowKey=system.run[*] 或 DenyKey=system.run[*] 来替代
本参数是参数 AllowKey/DenyKey 的内部别名,其含义由值决定:
0 - DenyKey=system.run[*]
1 - AllowKey=system.run[*]
HostInterface 0-255 个字符 定义主机接口的可选参数。
主机接口用于主机自动注册流程。
若本参数的值超过255个字符的限制,则 agent 将报错并且不会启动。
若未定义,则将从 HostInterfaceItem 获取本参数的值。
自 Zabbix 4.4.0开始支持本参数。
HostInterfaceItem 定义用于获取主机接口的监控项的可选参数。
主机接口用于主机自动注册流程。
在自动注册请求期间,若指定监控项返回的值超过255个字符的限制,则 agent 会记录一条警告消息。
本参数仅用于未设置 HostInterface 的场景。
自 Zabbix 4.4.0开始支持本参数。
HostMetadata 0-255 个字符 定义主机元数据的可选参数。主机元数据仅用于主机自动注册流程(主动 agent)。
若未定义,则将从 HostMetadataItem 获取该值。
若指定的值超过限制或非 UTF-8 字符串,则 agent 将报错并且不会启动。
HostMetadataItem 定义用于获取主机元数据的 Zabbix agent 监控项的可选参数。仅当未定义 HostMetadata 时,才使用本参数。
支持 UserParameters 和 aliases。不论 AllowKey/DenyKey 的值如何,都支持 system.run[]
在每次尝试自动注册时都会获取 HostMetadataItem 的值,并且该值仅用于主机自动注册流程(主动 agent)。
在自动注册请求期间,若指定监控项返回的值超过255个字符的限制,则 agent 会记录一条警告消息。
该监控项返回的值必须是 UTF-8 字符串,否则将被忽略。
Hostname 由 HostnameItem 设置 英文逗号分隔的唯一、区分大小写的主机名列表。
本参数是agent(主动式)类型监控项所必需的,且必须与服务器上配置的主机名匹配。若本参数未定义,则从 HostnameItem 获取。
可选字符:字母、数字、‘.’、‘ ’、‘_’和‘-’。
最大长度:每个主机名128个字符,整行2048个字符。
HostnameItem system.hostname 定义用于获取主机名的 Zabbix agent 监控项的可选参数。仅当未定义 Hostname 时才使用本参数。
不支持 UserParameters 或 aliases,但不论 AllowKey/DenyKey 的值如何,都支持 system.run[]
输出长度限制为512KB。
Include 你可以引入配置文件中所定义目录下的单独几个或所有文件。
为了仅引入指定目录下的相关文件,可以使用星号通配符进行模式匹配。例如:/absolute/path/to/config/files/*.conf
有关限制,请参阅特别说明
ListenBacklog 0 - INT_MAX SOMAXCONN TCP 队列的最大挂起连接数。
默认值是取决于系统的硬编码常量。
支持的最大值取决于系统,过高的值可能会被静默截短为“实现指定的最大值”。
ListenIP 0.0.0.0 agent 应该监听的 IP 地址列表(由英文逗号分隔)。
在1.8.3及更高版本上支持多个 IP 地址。
ListenPort 1024-32767 10050 代理将在此端口上监听来自服务器的连接。
LoadModule agent 启动时要加载的模块。模块用来扩展 agent 的功能。
格式:
LoadModule=<module.so>
LoadModule=<path/module.so>
LoadModule=</abs_path/module.so>
模块必须位于 LoadModulePath 指定的目录中,或路径必须位于模块名之前。若模块名前的路径是绝对路径(以‘/’开头),则忽略 LoadModulePath。
允许添加多个 LoadModule 参数。
LoadModulePath agent 模块的完整路径。
默认值取决于编译选项。
LogFile 若 LogType 设为 file 则为是,
否则为否
日志文件的名称。
LogFileSize 0-1024 1 日志文件的最大容量,单位为 MB。
0 - 禁用自动的日志滚动。
注意:若达到日志文件大小的最大限制且文件滚动失败,则无论出于何种原因,现有的日志文件会被截断并开始重新记录。
LogType file 日志输出的类型:
file - 将日志写入 LogFile 参数指定的文件中,
system - 将日志写入 syslog,
console - 将日志用控制台进行标准输出。
自 Zabbix 3.0.0开始支持本参数。
LogRemoteCommands 0 允许将已执行的 shell 命令记录为警告。
0 - 禁止
1 - 允许
仅远程执行的命令会被记入日志。若 system.run[] 由 HostMetadataItem、HostInterfaceItem 或 HostnameItem 参数在本地启动,则不会创建日志条目。
MaxLinesPerSecond 1-1000 20 在处理‘log’和‘eventlog’主动检查时,agent 每秒将向 Zabbix server 或 proxy 发送的新数据最大条数。
提供的值将被参数‘maxlines’覆盖,
其由‘log’或‘eventlog’监控项的键值提供。
注意:为了在日志监控项中查找所需的字符串,Zabbix 将处理比 MaxLinesPerSecond 中设置的新数据条数多10倍的数据。
PidFile /tmp/zabbix_agentd.pid PID 文件的名称。
RefreshActiveChecks 60-3600 120 刷新主动检查列表的频率,单位为秒。
注意,若刷新失败,则60秒后会进行下次刷新尝试。
Server 若 StartAgents 未显式设置为0则为是 英文逗号分隔的 Zabbix server 或 Zabbix proxy 的 IP 地址(可选择用 CIDR 表示法表达)或主机名列表。
仅接受来自此处配置主机的传入连接。
若支持 IPv6,则‘127.0.0.1’、‘::127.0.0.1’、‘::ffff:127.0.0.1’是等效的。
‘::/0’将允许任意 IPv4或 IPv6地址。
‘0.0.0.0/0’可以用来允许任意 IPv4地址。
注意,根据 RFC4291,“兼容 IPv4的 IPv6地址”(0000::/96 前缀)受支持但已被弃用。
例如:Server=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.domain
允许空格。
ServerActive 英文逗号分隔的 Zabbix server 和 Zabbix proxy 的 IP 地址或 DNS 名称(地址:端口)或集群(地址:端口;地址2:端口)的列表,用于主动检查。
集群节点必须用英文分号分隔。
为同时使用多台独立的 Zabbix server,可用英文逗号分隔多个地址。允许空格。
若未指定端口,则会使用默认端口。
若主机是 IPv6地址且主机的端口已指定,则地址必须用英文方括号括起来。
若未指定端口,则 IPv6地址的方括号是可选的。
若未设置本参数,则禁用主动检查。
多 Zabbix server 的例子:
ServerActive=127.0.0.1:20051,zabbix.domain,[::1]:30051,::1,[12fc::1]
高可用的例子:
ServerActive=zabbix.cluster.node1;zabbix.cluster.node2:20051;zabbix.cluster.node3
包含两个集群和一个 server 的高可用例子:
ServerActive=zabbix.cluster.node1;zabbix.cluster.node2:20051,zabbix.cluster2.node1;zabbix.cluster2.node2,zabbix.domain
SourceIP 用于以下目的的源 IP 地址:
- 到 Zabbix server 或 Zabbix proxy 的传出连接;
- 执行某些监控项(web.page.get,net.tcp.port 等)时进行的连接。
StartAgents 0-100 3 执行被动检查的 zabbix_agentd 的初始实例数。
若设为0,则禁用被动检查,且 agent 不会监听任何 TCP 端口。
Timeout 1-30 3 处理的超时时长(单位为秒)。
TLSAccept 若定义了 TLS 证书或 PSK 参数(即使是 未加密 的连接)则为是,
否则为否
接受哪些传入连接。用于被动检查。可定义多个值,用英文逗号分隔:
unencrypted - 接受未加密连接(默认)
psk - 接受带 TLS 和预共享秘钥(PSK)的连接
cert - 接受带 TLS 和证书的连接
自 Zabbix 3.0.0开始支持本参数。
TLSCAFile 顶级 CA 证书文件的完整路径名,该文件用于 Zabbix 组件间加密通信中的对等证书校验。
自 Zabbix 3.0.0开始支持本参数。
TLSCertFile 包含 agent 证书或证书链的文件的完整路径名,该文件用于和 Zabbix 组件间的加密通信。
自 Zabbix 3.0.0开始支持本参数。
TLSCipherAll GnuTLS 优先级字符串或 OpenSSL(TLS 1.2)密码字符串。覆盖基于证书和 PSK 加密的默认密码套件选择条件。
例如:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256
自 Zabbix 4.4.7开始支持本参数。
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
自 Zabbix 4.4.7开始支持本参数。
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
自 Zabbix 4.4.7开始支持本参数。
TLSCipherCert13 在 TLS 1.3下用于 OpenSSL 1.1.1版或更新版本的密码字符串。覆盖基于证书加密的默认密码套件选择条件。
自 Zabbix 4.4.7开始支持本参数。
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
自 Zabbix 4.4.7开始支持本参数。
TLSCipherPSK13 在 TLS 1.3下用于 OpenSSL 1.1.1版或更新版本的密码字符串。覆盖基于 PSK 加密的默认密码套件选择条件。
Example: TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256
自 Zabbix 4.4.7开始支持本参数。
TLSConnect 若定义了 TLS 证书或 PSK 参数(即使是 未加密 的连接)则为是,
否则为否
agent 该如何连接到 Zabbix server 或 proxy。本参数用于主动检查。仅可以选择一种连接方式:
unencrypted - 无加密连接(默认)
psk - 使用 TLS 和预共享秘钥(PSK)的连接
cert - 使用 TLS 和证书的连接
自 Zabbix 3.0.0开始支持本参数。
TLSCRLFile 包含已吊销证书的文件的完整路径名。本参数用于和 Zabbix 组件间的加密通信。
自 Zabbix 3.0.0开始支持本参数。
TLSKeyFile 包含 agent 私钥的文件的完整路径名,该文件用于和 Zabbix 组件间的加密通信。
自 Zabbix 3.0.0开始支持本参数。
TLSPSKFile 包含 agent 预共享秘钥(PSK)的文件的完整路径名,该文件用于和 Zabbix server 之间的加密通信。
自 Zabbix 3.0.0开始支持本参数。
TLSPSKIdentity 预共享秘钥(PSK)标识字符串,用于和 Zabbix server 之间的加密通信。
自 Zabbix 3.0.0开始支持本参数。
TLSServerCertIssuer 允许的 server(proxy)证书颁发者。
自 Zabbix 3.0.0开始支持本参数。
TLSServerCertSubject 允许的 server(proxy)证书使用者。
自 Zabbix 3.0.0开始支持本参数。
UnsafeUserParameters 0,1 0 允许所有字符通过参数传递给用户定义的参数。
0 - 禁止
1 - 允许
禁用以下字符:
\ ' " ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @
此外,禁用换行符。
User zabbix 降低权限为一个系统内已存在的用户。
仅当以‘root’用户身份运行且 AllowRoot 参数设置为禁用时,本参数才生效。
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 主动和被动检查的配置差异