[toc]
零宽断言
| 12
 3
 4
 
 | (?=exp)  		(?<=exp)
 (?!exp)
 (?<!exp)
 
 | 
添加自定义监控
语法格式
| 12
 3
 
 | UserParameter=监控项的key名称,获取监控项值的命令或者脚本UserParameter=<key>,<shell,command>
 UserParameter=user.count,uptime | grep -Po "\d(?= users)"
 
 | 
添加配置文件(客户端)
| 12
 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
 
 | 
页面添加监控项
创建监控模板






给主机配置监控项




将监控内容图形化显示


添加监控项的触发器





常用触发器条件
| 12
 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字节。 | 
| 12
 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种状态
| 12
 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 。
 
 | 
配置监控
| 12
 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个监控项,我们可以把所有监控项放入一个模板中,这样我们所有机器在模板中关联即可。


在模板中创建监控项





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



| 12
 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
 
 | 
