系列文章目录
前言
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 7月 10 11:17 check_process.sh
-rwxr-xr-x. 1 root root 1854 7月 10 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 7月 10 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
测试