自定义监控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监控模板基础上新建监控项
添加完成,如下:
创建图形
添加触发器
说明: 本章只是让大家了解如何通过自定义实现特定需求,并非一套完善的监控体系!任何在生产环境中使用的监控项都必须存在基础数据支撑,以便衡量具体的监控项与监控告警阈值!但操作都是大同小异的,只是参考值不同罢了!所以操作一通百通,需要自己在细心设置监控阈值,便于根据生产环境的不同,自定义适合的监控体系。