[toc]
零宽断言
1 2 3 4
| (?=exp) (?<=exp) (?!exp) (?<!exp)
|
添加自定义监控
语法格式
1 2 3
| UserParameter=监控项的key名称,获取监控项值的命令或者脚本 UserParameter=<key>,<shell,command> UserParameter=user.count,uptime | grep -Po "\d(?= users)"
|
添加配置文件(客户端)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| vim /etc/zabbix/zabbix_agentd.conf UserParameter=user.count,uptime | grep -Po "\d(?= user)"
systemctl restart zabbix-agent.service
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum install -y zabbix-get
zabbix_get -s 172.16.1.7 -k user.count
|
页面添加监控项
创建监控模板






给主机配置监控项




将监控内容图形化显示


添加监控项的触发器





常用触发器条件
1 2 3 4 5 6 7 8
| and or last() avg() diff() nodata() (5m) (
|
zabbix内置变量
使用zabbix内置变量,来优化触发器的名称,此处使用的是
主机名变量:{HOST.NAME} IP地址变量:{HOST.IP}
1
| Monitor Login User Count Problem 主机名:{HOST.NAME} IP地址:{HOST.IP}
|

Zabbix系统所需磁盘空间
每个Zabbix事件需要大约170字节的磁盘空间。很难估计Zabbix每天生成的事件数量。最糟糕的情况下,我们可能需要假设Zabbix每秒会生成一个事件。
这意味着,如果我们需要保留3年的事件,需要3365243600 170 = 15GB的磁盘空间。
zabbix公式计算范围 |
所需磁盘空间的计算公式 (单位:字节) |
Zabbix配置文件 |
固定大小。一般10MB或更少。 |
历史(History) |
days*(items/refresh rate)243600*bytes items : 监控项数量 days : 保留历史数据的天数 refresh rate : 监控项平均轮询时间 bytes : 保留单个值所需要占用的字节数,依赖于数据库引擎,一般大约90字节。 |
趋势(Trends) |
days*(items/3600)243600*bytes items : 监控项数量 days : 保留趋势数据的天数 bytes : 保留单个趋势数据所需要占用的字节数,依赖于数据库引擎,一般大约90字节。 |
事件(Events) |
daysevents243600bytes events : 每秒事件数。最糟糕的情况下,每秒一(1)个事件。 days : 保留事件数据的天数 bytes : 保留单个事件所需要占用的字节数,依赖于数据库引擎,一般大约90字节。 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| python Python 2.7.5 (default, Apr 11 2018, 07:36:10) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2 Type "help", "copyright", "credits" or "license" for more information. 90天*(监控项的数量/取值时间)*24*3600*字节数/1024/1024(转换成MB) >>> 90*(100/3)*24*3600*90/1024/1024 22024
365*(100/3600)*24*3600*90/1024/1024 75.187683105469
>>> 365*1*24*3600*90/1024/1024 2706
|
添加值映射
当端口存活的时候,数据是1,当端口不存在的时候,数据是0,看起来好low而且一般谁会去记1和0,所以此时我们可以给值添加一个映射关系,可以理解为创建一个别名。

此处可以选择系统自带的,也可以自己创建。






自定义监控项示例:TCP11种状态
了解11种状态
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| LISTEN - 侦听来自远方TCP端口的连接请求; SYN-SENT -在发送连接请求后等待匹配的连接请求; SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认; ESTABLISHED- 代表一个打开的连接,数据可以传送给用户; FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认; FIN-WAIT-2 - 从远程TCP等待连接中断请求; CLOSE-WAIT - 等待从本地用户发来的连接中断请求; CLOSING -等待远程TCP对连接中断的确认; LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认; TIME-WAIT -等待足够的时间以确保远程TCP接收到连接中断请求的确认; CLOSED - 没有任何连接状态; 客户端独有的:(1)SYN_SENT (2)FIN_WAIT1 (3)FIN_WAIT2 (4)CLOSING (5)TIME_WAIT 。 服务端独有的:(1)LISTEN (2)SYN_RCVD (3)CLOSE_WAIT (4)LAST_ACK 。 共有的:(1)CLOSED (2)ESTABLISHED 。
|
配置监控
1 2 3 4 5 6 7 8 9 10 11 12 13
| cd /etc/zabbix/zabbix_agentd.d/
vim tcp_state.conf UserParameter=tcp.state[*],netstat -ant|grep -c $1
systemctl restart zabbix-agent
zabbix_get -s 10.0.0.7 -k tcp.state[LISTEN] 11
|
在web页面添加监控项
因为TCP状态有11种,所以我们需要添加11个监控项,我们可以把所有监控项放入一个模板中,这样我们所有机器在模板中关联即可。


在模板中创建监控项





以此类推,使用克隆的方式,创建出来所有模板。
给主机关联模板



1 2 3 4 5
| zabbix_get -s 10.0.0.7 -k tcp.state[LISTEN] 11
zabbix_get -s 10.0.0.7 -k tcp.state[ESTABLISHED] 25
|
