zabbix业务场景监控

文章目录

  • 1. 自定义监控进程
  • 2. 自定义监控日志
  • 3. 自定义监控mysql主从状态
  • 4. 自定义监控mysql主从延迟

1. 自定义监控进程

示例:监控httpd进程

  1. 在客户端开启自定义监控功能
[root@136 ~]#  vim  /usr/local/etc/zabbix_agentd.conf

UnsafeUserParameters=1         	取消注释,并将0改成1
UserParameter=,         配置文件最后添加此行

#key是要和web界面的监控项的key是一致的,shell comand是取出监控的指标
  1. 客户端创建脚本目录和脚本文件
[root@136 ~]# cd /scripts/
[root@136 scripts]# touch check_process.sh
[root@136 scripts]# chmod +x check_process.sh 
[root@136 scripts]# vim check_process.sh 
#!/bin/bash
  
count=$(ps -ef|grep -Ev "grep|$0"|grep $1|wc -l)
if [ $count -eq 0 ];then
    echo '1'
else
    echo '0'
fi
  1. 查看脚本能否正常检测
[root@136 scripts]# ss -antl         此时httpd和vsftpd服务已经起来了
State  Recv-Q Send-Q   Local Address:Port    Peer Address:Port 
LISTEN 0      128            0.0.0.0:22           0.0.0.0:*    
LISTEN 0      128            0.0.0.0:10050        0.0.0.0:*    
LISTEN 0      128                  *:80                 *:*    
LISTEN 0      32                   *:21                 *:*    
LISTEN 0      128               [::]:22              [::]:*    

[root@136 scripts]# ./check_process.sh vsftpd          结果为0表示正常运行
0
[root@136 scripts]# ./check_process.sh httpd123           结果为1表示有问题
1
[root@136 scripts]# ./check_process.sh httpd
0

  1. 在配置文件里加入要监控的脚本
[root@136 ~]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=check_process[*],/bin/bash /scripts/check_process.sh $1  选择要监控的脚本,后面用$1是因为当要监控多个服务时不需要写多个脚本,只需要在web界面添加要监控的东西

  1. 重启客户端服务
[root@136 ~]# pkill zabbix
[root@136 ~]# ss -antl
State  Recv-Q  Send-Q   Local Address:Port   Peer Address:Port 
LISTEN 0       128            0.0.0.0:22          0.0.0.0:*    
LISTEN 0       128                  *:80                *:*    
LISTEN 0       32                   *:21                *:*    
LISTEN 0       128               [::]:22             [::]:*    
[root@136 ~]# zabbix_agentd
[root@136 ~]# ss -antl
State  Recv-Q Send-Q   Local Address:Port    Peer Address:Port 
LISTEN 0      128            0.0.0.0:22           0.0.0.0:*    
LISTEN 0      128            0.0.0.0:10050        0.0.0.0:*    
LISTEN 0      128                  *:80                 *:*    
LISTEN 0      32                   *:21                 *:*    
LISTEN 0      128               [::]:22              [::]:*    
  1. 修改属主和属组
[root@136 ~]# chown -R zabbix.zabbix /scripts/
[root@136 ~]# ll /scripts/
total 8
-rwxr-xr-x 1 zabbix zabbix 119 Nov  7 09:34 chech_procrss.sh
-rwxr-xr-x 1 zabbix zabbix 121 Nov  9 14:28 check_process.sh
  1. 在服务端检测一下这个脚本文件能不能执行成功
#客户端httpd服务已经启动
[root@136 ~]# ss -antl
State  Recv-Q Send-Q   Local Address:Port    Peer Address:Port 
LISTEN 0      128            0.0.0.0:22           0.0.0.0:*    
LISTEN 0      128            0.0.0.0:10050        0.0.0.0:*    
LISTEN 0      128                  *:80                 *:*    
LISTEN 0      32                   *:21                 *:*    
LISTEN 0      128               [::]:22              [::]:*  


#在服务端监控到客户端的httpd服务显示为0则没问题
[root@zabbix ~]# zabbix_get -s 192.168.50.136 -k check_process[httpd]
0

  1. 在zabbixweb网页界面添加监控项
    zabbix业务场景监控_第1张图片
    zabbix业务场景监控_第2张图片
    zabbix业务场景监控_第3张图片

  2. 添加触发器
    zabbix业务场景监控_第4张图片
    zabbix业务场景监控_第5张图片

  3. 触发并验证

客户端关闭httpd服务
[root@136 ~]# apachectl stop
[root@136 ~]# ss -antl
State  Recv-Q Send-Q   Local Address:Port    Peer Address:Port 
LISTEN 0      128            0.0.0.0:22           0.0.0.0:*    
LISTEN 0      128            0.0.0.0:10050        0.0.0.0:*    
LISTEN 0      32                   *:21                 *:*    
LISTEN 0      128               [::]:22              [::]:*   

zabbix业务场景监控_第6张图片

2. 自定义监控日志

  1. 在客户端开启自定义监控功能

  2. 创建脚本文件 监控日志的脚本

[root@136 scripts]# ls
chech_procrss.sh  check_process.sh  log.py             把这个脚本文件弄到该目录下

#弄一个python
[root@136 scripts]# pyvenv-3.6 /usr/local/python36
WARNING: the pyenv script is deprecated in favour of `platform-python -m venv`
[root@136 scripts]# cd /usr/local/python36/bin/
[root@136 bin]# ls
activate       easy_install      pip3             python
activate.csh   easy_install-3.6  pip3.6           python3
activate.fish  pip               platform-python

  1. 在客户端配置文件添加脚本监控配置
[root@136 bin]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=check_log[*],/usr/local/python36/bin/python3 /scripts/log.py $1 $2 $3            添加此行
  1. 重启客户端agentd服务
[root@136 bin]# pkill zabbix
[root@136 bin]# zabbix_agentd
  1. 设置权限,使zabbix能够对该目录进行读和写
[root@136 ~]# setfacl -m u:zabbix:rx /var/log/httpd
[root@136 ~]# 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::---

  1. 服务端验证脚本
#客户端追加错误参数
[root@136 log]# echo 'failed' >> httpd/error_log
[root@136 log]# echo 'nzckzn' >> httpd/error_log
[root@136 log]# echo 'nxckj' >> httpd/error_log

#服务端测试1表示有错误,0表示正常
[root@zabbix ~]# zabbix_get -s 192.168.50.136 -k check_log[/var/log/httpd/error_log,/tmp/position,failed]    #第一个为监控哪个文件;第二个为记录错误的文件放到哪去,这里最终会生成并放到position里;第三个参数为定义一个关键字,只有添加关键词才会有警告
1

#测试
[root@136 ~]# cat /tmp/position 
4003[root@136 ~]# cat /tmp/position 
4023[root@136 ~]# 
  1. 创建一个监控项
    zabbix业务场景监控_第7张图片
  2. 添加触发器
    zabbix业务场景监控_第8张图片
  3. 触发并验证
客户端触发
[root@136 log]# echo 'error' >> httpd/error_log

服务端显示为1,可以触发警告
[root@zabbix ~]# zabbix_get -s 192.168.50.136 -k check_log[/var/log/httpd/error_log,/tmp/seek,error]
1

zabbix业务场景监控_第9张图片

3. 自定义监控mysql主从状态

环境说明:

环境 IP 要安装的应用
zabbix服务端 192.168.50.138 lamp架构
zabbix server
zabbix agent
192.168.50.136 mariadb*
192.168.50.132 mariadb*
agentd
  1. 配置主从,监控从主机
  2. 在从主机上安装agentd
创建用户
[root@slave ~]# useradd -r -M -s /sbin/nologin zabbix
[root@slave ~]# ls
anaconda-ks.cfg  zabbix-5.2.0.tar.gz
[root@slave ~]# tar xf zabbix-5.2.0.tar.gz 
[root@slave ~]# cd zabbix-5.2.0
安装编译安装软件
[root@slave zabbix-5.2.0]# yum -y install gcc gcc-c++ make
[root@slave zabbix-5.2.0]# yum -y install pcre-devel
编译安装
[root@slave zabbix-5.2.0]# ./configure --enable-agent        
[root@slave zabbix-5.2.0]# make install
修改配置文件
[root@slave zabbix-5.2.0]# cd /usr/local/etc
[root@slave etc]# ls
zabbix_agentd.conf  zabbix_agentd.conf.d
[root@slave etc]# vim zabbix_agentd.conf

Server=192.168.50.138             都写zabbix服务端ip
ServerActive=192.168.50.138
Hostname=mysql_slave1      命名mysql服务端主机名

启动
[root@slave etc]# zabbix_agentd
[root@slave etc]# ss -antl
State   Recv-Q  Send-Q   Local Address:Port    Peer Address:Port  
LISTEN  0       80             0.0.0.0:3306         0.0.0.0:*     
LISTEN  0       128            0.0.0.0:22           0.0.0.0:*     
LISTEN  0       128            0.0.0.0:10050        0.0.0.0:*     
LISTEN  0       128               [::]:22              [::]:*     
  1. 添加主机和模板
    zabbix业务场景监控_第10张图片
    zabbix业务场景监控_第11张图片
  2. 在从主机上写脚本
[root@slave ~]# mkdir /scripts
[root@slave ~]# cd /scripts/
[root@slave scripts]# vim mysql_msstatus.sh

#!/bin/bash


yes_count=$(mysql -e 'show slave status\G'|grep -E 'IO_Running:|SQL_Running:'|grep -c 'Yes')

if [ $yes_count -ne 2 ];then
    echo '1'
else
    echo '0'
fi

给脚本执行权限
[root@slave scripts]# chmod +x mysql_msstatus.sh 

修改目录属主属组
[root@slave ~]# chown -R zabbix.zabbix /scripts/
[root@slave ~]# ll /scripts/
total 4
-rwxr-xr-x. 1 zabbix zabbix 172 Nov 10 10:50 mysql_msstatus.sh
  1. 检测脚本是否有问题
在从主机里进入mysl停掉服务
MariaDB [(none)]> stop slave;
Query OK, 0 rows affected (0.003 sec)
在从主机上执行脚本结果为1
[root@slave scripts]# ./mysql_msstatus.sh 
1



在从主机里进入mysql开启服务
MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.001 sec)
在从主机上执行脚本结果为0
[root@slave scripts]# ./mysql_msstatus.sh 
0
  1. 修改配置文件,开启自定义监控功能
[root@slave ~]# vim /usr/local/etc/zabbix_agentd.conf
UnsafeUserParameters=1  取消注释,并将0改为1
UserParameter=show_master_slave_status,/bin/bash /scripts/mysql_msstatus.sh  第一个地段为名字,可以自己命名,第二个字段为路径脚本

  1. 重启服务
[root@slave ~]# pkill zabbix
[root@slave ~]# zabbix_agentd
[root@slave ~]# ss -antl
State   Recv-Q  Send-Q   Local Address:Port    Peer Address:Port  
LISTEN  0       80             0.0.0.0:3306         0.0.0.0:*     
LISTEN  0       128            0.0.0.0:22           0.0.0.0:*     
LISTEN  0       128            0.0.0.0:10050        0.0.0.0:*     
LISTEN  0       128               [::]:22              [::]:*   
  1. 在zabbix服务端检查是否能取到值
在从主机上停掉
MariaDB [(none)]> stop slave;
Query OK, 0 rows affected (0.001 sec)
在zabbix服务端查看结果为1
[root@zabbix ~]# zabbix_get -s 192.168.50.132 -k show_master_slave_status
1


在从主机上开启
MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.001 sec)
在zabbix服务端查看结果为0
[root@zabbix ~]# zabbix_get -s 192.168.50.132 -k show_master_slave_status
0


在主主机上停掉,那么从主机就连不上只会显示一个yes,所以zabbix服务端那边就结果为1
[root@master ~]# systemctl stop mariadb
[root@master ~]# ss -antl
State   Recv-Q  Send-Q   Local Address:Port    Peer Address:Port  
LISTEN  0       128            0.0.0.0:22           0.0.0.0:*     
LISTEN  0       128            0.0.0.0:10050        0.0.0.0:*     
LISTEN  0       128                  *:80                 *:*     
LISTEN  0       32                   *:21                 *:*     
LISTEN  0       128               [::]:22              [::]:*    
从主机上查看Slave_IO_Running连不上
MariaDB [(none)]> show slave status\G
    Slave_IO_Running: Connecting
    Slave_SQL_Running: Yes
在zabbix上查看为1
[root@zabbix ~]# zabbix_get -s 192.168.50.132 -k show_master_slave_status
1

  1. 添加监控项
    zabbix业务场景监控_第12张图片
    zabbix业务场景监控_第13张图片
  2. 添加触发器
    zabbix业务场景监控_第14张图片
    zabbix业务场景监控_第15张图片
  3. 停掉主主机的服务或者停掉从主机的服务,zabbix服务端结果显示为1
停掉主主机的服务
[root@master ~]# systemctl stop mariadb
[root@master ~]# ss -antl
State   Recv-Q  Send-Q   Local Address:Port    Peer Address:Port  
LISTEN  0       128            0.0.0.0:22           0.0.0.0:*     
LISTEN  0       128            0.0.0.0:10050        0.0.0.0:*     
LISTEN  0       128                  *:80                 *:*     
LISTEN  0       32                   *:21                 *:*     
LISTEN  0       128               [::]:22              [::]:*     
或者停掉从主机的服务
MariaDB [(none)]> stop slave;
Query OK, 0 rows affected (0.001 sec)
zabbix服务端结果显示为1
[root@zabbix ~]# zabbix_get -s 192.168.50.132 -k show_master_slave_status
1
  1. 查看是否有告警出现且发送邮箱
    zabbix业务场景监控_第16张图片

4. 自定义监控mysql主从延迟

  1. 两台主机配置主从
  2. 在从机上配置zabbix_agent
  3. 创建一个脚本文件用来提取延迟值
[root@slave ~]# cd /scripts/
[root@slave scripts]# ls
mysql_msstatus.sh
[root@slave scripts]# vim mysql_delay.sh

#!/bin/bash
delay=$(mysql -e 'show slave status\G'|grep 'Seconds_Behind_Master'|awk '{print $2}') 
echo $delay
[root@slave scripts]# chmod +x mysql_delay.sh 
[root@slave scripts]# ll
total 8
-rwxr-xr-x. 1 root   root   111 Nov 10 13:46 mysql_delay.sh
-rwxr-xr-x. 1 zabbix zabbix 172 Nov 10 10:50 mysql_msstatus.sh
[root@slave scripts]# ./mysql_delay.sh 
0
  1. 在从机agent端开启自定义监控功能
  2. 在从机agent端配置文件添加脚本监控配置
[root@slave scripts]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=show_mysql_delay,/bin/bash /scripts/mysql_delay.sh

  1. 重启服务
[root@slave scripts]# pkill zabbix
[root@slave scripts]# zabbix_agentd

  1. 在服务端测试能不能取到延迟的值
[root@zabbix ~]# zabbix_get -s 192.168.50.132 -k show_mysql_delay
0

  1. 创建监控项
    zabbix业务场景监控_第17张图片
  2. 添加触发器
    zabbix业务场景监控_第18张图片
  3. 查看zabbix服务端效果
[root@zabbix ~]# zabbix_get -s 192.168.50.132 -k show_mysql_delay
0
  1. 查看报警
    zabbix业务场景监控_第19张图片

你可能感兴趣的:(zabbix,linux,mysql)