zabbix监控apache服务

一、自定义监控进程

以httpd服务为例,在agent1中安装httpd

[root@agent1 ~]# yum -y install httpd
Last metadata expiration check: 13:35:45 ago on Mon 05 Sep 2022 09:56:35 PM CST.
Package httpd-2.4.37-43.module_el8.5.0+1022+b541f3b1.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@agent1 ~]# systemctl restart httpd.service 
[root@agent1 ~]# systemctl enable --now httpd.service 
[root@agent1 ~]# systemctl status httpd.service 
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor prese>
   Active: active (running) since Tue 2022-09-06 11:32:42 CST; 18s ago
     Docs: man:httpd.service(8)
 Main PID: 66940 (httpd)

查看进程
[root@agent1 ~]# ps -ef | grep httpd
root       66940       1  0 11:32 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     66941   66940  0 11:32 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     66942   66940  0 11:32 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     66943   66940  1 11:32 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     66944   66940  1 11:32 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
[root@agent1 ~]# ps -ef | grep httpd | grep -v grep | wc -l
5

1、新建脚本存放目录

[root@agent1 ~]# mkdir /etc/zabbix/script
[root@agent1 ~]# cd /etc/zabbix/script/
[root@agent1 script]# vim check_httpd.sh
#!/bin/bash 
count=$(ps -ef | grep -Ev "grep|$0" | grep -c httpd)     //脚本主程序
if [ $count -eq 0 ];then                    //数值定义,当查看其进程是否有数据,则以0判断
echo '1'                            //无数据则为“1”
else
echo '0'                             //有则为‘0’
fi
//给与所属组和执行权限
[root@agent1 script]# chmod +x check_httpd.sh 
[root@agent1 script]# ll
total 4
-rwxr-xr-x. 1 root root 120 Sep  6 16:41 check_httpd.sh
[root@agent1 script]# chown -R zabbix.zabbix /etc/zabbix/script/
[root@agent1 script]# ll
total 4
-rwxr-xr-x. 1 zabbix zabbix 120 Sep  6 16:41 check_httpd.sh

解决
这里需要注意的是我们在vim编辑过程中,关httpd的进程有可能也在运行,从而导致运行脚本检测时候检测到里面还有数据,则一直回显为0

[root@agent1 script]# systemctl stop httpd
[root@agent1 script]# ./check_httpd.sh 
0
[root@agent1 script]# ps -ef | grep httpd
root       67237   66879  0 14:31 pts/0    00:00:00 vim check_httpd.sh
[root@agent1 script]# kill 67237
[root@agent1 script]# systemctl start httpd
[root@agent1 script]# ./check_httpd.sh 
0
[root@agent1 script]# systemctl stop httpd
[root@agent1 script]# ./check_httpd.sh 
1

2、修改zabbix_agentd.conf文件

vim /etc/zabbix/zabbix_agentd.conf
 UserParameter=loginusers,who | wc -l
 UserParameter=check_httpd,/bin/bash /etc/zabbix/script/check_httpd.sh
重启服务
[root@agent1 script]# vim /etc/zabbix/zabbix_agentd.conf 
[root@agent1 script]# systemctl restart zabbix-agent.service
3、zabbix server端进行测试脚本
[root@server ~]# zabbix_get -s 192.168.47.136 -k check_httpd
0

4、zabbix web平台配置
新建监控项
在这里插入图片描述
在这里插入图片描述

5、配置触发器

6、测试–关闭httpd服务,测试告警信息
[root@agent1 script]# systemctl stop httpd
在这里插入图片描述
在这里插入图片描述

二、自定义监控日志

下载log.py来协助我们进行测试,以httpd服务为例
1、将log.py上传到/etc/zabbix/script/目录下,然后给执行权限,修改所有者和所属组为zabbix

下载可以基于真实机与物理机之间传输文件

[root@agent1 script]# yum -y install lrzsz
Last metadata expiration check: 2:24:35 ago on Tue 06 Sep 2022 03:44:28 PM CST.

Installed:
  lrzsz-0.12.20-43.el8.x86_64                                                   

Complete!


[root@agent1 script]# rz -E
rz waiting to receive.
[root@agent1 script]# ls
check_httpd.sh  log.py
[root@agent1 script]# chmod +x log.py
[root@agent1 script]# chown zabbix.zabbix log.py 
[root@agent1 script]# ll
total 8
-rwxr-xr-x. 1 zabbix zabbix  123 Sep  6 16:58 check_httpd.sh
-rwxr-xr-x. 1 zabbix zabbix 1854 Sep  6 13:19 log.py

log.py
作用:检查日志文件中是否有指定的关键字
第一个参数为日志文件名(必须有,相对路径、绝对路径均可)
第二个参数为seek position文件的路径(可选项,若不设置则默认为/tmp/logseek文件。相对路径、绝对路径均可)
第三个参数为搜索关键字,默认为 Error

2、httpd服务的日志文件在/var/log/httpd/目录下,首先我们需要给这个目录设置一个ACL权限,让zabbix用户有权限去访问该目录

[root@agent1 script]# setfacl -m u:zabbix:r-x /var/log/httpd/
[root@agent1 script]# getfacl /var/log/httpd/
getfacl: Removing leading '/' from absolute path names
# file: var/log/httpd/
# owner: root
# group: root
user::rwx
user:zabbix:r-x
这个地方是保存服务的日志信息,当报错时会将错误存放在error_log
[root@agent1 httpd]# cd /var/log/httpd/
[root@agent1 httpd]# ls
access_log  access_log-20220906  error_log  error_log-20220906

下载可以执行log.py文件的脚本

[root@agent1 script]# yum -y install python3

3、修改zabbix_agentd.conf文件,并重启服务

//查看其绝对路径
[root@agent1 script]# which python3
/usr/bin/python3
[root@agent1 script]# vim /etc/zabbix/zabbix_agentd.conf 
UserParameter=loginusers,who | wc -l
 UserParameter=check_httpd,/bin/bash /etc/zabbix/script/check_httpd.sh
 UserParameter=check_logs[*],/usr/bin/python3 /etc/zabbix/script/log.py $1 $2 $3
[root@agent1 script]# systemctl restart zabbix-agent.service 

4、测试脚本

[root@agent1 script]# python3 log.py /var/log/httpd/error_log
0
[root@agent1 script]# ls
check_httpd.sh  log.py
[root@agent1 script]#  echo 'Error' >> /var/log/httpd/error_log
[root@agent1 script]# python3 log.py /var/log/httpd/error_log
1
0为没有Error日志信息,1为有Error日志信息

测试完成后将写入的Error内容删除,而且因文件/tmp/logseek属于root账户,在web端写入写不进去,所以删除
[root@agent1 script]# rm -rf /tmp/logseek

将其删除
[root@agent1 httpd]# cat error_log
Error
[root@agent1 httpd]# cd /etc/zabbix/script/
[root@agent1 script]# python3 log.py /var/log/httpd/error_log
0          //可见没有报错信息了

5、配置监控项

6、测试,echo Error >> /var/log/httpd/error_log
[root@agent1 script]# echo ‘Error’ >> /var/log/httpd/error_log
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值