Zabbix中内置了很多监控参数(Key_),可以获取监控对象中的系统、CPU、网络、内存、文件系统等信息。下面就详细介绍一下这些监控参数的意义。
1. 测试获取监控参数内容的方法
在Zabbix Server上使用zabbix_get命令可以从监控对象获取监控参数的具体内容。zabbix_get命令的具体使用方法如下:
zabbix_get -s 目标服务器IP -p 端口(10050) -k {key}
zabbix_get命令实际的执行结果如下:
hadoop@centos:~$ zabbix_get -s 192.168.3.133 -p 10050 -k system.uname
2. 监控参数的实际意义
2.1 操作系统信息(OS)
Keys |
说明 |
system.boottime |
# 系统启动的时间点(Host boot time)(单位:时间戳);API中参数history需指定为3; |
system.uptime |
# 系统已运行时长(System uptime)(单位:秒);API中参数history需指定为3; |
system.localtime |
# 系统时间(Host local time)(单位:时间戳);API中参数history需指定为3; |
system.hostname |
# 主机名(Host name);API中参数history需指定为1; |
kernel.maxfiles |
# 内核参数,可打开的最大文件数(Maximum number of opened files);API中参数history需指定为3; |
kernel.maxproc |
# 内核参数,支持的最大进程数(Maximum number of processes);API中参数history需指定为3; |
system.users.num |
# 目前登录到系统中的用户数量(Number of logged in users);API中参数history需指定为3; |
system.uname |
# 获取系统信息(System information);API中参数history需指定为1; |
2.2 网卡信息(Network interfaces)
网卡按照最高网速可以分为百兆网卡(100Mbps)和千兆网卡(1000Mbps或1Gbps)。当传输大量的数据时,可能会出现流速过大的情况。对于Webapp而言,如果出现高并发,同时请求的页面比较大时,就会出现流量过大的情况,也叫作带宽被占满了。如果试验将网速触发到顶速,可以在内网环境中,在两台主机之间传输一个大文件,如果是百兆网卡可以传输几个G的数据,如果是千兆网卡则需要传输几十个G的数据,效果才会比较明显。两个主机之间传输数据时,网速最大不会超过网速比较小的网卡的最高网速。比如百兆网卡之间传输数据,最高配可能到达90Mbps以上;千兆网卡之间传输数据,最高配速可能到达900Mbps以上;百兆网卡和千兆网卡之间传输数据,最高配速只能到达90Mbps以上。
传输大量的数据,理论上会出现高流速的情况,如果没有出现,则说明是数据传输的发送方或者接收方在处理数据上消耗了一些时间,这些时间摊平了数据的流速。此时如果需要提升传输速度,则需要减少发送发或接收方的数据处理操作。
Keys |
说明 |
net.if.out[br0] |
# 网卡流速,流出方向;时间间隔60s; # 获取指定网卡(br0)的流出流量的流速值(Outgoing network traffic on br0),br0为网卡名称,根据实际情况填写;时间间隔60s; |
net.if.in[br0] |
# 网卡流速,流入方向(单位:字节); API中参数history需指定为3;下同;时间间隔60s; # 获取指定网卡(br0)的流入流量的流速值(Incoming network traffic on br0),br0为网卡名称,根据实际情况填写;时间间隔60s; |
2.3 进程信息(Processes)
Keys |
说明 |
proc.num[] |
# 目前系统中的进程总数(Number of processes);时间间隔60s; |
proc.num[,,run] |
# 目前正在运行(处于运行态)的进程总数(Number of running processes);时间间隔60s; |
2.4 处理器信息(CPU)
--> 通过zabbix_get获取负载值
hadoop@centos:~$ zabbix_get -s 192.168.0.38 -p 10050 -k system.cpu.load[percpu,avg1]
0.010000
hadoop@centos:~$ zabbix_get -s 192.168.0.38 -p 10050 -k system.cpu.load[percpu,avg5]
0.012500
hadoop@centos:~$ zabbix_get -s 192.168.0.38 -p 10050 -k system.cpu.load[percpu,avg15]
0.012500
合理的控制用户态、系统态、io等待时间可以保证进程高效率的运行。
系统态运行时间较高说明进程进行系统调用的次数比较多。一般的程序,如果系统态运行时间占用过高,就需要优化程序,减少系统调用。
io等待时间的比例过高,则表明硬盘的IO性能差,如果是读写文件比较频繁,读写效率要求比较高,可以考虑更换硬盘,或者使用多磁盘做Raid的方案。
Keys |
说明 |
system.cpu.switches |
# CPU的进程上下文切换(Context switches per seconds),单位sps,表示每秒采样次数;API中参数history需指定为3;时间间隔60s; |
system.cpu.intr |
# CPU中断数量(Interrupts per second); API中参数history需指定为3; |
system.cpu.load[percpu,avg1] |
# CPU每分钟的负载值,按照核数做平均值(Processor load (1 min average per core));API中参数history需指定为0;下同 |
system.cpu.load[percpu,avg5] |
# CPU每5分钟的负载值,按照核数做平均值(Processor load (5 min average per core)) |
system.cpu.load[percpu,avg15] |
# CPU每15分钟的负载值,按照核数做平均值(Processor load (15 min average per core)) |
system.cpu.util[,softirq] |
# CPU的软中断时间,百分比形式(CPU softirq time);API中参数history需指定为0;下同 |
system.cpu.util[,steal] |
# CPU的偷盗的时间,百分比形式(CPU steal time); |
system.cpu.util[,idle] |
# CPU的空闲时间,百分比形式(CPU idle time);API中参数history需指定为0;下同;时间间隔60s; |
system.cpu.util[,user] |
# CPU的用户态运行时间,百分比形式(CPU user time);时间间隔60s; |
system.cpu.util[,system] |
# CPU的系统态运行时间,百分比形式(CPU system time);时间间隔60s; |
system.cpu.util[,iowait] |
# CPU的io等待时间,百分比形式(CPU iowait time) |
system.cpu.util[,interrupt] |
# CPU的中断时间,百分比形式(CPU interrupt time) |
system.cpu.util[,nice] |
# CPU的nice时间,百分比形式(CPU nice time) |
2.5 内存信息(Memory)
虚拟内存是由物理内存(即购买的内存条)和swap分区组成。物理内存占用过高之后,会将部分很久不用的数据转储到swap分区中。由此可见,在正常情况下,物理内存使用量并不高的情况下,不会占用swap分区。如果出现物理内存使用量过高,开始使用swap分区,或者swap分区使用过高的情况,就需要考虑购买并添加物理内存了。
---> 通过zabbix_get获取内存使用信息
hadoop@centos:~$ zabbix_get -s 192.168.4.133 -p 10050 -k vm.memory.size[available]
14989234176
hadoop@centos:~$ zabbix_get -s 192.168.4.133 -p 10050 -k system.swap.size[,free]
10681548800
Keys |
说明 |
system.swap.size[available] |
# 物理内存目前可用的容量(Available memory)(单位:字节);API中参数history需指定为3;时间间隔60s; |
system.swap.size[,total] |
# swap分区的总容量(Total swap space);API中参数history需指定为3;时间间隔3600s; |
system.swap.size[,free] |
# swap分区尚可使用的容量(Free swap space);API中参数history需指定为3;时间间隔60s; |
system.swap.size[,pfree] |
# swap分区尚可使用的容量,百分比形式(Free swap space in %);API中参数history需指定为0;时间间隔60s; |
vm.memory.size[total] |
# 物理内存总量(Total memory)(单位:字节);API中参数history需指定为3;时间间隔3600s; |
2.6 文件系统信息(Filesystems)
文件系统的inode表示可以创建的文件的最大数量。在需要创建很多文件的系统中需要密切关注这个值。如果文件系统的容量没有用完,但是inode的数量已经消耗完了,也再也不能创建文件了。
Keys |
说明 |
vfs.fs.inode[/,pfree] |
# 文件系统的指定分区中尚未使用的inode数量,百分比形式(Free inodes on / (percentage));API中参数history需指定为0;时间间隔60s; |
vfs.fs.size[/,free] |
# 文件系统中指定分区(目录)中未使用的容量数值(Free disk space on /);API中参数history需指定为3;时间间隔60s; |
vfs.fs.size[/,pfree] |
# 文件系统中指定分区(目录)中未使用的容量,百分比形式(Free disk space on / (percentage));API中参数history需指定为0;时间间隔60s; |
vfs.fs.size[/,used] |
# 文件系统中指定分区(目录)中已使用的容量(Used disk space on /)(单位:字节);API中参数history需指定为3;下同;时间间隔60s; |
vfs.fs.size[/,total] |
# 文件系统中指定分区(目录)的总容量(Total disk space on /);时间间隔3600s; |
2.7 安全信息(Security)
Keys |
说明 |
vfs.file.cksum[\/etc\/passwd] |
# 求指定文件的校验和(Checksum)(单位:字节);API中参数history需指定为3;下同。 # 求/etc/passwd的校验和(Checksum of /etc/passwd) |
2.8 Agent信息(Agent ping)
Keys |
说明 |
agent.ping |
# Agent的在线状态(Agent ping);API中参数history需指定为3; |
agent.hostname |
# Zabbix Agent的hostname(Host name of zabbix_agentd running);API中参数history需指定为1;下同 |
agent.version |
# Agent的软件版本号(Version of zabbix_agent(d) running) |
以上介绍了Zabbix中与系统相关的监控参数,基本覆盖了获取系统信息、影响系统稳定的各种参数,各个参数之间的相互影响需要在使用过程中细细体会。