zabbix-进程,日志,mysql主从监控-03
目录
环境描述
| 主机 | 服务 | zabbix |
|---|---|---|
| vm3 | mysql(zabbix) | zabbix_server zabbix_agent |
| vm2 | php,mysql(从) | zabbix_agent |
| vm4 | apache,mysql(主) | zabbix_agent |
脚本信息
[root@vm2 script]# pwd
/script
[root@vm2 script]# ll -d
drwxr-xr-x+ 2 root root 120 Nov 8 16:25 .
[root@vm2 script]# ll
total 16
-rwxr-xr-x 1 root root 143 Nov 8 14:06 check_process.sh
-rw-r--r-- 1 root root 1854 Mar 22 2020 log.py
-rwxr-xr-x 1 root root 229 Nov 8 16:23 mysql_ms_delay.sh
-rwxr-xr-x 1 root root 252 Nov 8 16:25 mysql_ms_status.sh
[root@vm2 script]# getfacl /script/
getfacl: Removing leading '/' from absolute path names
# file: script/
# owner: root
# group: root
user::rwx
user:zabbix:r-x
group::r-x
mask::r-x
other::r-x
监控进程
- 查看进程状态脚本
[root@vm2 script]# vim check_process.sh
#!/bin/bash
process_num=$(ps -ef | grep -v "grep" | grep -v $0 | grep $1 |wc -l)
if [ $process_num -eq 0 ];then
echo 1
else
echo 0
fi
开启自定义监控
- 创建自定义key
[root@vm2 script]# vim /usr/local/etc/zabbix_agentd.conf
.........................................
UnsafeUserParameters=1
##Format: UserParameter=<key>,<shell command>
UserParameter=check_process_status[*],/bin/bash /script/check_process.sh $1
- 重启zabbix-agent
[root@vm2 script]# pkill zabbix
[root@vm2 script]# zabbix_agentd
[root@vm2 script]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:9000 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10050 *:*
LISTEN 0 80 [::]:3306 [::]:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 100 [::1]:25 [::]:*
在zabbix-server端手动测试zabbix-get
## zabbix_get语法
usage:
zabbix_get -s host-name-or-IP [-p port-number] [-I IP-address] -k item-key
General options:
-s --host host-name-or-IP Specify host name or IP address of a host
-p --port port-number Specify port number of agent running on the host(default: 10050)
-I --source-address IP-address Specify source IP address
-k --key item-key Specify key of the item to retrieve value for
-h --help Display this help message
-V --version Display version number
##测试vm2上apache进程状态
[root@vm3 ~]# zabbix_get -s 192.168.225.128 -p 10050 -k check_process_status[apache]
1
##测试vm2上php进程状态
[root@vm3 ~]# zabbix_get -s 192.168.225.128 -p 10050 -k check_process_status[php]
0
[root@vm2 script]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:9000 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10050 *:*
LISTEN 0 80 [::]:3306 [::]:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 100 [::1]:25 [::]:*
添加监控主机

添加监控项


添加触发器


配置媒介
- 配置告警脚本
[root@vm3 ~]# vim /usr/local/share/zabbix/alertscripts/sendmail.sh
#!/bin/bash
messages=$(echo $3 | tr '\r\n' '\n')
subject=$(echo $2 | tr '\r\n' '\n')
echo "${messages}" | /usr/bin/mail -s "${subject}" $1
~
- 配置mail.rc
[root@vm3 ~]# vim /etc/mail.rc
set from=m15927947332@163.com
set smtp=smtp.163.com
set smtp-auth-user=m15927947332@163.com
set smtp-auth-password=DNAFZCZHOYUDFKCH
set smtp-auth=login
set ssl-verify=ignore

配置用户

配置动作



验证


监控日志
- python脚本log.py
- 参数说明:<监控日志的路径,日志定位文件路径(默认/tmp/logseek),关键字(默认Error)>
配置自定义监控项
UnsafeUserParameters=1
UserParameter=check_log[*],/usr/bin/python /script/log.py $1 $2 $3
重启zabbix-agent
[root@vm2 script]# pkill zabbix
[root@vm2 script]# zabbix_agentd
[root@vm2 script]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:9000 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10050 *:*
LISTEN 0 80 [::]:3306 [::]:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 100 [::1]:25 [::]:*
zabbix_server端手动测试
[root@vm3 ~]# zabbix_get -s 192.168.225.128 -k check_log[/tmp/zabbix_agentd.log,/tmp/seek,error]
0
[root@vm2 script]# cat /tmp/seek
59045
[root@vm2 script]# echo error >> /tmp/zabbix_agentd.log
[root@vm3 ~]# zabbix_get -s 192.168.225.128 -k check_log[/tmp/zabbix_agentd.log,/tmp/seek,error]
1
[root@vm2 script]# cat /tmp/seek
59158
添加监控项

添加触发器

用户配置

媒介配置

配置动作

测试验证


监控mysql主从状态
- 脚本内容
[root@vm2 script]# vim mysql_ms_status.sh
#!/bin/bash
mysql_user=root
mysql_pass=123456
basedir=/usr/local/mysql
num=$(${basedir}/bin/mysql -u${mysql_user} -p${mysql_pass} 2>/dev/null -e 'show slave status\G' | grep "Running:" | grep "Yes" |wc -l)
if [ ${num} -eq 2 ];then
echo 0
else
echo 1
fi
配置定义监控项
UserParameter=check_mysql_ms_status[*],/bin/bash mysql_ms_status.sh
重启zabbix-agent
[root@vm2 script]# pkill zabbix
[root@vm2 script]# zabbix_agentd
[root@vm2 script]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:9000 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10050 *:*
LISTEN 0 80 [::]:3306 [::]:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 100 [::1]:25 [::]:*
zabbix_server端手动测试
[root@vm3 ~]# zabbix_get -s 192.168.225.128 -k check_mysql_ms_status
0
[root@vm4 ~]# service mysqld stop
Shutting down MySQL............ SUCCESS!
[root@vm3 ~]# zabbix_get -s 192.168.225.128 -k check_mysql_ms_status
1
添加监控项


配置触发器


配置动作


验证


监控mysql主从延迟
- 脚本内容
[root@vm2 script]# vim mysql_ms_delay.sh
#!/bin/bash
mysql_user=root
mysql_pass=123456
basedir=/usr/local/mysql
delay_num=$(${basedir}/bin/mysql -u${mysql_user} -p${mysql_pass} 2>/dev/null -e 'show slave status\G' | grep "Behind_Master" |awk -F': ' '{print $2}')
echo ${delay_num}
自定义监控项
UserParameter=check_mysql_ms_delay,/bin/bash /script/mysql_ms_delay.sh
重启服务
[root@vm2 script]# pkill zabbix
[root@vm2 script]# zabbix_agentd
[root@vm2 script]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:9000 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10050 *:*
LISTEN 0 80 [::]:3306 [::]:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 100 [::1]:25 [::]:*
zabbix_server端手动测试
[root@vm3 ~]# zabbix_get -s 192.168.225.128 -k check_mysql_ms_delay
0
配置监控项


配置触发器


配置动作



浙公网安备 33010602011771号