自定义监控

本文详细介绍了Zabbix的常规监控指标,包括CPU、内存、磁盘、网络和业务层面的监控,并详细阐述了监控配置的具体步骤,如添加主机、监控项、触发器等。在Linux上安装并配置Zabbix-Agent,通过自定义监控来监测httpd进程和日志。通过编写和测试shell及python脚本,实现了对httpd服务状态和日志错误的监控。
摘要由CSDN通过智能技术生成

系列文章目录


前言

1.Zabbix常规监控指标:

系统方面的指标

  • CPU负荷
  • 内存使用
  • 磁盘使用
  • 网络方面的指标
  • 网络状况(网卡 网口)
  • 业务方面的指标
  • 进程监视
  • 端口监视
  • 日志监视

2.监控配置具体流程

zabbix监控配置一般包括以下几步

  • 添加主机或主机组
  • 添加监控项
  • 使用模板添加
  • 创建自定义模板
  • 手动添加,自行配置
  • 添加触发器
  • 添加媒介
  • 添加动作(报警方式)
  • 手动触发 进行验证

二、使用步骤

Linux-agent端安装zabbix-agent

#从服务端传zabbix安装包
[root@node1 pkgs]# scp ./zabbix-5.0.25.tar.gz 192.168.177.150:/root/
zabbix-5.0.25.tar.gz                             100%   20MB  56.1MB/s   00:00    
[root@node1 pkgs]#  pwd
/tmp/pkgs
[root@zabbix-agent ~]#  ls
anaconda-ks.cfg  zabbix-5.0.25.tar.gz

#解压软件包
[root@zabbix-agent ~]#tar xf zabbix-5.0.25.tar.gz

#创建用户
[root@zabbix-agent ~]# useradd -r  -M -s /sbin/nologin zabbix
[root@zabbix-agent ~]# id zabbix 
uid=994(zabbix) gid=991(zabbix)=991(zabbix)

#安装依赖包
[root@zabbix-agent ~]# yum -y install gcc gcc-c++ make

#执行编译命令
[root@zabbix-agent ~]# ls
anaconda-ks.cfg  zabbix-5.0.25  zabbix-5.0.25.tar.gz
[root@zabbix-agent ~]# cd zabbix-5.0.25/
[root@zabbix-agent zabbix-5.0.25]# ./configure  --enable-agent

***********************************************************
*            Now run 'make install'                       *
*                                                         *
*            Thank you for using Zabbix!                  *
*              <http://www.zabbix.com>                    *
***********************************************************
 
#编译安装make install
[root@zabbix-agent zabbix-5.0.25]# make install


#关闭防火墙和selinux
[root@zabbix-agent zabbix-5.0.25]# cd
[root@zabbix-agent ~]# systemctl  disable --now firewalld.service 
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@zabbix-agent ~]# vim /etc/sysconfig/selinux
SELINUX=disabled   //默认为enforcing

#生成随机数
[root@zabbix-agent ~]# echo $RANDOM
26074

#修改客户端配置文件
[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
Server=192.168.146.128
ServerActive=192.168.146.128
Hostname=26074  


#启动服务
[root@zabbix-agent etc]# cd
[root@zabbix-agent ~]# 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                   [::]:22                 [::]:*                
[root@zabbix-agent ~]# zabbix_agentd 
[root@zabbix-agent ~]# ss -antl
State    Recv-Q    Send-Q       Local Address:Port        Peer Address:Port   Process   
LISTEN   0         128                0.0.0.0:10050            0.0.0.0:*                
LISTEN   0         128                0.0.0.0:22               0.0.0.0:*                            
LISTEN   0         128                   [::]:22                   [::]:*   

自定义监控httpd进程

[root@agent ~]# cd /usr/local/etc/
[root@agent etc]# ls
zabbix_agentd.conf  zabbix_agentd.conf.d
[root@agent etc]# vim zabbix_agentd.conf
UnsafeUserParameters=1   //搜索Parameters 取消注释 并将值改为1
# 用法: UserParameter=<key>,<shell command>

#文档最后添加自定义监控
UserParameter=check_process_httpd,/bin/bash /scropts/check_process.sh  //保存退出

[root@agent ~]# pkill zabbix   //杀死zabbix的进程
[root@agent ~]# zabbix_agentd   //重启agentd服务 让配置文件生效
[root@agent ~]# 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        5              127.0.0.1:631            0.0.0.0:*                
LISTEN   0        128              0.0.0.0:10050          0.0.0.0:*                

准备工作

[root@agent ~]# yum install httpd    //安装httpd用于监控测试
[root@agent ~]# systemctl start httpd.service    //开启httpd服务
[root@agent ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor pr>
   Active: active (running) since Sat 2022-07-10 19:03:53 CST; 7s ago
     Docs: man:httpd.service(8)
 Main PID: 1309396 (httpd)

编写脚本

[root@agent etc]# cd /scropts/
[root@agent scropts]# vim check_process.sh
[root@agent scropts]# cat check_process.sh   
#!/bin/bash

count=$(ps -ef | grep -v grep| grep -c httpd)  //定义变量count 的值为 httpd的进程计数
if [ $count -ne 5 ];then   //当这个count 不等于5时
    echo '1'   //打印1
fi  


[root@agent scropts]# chmod +x check_process.sh   //赋予脚本执行权限
[root@agent scropts]# ll
总用量 4
-rwxr-xr-x. 1 root root 101 7月   10 19:12 check_process.sh

测试脚本

[root@agent ~]# systemctl stop httpd.service   //停掉httpd服务
[root@agent ~]# ps -ef | grep -v grep| grep -c httpd
0  //此时进程计数为0

运行脚本

[root@agent scropts]# bash check_process.sh 
1   //打印为1 因为count的值不等于5 所以打印了1

服务端测试

[root@server ~]# zabbix_get -s 192.168.146.128 -k check_process_httpd
1   //查看是否可以打印1

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
添加触发

在这里插入图片描述创建触发器
在这里插入图片描述在这里插入图片描述
在这里插入图片描述测试
在这里插入图片描述优化

[root@agent scropts]# cat 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@agent ~]# cd /usr/local/etc/
[root@agent etc]# ls
zabbix_agentd.conf  zabbix_agentd.conf.d
[root@agent etc]# vim zabbix_agentd.conf
UserParameter=check_process[*],/bin/bash /scropts/check_process.sh $1
[root@agent etc]# pkill zabbix
[root@agent etc]# zabbix_agentd   //重启让其生效

服务器测试

[root@server ~]# zabbix_get -s 192.168.220.20 -k check_process_[httpd]  //httpd是停止的
1
[root@server ~]# zabbix_get -s 192.168.220.20 -k check_process_[zabbix]  //zabbix是正常运行的
0

网页修改监控项

在这里插入图片描述修改httpd

在这里插入图片描述
自定义监控mysql

[root@agent ~]# yum install mysql mysql-server -y  //安装mysql 和mysql服务进行测试
[root@agent ~]# systemctl start mysqld.service   //打开mysql
[root@agent ~]# systemctl status mysqld.service 
● mysqld.service - MySQL 8.0 database server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor p>
   Active: active (running) since Sat 2022-07-10 11:47:18 CST; 33s ago
  Process: 1879522 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exite>
  Process: 1878571 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mysqld.serv>
  Process: 1878527 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited,>

添加触发器

在这里插入图片描述
查看
在这里插入图片描述
测试
关闭mysql服务

[root@agent ~]# systemctl stop mysqld.service 

在这里插入图片描述

自定义监控日志

准备工作

[root@agent scropts]# chmod +x log.py    //给脚本log执行权限
[root@agent scropts]# ll
总用量 8
-rwxr-xr-x. 1 root root  124 710 11:17 check_process.sh
-rwxr-xr-x. 1 root root 1854 710 16:15 log.py
0
[root@agent httpd]# setfacl -m u:zabbix:rx /var/log//httpd   //让zabbix用户对httpd的日志目录有读权限
[root@agent httpd]# 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
group::---
mask::r-x
other::---

测试脚本

[root@agent ~]# yum install python3 -y   //安装python

[root@agent scropts]# python3 log.py /var/log/httpd/error_log    //正常执行结果为0 
0
[root@agent scropts]# echo 'Error' >> /var/log/httpd/error_log   //向日志中添加Error
[root@agent scropts]# python3 log.py /var/log/httpd/error_log    //脚本检查到Error  打印1
1 
[root@agent scropts]# python3 log.py /var/log/httpd/error_log    //再次执行 因为日志是实时刷新的所以这次 显示无错误 打印0
0


[root@agent scropts]# cat /tmp/logseek    //logseek记录查询的位置 
3875[root@agent scropt   //此时是3875
[root@agent scropts]# python3 log.py /var/log/httpd/error_log   //执行脚本
0
[root@agent scropts]# cat /tmp/logseek //再次查看
3860[root@agent scropts]#   //记录变为了3860



[root@agent scropts]# ll /tmp/logseek 
-rw-r--r--. 1 root root 4 710 19:07 /tmp/logseek  //当网页使用时没有权限
[root@agent scropts]# rm -rf /tmp/logseek    //脚本测试结束后可以删掉 网页会自动创建

配置文件

[root@agent etc]# vim zabbix_agentd.conf
UserParameter=check_logs[*],/usr/bin/python3 /scropts/log.py $1 $2 $3   //可以传更多的参数

[root@agent ~]# pkill zabbix_agentd   
[root@agent ~]# zabbix_agentd   //重启让文件生效
[root@agent ~]# 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       5             127.0.0.1:631            0.0.0.0:*              
LISTEN  0       128             0.0.0.0:10050          0.0.0.0:*              

添加监控

在这里插入图片描述配置触发器

在这里插入图片描述
测试

#添加Error 到httpd的错误日志里
[root@agent scropts]# echo 'Error' >> /var/log/httpd/error_log 

在这里插入图片描述测试

在这里插入图片描述

总结

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值