1.查看数据
2.中文乱码
字体原因
红色框内
如何解决
安装文泉驿微米黑(常用中文字体)
[root@zabbix ~]$ yum install -y wqy-microhei-fonts
[root@zabbix ~]$ ll /usr/share/fonts/wqy-microhei/
total 5060
-rw-r–r– 1 root root 5177387 May 25 2009 wqy-microhei.ttc
[root@zabbix ~]$ cd /code/zabbix/assets/fonts/
[root@zabbix /code/zabbix/assets/fonts]$ ll
total 740
-rw-r–r– 1 nginx nginx 756072 Apr 16 19:00 DejaVuSans.ttf
[root@zabbix /code/zabbix/assets/fonts]$ mv DejaVuSans.ttf DejaVuSans.ttf.bak
[root@zabbix /code/zabbix/assets/fonts]$ cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /code/zabbix/assets/fonts/DejaVuSans.ttf DejaVuSans.ttf
[root@zabbix /code/zabbix/assets/fonts]$ ll
total 5060
-rw-r–r– 1 nginx nginx 5177387 Aug 21 22:14 DejaVuSans.ttf
3. Zabbix-客户端-创建Key
zabbix_agent2 -p 是 Zabbix Agent 2 的一个重要命令,用于 列出所有支持的内置监控键值(built-in keys)及其详细信息。这些内置键值是 Zabbix 预定义的、无需额外配置即可直接使用的监控项,用于采集系统、服务等基础指标
命令作用解析
zabbix_agent2:Zabbix 代理程序(第二代代理,性能更优,支持更多功能)。
-p(或 –print):参数用于打印所有支持的监控键值(包括内置键和用户自定义键,若有),并显示键值的类型、描述、参数要求等
[root@zabbix ~]$ zabbix_agent2 -p | awk ‘/^[a-z]+\./{print $1}’
agent.hostname
agent.ping
agent.variant
agent.version
system.localtime[utc]
system.run[echo
web.page.get[localhost,,80]
developers.
web.page.perf[localhost,,80]
web.page.regexp[localhost,,80,OK]
vfs.file.size[/etc/passwd]
vfs.file.time[/etc/passwd,modify]
vfs.file.exists[/etc/passwd]
vfs.file.contents[/etc/passwd]
vfs.file.regexp[/etc/passwd,root]
vfs.file.regmatch[/etc/passwd,root]
vfs.file.md5sum[/etc/passwd]
vfs.file.cksum[/etc/passwd]
vfs.file.owner[/etc/passwd]
vfs.file.permissions[/etc/passwd]
vfs.file.get[/etc/passwd]
vfs.dir.size[/var/log]
vfs.dir.count[/var/log]
vfs.dir.get[/var/log]
net.dns[,zabbix.com]
net.dns.record[,zabbix.com]
net.tcp.dns[,zabbix.com]
net.tcp.dns.query[,zabbix.com]
net.tcp.port[,80]
net.tcp.listen[80]
net.tcp.service[ssh,127.0.0.1,22]
net.tcp.service.perf[ssh,127.0.0.1,22]
net.tcp.socket.count[,80]
net.udp.listen[68]
net.udp.service[ntp,127.0.0.1,123]
net.udp.service.perf[ntp,127.0.0.1,123]
net.udp.socket.count[,53]
system.users.num
log.count[logfile]
logrt.count[logfile]
zabbix.stats[127.0.0.1,10051]
kernel.maxfiles
kernel.maxproc
kernel.openfiles
vfs.fs.size[/,free]
vfs.fs.inode[/,free]
vfs.fs.discovery
vfs.fs.get
vfs.dev.write[sda,operations]
net.if.in[lo,bytes]
net.if.out[lo,bytes]
net.if.total[lo,bytes]
net.if.collisions[lo]
net.if.discovery
vm.memory.size[total]
proc.cpu.util[inetd]
proc.num[inetd]
proc.mem[inetd]
system.cpu.switches
system.cpu.intr
system.cpu.util[all,user,avg1]
system.cpu.load[all,avg1]
system.cpu.num[online]
system.cpu.discovery
system.uname
system.hw.chassis
system.hw.cpu
system.hw.devices
system.hw.macaddr
system.sw.arch
system.sw.os
system.sw.packages
system.swap.size[all,free]
system.swap.in[all]
system.swap.out[all]
system.uptime
system.boottime
modbus.get[tcp://localhost]
system.hostname
awk 脚本 /^[a-z]+\./{print $1} 的作用:
^[a-z]+\.:正则表达式,匹配以小写字母开头、后跟一个或多个小写字母、再跟一个点(.) 的行(这是 Zabbix 内置监控项的典型命名格式,如 system.、vfs.、net. 等)。
{print $1}:打印符合条件的行的第一个字段(即监控项的键,如 system.cpu.load[all,avg1]、vfs.file.size[/etc/passwd])。
输出内容说明
执行命令后,会输出类似以下格式的信息(以常见内置键为例)
system.cpu.load[average1] [float] System cpu load average (1 minute)
system.cpu.load[average5] [float] System cpu load average (5 minutes)
system.cpu.load[average15] [float] System cpu load average (15 minutes)
vm.memory.size[total] [int] Total memory size in bytes
vm.memory.size[available] [int] Available memory size in bytes
vm.memory.size[used] [int] Used memory size in bytes
disk.space[/,total] [int] Total disk space on / in bytes
disk.space[/,free] [int] Free disk space on / in bytes
disk.space[/,used] [int] Used disk space on / in bytes
net.if.in[eth0,bytes] [int] Incoming bytes on interface eth0
net.if.out[eth0,bytes] [int] Outgoing bytes on interface eth0
每行包含 3 部分核心信息
键值名称(如 system.cpu.load[average1]
):监控项的唯一标识,部分键值需要参数(如 [average1]
表示 1 分钟负载)。
数据类型(如 [float]
、[int]
):返回值的数据类型(浮点数、整数等)。
描述:键值的功能说明(如 “1 分钟系统 CPU 负载”)
实用场景
查询可用监控项:当你需要配置新监控项时,用此命令确认 Zabbix Agent 2 支持哪些内置键,避免使用不存在的键值。
验证键值参数:部分键值需要指定参数(如 disk.space[/,free] 中的 / 表示根分区),通过输出可明确参数格式。
排查监控项问题:若某个监控项提示 “不支持的键值”,可通过此命令确认该键是否存在或参数是否正确
常用内置键值举例
Zabbix 内置了大量监控键值(key),覆盖系统资源、网络、磁盘、进程等场景。以下是 最常用的核心 key 分类整理,方便快速配置监控项
系统资源监控
内存监控
磁盘监控
网络监控
进程与服务监控
日志与文件监控
文件基础属性监控
文件内容与完整性监控
目录监控
实用场景举例
用 vfs.file.md5sum[/etc/nginx/nginx.conf] 记录哈希值,当值变化时触发告警(文件被修改)。
用 vfs.file.size[/var/log/mysql/error.log] 配置阈值(如超过 1GB 告警)。
用 vfs.file.mtime[/var/log/redis/redis.log] 监控最后修改时间,若长时间未更新(如 24 小时),可能服务异常。
用 vfs.dir.count[/tmp,*.tmp] 当 .tmp 文件数超过 1000 时告警(可能存在内存泄漏)
内置键值key
[root@web01 ~]$ zabbix_agent2 -p
如访问时没有权限如何处理
[root@zabbix ~]$ zabbix_get -s web01 -k vfs.file.contents[/etc/shadow]
ZBX_NOTSUPPORTED: Cannot open file /etc/shadow: open /etc/shadow: permission denied
提权(客户端)
[root@web01 ~]$ visudo
[root@web01 ~]$ tail -2 /etc/sudoers
zabbix ALL=(ALL) NOPASSWD: ALL
4.自定义监控
书写格式
/etc/zabbix/zabbix_agent2.conf
Option: UserParameter
# User-defined parameter to monitor. There can be several user-defined parameters.
# Format: UserParameter=<key>,<shell command>
# See ‘zabbix_agentd’ directory for examples.
#
# Mandatory: no
# Default:
# UserParameter=
<key>:监控项的唯一标识(在 Zabbix 前端配置时需要使用此 key),命名建议简洁且有意义(如 system.disk.usage、app.response.time)。
<shell command>:实际执行的 shell 命令 / 脚本,其输出结果将作为监控项的采集值(需确保命令能稳定返回有效值,如数字、字符串等)。
特性:
可配置多个 UserParameter,每个对应一个独立的监控项。
非必填项(默认无配置),需根据业务需求手动添加
端口
客户端
[root@web01 ~]$ vim /etc/zabbix/zabbix_agent2.d/web.conf
[root@web01 ~]$ systemctl restart zabbix-agent2.service
[root@web01 ~]$ tail -1 /etc/zabbix/zabbix_agent2.d/web.conf
UserParameter=nginx.dk,ss -lntup |grep -wc 80
服务端
[root@zabbix ~]$ zabbix_get -s web01 -k nginx.dk
2
权限
客户端
[root@web01 ~]$ cat /etc/zabbix/zabbix_agent2.d/web.conf
UserParameter=conf.shadow,sudo wc -l /etc/shadow|cut -d ” ” -f1
[root@web01 ~]$ systemctl restart zabbix-agent2.service
服务端
[root@zabbix ~]$ zabbix_get -s web01 -k conf.shadow
39
添加监控
触发器
5.创建监控一些相关说明
1. Zabbix 客户端
- 工作方式:被动模式。Zabbix 服务器主动向被监控主机的 Zabbix agent 发送请求(如用 zabbix_get 命令),agent 接收请求后返回系统 / 应用指标(如 CPU、内存、磁盘使用率)。
- 适用场景:监控已安装 Zabbix agent 的服务器(Linux/Windows 等),适合 小规模、网络稳定 的环境(由服务器主导采集节奏)。
2. Zabbix 客户端 (主动式)
- 工作方式:主动模式。Zabbix agent 主动向服务器 / Proxy推送数据,无需服务器先发起请求。
- 适用场景:监控 大规模主机(减少服务器请求压力)、跨防火墙环境(agent 主动连服务器,无需开放入站端口)。需在 agent 配置文件中指定服务器地址。
3. 简单检查
- 工作方式:Zabbix 服务器直接执行基础检查,无需 agent 或其他代理。
- 典型场景:
- ICMP ping(检查主机网络可达性);
- TCP 端口检查(如 80 端口是否开放,判断 Web 服务是否存活)。
- 特点:用于 基础可用性监控(网络设备、服务端口的 “存活检测”)。
4. SNMP 代理
- 工作方式:基于 SNMP 协议(支持 v1/v2c/v3),向支持 SNMP 的设备(交换机、路由器等)发送请求,通过 OID(对象标识符) 获取指标(如接口流量、设备温度)。
- 前提条件:设备需开启 SNMP 服务,配置 共同体(Community,v1/v2c) 或 认证信息(v3)。
- 适用场景:监控网络设备、不支持 Zabbix agent 的专用设备(如打印机、工业设备)。
5. SNMP trap
- 工作方式:Zabbix 作为SNMP trap 接收器,接收设备主动发送的陷阱(Trap)消息。
- 典型场景:设备发生异常(如接口 down、温度超限)时,主动向 Zabbix 推送告警,无需 Zabbix 主动查询。
- 特点:用于 实时接收设备异常通知,需配置 trap 处理程序(如snmpd服务、Zabbix trap 脚本)。
6. Zabbix 内部
- 工作方式:监控 Zabbix 服务器自身的内部指标,通过内置键值(如 zabbix[hosts] 表示已配置主机数,zabbix[triggers] 表示触发器数量)获取数据。
- 适用场景:监控 Zabbix 服务器的 运行状态与内部统计信息(如服务器负载、配置项数量)。
7. Zabbix 采集器
- 工作方式:接收 外部程序主动推送的数据(如通过 zabbix_sender 工具、自定义脚本向 Zabbix 发送数据)。
- 适用场景:自定义数据采集(如业务系统订单量、日志解析结果等,由外部程序主动上报)。
8. 外部检查
- 工作方式:Zabbix 服务器 / Proxy 执行 外部脚本 / 命令(需放在 Zabbix 配置的 ExternalScripts 目录),脚本输出结果作为监控值。
- 适用场景:自定义监控(如解析业务日志、调用特殊 API、执行复杂命令获取指标)。
9. 数据库监控
- 工作方式:直接连接数据库(MySQL、PostgreSQL、Oracle 等),执行 SQL 查询获取指标(如连接数、慢查询数、表数据量)。
- 前提条件:需配置数据库连接信息(地址、端口、用户名、密码),SQL 查询结果需为 单个数值(如 SELECT COUNT(*) FROM table)。
- 适用场景:监控数据库性能、业务表状态等。
10. HTTP 代理
- 工作方式:发送 HTTP/HTTPS 请求 到指定 URL,根据响应内容(状态码、响应时间、页面内容)生成指标。
- 典型场景:
- 网站可用性(状态码是否为 200);
- API 接口响应时间;
- 页面关键词匹配(如检查 “服务正常” 是否存在)。
- 适用场景:Web 服务、API 接口的监控。
11. IPMI 客户端
- 工作方式:通过 IPMI 协议 与服务器的 BMC(基板管理控制器)通信,获取 硬件级指标(CPU 温度、风扇转速、电源状态、磁盘健康度)。
- 特点:无需依赖操作系统或 agent,即使服务器关机 也能采集硬件数据;需服务器支持 IPMI 并配置 IPMI 网络。
- 适用场景:服务器硬件状态监控。
12. SSH 客户端
- 工作方式:通过 SSH 协议 远程登录目标主机,执行命令(如 df -h 查磁盘、top 查 CPU)并解析输出。
- 适用场景:监控 无法安装 Zabbix agent 但支持 SSH 的设备(如网络设备、嵌入式系统),安全性比 Telnet 高。
13. TELNET 客户端
- 工作方式:通过 Telnet 协议 远程登录目标主机执行命令。
- 特点:与 SSH 类似,但 Telnet 是 明文传输,安全性低;适用于老旧设备或临时调试场景。
14. JMX agent 代理程序
- 工作方式:通过 JMX 协议 连接 Java 应用(如 Tomcat、JVM),获取 JVM 内存、线程、类加载等指标。
- 前提条件:Java 应用需开启 JMX 远程连接(配置 com.sun.management.jmxremote 等参数),Zabbix 通过 JMX 端口(默认 12345)采集数据。
- 适用场景:Java 应用服务器(如 Tomcat)、JVM 进程的监控。
15. 可计算的
- 工作方式:基于 已有监控项的数值,通过公式(四则运算、函数)计算生成新指标(如 (已用空间 / 总空间) * 100 得到磁盘使用率)。
- 特点:不实际采集数据,依赖其他监控项结果,在 Zabbix 服务器端计算。
- 适用场景:需要 “二次加工” 的指标(如聚合、比率计算)。
16. 相关项目
- 工作方式:依赖 “主监控项” 的原始数据,提取多个子指标(如主监控项采集日志,相关项目用正则从日志中分别提取 “错误数”“警告数”)。
- 特点:减少重复采集(一次采集,多次提取),提高效率。
17. 脚本
- 工作方式:执行 Zabbix 服务器 / Proxy 上的 自定义脚本 获取数据,与 “外部检查” 类似,但更灵活(可在 Web 界面配置脚本参数)。
- 适用场景:复杂业务逻辑的自定义指标采集。
Zabbix 日常监控中最常用的类型及其典型
1. Zabbix agent(被动模式)
- 典型场景:监控已安装 Zabbix agent 的服务器(Linux/Windows)的系统基础指标(CPU 使用率、内存占用、磁盘空间、进程状态等)。
- 特点:服务器主动向 agent 发请求,适合小规模、网络稳定的环境。
2. Zabbix agent (主动式)
- 典型场景:监控大规模主机集群(如数百台服务器),或跨防火墙环境(agent 主动连服务器,无需开放入站端口)。
- 特点:agent 主动推送数据,减轻服务器请求压力。
3. SNMP 代理
- 典型场景:监控网络设备(交换机、路由器、防火墙)的接口流量、设备温度、端口状态等;或监控不支持 Zabbix agent 的 IoT 设备、工业设备。
- 特点:依赖设备的 SNMP 服务,需配置共同体(community)或认证信息(v3)。
4. 外部检查 / 脚本
- 典型场景:自定义业务指标监控(如解析业务日志中的错误数、调用内部 API 获取订单量、执行 Shell/Python 脚本采集特殊指标)。
- 特点:灵活适配非标监控需求,脚本需放在 Zabbix 配置的 ExternalScripts 目录。
5. HTTP 代理
- 典型场景:监控Web 服务可用性(状态码是否为 200)、API 接口响应时间(如 RESTful API 的请求耗时)、页面关键词匹配(如 “服务正常” 是否存在)。
- 特点:模拟浏览器请求,支持 HTTP/HTTPS,可配置请求头、认证信息。
6. SSH 客户端
- 典型场景:监控无法安装 Zabbix agent 但支持 SSH 的设备(如老旧网络设备、嵌入式系统),远程执行命令(如 df -h 查磁盘、top 查进程)并解析输出。
- 特点:安全性高于 Telnet(加密传输),需配置 SSH 用户名 / 密码或密钥。
7. 数据库监控
- 典型场景:监控数据库性能(如 MySQL 连接数、慢查询数、InnoDB 缓冲池命中率)、业务表数据量(如用户表行数)。
- 特点:直接连接数据库执行 SQL 查询,需配置数据库地址、端口、账号密码。
8. 简单检查
- 典型场景:基础可用性监控,如ICMP ping 检测主机是否在线、TCP 端口检查(如 80/443 端口是否开放)。
- 特点:无需 agent,服务器直接执行检查,适合快速判断服务是否存活。
常见问题
1.脚本/命令执行时间问题
zabbix默认限制命令或脚本执行时间不能超过
修改 服务端和客户端 Timeout选项
[root@web01 ~]$ cat /etc/zabbix/zabbix_agent2.d/web.conf
UserParameter=conf.shadow,sudo wc -l /etc/shadow|cut -d ” ” -f1
UserParameter=sleep,sleep 20
[root@zabbix ~]$ zabbix_get -s web01 -k sleep
ZBX_NOTSUPPORTED: Timeout while executing a shell script. (ZBX_NOTSUPPORTED:执行 shell 脚本时超时。)
解决方案
[root@zabbix ~]$ grep ‘Timeout’ /etc/zabbix/zabbix_agent2.conf
### Option: Timeout
# Spend no more than Timeout seconds on processing
# Timeout=3
### Option:PluginTimeout
# Timeout for connections with external plugins.
# PluginTimeout=
修改