一.自定义监控httpd进程
1.修改配置文件
[root@zabbix_agent ~]# cd /usr/local/etc/
[root@zabbix_agent etc]# ls
zabbix_agentd.conf zabbix_agentd.conf.d
[root@zabbix_agent etc]# vim zabbix_agentd.conf
UnsafeUserParameters=1 //取消该行注释,并且将值改为1
UserParameter=check_process_httpd,/bin/bash /scropts/check_process.sh //在文件末尾添加监控脚本
[root@zabbix_agent etc]# pkill zabbix //杀死zabbix进程
[root@zabbix_agent etc]# zabbix_agentd //在重启agentd程序使配置文件生效
[root@zabbix_agent etc]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 0.0.0.0:10050 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
2.安装Apache,并且查看相关程序
[root@zabbix_agent ~]# yum -y install httpd
[root@zabbix_agent ~]# systemctl start httpd.service
[root@zabbix_agent ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disab>
Active: reloading (reload) since Sun 2022-07-10 22:15:35 CST; 13s ago
Docs: man:httpd.service(8)
[root@zabbix_agent ~]# ps -ef | grep httpd
root 695187 1 0 22:15 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 696156 695187 0 22:15 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 696157 695187 0 22:15 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 696158 695187 0 22:15 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 696159 695187 0 22:15 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 698660 264621 0 22:16 pts/0 00:00:00 grep --color=auto httpd
[root@zabbix_agent ~]# ps -ef | grep -v grep | grep -c httpd
5 //-c 显示过滤后的计数 -v 取反将grep httpd 的进程取消 不让其进入计数
3.编写脚本
[root@zabbix_agent ~]# cd /usr/local/etc/
[root@zabbix_agent etc]# mkdir scropts
[root@zabbix_agent etc]# cd scropts/
[root@zabbix_agent scropts]# vim check_process.sh
#!/bin/bash
count=$(ps -ef | grep -v grep | grep -c httpd) //定义变量count,count值为httpd进程数
if [ $count -ne 5];then //当count不等于5时
echo '1' //打印1
fi
[root@zabbix_agent scropts]# chmod +x check_process.sh //给脚本执行权限
[root@zabbix_agent scropts]# ll
总用量 4
-rwxr-xr-x 1 root root 101 7月 10 22:22 check_process.sh
4.测试脚本是否正常
//先暂停httpd服务
[root@zabbix_agent scropts]# systemctl stop httpd.service
[root@zabbix_agent scropts]# ps -ef | grep -v grep | grep -c httpd
0 //此时进程为0
[root@zabbix_agent scropts]# bash check_process.sh
1 //因为进程不等于5所以打印1
服务端测试
[root@zabbix_server ~]# zabbix_get -s 192.168.80.130 -k check_process_httpd
1
5.zabbix页面配置
添加监控项
创建触发器
测试
因为之前将httpd服务关闭所以30秒后会自动弹出警报
6.优化
[root@zabbix_agent scropts]# vim check_process.sh
#!/bin/bash
count=$(ps -ef | grep -Ev "grep|$0" | grep -c $1) //"grep|$0" 过滤脚本自身 $1脚本执行时后面的参数
if [ $count -eq 0 ];then //当count 等于0 时打印1 因为正常程序执行都会有进程 所以不可能计数为0
echo '1'
else
echo '0' //没问题打印0
fi
测试
[root@zabbix_agent scropts]# bash check_process.sh httpd //打印结果为1,说明没有httpd相关的进程
1
修改配置文件
[root@zabbix_agent ~]# cd /usr/local/etc/
[root@zabbix_agent etc]# ls
zabbix_agentd.conf zabbix_agentd.conf.d
[root@zabbix_agent etc]# vim zabbix_agentd.conf
UserParameter=check_process[*],/bin/bash /scripts/check_process.sh $1
[root@zabbix_agent etc]# pkill zabbix
[root@zabbix_agent etc]# zabbix_agentd
服务端测试
[root@zabbix_server ~]# zabbix_get -s 192.168.80.130 -k check_process[httpd]
1
[root@zabbix_server ~]# zabbix_get -s 192.168.80.130 -k check_process[zabbix]
0
找到httpd的监控项进行修改
二.自定义监控mysql进程
1.安装mysql
[root@zabbix_agent ~]# yum install mysql mysql-server -y
[root@zabbix_agent ~]# systemctl start mysqld.service
[root@zabbix_agent ~]# systemctl status mysqld.service
● mysqld.service - MySQL 8.0 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor preset: disa>
Active: active (running) since Sun 2022-07-10 23:43:10 CST; 9s ago
2.zabbix网页配置
添加监控项
添加触发器
此时mysql的Value结果为0
3.测试
关闭mysql程序
[root@zabbix_agent ~]# systemctl stop mysqld.service
[root@zabbix_agent ~]# systemctl status mysqld.service
● mysqld.service - MySQL 8.0 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor preset: disa>
Active: inactive (dead)
30秒后显示报警