自定义监控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监控模板

zabbix如何监控java服务 zabbix监控apache_中断请求

zabbix如何监控java服务 zabbix监控apache_中断请求_02

zabbix如何监控java服务 zabbix监控apache_中断请求_03

 新建监控项

zabbix如何监控java服务 zabbix监控apache_apache_04

zabbix如何监控java服务 zabbix监控apache_zabbix如何监控java服务_05

zabbix如何监控java服务 zabbix监控apache_自定义_06

确定服务正常后,点击添加即可!

zabbix如何监控java服务 zabbix监控apache_中断请求_07

 新建触发器

zabbix如何监控java服务 zabbix监控apache_自定义_08

zabbix如何监控java服务 zabbix监控apache_自定义_09

zabbix如何监控java服务 zabbix监控apache_自定义_10

zabbix如何监控java服务 zabbix监控apache_zabbix如何监控java服务_11

 找到目标主机-添加模板

zabbix如何监控java服务 zabbix监控apache_apache_12

zabbix如何监控java服务 zabbix监控apache_apache_13

zabbix如何监控java服务 zabbix监控apache_中断请求_14

 测试

确认添加成功后,我们可以进行测试一下,在被监控主机尝试开启和关闭apache服务器

zabbix如何监控java服务 zabbix监控apache_zabbix如何监控java服务_15

 结果如下:在仪表盘可以自动告警即可!

zabbix如何监控java服务 zabbix监控apache_apache_16

 

zabbix如何监控java服务 zabbix监控apache_自定义_17

 可根据服务状态自动清除告警

zabbix如何监控java服务 zabbix监控apache_zabbix如何监控java服务_18

自定义监控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监控模板基础上新建监控项

zabbix如何监控java服务 zabbix监控apache_apache_19

 

 

zabbix如何监控java服务 zabbix监控apache_apache_20

添加完成,如下:

zabbix如何监控java服务 zabbix监控apache_zabbix如何监控java服务_21

创建图形

zabbix如何监控java服务 zabbix监控apache_apache_22

zabbix如何监控java服务 zabbix监控apache_中断请求_23

zabbix如何监控java服务 zabbix监控apache_自定义_24

添加触发器

zabbix如何监控java服务 zabbix监控apache_zabbix如何监控java服务_25

zabbix如何监控java服务 zabbix监控apache_中断请求_26

说明: 本章只是让大家了解如何通过自定义实现特定需求,并非一套完善的监控体系!任何在生产环境中使用的监控项都必须存在基础数据支撑,以便衡量具体的监控项与监控告警阈值!但操作都是大同小异的,只是参考值不同罢了!所以操作一通百通,需要自己在细心设置监控阈值,便于根据生产环境的不同,自定义适合的监控体系。