自定义监控
监控进程
- 打开自定义(客户端)
[root@zabbix ~]# cd /usr/local/etc/
[root@zabbix etc]# ls
zabbix_agentd.conf zabbix_agentd.conf.d
[root@zabbix etc]# vim zabbix_agentd.conf
......
# Mandatory: no
# Range: 0-1
# Default:
UnsafeUserParameters=1 取消注释并改为1
......
- 编写脚本
[root@zabbix ~]# mkdir /scripts (创建一个存放脚本的目录)
[root@zabbix ~]# cd /scripts/
[root@zabbix scripts]# vim check_process.sh
[root@zabbix scripts]# cat check_process.sh
#!/bin/bash
process_status=$(ps -ef|grep -Ev "grep|$0"|grep -c $1)
if [ $process_status -eq 0 ];then
echo '1' 输出的值为0就打印1
else
echo '0' 输出的值不为0就打印0
fi
[root@zabbix scripts]# chmod +x check_process.sh
[root@zabbix scripts]# ll
总用量 4
-rwxr-xr-x. 1 root root 141 5月 19 07:55 check_process.sh
测试
(现在是没有httpd开启的)
[root@zabbix scripts]# ./check_process.sh httpd
1
[root@zabbix scripts]# ps -ef|grep -v grep|grep -c httpd
0
(开启httpd)
[root@zabbix scripts]# apachectl start
[root@zabbix scripts]# ps -ef|grep -v grep|grep -c httpd
5
[root@zabbix scripts]# ./check_process.sh httpd
0
进入自定义配置文件
[root@zabbix etc]# vim zabbix_agentd.conf
在最后写入脚本:
UserParameter=check_process[*],/bin/bash /scripts/check_process.sh $1
重启zabbix
[root@zabbix etc]# pkill zabbix
[root@zabbix etc]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:9000 0.0.0.0:*
LISTEN 0 128 0.0.0.0:111 0.0.0.0:*
LISTEN 0 32 192.168.122.1:53 0.0.0.0:*
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 100 127.0.0.1:25 0.0.0.0:*
LISTEN 0 128 [::]:111 [::]:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 5 [::1]:631 [::]:*
LISTEN 0 100 [::1]:25 [::]:*
[root@zabbix etc]# zabbix_agentd
[root@zabbix etc]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:9000 0.0.0.0:*
LISTEN 0 128 0.0.0.0:111 0.0.0.0:*
LISTEN 0 32 192.168.122.1:53 0.0.0.0:*
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 100 127.0.0.1:25 0.0.0.0:*
LISTEN 0 128 0.0.0.0:10050 0.0.0.0:*
LISTEN 0 128 [::]:111 [::]:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 5 [::1]:631 [::]:*
LISTEN 0 100 [::1]:25 [::]:*
- 在服务端上测试
[root@zabbix ~]# zabbix_get -s 192.168.149.139 -k check_process['httpd'] (客户端的httpd是开启的)
0
- 在ui界面上进行配置
选择一个没有监控项的主机进行配置
- 去Latest data 添加主机xialuo
- 查看Latest data值(之前关闭了输出值为1,开启了输出值为0)
- 添加触发器
- 打开报警声音
- 手动触发
客户端
[root@zabbix scripts]# apachectl stop
监控日志
去https://github.com/chendao2015/pyscripts下载
需要用到 log.py
[root@zabbix /]# ls
bin dev home lib64 media opt proc run scripts sys usr xialuo
boot etc lib log.py mnt php root sbin srv tmp var
[root@zabbix /]# mv log.py /scripts/
[root@zabbix /]# cd /scripts/
[root@zabbix scripts]# chmod +x log.py
[root@zabbix scripts]# ll
总用量 8
-rwxr-xr-x. 1 root root 141 5月 19 07:55 check_process.sh
-rwxr-xr-x. 1 root root 1854 5月 19 08:50 log.py
安装一个python38(cetnos8里面好像有自带的python3)
[root@zabbix scripts]# head -1 log.py
#!/usr/bin/env python3
查找
[root@zabbix scripts]# dnf list all|grep python3
[root@zabbix scripts]# dnf -y module install python38
- 监控httpd日志
[root@zabbix ~]# ls /var/log/httpd
access_log error_log
[root@zabbix scripts]# ./log.py /var/log/httpd/error_log
0
在日志里面追加输入'Failed'
[root@zabbix scripts]# vim log.py
def getKey():
try:
tagKey = str(sys.argv[3])
except IndexError:
tagKey = 'Failed'
return tagKey
def getResult(filename,seekfile,tagkey):
destPos = prePos(seekfile)
curPos = lastPos(filename)
[root@zabbix scripts]# echo 'Failed' >> /var/log/httpd/error_log
[root@zabbix scripts]# ./log.py /var/log/httpd/error_log
1
- 给予zabbix用户权限
[root@zabbix ~]# setfacl -m u:zabbix:rx /var/log/httpd/
[root@zabbix ~]# mkdir /zabbix_log
[root@zabbix ~]# chown -R zabbix.zabbix /zabbix_log/
[root@zabbix ~]# vim /etc/passwd
zabbix:x:973:972::/home/zabbix:/bin/bash(将zabbix改为bin/bash)
bash-4.4$ python3 /scripts/log.py /var/log/httpd/error_log /zabbix_log/logseek Failed
1
- 添加脚本
[root@zabbix scripts]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=check_log[*],/scripts/log.py $1 $2 $3
[root@zabbix ~]# pkill zabbix
[root@zabbix ~]# zabbix_agentd
- 测试
客户端
[root@zabbix ~]# echo 'Failed' >> /var/log/httpd/error_log
服务端
[root@zabbix ~]# zabbix_get -s 192.168.149.139 -k check_log['/var/log/httpd/error_log','zabbix_log/logseek','Failed']
1
- 在ui界面创建监控项
- 创建触发器
- 测试
[root@zabbix ~]# echo 'Failed' >> /var/log/httpd/error_log
MySQL主从状态和延迟监控
配置主从
主:192.168.149.140
[root@zabbix ~]# mysql -uroot -p
Enter password:
mysql> create user 'root'@'192.168.149.139' identified by 'xialuo1231';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on *.* to 'root'@'192.168.149.139';
Query OK, 0 rows affected (0.00 sec)
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/mysql_data
socket = /tmp/mysql.sock
port = 3306
pid-file = /opt/mysql_data/mysql.pid
user = mysql
skip-name-resolve
server-id = 10
log-bin = mysql_bin
从192.168.149.139:
[root@zabbix ~]# vim /etc/my.cnf
[mysqld]
datadir = /opt/mysql-data
basedir = /usr/local/mysql
datadir = /opt/mysql-data
socket = /tmp/mysql.sock
port = 3306
pid-file = /opt/mysql-data/mysql.pid
user = mysql
skip-name-resolve
server-id = 20
relay-log = slave_bin
[client]
user=root
password=xialuo123!
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.149.140
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql_bin.000001
Read_Master_Log_Pos: 154
Relay_Log_File: slave_bin.000002
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql_bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
- 客户端
[root@zabbix scripts]# chmod +x check_mysql_replistatus.sh
[root@zabbix scripts]# vim /scripts/check_mysql_replistatus.sh
#!/bin/bash
status=$(mysql -e 'show slave status\G' | grep "Running: Yes" |awk '{print $2}' | grep -c 'Yes')
if [ $status == 2 ];then
echo '0'
else
echo '1'
fi
[root@zabbix scripts]# ./check_mysql_replistatus.sh
0
[root@zabbix scripts]# su - zabbix -s /bin/bash
[zabbix@zabbix scripts]$ ./check_mysql_replistatus.sh
0
自定义中写入脚本
[root@zabbix scripts]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=check_mysql_replication,/scripts/check_mysql_replistatus.sh
[root@zabbix scripts]# pkill zabbix
[root@zabbix scripts]# zabbix_agentd
- 服务端
[root@zabbix ~]# zabbix_get -s 192.168.149.139 -k check_mysql_replication
0
-
去ui界面配置监控项
-
创建触发器
-
测试
客户端:
mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)
mysql> show slave status\G;
Slave_IO_Running: No
Slave_SQL_Running: No
mysql主从延迟的监控
客户端
[root@zabbix ~]# vim /scripts/check_mysql_delay.sh
#!/bin/bash
delay=$(mysql -e 'show slave status\G' | grep "Seconds_Behind_Master" |awk '{print $2}')
echo $delay
- 更改权限
[root@zabbix ~]# chmod +x /scripts/check_mysql_delay.sh
[root@zabbix ~]# su - zabbix -s /bin/bash
[zabbix@zabbix root]$ /scripts/check_mysql_delay.sh
NULL
将脚本写入自定义
[root@zabbix ~]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=check_mysql_delay,/scripts/check_mysql_delay.sh
[root@zabbix ~]# pkill zabbix_agentd
[root@zabbix ~]# zabbix_agentd
- 服务端
[root@zabbix ~]# zabbix_get -s 192.168.149.139 -k check_mysql_delay
NULL
- 去ui界面添加监控项
- 创建触发器