zabbix實現自定義監控


實現自定義監控項實例

 

1.創建主機組
2.創建主機
3.創建監控項
  1.到需要監控的主機的agent中添加自定義的監控項目
    cd /etc/zabbix/zabbix_agentd.d
    vi userparameter_mysql.conf
    UserParameter=監控項目名稱,shell命名
    UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive
    systemctl restart zabbix-agent
  2.到zabbix server的主機上進行調試
    zabbix_get -s 192.168.11.134 -k mysql.ping
    [root@node3 ~]# zabbix_get -s 192.168.11.134 -k mysql.ping
    sh: mysqladmin: 未找到命令
    0
    由此可以看出可以正常執行命令 同時返回的結果是一個字符串
    這個命令執行的結果類型在創建觸發器的時候十分有用
命令配置步驟

 儀表盤配置步驟:

   1.創建自定義監控項

信息類型的選擇 需要根據shell命令執行的具體結果來確定 不能隨便填寫

 

   2.根據自定義監控項創建觸發器

      表達式就是對獲取對應監控項的值進行一些處理 根據處理后的值來判斷是否進行告警操作

     

 

 

 

zabbix內置監控模板

 

zabbix實現腳本發送告警郵件

   zabbix-server 服務器系統配置

[root@Zabbix ~]# yum -y install mail         #如有mail命令則不用安裝
[root@Zabbix ~]# vim /etc/mail.rc
# Display the recipients of messages sent by the user himself in
# header summaries.
set showto
# Automatically check for new messages at each prompt, but avoid polling
# of IMAP servers or maildir folders.
set newmail=nopoll
# If threaded mode is activated, automatically collapse thread.
set autocollapse
# Hide some header fields which are uninteresting for most human readers.
ignore received in-reply-to message-id references
ignore mime-version content-transfer-encoding
# Only include selected header fields when forwarding messages.
fwdretain subject date from to
# For Linux and BSD, this should be set.
set from=richardcnhm@sina.com                     #發送的郵件地址
set smtp=smtp.sina.com                                   #外部smtp服務器的地址
set smtp-auth-user=richardcnhm@sina.com    #外部smtp服務器認證的用戶名
set smtp-auth-password=123456                     #外部smtp服務器認證的用戶密碼(如用163或qq郵箱則為授權碼)
set smtp-auth=login                                          #郵件認證的方式
[root@Zabbix ~]# echo "郵件正文"|mail -s "郵件主題" 收件人地址           #發送郵件測試命令

[root@node3 ~]# echo "hello world aaaaa" |mail -s "aaaaa" 2228@163.com
[root@node3 ~]# echo "hello world aaaaa" |mail -s "aaaaa" 1272@qq.com

發送郵件的標題為test 被服務器垃圾郵件屏蔽
View Code

  發送郵件腳本的實現

[root@Zabbix ~]# yum -y install dos2unix
[root@Zabbix ~]# vim /usr/lib/zabbix/alertscripts/mail.sh
#!/bin/bash
# use mailx to send mail
# 20141127 carl 1st
# PATH
file=/tmp/zabbix_mail.txt
echo "$3" > $file
dos2unix -k $file
/bin/mail -s "$2" $1 < $file
# echo "$3" | mail -s "$2" $1
#注:使用dos2unix工具是為解決zabbix發送郵件出現亂碼和收到的郵件是*.bin的情況
#$3 是前端定義的郵件內容,$2是前端定義的主題,$1是前端定義的收件人
[root@Zabbix alertscripts]# chmod 777 mail.sh
[root@Zabbix alertscripts]# chown zabbix.zabbix mail.sh

mail.sh必須存放在/usr/lib/zabbix/alertscripts/目錄下
shell版本
[root@zabbix alertscripts]# pwd

/usr/lib/zabbix/alertscripts

[root@zabbix alertscripts]# cat mail_qq.py

#!/usr/bin/python

#coding:utf-8

import smtplib

from email.mime.text import MIMEText

import sys

mail_user = '111111111@qq.com'

mail_pass = 'xxxxxxxxxxx'

 

def send_mail(to_list,subject,content):

me = "zabbix 監控告警平台"+"<"+mail_user+">"

msg = MIMEText(content, 'plain', 'utf-8')

msg['Subject'] = subject

msg['From'] = me

msg['to'] = to_list

try:

s = smtplib.SMTP_SSL("smtp.qq.com", 465)

s.login(mail_user,mail_pass)

s.sendmail(me,to_list,msg.as_string())

s.close()

return True

except Exception,e:

print str(e)

return False

if __name__ == "__main__":

send_mail(sys.argv[1], sys.argv[2], sys.argv[3])

mail_user為郵箱地址,mail_pass為郵箱服務商提供的客戶端授權碼,獲得授權碼的方式也可以參考百度,要說明的是目前網易郵箱客戶端授權碼支持自定義,qq郵箱客戶端授權碼不支持自定義,需要生成、這里也附上使用163郵箱的腳本

[root@zabbix alertscripts]# cat mail_163.py

#!/usr/bin/python

#coding:utf-8

import smtplib

from email.mime.text import MIMEText

import sys

mail_user = '1232323232@163.com'

mail_pass = 'xxxxxxxxxx'

 

def send_mail(to_list,subject,content):

me = "zabbix 監控告警平台"+"<"+mail_user+">"

msg = MIMEText(content, 'plain', 'utf-8')

msg['Subject'] = subject

msg['From'] = me

msg['to'] = to_list

try:

s = smtplib.SMTP("smtp.163.com", 25)

s.login(mail_user,mail_pass)

s.sendmail(me,to_list,msg.as_string())

s.close()

return True

except Exception,e:

print str(e)

return False

if __name__ == "__main__":

send_mail(sys.argv[1], sys.argv[2], sys.argv[3])

腳本編寫完成之后需要為腳本添加執行權限

[root@zabbix alertscripts]# chmod +x mail_qq.py

3、測試

命令行測試腳本能否成功執行

[root@zabbix alertscripts]# ./mail_qq.py xxx@163.com "測試" 'test'

測試參數為三個,分別為收件人郵箱地址,郵件標題,郵件內容

測試的時候如果出現錯誤提示缺少smtplib,解決方法為使用pip進行安裝:pip install smtplib
python腳本

zabbix web控制台配置

  1.添加報警媒介類型

  

#!/bin/bash
#echo "this is zabbix msg" |mail -s "bbbbbbbbb" 127@qq.com

echo $1 > /tmp/user
echo $2 > /tmp/zhuti
echo $3 > /tmp/neirong

file=/tmp/zabbix_mail.txt
echo "$3" > $file
dos2unix -k $file
/bin/mail -s "$2" $1 < $file
sendmail

 向sendmail腳本傳遞三個宏變量參數

     1.{ALERT.SENDTO}        表示接收郵件的賬號

     2.{ALERT.SUBJECT}      表示發送郵件的標題

     3.{ALERT.MESSAGE}     表示發送郵件的內容     

 

   2.添加動作

      1.添加一個動作的觸發條件

       

 

     2.添加操作的詳細步驟

     

 

      zabbix內置的宏變量:

         默認標題: 主機 {HOSTNAME} 在 {EVENT.DATE} {EVENT.TIME} 發生故障 {TRIGGER.NAME} {ITEM.VALUE}

         告警主機:{HOSTNAME}

         告警時間:{EVENT.DATE} {EVENT.TIME}

         告警等級:{TRIGGER.SEVERITY}

         告警信息: {TRIGGER.NAME}

         告警項目:{TRIGGER.KEY}

         問題詳情:{ITEM.NAME}:{ITEM.VALUE}

         當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE}

         事件ID:{EVENT.ID}

 

    

     3.設置用戶Admin的郵箱 用來接收報警信息郵件

      

 

   4.修改觸發器表達式觸發報警發送郵件

    

 

 

zabbix實現釘釘告警

  1.首先創建一個釘釘群 然后再在群里創建一個群機器人 獲取一個web hook地址

  

2.編寫發送釘釘發送消息腳本

    [root@node3 alertscripts]# pwd
    /usr/lib/zabbix/alertscripts

   [root@node3 alertscripts]# chown -R zabbix:zabbix dingding.py

   [root@node3 alertscripts]# chmod +x dinding.py

#!/usr/bin/python

import sys
import json
import requests

api_url="https://oapi.dingtalk.com/robot/send?access_token=d4a29054"
headers={"Content-Type":"application/json;charset=utf-8"}

def msg(text):
    json_text = {
        "msgtype":"text",
        "text": {
            "content":text
        },
        "at":{
            "atMobiles":[
              # "13999999",
            ],
            "isAtAll":False
        }
    }
    print(requests.post(api_url,json.dumps(json_text),headers=headers).content)

if __name__ == "__main__":
    text=sys.argv[1]
    msg(text)


#調試
[root@node3 alertscripts]# python dingding.py 
[root@node3 alertscripts]# ./dingding.py 
./dingding.py:行1: import: 未找到命令
./dingding.py:行2: import: 未找到命令
./dingding.py:行3: import: 未找到命令
 import sys
 import json
 import requests


#!/usr/bin/python
import sys
import json
import requests
dingding.py

 

3.添加告警媒介類型

 

  4.添加動作

   

 

  5.添加用戶報警媒介

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM