zabbix-3

chunyang315發表於2018-04-17

新增自定義監控專案

需求:監控某臺web的80埠連線數,並形成影象顯示。

(1)zabbix監控中心建立監控專案(客戶端)
建立指令碼vim /usr/local/sbin/estab.sh

#!/bin/bash
##獲取80埠併發連線數
netstat -ant |grep ':80' |grep -c ESTABLISHED   //netstat -ant 用來顯示網路連結的狀態    

並修改許可權chmod 755 /usr/local/sbin/estab.sh 是為了給zabbix使用者擁有執行該指令碼的許可權。
(2)修改客戶端的配置檔案/etc/zabbix/zabbix_agentd.conf修改以下內容

UnsafeUserParameters=1   //表示使用自定義指令碼。如果等於0就不能使用自定義的指令碼

UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh   //指定自定義指令碼的路徑以及自定義指令碼的名稱 

/my.estab.count需要填寫在監控項中的鍵值位置。
[*]
表示沒有引數,例如systemctl stop network.service 這是一個指令碼,那其中後面2個都是引數。如果指令碼帶引數的話,可以寫在[ ]裡面,用,分隔

(3)重啟zabbix-agent服務

systemctl restart zabbix-agent   

測試指令碼是否被識別

(1)服務端執行以下命令,進行驗證。

[root@zcy-1 ~]# zabbix_get -s 192.168.244.135 -p 10050 -k 'my.estab.count'
0
-k 表示它的鍵值

如果指令碼有問題不可能會有結果。
必須保持網路的通常,沒有防火牆規則和selinux處於關閉狀態
(2)在zabbix監控中心(瀏覽器)配置增加監控專案
點選:配置→主機→zcy-2(監控項 )→建立監控項
這裡寫圖片描述

併為它建立圖形
這裡寫圖片描述

建立觸發器,當併發連線數超過200時,會告警
這裡寫圖片描述


配置郵件告警

  • 使用第三方郵箱來接收告警郵件,163或者qq郵箱

  • 需要登入郵箱,並設定開啟POP3、IMAP、SMTP服務,第一次會需要進行簡訊驗證.
    這裡寫圖片描述

  • 監控中心設定郵件告警。
    點選:管理→報警媒介型別→建立媒體型別
    這裡寫圖片描述
    這裡的引數分別是指(1)接收郵件的郵箱地址
    (2)郵件主題
    (3)郵件內容

  • 建立報警指令碼mail.pyvim /usr/lib/zabbix/alertscripts/mail.py(服務端)寫入以下內容

#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import os,sys
reload(sys)
sys.setdefaultencoding('utf8')
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from  subprocess import *
def sendqqmail(username,password,mailfrom,mailto,subject,content):
    gserver = 'daycws0524@163.com'
    gport = 25
    try:
        msg = MIMEText(unicode(content).encode('utf-8'))
        msg['from'] = mailfrom
        msg['to'] = mailto
        msg['Reply-To'] = mailfrom
        msg['Subject'] = subject
        smtp = smtplib.SMTP(gserver, gport)
        smtp.set_debuglevel(0)
        smtp.ehlo()
        smtp.login(username,password)
        smtp.sendmail(mailfrom, mailto, msg.as_string())
        smtp.close()
    except Exception,err:
        print "Send mail failed. Error: %s" % err
def main():
    to=sys.argv[1]
    subject=sys.argv[2]
    content=sys.argv[3]

    sendqqmail('daycws0524@163.com','aaaaaaa','daycws0524@163.com',to,subject,content)
if __name__ == "__main__":
    main()



~                                                                              

其中出現的’aaaaaa’是指的你的授權碼。 並修改為755許可權。

  • 執行以下命令來給自己發測試郵件
python mail.py  daycws0524@163.com   "chengdu" "zai chengdu de mou ge di fang "

這裡寫圖片描述

  • 建立一個使用者用來接收郵件
    點選:管理→使用者→建立使用者

這裡寫圖片描述

  • 配置動作是指當觸發報警後該進行什麼方式來通知運維人員。
    這裡寫圖片描述
    這裡寫圖片描述
    這裡寫圖片描述
    這裡寫圖片描述
    這裡寫圖片描述
    這裡寫圖片描述

測試告警

  • 建立新的觸發器來進行測試
    這裡寫圖片描述
    這裡寫圖片描述
    後面測試中發現出現問題並不會給使用者發郵件,進行排查
    (1)檢視指令碼,或者在服務端上重新發一封郵件檢查指令碼是否有錯誤存在
    (2)檢查使用者中的配置是否正確

配置告警流程
(1)郵箱中設定開啟POP3、IMAP、SMTP服務,並記錄授權碼,沒有授權碼那麼指令碼中就不能去寫向合格密碼,
(2)監控中心裡新增報警媒介,並填寫引數
(3)編輯指令碼(/usr/lib.zabbix/alertscripts路徑下)修改使用者名稱及密碼,並修改為755許可權。
(4)增加使用者,需要修改使用者群組的許可權為“所有組 讀寫”
(5)配置裡面的動作,條件保持預設即可。
後面還是沒有成功,需要繼續試驗