linux監控平臺搭建(3)添加自定義監控項目、配置郵件告警、測試警報、不發郵件的問題處理 linux監控平臺搭建(3)添加自定義監控項目、配置郵件告警、測試警報、不發郵件的問題處理

linux監控平臺搭建(3)添加自定義監控項目、配置郵件告警、測試警報、不發郵件的問題處理

原創qq5a6d861adfe892018-04-15 17:31:28評論(0)314人閱讀python

           添加自定義監控項目linux

不少的監控項,咱們都是在配置的模板中設置的,可是模板的選擇是不能徹底知足到咱們生產中 的實際需求。因此咱們能夠自定義監控項目,經過編寫Shell腳本或者python腳本,在腳本中獲取數據庫中所需業務的數,而後在經過在監控項裏添加這個腳本,將腳本獲取到的數目以圖表的形勢展示。這樣就有利於運維人員及時發現和分析問題。git

需求:web

blob.png

需求:監控某臺web的80端口鏈接數,並出圖數據庫

 兩步:1)zabbix監控中心建立監控項目;2)針對該監控項目以圖形展示vim

 對於第一步,須要到客戶端定義腳本瀏覽器

1.定義腳本,編寫內容獲取80端口鏈接數;bash

 vim /usr/local/sbin/estab.sh //內容以下網絡

#!/bin/bash併發

##獲取80端口併發鏈接數,ESTABLISHED的意思是創建鏈接。表示兩臺機器正在通訊。

 netstat -ant |grep ':80 ' |grep -c ESTABLISHED

blob.png

(LISTENING狀態
FTP服務啓動後首先處於偵聽(LISTENING)狀態。

CLOSE_WAIT

    對方主動關閉鏈接或者網絡異常致使鏈接中斷,這時我方的狀態會變成CLOSE_WAIT 此時我方要調用close()來使得鏈接正確關閉

TIME_WAIT

    我方主動調用close()斷開鏈接,收到對方確認後狀態變爲TIME_WAIT。)


blob.png

由於客戶端的還未有其餘機器進行web鏈接,因此鏈接數仍是爲0。


2.修改腳本權限,否者zabbix用戶沒法執行:

 chmod 755 /usr/local/sbin/estab.sh

blob.png

3.客戶端上編輯配置文件 vim /etc/zabbix/zabbix_agentd.conf//增長內容

UnsafeUserParameters=1  //表示可使用自定義腳本

UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh 

//自定義監控項的key爲my.estab.count,這個是在zabbix裏配置監控項中鍵值的名字(可自定),後面的[*]裏面寫腳本的參數(多個參數使用逗號分隔),若是沒有參數則能夠省略使用*代替,腳本爲/usr/local/sbin/estab.sh

blob.png


4.重啓zabbix-agent服務 systemctl restart zabbix-agent



         服務端上測試:

blob.png

1.執行測試腳本測試,是否能正常取得值和返回值。

命令:zabbix_get -s 192.168.136.134 -p 10050 -k 'my.estab.count'

(使用zabbix_get命令可對服務端進行鏈接)

blob.png

在執行這一步以前,首先要判斷客戶端和服務端機器是否存在防火牆規則和SELinux,若是存在則要把這些都關閉,

防火牆查看命令:iptables -nvL

SELinux查看 :getenforce 



2.  而後在zabbix監控中心(瀏覽器)配置增長監控項目

(1)配置-->主機-->選擇操做的主機的監控項-->建立監控項


blob.png

填寫完名稱和鍵值,其餘都是能夠保持默認,而後最後按添加。

(2)點擊圖像:

 建立圖形-->填寫名稱-->添加(監控項處)-->選擇建立的監控項-->添加

blob.png

添加完後選擇剛建立的圖形,選擇預覽就能夠看到圖表數據。


3.建立觸發器,作報警用:

觸發器-->建立觸發器-->填寫名稱-->表達式添加-->選擇最後的添加便可

blob.png

blob.png



                配置郵件告警

使用163.com郵箱。             

blob.png

1.登陸163郵箱,設置開啓POP三、IMAP、SMTP服務

設置受權密碼,用於警報發送時的郵箱密碼

blob.png


2.到監控中心設置郵件告警

 「管理」-->「報警媒介類型」-->「建立媒體類型」

blob.png

 {ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}

{ALERT.SENDTO} :接收郵件者

{ALERT.SUBJECT}:發送郵件的主題

{ALERT.MESSAGE}:發送郵件的內容



blob.png

3.在服務端上編寫郵件告警腳本:mail.py建立報警腳本mail.py

那麼咱們的腳本究竟是放在哪裏才能備調用呢?其實在配置文件中有定義: vim /etc/zabbix/zabbix_server.conf 

blob.png

(默認狀況下這個路徑下的目錄爲空,因此要在這裏建立咱們的腳本mail.py和編寫內容)


編寫腳本

 vim /usr/lib/zabbix/alertscripts/mail.py

//內容參考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py

 

腳本內容:

(用QQ郵箱報警:將腳本中的gport 端口號改下,還有smtp = smtplib.SMTP(gserver, gport)改成smtp = smtplib.SMTP_SSL(gserver, gport),其餘方法同樣便可實現QQ郵箱報警)



#!/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 = 'smtp.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]

##定義163/QQ郵箱的帳號和密碼,你須要修改爲你本身的帳號和密碼(請不要把真實的用戶名和密碼放到網上公開,不然你會死的很慘)

    sendqqmail('15521787110@163.com','740183413abc','15521787110@163.com',to,subject,content)

if __name__ == "__main__":

    main()

    // sendqqmail  這裏定義的是發送郵箱的發送者的信息

blob.png


編寫完腳本要修改其權限:

chmod 755 /usr/lib/zabbix/alertscripts/mail.py


測試是否能成功發送郵件,服務端機器命令行下操縱

python /usr/lib/zabbix/alertscripts/mail.py 15521787110@163.com "this is test title" "success send mail"

由於腳本是用python寫的,因此要執行python語句,郵件接收者:15521787110@163.com;郵件主題:"this is test title";郵件內容:"success send mail"。

blob.png命令行下測試成功,腳本正常能使用。


4.建立郵箱帳戶(用於接收告警,郵箱用戶在Zabbix的用戶裏設置)

(1)設置用戶首先要有用戶羣組,用戶羣組能夠建立也可使用自帶的。修改用戶羣組權限爲讀寫,由於若是用戶羣組無讀寫權限郵件也發不出去。

    修改用戶羣組權限步驟:點擊用戶羣組-->選擇操做的用戶羣組-->權限-->選擇「讀寫」-->選擇-->把出現內容全選-->添加。

(2)建立郵箱帳戶步驟:

首先填寫建立用戶處信息:

  blob.png

而後修改報警媒介:

blob.png

blob.png


5.配置-->動做

當觸發器,報警媒介等都建立後,要去配置動做,否者當出動觸發器的時候,郵件沒法發送。

依次操做"配置"-->"動做"-->"建立動做"

(1)建立動做基本內容

blob.png

(2)點擊"操做"

blob.png

HOST:{HOST.NAME} {HOST.IP}  :告警的主機名

TIME:{EVENT.DATE}  {EVENT.TIME} :告警發生的日期時間

LEVEL:{TRIGGER.SEVERITY} :告警的示警度(未分類、告警、通常告警)

NAME:{TRIGGER.NAME}     :哪一個觸發器觸發告警

messages:{ITEM.NAME}:{ITEM.VALUE}  :告警信息狀態碼

ID:{EVENT.ID}               :事件的id



(3)點擊「恢復操做」

(當告警恢復時也發送信息)

blob.png



                        測試警報

 測試警報,故意建立一個監控主機的觸發器,簡單的填寫觸發器名稱,而後添加表達式,在表達式中設定監控項和功能值N,知足功能值N時告警。最後添加便可

blob.png


1.觀察監控狀態,是否發生警告問題和正常發送郵件:

blob.png

(當動做處的信息爲空白時多是動做未定義對或者對腳本無權限)

2.問題查詢

blob.png

添加媒介信息後繼續觀察問題是否正確發送,可是首先要把問題先恢復,操做也是監控主機的觸發器的表達式的條件。

blob.png

(這樣恢復盡在實驗中操做)

   要修改主機的問題告警頻率,須要在模板中修改。具體爲操做具體監控主機的模板,選擇相應的監控項的數據更新時間

blob.png

出現這種動做的完成後則,表示咱們的問題就是能經過郵件的方式進行發送的。

若是問題不能發送郵件則,問題查詢:

(1)檢查郵件是否能進行發送

 (2)檢測腳本是否給zabbix用戶有操做權限。

  (3)查看郵件用戶的信息

相關文章
相關標籤/搜索