Linux監控(添加自定義監控項,配置郵件告警)

1、添加自定義監控項python

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

步驟:vim

1):zabbix監控中心建立監控項目瀏覽器

2):針對該監控項目以圖形展示bash


第一步(須要到客戶端定義腳本)併發

[root@zhuji ~]# vim /usr/local/sbin/estab.shide

#!/bin/bash測試

##獲取80端口併發鏈接數spa

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

[root@zhuji ~]# chmod 755 /usr/local/sbin/estab.sh   (給權限,由於是zabbix要啓動)


第二步(客戶機上修改配置文件)

284    # UnsafeUserParameters=0          去掉#號,並修改成1,表示開啓使用自定義腳本

297   UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh   自定義監控項的key爲my.estab.count,後面的{*}裏面寫腳本的參數,若是沒有參數能夠省略,腳本爲/usr/local/sbin/estab.sh


第三步 (重啓zabbix-agent服務)

[root@congji ~]# systemctl restart zabbix-agent


第四步 (到服務端驗證,執行命令,結果返回爲0,表示腳本定義成功)

[root@zhuji ~]# zabbix_get -s 192.168.52.100 -p 10050 -k 'my.estab.count'

0


第五步 (在zabbix監控中心(瀏覽器)配置增長監控項目)

1.png

名稱自定義

鍵值填寫my.estab.count

歷史數據保留時長 (數據存儲多長時間)

趨勢數據存儲週期 


第六步 (圖形-->建立圖形)

2.png


第七步 (觸發器-->建立觸發器)

2.png

1.png


2、配置郵件告警

使用163或者qq郵箱發告警郵箱

由於qq郵箱有時候會收不到告警,因此咱們選用163郵箱來作實驗


(一)登陸你的163郵箱,設施開啓P0P3,IMAP,SMTP服務,並記錄受權碼

1.png

(二)在監控中心設置郵件告警

管理--> 報警沒接類型-->建立媒體類型

(雖然zabbix給了咱們email的模板,可是咱們用python寫一個腳本,用腳本的形式來實現)

2.png

腳本的參數分別表明了

{ALERT.SENDTO}   收件人

{ALERT.SUBJECT}  主題

{ALERT.MESSAGE}  內容


(三)建立報警腳本mail.py

首先咱們要知道配置文件裏,把自定義腳本放在哪一個目錄下。

[root@zhuji ~]# vim /etc/zabbix/zabbix_server.conf  //搜索alert

咱們發現路徑是 

AlertScriptsPath=/usr/lib/zabbix/alertscripts


[root@zhuji ~]# vim  /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 = '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]

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

    sendqqmail('18681980**8@163.com', 'qq密碼',18681980**8@163.com',to,subject,content)

if __name__ == "__main__":

    main()

[root@zhuji ~]# chmod 755 /usr/lib/zabbix/alertscripts/mail.py


驗證腳本是否正確能夠嘗試給本身郵箱發信息

[root@zhuji alertscripts]# python mail.py 18681980408@163.com nihao   nihaorxr

3.png


3、測試告警

測試告警

爲了讓zabbix報警,咱們建立一個錯誤,建立一個觸發器

10.png

9.png

相關文章
相關標籤/搜索