目录

一、自定义监控

二、Nginx监控

三、监控mysql

四、钉钉告警

五、163邮箱报警

总结




zabbix5.0

一、自定义监控

zabbix-agent(147)

agent端操作

vim /etc/zabbix/zabbix_agentd.conf

在配置未文件末尾添加

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_vim

UserParameter=memory_userd,free -m |grep Mem |awk '{print $3}'

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_zabbix_02

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_nginx_03

重启服务        systemctl restart zabbix-agent.service

server端操作(146)

zabbix_get -s 192.168.238.147 -k memory_userd

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_nginx_04

配置自定义监控项

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_nginx_05

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_vim_06

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_zabbix_07

配置自定义触发器

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_vim_08

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_bash_09

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_bash_10

配置自定义图形

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_vim_11

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_zabbix_12

查看出图效果

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_nginx_13

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_vim_14

二、Nginx监控

zabbix-agent(147)

安装Nginx


查看当前Nginx是否已安装内置运行状态模块



4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_zabbix_15


开启运行状态模块


vim /etc/nginx/nginx.conf

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_zabbix_16

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_nginx_17

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_bash_18


编写监控脚本并安装zabbix agent


mkdir /etc/zabbix/script
vim /etc/zabbix/script/ngx_status.sh

编写脚本

#!/bin/bash

#定义Nginx status页面
ngx_status="http://192.168.238.147/status"

#判断status页面是否存活
ngx_status_code() {
        http_code=`curl -o /dev/null -s -w %{http_code} ${ngx_status}`
        if [ ${http_code} == "200" ];then
                return 1
        else
                echo "Nginx status is not running."
        fi
}

#获取当前活动的客户端连接数
active() {
        ngx_status_code || curl -s ${ngx_status} | grep "Active" | awk '{print $NF}'
}

#获取接收客户端连接的总数量
accepts() {
        ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $1}'
}

#获取已处理的连接总数量
handled() {
        ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $2}'
}

#获取客户端请求总数量
requests() {
        ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $3}'
}

#获取正在读取请求标头的当前连接数量
reading() {
        ngx_status_code || curl -s ${ngx_status} | grep "Reading" | awk '{print $2}'
}

#获取正在将响应写回到客户端的当前连接数量
writing() {
        ngx_status_code || curl -s ${ngx_status} | grep "Writing" | awk '{print $2}'
}

#获取当前正在等待响应的客户端连接数量
waiting() {
        ngx_status_code || curl -s ${ngx_status} | grep "Waiting" | awk '{print $2}'
}

#使用位置变量控制脚本输出
case $1 in
        active)
                active;;
        accepts)
                accepts;;
        handled)
                handled;;
        requests)
                requests;;
        reading)
                reading;;
        writing)
                writing;;
        waiting)
                waiting;;
        *)
                echo "Unknown options"
esac

配置Zabbix Agent

vim /etc/zabbix/zabbix_agentd.conf

解开注释改        UnsafeUserParameters=1

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_nginx_03

创建自定义监控项

vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf

添加以下内容

UserParameter=nginx.active,bash /etc/zabbix/script/ngx_status.sh active
UserParameter=nginx.accepts,bash /etc/zabbix/script/ngx_status.sh accepts
UserParameter=nginx.handled,bash /etc/zabbix/script/ngx_status.sh handled
UserParameter=nginx.requests,bash /etc/zabbix/script/ngx_status.sh requests
UserParameter=nginx.reading,bash /etc/zabbix/script/ngx_status.sh reading
UserParameter=nginx.writing,bash /etc/zabbix/script/ngx_status.sh writing
UserParameter=nginx.waiting,bash /etc/zabbix/script/ngx_status.sh waiting

重启zabbix服务        启动Nginx

server端使用zabbix_get工具进行测试

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_bash_20

页面配置

新创模板

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_vim_21

新建监控项

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_zabbix_22

选择监控主机,添加模板

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_bash_23

找到添加的监控项查看

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_vim_24

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_vim_25

三、监控mysql

zabbix-agent(147)

安装启动服务

创建授权用户

grant all on *.* to zabbix@'%' identified by'123.com';

配置Zabbix Agent

在zabbix客户端默认配置路径下 /etc/zabbix 目录下新建  .my.cnf 文件(隐藏文件)

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_zabbix_26

复制模板,修改模板中的默认路径

cp /usr/share/doc/zabbix-agent-5.0.37/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.d
vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

在命令行新增默认路径 HOME=/etc/zabbix/

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_nginx_27

重启zabbix客户端

页面为监控的主机添加模板

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_vim_28

观察下宏的IP是否改变,未变手动修改

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_nginx_29

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_bash_30

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_vim_31

查看出图效果

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_zabbix_32

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_zabbix_33

四、钉钉告警

zabbix server(146)

在钉钉中创建一个群,添加自定义机器人

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_nginx_34


配置zabbix server


vim /etc/zabbix/zabbix_server.conf

加开注释AlertScriptsPath

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_bash_35


创建用来推送告警消息的脚本,使用自己的webhook

vim /etc/zabbix/dingding.py

#!/usr/bin/env python
#coding:utf-
#zabbix钉钉报警
import requests,json,sys,os,datetime
webhook="https://oapi.dingtalk.com/robot/send?access_token=3a7191b12c8e8f5580b9bedc9e48938421845e7629c8ff0fe2833f1ede9e8b30" (修改为自己的webhook)
user=sys.argv[1]
text=sys.argv[3]
data={
    "msgtype": "text",
    "text": {
        "content": text
    },
    "at": {
        "atMobiles": [
            user
        ],
        "isAtAll": False
    }
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/var/log/zabbix/dingding.log"):
    f=open("/var/log/zabbix/dingding.log","a+")
else:
    f=open("/var/log/zabbix/dingding.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:
    f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"发送成功"+"\n"+str(text))
    f.close()
else:
    f.write("\n"+str(datetime.datetime.now()) + "    " + str(user) + "    " + "发送失败" + "\n" + str(text))
    f.close()

脚本赋予可执行权限

cd /etc/zabbix

chmod +x dingding.py

创建日志文件

touch /var/log/zabbix/dingding.log
chown zabbix.zabbix /var/log/zabbix/dingding.log

在虚拟机中测试下,输入        ./dingding.py xiejin test “这是条告警测试信息,请忽略”

钉钉中会收到

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_vim_36

页面配置

创建媒体类型

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_zabbix_37

创建动作并添加条件

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_nginx_38

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_nginx_39

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_vim_40

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_zabbix_41

告警操作及恢复操作

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_zabbix_42

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_zabbix_43

主题:
Problem: {EVENT.NAME}

消息:
-=【告警啦】=-
告警组:{TRIGGER.HOSTGROUP.NAME}
告警主机:{HOSTNAME1} 
告警主机别名:{HOST.NAME}
主机IP:{HOST.IP}
主机描述:{HOST.DESCRIPTION}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
警报类别:{TRIGGER.NAME}
当前状态:{ITEM.LASTVALUE}
告警平台:http://192.168.238.146/zabbix

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_vim_44

主题:
Resolved:{EVENT.NAME}

消息:

恢复主机:{HOSTNAME1}

恢复时间:{EVENT.DATE} {EVENT.TIME}

主机IP:{HOST.IP}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件ID:{EVENT.ID}

配置报警媒介

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_bash_45

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_vim_46

将其中监控的服务关闭会向钉钉发送信息则成功,不成功可以去看报表里的动作日志查看原因

关闭了agent中的mariadb

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_vim_47

恢复启动了mariadb

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_nginx_48

五、163邮箱报警

登录163邮箱,开启服务

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_zabbix_49

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_vim_50

zabbix server(146)

安装配置邮件服务器

yum install -y mailx dos2unix
vim /etc/mail.rc

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_bash_51

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_bash_52

测试

echo "test mail from zabbix.server.com" |mail -s "test mial" 17689522335@163.com

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_bash_53

编写邮件引用脚本

vim /etc/zabbix/zabbix_server.conf

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_vim_54

编写脚本

vim /etc/zabbix/mail.sh
#!/bin/bash
#export.UTF-8
bt=$2
sjr=$1
FILE=/tmp/mailtmp.txt
echo "$3" >$FILE
/usr/bin/dos2unix -k $FILE
/bin/mail -s "$bt" "$sjr" <$FILE

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_nginx_55

脚本加权更改属主属组

chmod 777 mail.sh
chown zabbix.zabbix mail.sh
touch /tmp/mailtmp.txt
chmod 777 /tmp/mailtmp.txt
chown zabbix.zabbix /tmp/mailtmp.txt

测试

./mail.sh 17689522335@163.com "test mial2""test mail from server.zabbix.com test2"

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_zabbix_56

页面配置

创建报警媒介

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_zabbix_57

创建动作及操作条件

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_vim_58

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_bash_59

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_zabbix_60

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_nginx_61

邮件主题:

故障:{TRIGGER.STATUS},服务器:{HOSTNAME1},发生:{TRIGGER.NAME}故障!

邮件消息:

告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE}{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}

配置报警媒介

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_bash_62

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_vim_63

测试

停掉监控agent的mariadb

4c8G 的zabbix proxy 能支持多少监控项 zabbix支持哪些监控协议_nginx_64

总结

对zabbix监控功能的完善及补充,还可以添加其他监控项。报警功能相对实用,配置好一旦有故障就会第一时间发消息给我们,还有微笑报警和短信报警,短信报警收费,有兴趣的小伙伴可以去尝试。