Zabbix自定義腳本監控nginx及微信告警的方法

項目描述

本項目的目的是構建一個能實現微信告警的zabbix監控系統,方便的監控整個nginx集群,同時能批量的去部署和管理整個集群。

項目步驟

  • zabbix服務端(192.168.2.138)安裝好zabbix server,nginx端安裝好zabbix agent(192.168.2.58),配置好Nginx負載均衡集群,并打開狀態統計。

  • nginx端編寫監控腳本,取到nginx的狀態。

  • 服務端web添加監控項,出圖。

  • 注冊企業微信,配置好微信接口。

  • zabbix服務端添加接口推送腳本,測試接口正常。

  • 在web端配置報警媒介,群組和用戶,添加相關觸發器和動作。

  • nginx關停服務,測試是否能通過微信告警。

項目心得

在測試接收消息過程中,返回值一直是參數{ALTER.MESSAGE},排查腳本問題,版本問題,最后發現是參數{ALERT.MESSAGE},所以打字一定要細心,認真。同時對監控也有了一定的認識,運維人員不可能7*24小時盯著zabbix看,所以做到及時告警是非常必要的,對之前的高可用web集群項目葉可以進行完善。

詳細步驟

zabbix-agent客戶端nginx配置監控

nginx打開狀態統計功能

nginx配置增加stub_status模塊

location?=?/wyt_status{ stub_status;}

測試狀態統計功能是否打開

http://192.168.2.58/wyt_status

nginx端(zabbix客戶端)編寫監控腳本

cd?/etc/zabbix/zabbix_agentd.d? #在zabbix_agentd.d目錄下編寫監控腳本 vim?zabbix-nginx_status.sh
#!/bin/bash case?$1?in ????????active) ????????????????curl?http://192.168.2.58:80/wyt_status?2>/dev/null|awk?'/Active/?{print?$NF}' ????????????????;; ????????accepts) ????????????????curl?http://192.168.2.58:80/wyt_status?2>/dev/null|awk?'NR==3?{print?$1}' ????????????????;; ????????handled) ????????????????curl?http://192.168.2.58:80/wyt_status?2>/dev/null?|awk?'NR==3?{print?$2}' ????????????????;; ????????requests) ????????????????curl?http://192.168.2.58:80/wyt_status?2>/dev/null?|awk?'NR==3?{print?$3}' ????????????????;; ????????reading) ????????????????curl?http://192.168.2.58:80/wyt_status?2>/dev/null?|awk?'NR==4?{print?$2}' ????????????????;; ????????writing) ????????????????curl?http://192.168.2.58:80/wyt_status?2>/dev/null?|awk?'NR==4?{print?$4}' ????????????????;; ????????waiting) ????????????????curl?http://192.168.2.58:80/wyt_status?2>/dev/null?|awk?'NR==4?{print?$NF}' ????????????????;; ???????????ping) ????????????????pidof?nginx?|wc?-l ????????????????#通過查詢進程PID值,測試nginx存活狀態 ????????????????;; esac
vim?userparameter_nginx.conf #在zabbix_agentd.d目錄下自定義參數配置文件 UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/zabbix-nginx_status.sh?$1 #指定動作 chmod?+x?zabbix-nginx_status.sh #授予可執行權限 service?zabbix-agent?restart #刷新服務 zabbix_get?-k?nginx.status[ping]?-s?192.168.2.58 #去服務端測試是否返回參數1

zabbix-server-web配置監控

先創建nginx主機master-nginx

Zabbix自定義腳本監控nginx及微信告警的方法

添加應用集nginx

Zabbix自定義腳本監控nginx及微信告警的方法

在應用集nginx增加監控項

Zabbix自定義腳本監控nginx及微信告警的方法

自定義觸發器nginx-up-down,監控項為nginx-ping,正常為1,每5s監控一次,若為0,嚴重警告。

Zabbix自定義腳本監控nginx及微信告警的方法

Zabbix自定義腳本監控nginx及微信告警的方法

除nginx-ping,nginx-accepts外,需要添加所有狀態監控項,只有nginx-ping創建觸發器,這里不一一舉例。

Zabbix自定義腳本監控nginx及微信告警的方法

添加好所有監控項,下一步制圖,圖中包含所有監控項

Zabbix自定義腳本監控nginx及微信告警的方法

因為我們監控實際上就是在一直請求,所以看到nginx-requests在不斷增加。

Zabbix自定義腳本監控nginx及微信告警的方法

注冊企業微信接口

注冊成功之后創建一個運維部門

Zabbix自定義腳本監控nginx及微信告警的方法

記住自己的企業ID

Zabbix自定義腳本監控nginx及微信告警的方法

自建應用

Zabbix自定義腳本監控nginx及微信告警的方法

應用名稱為zabbix監控

Zabbix自定義腳本監控nginx及微信告警的方法

Zabbix自定義腳本監控nginx及微信告警的方法

創建成功后,查看信息記住自己的AgentId和Secret

Zabbix自定義腳本監控nginx及微信告警的方法

微信掃碼企業微信插件就可以在微信接收消息

Zabbix自定義腳本監控nginx及微信告警的方法

zabbix-server接口腳本配置告警

Shell腳本

cd?/usr/lib/zabbix/alertscripts 進入腳本配置文件夾 vim?weixin.sh
#!/bin/bash  CorpID="wwaa6fb8ff1b81aa77"?????#?你的企業id Secret="Cxyd*****"????#你的SecretID GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CorpID&corpsecret=$Secret" Token=$(/usr/bin/curl?-s?-G?$GURL?|awk?-F":?'{print?$4}'|awk?-F"?'{print?$2}') #?echo?$Token PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Token"  function?body(){ ????????local?int?agentid=1000002???????????????#?你的agentdid ????????local?UserID="@all"?????????????????#?發送的用戶ID ????????local?PartyID=1??????????????????#?部門ID ????????local?Msg=$(echo?"$@"?|?cut?-d"?"?-f3-)?#?發送給所有人 ????????printf?'{n' ????????printf?'t"touser":?"'"$UserID""",n" ????????printf?'t"toparty":?"'"$PartyID""",n" ????????printf?'t"msgtype":?"text",n' ????????printf?'t"agentid":?"'"$agentid""",n" ????????printf?'t"text":?{n' ????????printf?'tt"content":?"'"$Msg"""n" ????????printf?'t},n' ????????printf?'t"safe":"0"n' ????????printf?'}n' } /usr/bin/curl?--data-ascii?"$(body?$1?$2?$3)"?$PURL

測試腳本能否正常接收消息

Zabbix自定義腳本監控nginx及微信告警的方法

可以看到正常接收。

Zabbix自定義腳本監控nginx及微信告警的方法

然后我們回到zabbix-server-web配置

zabbix-server-web配置告警

管理->報警媒介類型->創建媒體類型

Zabbix自定義腳本監控nginx及微信告警的方法

創建用戶群組

Zabbix自定義腳本監控nginx及微信告警的方法

創建用戶

Zabbix自定義腳本監控nginx及微信告警的方法

報警媒介

Zabbix自定義腳本監控nginx及微信告警的方法

Zabbix自定義腳本監控nginx及微信告警的方法

權限->超級管理員

Zabbix自定義腳本監控nginx及微信告警的方法

配置->動作

添加觸發器

Zabbix自定義腳本監控nginx及微信告警的方法

操作

故障{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}

Zabbix自定義腳本監控nginx及微信告警的方法

恢復操作

恢復{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}

Zabbix自定義腳本監控nginx及微信告警的方法

zabbix-agent關停nginx服務測試

Zabbix自定義腳本監控nginx及微信告警的方法

可以看到推送成功

Zabbix自定義腳本監控nginx及微信告警的方法

Python webhook機器人腳本

新建一個測試群聊,在群里添加機器人,記住webhook地址

Zabbix自定義腳本監控nginx及微信告警的方法

除了使用Shell腳本配置接口之外,還可以使用Python腳本

#!/usr/bin/python #-*-?coding:?utf-8?-*- import?requests import?json import?sys import?os  headers?=?{'Content-Type':?'application/json;charset=utf-8'} api_url?=?"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=****” #填寫自己的webhook地址 def?msg(text): ????json_text=?{ ?????"msgtype":?"text", ????????"text":?{ ????????????"content":?text ????????}, ????} ????print?requests.post(api_url,json.dumps(json_text),headers=headers).content  if?__name__?==?'__main__': ????text?=?sys.argv[1] ????msg(text)

測試

python?weixin.py?test

web配置同上

Zabbix自定義腳本監控nginx及微信告警的方法

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享