當前位置:首頁 » 網頁前端 » 釘釘zabbix報警腳本
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

釘釘zabbix報警腳本

發布時間: 2023-02-04 23:46:43

⑴ zabbix監控怎麼添加報警人

zabbix監控添加主機,報警、監控的設置
根據使用zabbix這么久的經驗,總結了一套zabbix比較實用的添加主機、監控報警的使用流程,供大家參考。
一:添加處理方法,就是如何報警
打開zabbix的管理------處理方法----create media type:

我用的是腳本發郵件的方式來報警的,腳本名字為mail.py。指的一提的是腳本存放位置,我的腳本是放在/usr/local/zabbix/bin/目錄下面,在這里不寫目錄的據對路徑,直接寫腳本名字,他的路徑設置是在zabbix伺服器端的配置文件中設置的,在zabbix_server.conf配置文件中設置:AlertScriptsPath=/usr/local/zabbix/bin/
二:添加zabbix用戶和組,設置其郵箱地址等信息
1:打開zabbix的管理------用戶---選擇用戶組下拉----create user group:

填寫個組名,設置需要的許可權直接保存就成,其他的不用填寫和選擇。
2:打開zabbix的管理------用戶---選擇用戶下拉----create user:
填寫用戶信息

3:添加報警介質,就是報警方式,因為是報警,【信息】那項就不用勾選,信息一般就是伺服器信息發生變化時報警,這個一般沒有什麼意義,所以不勾選,不過你也可以選擇,根據個人喜好。類型的話就是選擇處理發放中的報警介質,選擇你添加的。然後可以保存信息,完成添加用戶(Permissions那項沒有不填寫)。

三:報警觸發器觸發的動作設置
當監控項中的觸發器達到你設置的報警值之後,需要執行操作來發送郵件等動作。具體設置:
1:打開zabbix的系統配置---操作---- 選擇事件源為觸發器------create action:

2:觸發條件設置:

3:詳細操作設置,即滿足觸發條件之後執行什麼動作,這里一般設置為發郵件之類的,設置收郵件的用戶(建議每個組對應一個用戶,這樣發郵件的時候容易設置發送對象):

四:zabbix中常用到的幾個key
Zabbix的key可以理解為zabbix的命令,執行這個key可以得到相應的結果。
1:監控埠的:net.tcp.port[,3306]
/usr/local/zabbix/bin/ -s192.168.8.120 -knet.tcp.port[,3306] 返回1為192.168.8.120的埠3306存在,0為不存在
2:監控進程的:proc.num[mysqld]
/usr/local/zabbix/bin/zabbix_get -s192.168.8.120 -kproc.num[mysqld] 返回值為192.168.8.120中mysqld的進程數量
/usr/local/zabbix/bin/zabbix_get -s192.168.8.120 -kproc.num[] 返回值為192.168.8.120中所有的進程數量
3:查看CPU核數的:system.cpu.num 返回值為伺服器CPU的核數
4:查看系統的系統啟動時間和當前時間:system.boottime、system.localtime 返回值為系統啟動時間和當前時間,為時間戳格式
5:查看系統的簡單信息:system.uname 返回值為192.168.8.120的系統信息,類似於linux系統的uname -a命令
6:查看windowns系統當前網卡的進出流量:net.if.out[{HOST.NAME},bytes]、net.if.in[{HOST.NAME},bytes]和linux系統的key:net.if.out[eth0,bytes]、net.if.in[eth0,bytes]一樣
/usr/local/zabbix/bin/zabbix_get -s192.168.8.120 -knet.if.in[192.168.8.120,bytes] 返回值為IP為192.168.8.120的進流量,此值為計數值,單位為bytes,減去上次取得值,除以時間間隔為此段時間內的平均流量
/usr/local/zabbix/bin/zabbix_get -s192.168.8.120 -knet.if.out[192.168.8.120,bytes] 返回值為IP為192.168.8.120的出流量,此值為計數值,單位為bytes,減去上次取得值,除以時間間隔為此段時間內的平均流量
7:查看系統內存大小:vm.memory.size[total],返回值單位bytes
8:查看文件的大小: vfs.file.size[file] 如: vfs.file.size[/var/log/syslog] 返回的是/var/log/syslog的大小,單位是:bytes
9:查看文件是否存在:vfs.file.exists[file] 文件如果存在返回0,不存在返回1
10:查看文件的MD5:vfs.file.md5sum[file]查看小文件的MD5,返回為MD5值(好像只有2.0以上的版本有這個key)
11:自動發現網卡並監控流量和自動發現分區及分區掛載情況的兩個key:net.if.discovery,vfs.fs.discovery,windows和linux監控模板中都有這模板(2.0以上版本),應用即可
以上是常用的key,其實監控伺服器無非就是內存、硬碟佔用、CPU負載、流量、伺服器和埠等情況。如果要監控其他的可以自定義key來實現,本人喜歡自定義key,寫個腳本來返回,得到自己想要的監控結果,zabbix在這塊做的非常好,擴展性很強,支持各種腳本來實現自定義的key。
要啟用自定義key,需要在客戶端的配置文件中啟用UnsafeUserParameters=1參數,然後在配置文件的最下面來定義key,如:
UserParameter=free.disk,/usr/local/zabbix/bin/disk.py
free.disk為key的名字,/usr/local/zabbix/bin/disk.py為伺服器端調用free.disk這個key時執行的腳本,其結果就是free.disk的返回值。腳本可以是任何可以運行的腳本語言。
五:創建監控模板和監控項
其實在zabbix伺服器端安裝完成之後,就有許多自帶的監控模板,基本上可以滿足大眾化的監控需求,不過其中有許多是沒有必要的監控項或是自己不感興趣的,比較冗餘,所以要做好監控的話,還是自定義模板和監控項,這個監控模板可以修改zabbix系統自帶的,也可以自己創建。以下為自己創建監控模板。
1:創建監控模板:
打開zabbix的系統配置---模板----create template:
填寫模板名字和模板所在組保存即可。

⑵ zabbix 告警等級怎麼設置

zabbix的告警通知非常靈活,支持的通知類型有Email、Jabber、sms、script 。其在設備需要修護時,同樣可以提供同nagios 一樣的設備維護期間,暫停告警的功能有,而且其相對於nagios 更加靈活。本篇就針對zabbix的告警和設備維護功能進行下說明。 一、media types 告警通知 本篇以腳本通知為例進行說明 1、配置AlertScriptsPath # vim /etc/zabbix/zabbix_server.conf 找到# AlertScriptsPath=${datadir}/zabbix/alertscripts 行,增加如下內容 AlertScriptsPath=/etc/zabbix/alertscripts 配置完成後,需要重啟zabbix_server服務生效,在後面media type 寫入的腳本名稱就會從上面的配置目錄中查找並執行。 2、創建media type 步驟為:登錄 zabbix web 頁面------Administration--------Media types--------Create Media Type(右上角) ,如下圖: 配置完成後,save保存即可。 3、創建Action 步驟為:登錄 zabbix web 頁面---- Configuration ---- Actions ---- Create action , 如下圖 subject為發送主題,message為發送內容(通過message內容的自定義,可以例如在告警時,將其他相關信息也進行通知,可以從側面了解整個主機的運行情況---某次面試時面試官曾提過的需求),這兩者的內容都可以很方便的進行更改。勾選了Recovery message 選項,會在監控項恢復時也會給一個恢復的提示。 condeitions 選項中設置的是觸發通知的條件,默認情況下只有A、B兩項 ,這里可以設置觸發級別、主機組、主機、觸發值、應用等 。舉例說明下: 1、可以根據告警級別進行通知,如severity 級別大於等於average時,通知OPS運維人員,級別為Disater時通知部門經理或者BOSS (這需要配置兩個action); 2、也可以根據時間進行定義,如只在工作時間進行告警通知; 3、如果你喜歡的話,也可以指定不同主機組通知到不同的人; 而且所有條件之間的關系可以是AND或者OR ,默認情況下都是AND,即所有條件都滿足時,觸發通知。 註:個別主機,如DB主機,晚上有備份任務導致晚上某段時間過載(同時又不是所有主機都這樣,又不想增大觸發條件的話),可以在configuation ---hosts 里的items 選項里配置通知的時間范圍,那裡也有 time period 配置選項(從另一方面也反映了zabbix的靈活,有宏觀調控,也有微觀調控,適用性很強) 。不過要盡可能的都在actions 里進行配置,因為這一般查看具體條件都是在這里 。 下圖是action的Operations部分,該項是必填項: Operation details 是一個比較強的配置項,這里主要有三個知識點---Escalations、remote command 和 event acknowledged,其中Escalations、remote command比較重要 。 operation details 的 step部分主要和escalations 相關,在監控場景中,如果你一天收到100+的簡訊告警,真有一天「狼」真來了估計你也不會注意到。有了escalations功能,可以實現如下配置(需配置多條operation): 1、在單位時間內(step ration)發送的總的通知次數(to - from +1 次),並通知到相應的組或人; 2、假如條件1中設置的是1800秒內發送1-5 次給OPS運維人員,結果運維人員在該時間段未能處理;我們就可以再增加一個Operations,指定from 5 to 10 (第5到10條告警)通知給 運維經理 ;我們還可以再增加,第11-15條給BOSS ,第16-20條告警時執行一個遠程命令。 escalations部分,可以參看官方文檔。 第二個知識點就是Operation type部分,類型可以是send message進行通知,也可以是remote command : remote command 可以支持的操作有IPMI、Custom script、ssh、telnet、Global script (其中前兩者只能在zabbix server 或 zabbix proxy上操作),該功能是相當牛B的。如,檢測到一個tomcat 服務404,我們就可以利用該功能重啟tomcat 服務 。 remote command部分可以查看官方頁面。 第三個功能主要是為有值班人員或上班時間准備的一個功能,當設置這個條件時,如果一個告警的狀態被設置為ACK ,則本次告警的後續通知就會停止 。 在一線運維人員接到告警信息時,在zabbix 的首頁上,移到相應告警提示的部分,選擇主機的ACK 部分 ,點選 NO ,會跳出一個message的窗口,在message里輸入相關信息 ,如:誤報、因什麼什麼原因在調試、已通知到相關責任人等 ,並點擊Acknowledge 提交,此時的ACK 狀態會變成YES 。本次告警也將停止不再進行。直到本次告警解決,下次再次出現同樣告警時,該項又會重新變成ACK 。 Acknowledge部分,可以參看官文頁面。 二、maintenance 維護 在線場景中,經常會遇到這樣的情況:在線產品需要進行升級或其他操作,此時又不想將監控系統的完整告警功能進行全部關閉,只臨時關閉在線升級主機的告警。這就可以使用zabbix的maintenance功能。具體配置方式如下: 創建maintenance的步驟為:登錄 zabbix web 頁面---- Configuration-----Maintenance ----- create maintenance period ,如下圖所示: 第一選項卡配置的是任務名和一個大范圍的時間值,其指定了維護所在的磊的時候段在什麼范圍。maintenance type 指定在維護期間是否仍進行數據搜集。 periods指定的時間段具體的維護時間段,和maintenace中的范圍為包含關系。而period type指定了執行的類型,其類型有one time only 一次執行,也有按日、星期或月定期執行 ,如果是後三種方式,date項會變成具體的間隔、開始時間 。無論是何種類型,都有maintenance period length型 ,其指定了具體每次維護的持續時間,如2小時。 hosts & groups 項太多內容,就是選擇某組主機或某個主機在維護期間不進行告警通知。

⑶ zabbix告警配置

概述

假設我們配置了一些監控項和觸發器,現在當觸發器狀態改變時會獲取一些發生的事件,是時候考慮下一步行動了。

我們不可能一直盯著觸發器或者事件列表,當發生一些標志性的事件時發送警告再好不過。當問題發生,關注這些的用戶都會被通知。

zabbix提供主要的功能就是發送告警就是這個原因。哪些人?在什麼時候?應該收到哪些信息是可以被定義的。

為了發送和接收來自zabbix的告警,你必須:

定義媒介

配置發送信息到定義媒介的動作

動作由 觸發條件 和 操作 組成。基本上當條件符合時,操作被執行。兩個主要的操作是 發送消息 和 執行遠程命令

為了發現和自動注冊創建的事件,一些額外的操作是可用的,包含添加或者刪除主機,鏈接模板等

一、媒介(Media types)

概述

Media 是用於發送zabbix的消息與告警的遞送通道

可以定義一下媒介類型

E-mail

SMS

Jabber

Ez Texting

Custom alertscripts

1、 E-mail

為消息定義E-mail發送通道,需要配置e-mail 作為媒介類型並且傳遞指定的地址給用戶

配置

依次點擊 管理——>報警媒介類型,點擊創建媒介類型(或者點擊預先定義的媒介類型 E-mail)

媒介類型表包含通常的媒介類型屬性

所有重要的欄位都會標記紅星

Name 媒介類型名字

Type 選擇Email作為類型

SMTP server 設置stmp伺服器作為處理信息的出口

SMTP server port 設置smtp服務的埠,這個參數從zabbix3.0開始支持

SMTP helo 這是正確的stmp鏈接值,通常為域名

SMTP email 這個地址會被用於信息發送者,用來發送消息,添加發送者的顯示名 如 Zabbix_info則zabbix_info<[email protected]>

幾個可以生效的配置:

[email protected] 只有郵箱地址,不需要尖括弧

zabbix_info<[email protected]> 顯示名與郵件地址,地址寫在尖括弧中

監控系統<[email protected]> 使用UTF-8格式的顯示名

Connection security 選擇鏈接安全級別,None為不使用ssl選項,starttls 使用 CURLOPT_USE_SSL參數,SSL/TLS則CURLOPT_USE_SSL可選

SSL verify peer 標記checkbox同步SMTP服務的SSL證書,

Authentication 認證方法

Username 用戶名

Password 密碼

Enabled 啟用媒介

注意 : 為了使SMTP中的authentication 選項可用,zabbix在編譯時,需要帶--with-libcurl參數 使用cURL7.20.0或更高版本

第二個選項卡options

第二個選項卡options配置了告警的處理流程。同樣的options配置在其他的媒介類型中也存在。

所有媒介都是並行處理的,當前最大會話每個媒介自己定義,但是zabbix服務的告警處理總數被參數(zabbix_sever.conf)StartAlerters所限制。同一觸發器生成的告警會序列化的處理

options表

concurrent sessions 並發會話數,三個選項,one(一個),unlimited(不限制),custom(自定義)

Attempts 嘗試發送告警的次數,如果設置為1,則zabbix會發送以此通知,並且失敗時不會重發

Attempts interval  重發通知的頻率,發送失敗時重發的間隔

配置用戶的媒介

依次點擊 Administration(管理)--->Users(用戶)

點擊用戶的屬性表,在Media(媒介)表中點擊add

type 選擇Email作為類型

send to 指定email地址,可以點擊add添加多個地址,同理此地址也可設置顯示名如Zabbix_admin<[email protected]>或者[email protected]

when active 設置發送時間如工作日(1-5,09:00-18:00)可以使用宏

Use if severity 指定想要接受的告警等級

status 啟用與否

2、SMS

zabbix發送簡訊,使用串列GSM調試解調器連接到zabbix server的serial port

先決條件:

串列設備(正常情況下在linux的/dev/ttyS0)的速度取決於modem。zabbix不設置串列鏈接的速度。

zabbix user擁有對串列設備的讀寫許可權,運行ls -l /dev/ttyS0查看當前許可權

GSM調試解調器擁有PIN碼,PIN也可以禁用使用命令 AT+CPIN="NNNN"輸入PIN, 必須有雙引號。

已經測試好的modem Siemens MC35 Teltonika ModemCOM/G10

配置SMS作為發送通道,需要配置SMS作為媒介類型並且在用戶界面配置接收手機號

配置

依次點擊 Administration--->Media types,點擊創建media type或使用預先的配置

sms的Media type表屬性

Description media type名

Type 選擇SMS

GSM modem 選擇設備如 /dev/ttyS0

options選項卡見E-mail

配置用戶媒介

依次點擊 Administration(管理)--->Users(用戶)

點擊用戶的屬性表,在Media(媒介)表中點擊add

types 選擇SMS作為媒介

Send to 輸入用戶手機號

When active 設置發送時間如工作日(1-5,09:00-18:00)可以使用宏

Use if severity 指定想要接受的告警等級

status 啟用與否

3、Jabber (略)

4、Ez Texing(略)

5、Custom alertscripts

如果不滿足於存在的媒介來發送警告,可以自定義腳本進行發送

警告腳本在zabbix server上執行,這些腳本位於server配置文件AlertScriptsPath變數(默認/usr/local/share/zabbix/alertscripts)

腳本示例:

#!/bin/bash

to=$1

subject=$2

body=$3

cat <<EOF |mail -s "$subject" "$to"

$bodyEOF

從3.4開始zabbix會檢查exit code(shell執行返回碼,0為成功),若exit code 不等於0,則認為執行失敗,zabbix會重復執行

script不保存環境變數,所以環境變數要精確指定

配置

依次點擊 Administration--->Media types,點擊創建media type

mediatype表屬性

Name 輸入媒介的名字

Type 選擇Script作為類型

Script name 輸入腳本的名字(zabbix server中的腳本文件)

Script parameters 添加命令行參數到腳本

可支持ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}等宏,

{ALERT.SENDTO} 用戶媒介中的send to(收件人)的值

{ALERT.SUBJECT} 動作配置中的Default subject(默認標題)

{ALERT.MESSAGE} 動作配置中的Default message(消息內容)

options表中定義了處理流程,見E-mail的說明

配置用戶媒介User media

依次點擊 Administration(管理)--->Users(用戶)

點擊用戶的屬性表,在Media(媒介)表中點擊add

用戶媒介屬性

Type 選擇自定義腳本的媒介類型

Send to 指定告警接收人

When active 設置發送時間如工作日(1-5,09:00-18:00)可以使用宏

Use if serverity 指定想要接受的告警等級

status 啟用與否

二、動作

如果你希望發生事件時會觸發一些操作,那麼你需要配置action

動作可以定義回應所有支持的事件類型,

事件類型:

Trigger events觸發器事件,當觸發器狀態從ok改變到problem或相反。

Discovery events 當自動發現產生

Auto registration events當新的agent自動注冊時,或者經注冊過的主機元數據改變

Internal events當監控項變為不支持或觸發器狀態變為unknown時

配置一個動作

依次 Configuration ——>Actions

從event source中選擇需要的源(分為:觸發器源,自動發現源,自動注冊源,事件源)

點擊創建動作

選擇操作執行的條件

選擇具體操作

選擇恢復操作

動作表的屬性

Name 唯一動作名

Type of calcaulation 選擇條件觸發的計算方法

And 必須符合所有條件

Or 只要一個條件符合即可

And/Or 結合二者,不同類型的條件用And,同一類型的條件用Or

Custom expression 用戶自定義

Conditions 觸發動作的一系列條件、

New condition 選擇新的動作觸發條件

Enabled 啟用動作

條件設置

基於觸發器的條件

Application 應用集

Host group 主機組

Template 模板

Host 主機

Tag 標簽(串)

tag value 標簽值

Trigger 觸發器

Trigger name 觸發器名字

Trigger severity 觸發器等級

Time period 觸發時間

Problem is suppressed 觸發問題是否意料之中,如主機維護

基於自動發現的條件

Host IP 指定主機ip地址自動發現范圍 格式: 單獨的ip:192.168.1.33 范圍ip: 192.168.1-101.1-254  Ip mask: 192.168.4。0/24

Service type 服務類型

service port 服務埠

Discovery rule 指定自動發現規則

Discovery check

Discovery object

Discovery status

Uptime/Downtime

Received value

Proxy

基於自動注冊的條件

Host metadata 由zabbix_agentd.conf 文件中的HostMetadata變數定義

Host name

Proxy

基於內部事件的條件

Application

Event type

Host group

Template

Host

條件匹配後,就需要執行響應的動作了

可以支持以下動作

send a message

execute a remote command

add host

remove host

enable host

disable host

add to host group

remove from host group

link to template

unlink from template

set host inventory mode

執行遠程命令

確保配置文件中(zabbix_agentd.conf)EnableRemoteCommands 參數設置為1

加入zabbix用戶到sudo,vim /etc/sudoer

zabbix ALL=NOPASS: ALL #所有命令不需密碼

zabbix ALL=NOPASS: /etc/init.d/apache restart  #指定某一命令不需要密碼

觸發操作後,使用宏 編輯信息

如 告警信息模板

標題 伺服器:{HOST.NAME} - 發生: {TRIGGER.NAME}故障

信息 告警主機:{HOST.NAME}

告警地址:{HOST.IP}

監控項目:{ITEM.NAME}

監控取值:{ITEM.LASTVALUE}

告警等級:{TRIGGER.SEVERITY}

當前狀態:{TRIGGER.STATUS}

告警信息:{TRIGGER.NAME}

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

事件ID:{EVENT.ID}

恢復信息

標題 伺服器:{HOST.NAME} - {TRIGGER.NAME} 已恢復

信息 告警主機:{HOST.NAME}

告警地址:{HOST.IP}

監控項目:{ITEM.NAME}

監控取值:{ITEM.LASTVALUE}

告警等級:{TRIGGER.SEVERITY}

當前狀態:{TRIGGER.STATUS}

告警信息:{TRIGGER.NAME}

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

恢復時間:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}

持續時間:{EVENT.AGE}

事件ID:{EVENT.ID}

⑷ 怎麼在zabbix裡面使用python腳本

1.修改zabbix server端的配置文件,啟用AlertScriptsPath,使其支持腳本功能
1.編輯zabbix server端的配置文件,並重啟服務
# vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/local/zabbix/alertscripts

# /etc/init.d/zabbix_server restart

2.在服務端添加郵件報警的python腳本,並給腳本執行許可權
郵件報警,並記錄日誌

# vim /usr/local/zabbix/alertscripts/zabbix_sendmail.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pdb
import smtplib
import string
import time
import sys
reload(sys)
sys.setdefaultencoding(『utf-8『)
#pdb.set_trace()
#HOST = "mail.gw.com.cn"
def S_Mail():
HOST = "smtp.exmail.qq.com" #郵件伺服器
SUBJECT = sys.argv[2].decode(『utf-8『).encode(『gbk『) #主題
TO =sys.argv[1] #收件郵箱
FROM = "[email protected]"
text = sys.argv[3].decode(『utf-8『).encode(『gbk『) #發件內容
BODY = string.join((
"FROM: %s" % FROM,
"To: %s" % TO,
"Subject: %s" %SUBJECT,
"",
text
),"\r\n")
server = smtplib.SMTP()
server.connect(HOST,25)
#server.starttls()
server.login("發件郵箱","密碼")
server.sendmail(FROM,[TO],BODY)
server.quit()
# email log 記錄日誌
with open(『/data/logs/zabbix/Email.log『, 『a『) as f:
date=time.strftime("%y-%m-%d %H:%M:%S")
str = date + " " + TO +" " + SUBJECT + "\r\n" + "\n"
str1 = str.decode(『gbk『).encode(『utf-8『)
# print("%s" %str1)
f.write(str1)
if __name__==『__main__『:
S_Mail()

⑸ zabbix的告警腳本目錄在哪

zabbix媒介類型包括mail、sms、自定義腳本,我們用的最多的還是腳本媒介,再次我們就不講另外兩個媒介了。當事件通知到腳本,會傳遞三個參數它,分別為$1(發送給誰) $2(標題) $3(內容)。例如發送郵件給[email protected],標題為nginx離線,內容是IP地址:1.1.1.1,nginx離線,請立即處理。