Zabbix Item各类型讲解
Agent
Zabbix Agent有被动和主动代理检查。 配置Items时,可以选择需要的类型:
- Zabbix agent - 用于被动检查
- Zabbix agent (active) - 用于主动检查
注:如果与agent 被动模式一起使用,zabbix server或proxy配置文件中超时时间需要大于或等于agent配置文件中超时时间
snmp agent/traps
SNMP 通过轮询或陷阱两种方式工作。
轮训:
A 点(Zabbix 服务器或代理)可以通过 SNMP 协议从 B 点(网络设备)轮询数据:连接到设备,轮询 OID 或 MIB,获取值,然后关闭连接。
陷阱:
另一种方法是通过 SNMP 陷阱监视网络设备。 但不是 Zabbix 服务器连接到网络设备,而是配置为决定何时何地发送 SNMP 陷阱的设备。
与 SNMP 代理相比,SNMP 陷阱有什么好处?
代理以更新间隔轮询数据。 如果一个重要指标在更新间隔之间失败,我们将无法做出反应,而且可能产生金钱损失。 使用 SNMP 陷阱,一旦事件发生,设备将立即向 Zabbix 服务器发送陷阱,您将收到通知或执行远程命令。
SNMP traps设置步骤:
- 安装附加软件包 net-snmp-utils、net-snmp-perl 和 net-snmp:
yum install −y net-snmp-utils net-snmp-perl net-snmp
- 下载并解压 Zabbix 源代码。
wget https://cdn.zabbix.com/zabbix/sources/stable/5.4/zabbix-5.4.10.tar.gz
- 从 misc 文件夹复制脚本
cp zabbix-_._._/misc/snmptrap/zabbix_trap_receiver.pl /tmp/zabbix_trap_receiver.pl
注:上边命令将文件放到了/tmp临时文件,生产环境中也可以放到其他目录
- 给复制的文件添加执行权限
chmod +x /tmp/zabbix_trap_receiver.pl
- 配置陷阱接受者和community名称
vi /etc/snmp/snmptrapd.conf
如下配置增加到配置文件中,对conf文件保存并退出
authCommunity execute public perl do "/tmp/zabbix_trap_receiver.pl";
这会将用于身份验证的社区名称设置为“public”,并配置每次收到陷阱时执行的脚本。
- 通过编辑 Zabbix 服务器配置文件启用 SNMP 陷阱。打开配置文件并搜索“/SNMP”。
vim /etc/zabbix/zabbix_server.conf
- 这将是一个读取 zabbix_traps.tmp 文件的内部进程,perl 脚本在该文件中写入接收和翻译的陷阱。
StartSNMPTrapper=1 SNMPTrapperFile=/tmp/zabbix_traps.tmp (must be same as in zabbix_trap_receiver.pl)
本质上,发生的事情是这样的:
- 设备向虚拟机发送一个陷阱,由二进制 SnmptrapD 接收。
- SnmptrapD 执行 perl 脚本,将陷阱转换为适合 Zabbix 服务器的格式(基本上是添加一个标头)。
- 翻译后,陷阱保存到/tmp/zabbix_traps.tmp。
- SNMP 陷阱检查文件是否有新陷阱并将它们与主机匹配。
- Finally, restart Zabbix server processes for changes to take effect:
systemctl restart zabbix-serverc
- 查看SNMP trapper process是否随zabbix server启动成功

- 测试
snmp trap支持两个key:

- snmptrap[regexp]:捕获与 regexp 中指定的正则表达式匹配的所有 SNMP 陷阱。 如果未指定 regexp,则捕获任何陷阱。
- snmptrap.fallback:捕获该接口的任何 snmptrap[] 项未捕获的所有 SNMP 陷阱。
Type of information — ‘Text’.

通过snmptt监控snmptrap可以参考链接
通过Perl traps可以参考链接
Simple checks
简单检查通常用于服务的远程无代理检查。
请注意,简单检查不需要 Zabbix agent。 Zabbix server/proxy 负责处理简单的检查(建立外部连接等)。
Internal checks
| 指标名称 | 指标解释 |
| zabbix[boottime] | Zabbix server或 Zabbix proxy进程的启动时间,以秒为单位。 |
| zabbix[cluster,discovery,nodes] | 发现高可用性集群节点。 |
| zabbix[history] | 存储在 HISTORY 表中的值的数量,zabbix6.0已经弃用 |
| zabbix[history_log] | 存储在 HISTORY_LOG 表中的值的数量,zabbix6.0已经弃用 |
| zabbix[history_str] | zabbix6.0已经弃用 |
| zabbix[history_text] | zabbix6.0已经弃用 |
| zabbix[history_uint] | zabbix6.0已经弃用 |
| zabbix[host,,items] | 主机上启用的项目数(包括支持和不支持) |
| zabbix[host,,items_unsupported] | 主机上启用的不受支持的项目数 |
| zabbix[host,,maintenance] | 主机的当前维护状态 |
| zabbix[host,discovery,interfaces] | Zabbix 前端中主机的所有配置接口的详细信息 |
| zabbix[host,<type>,available] | 检查主机上特定类型的主界面的可用性 |
| zabbix[hosts] | 受监控的主机数 |
| zabbix[items] | 启用的项目数(支持和不支持)。 |
| zabbix[items_unsupported] | 不支持的项目数 |
| zabbix[java,,<param>] | 关于 Zabbix Java 网关的信息 |
| zabbix[lld_queue] | 在低级发现处理队列中排队的值的计数 |
| zabbix[preprocessing_queue] | 在预处理队列中排队的值的计数 |
| zabbix[process,<type>,<mode>,<state>] | zabbix server和proxy各进程使用率 |
| zabbix[proxy,<name>,<param>] |
关于 Zabbix proxy的信息,可以获取proxy时间戳以及数据传输是否有延迟 |
| zabbix[proxy_history] | proxy历史表中等待发送到server的值的数量 |
| zabbix[queue,<from>,<to>] | 受监控项目数在队列中至少延迟 <from> 秒但小于 <to> 秒的一个数量 |
| zabbix[rcache,<cache>,<mode>] | Zabbix 配置缓存的可用性统计。 |
| zabbix[requiredperformance] | Zabbix 服务器或 Zabbix 代理所需的性能,以每秒预期的新值表示。 |
| zabbix[stats,<ip>,<port>] | |
| zabbix[stats,<ip>,<port>,queue,<from>,<to>] | |
| zabbix[tcache,cache,<parameter>] | Effectiveness statistics of the Zabbix trend function cache. |
| zabbix[trends] | TRENDS 表中存储的值的数量,zabbix6.0已经弃用 |
| zabbix[trends_uint] | zabbix6.0已经弃用 |
| zabbix[triggers] | Zabbix 数据库中启用的触发器的数量,所有项目都在启用的主机上启用。 |
| zabbix[uptime] | Zabbix 服务器或 Zabbix 代理进程的正常运行时间(以秒为单位) |
| zabbix[vcache,buffer,<mode>] | Zabbix 值缓存的可用性统计 |
| zabbix[vcache,cache,<parameter>] | Zabbix 值缓存的有效性统计 |
| zabbix[version] | Zabbix 服务器或代理的版本 |
| zabbix[vmware,buffer,<mode>] | Zabbix vmware 缓存的可用性统计。 |
| zabbix[wcache,<cache>,<mode>] | Zabbix 写缓存的统计和可用性。 |
SSH checks
SSH 检查作为无agent监控执行。 SSH 检查不需要 Zabbix agent
密码验证
SSH 检查提供两种身份验证方法,用户/密码对和基于密钥文件
基于秘钥文件:
要对 SSH 项目使用基于密钥的身份验证,需要对服务器配置进行某些更改。
# SSHKeyLocation=
取消注释并设置公钥和私钥所在文件夹的完整路径
SSHKeyLocation=/home/zabbix/.ssh
现在可以通过命令执行生成公钥和私钥的步骤:
# sudo -u zabbix ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/zabbix/.ssh/id_rsa): Created directory '/home/zabbix/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/zabbix/.ssh/id_rsa. Your public key has been saved in /home/zabbix/.ssh/id_rsa.pub. The key fingerprint is: 90:af:e4:c7:e3:f0:2e:5a:8d:ab:48:a2:0c:92:30:b9 zabbix@it0 The key's randomart image is: +--[ RSA 2048]----+ | | | . | | o | | . o | |+ . S | |.+ o = | |E . * = | |=o . ..* . | |... oo.o+ | +-----------------+
注:ssh-keygen 工具和 SSH 服务器可能支持“rsa”以外的密钥类型,但 Zabbix 使用的 libssh2 可能不支持它们。
通过使用以下命令,可以将公钥文件安装在远程主机 10.10.10.10 上,以便可以使用 root 帐户执行 SSH 检查:
# sudo -u zabbix ssh-copy-id root@10.10.10.10 The authenticity of host '10.10.10.10 (10.10.10.10)' can't be established. RSA key fingerprint is 38:ba:f2:a4:b5:d9:8f:52:00:09:f7:1f:75:cc:0b:46. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '10.10.10.10' (RSA) to the list of known hosts. root@10.10.10.10's password: Now try logging into the machine, with "ssh 'root@10.10.10.10'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting.
现在可以使用 zabbix 用户帐户的默认私钥 (/home/zabbix/.ssh/id_rsa) 检查 SSH 登录:
# sudo -u zabbix ssh root@10.10.10.10
External checks
在zabbix server configuation 配置文件中有个参数“ExternalScripts”,用来放外部执行脚本,注意脚本权限以及用户所有权限的命令都应该在脚本中定义好。
不要过度使用外部检查! 由于每个脚本都需要由 Zabbix 服务器启动一个 fork 进程,运行许多脚本会大大降低 Zabbix 性能。
JMX monitoring
关于通过JMX协议监控java应用程序,可以参考链接
Dependent items
某些情况下,一个item收集一个指标,通过Dependent可以将一次将内容拆分为多个指标,参考链接
HTTP agent
此项目类型允许使用 HTTP/HTTPS 协议进行数据轮询。 使用 Zabbix sender 或 Zabbix sender 协议也可以进行捕获。
HTTP 项目检查由 Zabbix 服务器执行。 但是,当主机被 Zabbix 代理监控时,HTTP 项目检查由代理执行。
HTTP 项目检查不需要在被监控的主机上运行任何代理。
注:Zabbix server/proxy 必须初始配置为支持 cURL (libcurl)。

浙公网安备 33010602011771号