zabbix自定义监控
监控进程
实验环境
zabbix—server | zabbix—z2 | |
---|---|---|
ip | 192.168.80.21 | 192.168.80.22 |
主机名 | c1 | c2 |
实验思路
- 客户端开启自定义监控功能
- 编写脚本
- 测试脚本可用性
- 服务端编辑配置
- 服务端测试脚本可用性
- ui界面配置监控线和触发器
- 手动触发警报
实验流程
- 开启自定义监控功能
[root@z2 ~]# vim /usr/local/etc/zabbix_agentd.conf
322 UnsafeUserParameters=1
- 编写脚本
[root@z2 ~]# mkdir /scripts
[root@z2 ~]# vim /scripts/check_process.sh
#!/bin/bash
process_status=$(ps -elf | grep -Ev "grep|$0" | grep -c $1)
if [ $process_status != 0 ];then
echo '1'
else
echo '0'
fi
[root@z2 ~]# chmod +x /scripts/check_process.sh
[root@z2 ~]# /scripts/check_process.sh httpd #脚本加服务名
0
- zabbix用户测试脚本可用性(zabbix是以zabbix用户访问系统)
[root@z2 ~]# yum install -y httpd
[root@z2 ~]# systemctl start httpd
[root@z2 ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:111 0.0.0.0:*
LISTEN 0 32 192.168.122.1:53 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 5 127.0.0.1:631 0.0.0.0:*
LISTEN 0 128 0.0.0.0:10050 0.0.0.0:*
LISTEN 0 128 [::]:111 [::]:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 5 [::1]:631 [::]:*
[root@z2 ~]# su - zabbix -s /bin/bash #临时给zabbix一个/bin/bash
su: warning: cannot change directory to /home/zabbix: No such file or directory
[zabbix@z2 root]$ /scripts/check_process.sh httpd
1
[root@z2 ~]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=check_process[*],/bin/bash /scripts/check_process.sh $1
- 服务端测试脚本
[root@z1 ~]# zabbix_get -s 192.168.80.22 -k check_process['httpd']
0
- ui界面添加监控项和触发器
-
之前定义过动作为微信告警,这里就不做了
-
手动触发
[root@z2 ~]# systemctl stop httpd
监控日志
实验环境
zabbix—server | zabbix—z2 | |
---|---|---|
ip | 192.168.80.21 | 192.168.80.22 |
主机名 | c1 | c2 |
实验思路
- 配置脚本
- 客户端编辑配置文件
- 服务端连接测试
- 配置zabbix监控项和触发器
- 手动触发警报
实验流程
- 配置脚本
[root@z2 ~]# git clone https://github.com/chendao2015/pyscripts.git #克隆gitbug脚本
[root@z2 ~]# cp pyscripts/log.py /scripts/
[root@z2 ~]# cd /scripts/
[root@z2 scripts]# ls
check_process.sh log.py
[root@z2 scripts]# chmod +x log.py
#脚本参数
seekfile = '/tmp/logseek' //默认将此次读取到了多少条信息存放到此文件中
tagKey = 'Error' //默认报错信息为Error
[root@z2 ~]# dnf -y module install python38 #安装python3.8
[root@z2 ~]# setfacl -m u:zabbix:rx /var/log/httpd/
[root@z2 ~]# mkdir /zabbix_item_log
[root@z2 ~]# chown -R zabbix.zabbix /zabbix_item_log/
脚本使用语法
python3 脚本 '日志文件名' 'seek position文件的路径' '搜索关键字'
[zabbix@z2 root]$ python3 /scripts/log.py /var/log/httpd/error_log /zabbix_item_log/logseek Failed
0
- 编辑配置文件
[root@z2 ~]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=check_logs[*],/scripts/log.py $1 $2 $3
[root@z2 ~]# pkill zabbix_agent
[root@z2 ~]# zabbix_agentd
- server端测试
[root@z1 ~]# zabbix_get -s 192.168.80.22 -k check_logs['/var/log/httpd/error_log','/zabbix_item_log/logseek','Failed'] #一条命令(太长了,换行了)
0 #输出结果
-
zabbix ui界面添加监控项和触发器
-
-
手动触发
[root@z2 tmp]# echo 'Failed' >> /var/log/httpd/error_log