zabbix自定义监控服务

一.自定义监控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秒后显示报警

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值