zabbix 4.4 源码搭建(一)zabbix-agent 自动发现 (二)zabbix自定义监控 (三)zabbix 微信告警 (四)zabbix 4.4分布式监控 (五)


文章目录

  • -监控redis服务
  • -利用zabbix自带的功能创建监控项
  • -自定义脚本创建监控项
  • -创建脚本
  • -测试脚本
  • -web界面添加监控项
  • -字体乱码解决
  • -监控nginx服务
  • -创建脚本
  • -测试脚本
  • -web界面添加监控项
  • -创建图像
  • -触发器
  • -创建触发器
  • -验证触发器
  • -邮件告警
  • -用户绑定告警媒介
  • -设置报警邮箱
  • -添加动作
  • -设置问题恢复后发送邮件
  • -配置自动重启服务



环境:

  • 192.168.1.123 redis nginx mysql_master
  • 192.168.1.125 mysql_slave

-监控redis服务

  • 利用zabbix自带的功能创建监控项
  • 自定义脚本创建监控项
-利用zabbix自带的功能创建监控项

zabbix 自定义ping zabbix 自定义mib_运维


zabbix 自定义ping zabbix 自定义mib_nginx_02


zabbix 自定义ping zabbix 自定义mib_运维_03


zabbix 自定义ping zabbix 自定义mib_centos_04

-自定义脚本创建监控项
#修改zabbix_agent配置文件
[root@node3 ~]# vim /etc/zabbix_agentd.conf
# 指定监控项及获取值的方式
UserParameter=redis.status,bash /data/sh/redis_status.sh
# redis.status: 键(监控项)
# bash /data/sh/redis_status.sh 值(获取监控项的方式)
  • 创建脚本
  • 测试脚本
-创建脚本
[root@node3 ~]# mkdir -p /data/sh
[root@node3 ~]# vim /data/sh/redis_status.sh
#编辑内容
#!/bin/bash
#by scyun
#############

killall -0 redis-server &>/dev/null

if      [ $? -eq 0 ];then
        echo 0
else
        echo 1
fi
-测试脚本
写好脚本后要先测试,脚本有没有问题,没有问题才能继续。而且,测试需要在
客户端及服务端都进行测试!
### 客户端测试
#redis进程存在时测试
[root@node3 ~]# systemctl start redis
[root@node3 ~]# ps -ef |grep redis
redis     42735      1  0 11:19 ?        00:00:00 /usr/bin/redis-server 127.0.0.1:6379
root      42739   6861  0 11:19 pts/0    00:00:00 grep --color=auto redis
#使用killall测试
[root@node3 ~]# killall -0 redis-server
-bash: killall: 未找到命令
#安装killall命令
[root@node3 ~]# yum install psmisc -y
[root@node3 ~]# killall -0 redis-server
[root@node3 ~]# echo $?
0   #服务正常用0表示
[root@node3 ~]# systemctl stop redis
[root@node3 ~]# killall -0 redis-server
redis-server: no process found
[root@node3 ~]# echo $?
1   #服务挂了用1表示

#客户端测试脚本
[root@node3 ~]# bash /data/sh/redis_status.sh 
1   # 返回1 表示服务挂了
[root@node3 ~]# systemctl start redis
[root@node3 ~]# bash /data/sh/redis_status.sh 
0   # 返回0 表示服务还在
#没问题后去加个权限去服务端测试
[root@node3 ~]# chmod +x /data/sh/redis_status.sh
#临时提权
[root@node3 ~]# chmod u+s /usr/bin/killall

### 服务端测试
#redis进程存在时测试
[root@node2 ~]# zabbix_get -s 192.168.1.123 -k "redis.status"
0  
#关闭客户端redis服务后
[root@node2 ~]# zabbix_get -s 192.168.1.123 -k "redis.status"
1
-web界面添加监控项

zabbix 自定义ping zabbix 自定义mib_运维_05


zabbix 自定义ping zabbix 自定义mib_运维_06


zabbix 自定义ping zabbix 自定义mib_nginx_07

-字体乱码解决

从本地计算机里找到一个字体,上传到server端,再次刷新网页即可
C:\Windows\Fonts
[root@node2 ~]# mv -b FZSTK.TTF /usr/local/nginx/html/assets/fonts/DejaVuSans.ttf
#刷新zabbix_web界面

zabbix 自定义ping zabbix 自定义mib_linux_08

-监控nginx服务

#修改zabbix_agent文件
# 指定监控项及获取值的方式
UserParameter=nginx.status,bash /data/sh/nginx_status.sh $1
#重启服务
[root@node3 ~]# systemctl restart zabbix-agent.service
-创建脚本
[root@node3 ~]# curl 192.168.1.123/status
Active connections: 1 
server accepts handled requests
 4 4 9 
Reading: 0 Writing: 1 Waiting: 0 
Active connections:当前活动状态的连接数
accepts:统计总值,已经接受的客户端请求的总数
handled:统计总值,已经处理完成的客户端请求的总数
requests:统计总值,客户端发来的总的请求数
Reading:当前状态,正在读取客户端请求报文首部的连接的连接数
Writing:当前状态,正在向客户端发送响应报文过程中的连接数
Waiting:当前状态,正在等待客户端发出请求的空闲连接数
#!/bin/bash
#by scyun
################
function active {
        curl 192.168.1.123/status 2>/dev/null |awk 'NR==1{print $NF}'
        }
function accepts {
        curl 192.168.1.123/status 2>/dev/null | awk 'NR==3{print $1}'
        }
function handled {
        curl 192.168.1.123/status 2>/dev/null | awk 'NR==3{print $2}'
        }
function requests {
        curl 192.168.1.123/status 2>/dev/null | awk 'NR==3{print $3}'
}
function reading {
        curl 192.168.1.123/status 2>/dev/null | awk 'NR==4{print $2}'
}
function writing {
        curl 192.168.1.123/status 2>/dev/null | awk 'NR==4{print $4}'
}
function waiting {
        curl 192.168.1.123/status 2>/dev/null | awk 'NR==4{print $NF}'
}

$1
-测试脚本
#客户端测试脚本
[root@node3 sh]# bash /data/sh/nginx_status.sh requests
39
[root@node3 sh]# bash /data/sh/nginx_status.sh active
1

#服务端测试脚本
[root@node2 ~]# zabbix_get -s 192.168.1.123 -k nginx.status[requests]
41
[root@node2 ~]# zabbix_get -s 192.168.1.123 -k nginx.status[active]
1
-web界面添加监控项

zabbix 自定义ping zabbix 自定义mib_linux_09


zabbix 自定义ping zabbix 自定义mib_centos_10

zabbix 自定义ping zabbix 自定义mib_centos_11


zabbix 自定义ping zabbix 自定义mib_linux_12


zabbix 自定义ping zabbix 自定义mib_运维_13

-创建图像

zabbix 自定义ping zabbix 自定义mib_运维_14


zabbix 自定义ping zabbix 自定义mib_zabbix 自定义ping_15


zabbix 自定义ping zabbix 自定义mib_centos_16

-触发器

-创建触发器

zabbix 自定义ping zabbix 自定义mib_zabbix 自定义ping_17


zabbix 自定义ping zabbix 自定义mib_zabbix 自定义ping_18

-验证触发器
#把redis服务关了试试
[root@node3 sh]# systemctl stop redis
#开启服务后过一会会显示已解决
[root@node3 sh]# systemctl start redis

zabbix 自定义ping zabbix 自定义mib_运维_19


zabbix 自定义ping zabbix 自定义mib_linux_20

-邮件告警

-用户绑定告警媒介

zabbix 自定义ping zabbix 自定义mib_centos_21

-设置报警邮箱

zabbix 自定义ping zabbix 自定义mib_centos_22


zabbix 自定义ping zabbix 自定义mib_centos_23

-添加动作

zabbix 自定义ping zabbix 自定义mib_zabbix 自定义ping_24


zabbix 自定义ping zabbix 自定义mib_zabbix 自定义ping_25

都设置好了后要点添加上面的添加,不然不刚刚选的都是无效的。

zabbix 自定义ping zabbix 自定义mib_nginx_26


zabbix 自定义ping zabbix 自定义mib_zabbix 自定义ping_27


zabbix 自定义ping zabbix 自定义mib_zabbix 自定义ping_28

-设置问题恢复后发送邮件

zabbix 自定义ping zabbix 自定义mib_zabbix 自定义ping_29

-配置自动重启服务

服务挂了后先让zabbix发送命令尝试重启服务,如果起不来再发送邮件

zabbix 自定义ping zabbix 自定义mib_linux_30


zabbix 自定义ping zabbix 自定义mib_nginx_31