zabbix自定義監(jiān)控+報警

1.數(shù)據(jù)計算
2.自定義監(jiān)控TCP 11種狀態(tài)?
3.觸發(fā)器
4.自定義報警
5.自定義模板(nginx狀態(tài)

1.數(shù)據(jù)計算

1.歷史保留如何計算? ( 數(shù)據(jù) )
days(items/refresh rate)243600bytes
items:監(jiān)控項數(shù)量。
days:保留歷史數(shù)據(jù)的天數(shù)欧穴。
refresh rate:監(jiān)控項的更新間隔锥惋。
bytes:保留單個值所需要占用的字節(jié)數(shù)忌穿,依賴于數(shù)據(jù)庫引擎,通常為 ~90 字節(jié)笋额。

90(200/60)24*3600 ~ 24MB * 200主機 = 5G

2.趨勢保留如何計算? ( 圖形 )
days(items/3600)243600bytes
items:監(jiān)控項數(shù)量增拥。
days:保留歷史數(shù)據(jù)的天數(shù)。
bytes:保留單個趨勢數(shù)據(jù)所需要占用的字節(jié)數(shù)掘鄙,依賴于數(shù)據(jù)庫引擎,通常為 ~90 字節(jié)嗡髓。

365(200/3600)24*3600 ~ 2MB * 200主機 = 500MB

3.事件如何計算?
daysevents243600bytes
events:每秒產(chǎn)生的事件數(shù)量操漠。假設最糟糕的情況下,每秒產(chǎn)生 1 個事件饿这。
days:保留歷史數(shù)據(jù)的天數(shù)浊伙。
bytes:保留單個趨勢數(shù)據(jù)所需的字節(jié)數(shù)撞秋,取決于數(shù)據(jù)庫引擎,通常為 ~170 字節(jié)嚣鄙。

365124*3600 ~ 30MB *200主機 = 6G

https://www.zabbix.com/documentation/4.0/zh/manual/installation/requirements

2.自定義監(jiān)控TCP 11種狀態(tài)?

    netstat -an | grep -c ESTABLISHED
    netstat -an | grep -c LISTEN
    netstat -an | grep -c SYN_SENT
    netstat -an | grep -c TIME_WAIT

    1.使用shell命令提取狀態(tài)
    2.通過zabbix-agent將提取的狀態(tài)封裝為一個又一個的監(jiān)控項目
    3.檢查封裝后的監(jiān)控項是否取值正確
    4.創(chuàng)建一個模板
    5.基于模板創(chuàng)建監(jiān)控項
    6.將主機關聯(lián)該模板,完成監(jiān)控
    7.檢查監(jiān)控后的數(shù)據(jù)

UserParameter=tcp[*], netstat -lntp | grep -c "$1"

如何讓其他機器也能使用該模板?
1.推送*.conf文件,這樣其他主機也能提取到key對應的值
2.將主機關聯(lián)對應的模板

3.觸發(fā)器

1.自定義觸發(fā)器
https://www.cnblogs.com/kingle-study/p/10172413.html

①.監(jiān)控內(nèi)存的百分比, 如果 低于20% 則觸發(fā)報警
1.通過shell命令提取內(nèi)存的百分比
2.設定觸發(fā)器

②.多條件觸發(fā)器
1.監(jiān)控內(nèi)存, 以及swap 當內(nèi)存低于百分之20,并且swap使用率超過百分之1% 則觸發(fā)報警
內(nèi)存取的是剩余 20
swap取的是已使用 1

變量
監(jiān)控項
key | 鍵值

2.觸發(fā)器功能
and #并且 多個監(jiān)控項,同時成立
or #或者 多個監(jiān)控項,一個成立

last() #比對最新的值
avg() #平均值 網(wǎng)絡的流量 avg(5m) 進程 負載 IO
diff() #比對上一次文件的內(nèi)容
nodata() #收不到數(shù)據(jù)進行報警nodata(5m) 探測主機存活
test.nodata(5m) = 1 這個條件為真 獲取不到數(shù)據(jù)報警
(5m) #表示最近5分鐘得到值
(#5) #表示最近5次得到的值

3.自定義圖形
1.基于監(jiān)控項, 創(chuàng)建圖形, 可以在模板上創(chuàng)建,這個所有的主機都應用成功
2.基于圖形創(chuàng)建, 聚合圖形, 將多個小圖片整合至一個大圖片上 ( 檢測中--->聚合圖形 )
3.基于聚合圖形創(chuàng)建幻燈片, 可以讓多張聚合圖形進行輪播 (大屏顯示器 --> )

擴展: 如果希望出更好看,更炫的圖,需要使用grafana   
    注意: grafana只是一個出圖,所有的數(shù)據(jù)都是zabbix提供   (  皮膚 )


    1.安裝grafana
        # yum localinstall grafana-6.4.4-1.x86_64.rpm 
    
    
    2.啟動grafana  默認監(jiān)聽在3000端口
        # systemctl start grafana-server

    3.安裝插件, 集成zabbix
        # grafana-cli plugins install alexanderzobnin-zabbix-app
        # systemctl restart grafana-server

    4.啟用已安裝好的zabbix插件,這樣就完成了集成
    5.配置zabbix數(shù)據(jù)源
    
    6.grafana  變量   ()

    1.實現(xiàn)一個單條件觸發(fā)器
    2.實現(xiàn)一個多條件觸發(fā)器
    3.基于監(jiān)控項
        1.圖形
        2.聚合圖形
        3.幻燈片
    4.grafana安裝

4.自定義報警

基于監(jiān)控項-->觸發(fā)器-->執(zhí)行動作--> ( 通知  |  執(zhí)行命令  
1.怎么發(fā)        
2.發(fā)什么
3.發(fā)給誰


    1.啟用動作
    2.動作中將所有的報警消息通過介質(zhì)發(fā)送給administrator用戶
    3.配置介質(zhì)--> 新建一個發(fā)郵件的郵箱介質(zhì)
    4.配置administrator用戶, 填寫收件人郵件

https://www.zabbix.com/documentation/3.4/zh/manual/appendix/macros/supported_by_location
1.修改觸發(fā)器動作
1.修改報警的消息
報警主機:{HOST.NAME1}
報警服務: {ITEM.NAME1}
報警Key1: {ITEM.KEY1}:{ITEM.VALUE1}
報警Key2: {ITEM.KEY2}:{ITEM.VALUE2}
嚴重級別: {TRIGGER.SEVERITY}

2.配置故障恢復消息吻贿,消息內(nèi)容如下:
恢復主機:{HOST.NAME1}
恢復服務: {ITEM.NAME1}
恢復Key1:{ITEM.KEY1}:{ITEM.VALUE1}
恢復Key2: {ITEM.KEY2}:{ITEM.VALUE2}

{ALERT.SENDTO} #發(fā)送的用戶
{ALERT.SUBJECT} #發(fā)送的主題
{ALERT.MESSAGE} #發(fā)送的內(nèi)容
2.報警方式
郵件報警
微信報警
釘釘報警

  • 郵件報警:


    image.png

    image.png
  • 微信報警

企業(yè)微信地址,個人可注冊
https://work.weixin.qq.com/

登錄企業(yè)微信
1.  企業(yè) -> 微工作臺里可以直接微信關注哑子,無需要下載企業(yè)微信
2.  通訊錄里的賬號在發(fā)微信腳本中要用到
3.  應用與小程序可創(chuàng)建應用

發(fā)微信的python腳本/usr/local/zabbix/alertscripts/weixin.py
[root@zabbix-server alertscripts]# cat weixin.py 
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#author: bgx
#date: 2018
#comment: zabbix接入微信報警腳本

import requests
import sys
import os
import json
import logging

logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
                datefmt = '%a, %d %b %Y %H:%M:%S',
                filename = os.path.join('/tmp','weixin.log'),
                filemode = 'a')


corpid='xxx'
appsecret='xxx'
agentid=xxx
#獲取accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']

#發(fā)送消息
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken

touser=sys.argv[1]
subject=sys.argv[2]
#toparty='3|4|5|6'
message=sys.argv[2] + "\n\n" +sys.argv[3]

params={
        "touser": touser,
#       "toparty": toparty,
        "msgtype": "text",
        "agentid": agentid,
        "text": {
                "content": message
        },
        "safe":0
}

req=requests.post(msgsend_url, data=json.dumps(params))

logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)  


                  
測試腳本
/usr/local/zabbix/alertscripts/weixin.py 'xuliangwei' 'weixin_subject' 'weixin_message'
  • 釘釘報警
釘釘企業(yè)的地址
https://oa.dingtalk.com/

釘釘企業(yè)告警的注意事項
1.通訊錄管理里的userid發(fā)釘釘需要用到
2.工作臺里可自建應用
3.微應用管理可以管理應用
4.開發(fā)賬號管理可以查看密碼信息


發(fā)送釘釘告警的腳本/usr/local/zabbix/alertscripts/zabbix_dingding.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
#curl 'https://oapi.dingtalk.com/gettoken?corpid=xxx&corpsecret=xxx'
import json,urllib2,sys

appkey = 'xxx'
appsecret = 'xxx'
agentid = 'xxx'
touser = sys.argv[1]
content = sys.argv[2]

tockenurl = 'https://oapi.dingtalk.com/gettoken?corpid=' + appkey + "&corpsecret=" + appsecret
tockenresponse = urllib2.urlopen(tockenurl)
tockenresult = json.loads(tockenresponse.read().decode('utf-8'))
tocken =  tockenresult['access_token']

sendurl = 'https://oapi.dingtalk.com/message/send?access_token=' + tocken
headers = {
'Content-Type':'application/json'
}
main_content = {
"touser": touser,
"toparty": "",
"agentid": agentid,
"msgtype": "text",
"text": {
"content": content
}
}
main_content = json.dumps(main_content)
req = urllib2.Request(sendurl,headers=headers)
response = urllib2.urlopen(req, main_content.encode('utf8'))
print(response.read().decode('utf-8'))

手動發(fā)釘釘告警測試
chmod +x /usr/local/zabbix/alertscripts/zabbix_dingding.py
/usr/local/zabbix/alertscripts/dingding.py 194668593697491 'dingding_messages'


{ALERT.SENDTO}      #發(fā)送的用戶
{ALERT.SUBJECT}     #發(fā)送的主題
{ALERT.MESSAGE}     #發(fā)送的內(nèi)容

3.告警升級 | 告警抑制
1.遠程執(zhí)行命令
2.告警抑制是怎么回事

告警抑制:
1個故障 出現(xiàn) 發(fā)郵件給運維 郵件
超過1分鐘沒有被處理 發(fā)郵件給經(jīng)理 微信
超過2分鐘沒有被處理 發(fā)郵件給總監(jiān) 釘釘

5.自定義模板(nginx狀態(tài))

開啟nginx狀態(tài)

    location /nginx_status {
        stub_status;
        access_log off;
        allow 127.0.0.1;
        deny all;
}

編寫取值腳本

[root@web1 zabbix_agentd.d]# cat /etc/zabbix/zabbix_agentd.d/scripts/nginx.sh Nginx_status_file=/tmp/nginx_status.tmp
Nginx_status_name=status.oldxu.com
Nginx_status_path=/nginx_status
curl -sH host:${Nginx_status_name} http://127.0.0.1:80/${Nginx_status_path} > ${Nginx_status_file}

case $1 in
    active)
        echo $[ $(awk 'NR==1 {print $NF}' ${Nginx_status_file}) -1 ]
        ;;
    accepts)
        echo $[ $(awk 'NR==3 {print $1}' ${Nginx_status_file}) - 1 ]
        ;;
    handled)
        echo $[ $(awk 'NR==3 {print $2}' ${Nginx_status_file}) - 1 ]
        ;;
    requests)
        echo $[ $(awk 'NR==3 {print $3}' ${Nginx_status_file}) - 1 ]
        ;;
    reading)
        awk 'NR==4 {print $2}' ${Nginx_status_file}
        ;;
    writing)
        awk 'NR==4 {print $4}' ${Nginx_status_file}
        ;;
    waiting)
        awk 'NR==4 {print $NF}' ${Nginx_status_file}
        ;;
    *)
        echo "USAGE: $0 [active|accepts|handled|requests|reading|writing|waiting]"
        ;;
esac

添加自定義監(jiān)控項

UserParameter=nginx[*],/bin/bash /etc/zabbix/zabbix_agentd.d/scripts/nginx.sh "$1"

web界面添加模板


image.png
image.png
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末廓八,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子赵抢,更是在濱河造成了極大的恐慌,老刑警劉巖声功,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烦却,死亡現(xiàn)場離奇詭異,居然都是意外死亡先巴,警方通過查閱死者的電腦和手機其爵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伸蚯,“玉大人摩渺,你說我怎么就攤上這事〖劣剩” “怎么了摇幻?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長挥萌。 經(jīng)常有香客問我绰姻,道長,這世上最難降的妖魔是什么引瀑? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任狂芋,我火速辦了婚禮,結(jié)果婚禮上憨栽,老公的妹妹穿的比我還像新娘帜矾。我一直安慰自己,他們只是感情好屑柔,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布屡萤。 她就那樣靜靜地躺著,像睡著了一般掸宛。 火紅的嫁衣襯著肌膚如雪灭衷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天旁涤,我揣著相機與錄音翔曲,去河邊找鬼迫像。 笑死,一個胖子當著我的面吹牛瞳遍,可吹牛的內(nèi)容都是我干的闻妓。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼掠械,長吁一口氣:“原來是場噩夢啊……” “哼由缆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起猾蒂,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤均唉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后肚菠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舔箭,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年蚊逢,在試婚紗的時候發(fā)現(xiàn)自己被綠了层扶。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡烙荷,死狀恐怖镜会,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情终抽,我是刑警寧澤戳表,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站昼伴,受9級特大地震影響扒袖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜亩码,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一季率、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧描沟,春花似錦飒泻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至席覆,卻和暖如春史辙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工聊倔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留晦毙,地道東北人。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓耙蔑,卻偏偏與公主長得像见妒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子甸陌,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容