zabbix自定义监控apache状态
自定义监控apache服务需求
需求:监控apache服务器状态,当服务异常时自动上报告警信息:
思路:在这里我们已监控apache提供服务监听的80端口为例:判断80端口存活,存活为正常,不存活为异常状态!
修改zabbix-agent配置
# 登陆到需要监控的服务器上 # 修改配置 [root@web ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf 297 ### Option: Include 298 # You may include individual files or all files in a directory in the configuration file. 299 # Installing Zabbix will create include directory in /usr/local/etc, unless modified during the compile time. 300 # 301 # Mandatory: no 302 # Default: 303 # Include= 304 305 # Include=/usr/local/etc/zabbix_agentd.userparams.conf 306 # Include=/usr/local/etc/zabbix_agentd.conf.d/ # 去掉注释,引入zabbix_agentd.conf.d/目录下所有配置文件 307 Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf :wq
创建自定义监控项
自定义监控项格式:UserParameter=<key>,<shell command> 注意: 1、key必须全局唯一 2、命令最好使用全路径 [root@web ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_apache.conf UserParameter=apache.status,netstat -lnt|awk -F" " '{print $4}'|egrep .*:80$ | wc -l :wq [root@web ~]# chown zabbix: /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_apache.conf # 重启 [root@web ~]# systemctl restart zabbix-agent [root@web ~]# ps -ef|grep zabbix_agent zabbix 77873 1 0 11:27 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf zabbix 77874 77873 0 11:27 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: collector [idle 1 sec] zabbix 77875 77873 0 11:27 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #1 [waiting for connection] zabbix 77876 77873 0 11:27 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #2 [waiting for connection] zabbix 77877 77873 0 11:27 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #3 [waiting for connection] zabbix 77878 77873 0 11:27 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: active checks #1 [idle 1 sec] root 77990 70712 0 11:28 pts/1 00:00:00 grep --color=auto zabbix_agent # 打印出所有zabbix的key值 [root@web ~]# zabbix_agentd -p ... net.tcp.service[ssh,127.0.0.1,22] [u|0] net.tcp.service.perf[ssh,127.0.0.1,22] [d|0] net.udp.service[ntp,127.0.0.1,123] [u|1] net.udp.service.perf[ntp,127.0.0.1,123] [d|0.0001] system.hostname [s|web] apache.status [t|1]
新建zabbix监控模板
新建监控项
确定服务正常后,点击添加即可!
新建触发器
找到目标主机-添加模板
测试
确认添加成功后,我们可以进行测试一下,在被监控主机尝试开启和关闭apache服务器
结果如下:在仪表盘可以自动告警即可!
可根据服务状态自动清除告警
自定义监控apache服务连接
需求:
- 1 监控apache服务器连接状态,并绘制图表
- 2 设定告警阈值,我们假定:SYN_RECEIVED状态超过10既有可能遭到了DDOS攻击,所有当超过SYN_RECEIVED>10设定为告警级别,SYN_RECEIVED>20设定为严重告警级别(阈值为测试使用!并非生产环境使用)
TCP连接状态说明: LISTEN:侦听来自远方的TCPport的连接请求 SYN-SENT:再发送连接请求后等待匹配的连接请求 SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认 ESTABLISHED:代表一个打开的连接 FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认 FIN-WAIT-2:从远程TCP等待连接中断请求 CLOSE-WAIT:等待从本地用户发来的连接中断请求 CLOSING:等待远程TCP对连接中断的确认 LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认 TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认 CLOSED:没有不论什么连接状态
创建自定义监控项
# 在之前的基础上,继续编辑文件 [root@web ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_apache.conf UserParameter=apache.status,netstat -lnt|awk -F" " '{print $4}'|egrep .*:80$ | wc -l # 新增如下: UserParameter=apache.established,netstat -ant |grep ':80 ' |grep -c ESTABLISHED UserParameter=apache.syn_sent,netstat -ant |grep ':80 ' |grep -c SYN_SENT UserParameter=apache.syn_recv,netstat -ant |grep ':80 ' |grep -c SYN_RECV UserParameter=apache.fin_wait1,netstat -ant |grep ':80 ' |grep -c FIN_WAIT1 UserParameter=apache.fin_wait2,netstat -ant |grep ':80 ' |grep -c FIN_WAIT2 UserParameter=apache.time_wait,netstat -ant |grep ':80 ' |grep -c TIME_WAIT UserParameter=apache.close,netstat -ant |grep ':80 ' |grep -c CLOSE UserParameter=apache.close_wait,netstat -ant |grep ':80 ' |grep -c CLOSE_WAIT UserParameter=apache.last_ack,netstat -ant |grep ':80 ' |grep -c LAST_ACK UserParameter=apache.listen,netstat -ant |grep ':80 ' |grep -c LISTEN UserParameter=apache.closing,netstat -ant |grep ':80 ' |grep -c CLOSING # 重启 [root@web ~]# systemctl restart zabbix-agent
在apache监控模板基础上新建监控项
添加完成,如下:
创建图形
添加触发器
说明: 本章只是让大家了解如何通过自定义实现特定需求,并非一套完善的监控体系!任何在生产环境中使用的监控项都必须存在基础数据支撑,以便衡量具体的监控项与监控告警阈值!但操作都是大同小异的,只是参考值不同罢了!所以操作一通百通,需要自己在细心设置监控阈值,便于根据生产环境的不同,自定义适合的监控体系。