Zabbix 4.0企業級分佈式監控 day03 第四章 監控

 

4.2 監控數據

在這裏插入圖片描述 

Graph

Configuration——》Hosts——》點擊主機名——》Templates——》Templates OS Windows——》Graphs——》Create Graph
在這裏插入圖片描述

自定義graph圖表
在這裏插入圖片描述
在這裏插入圖片描述
點擊添加
在這裏插入圖片描述
監控
在這裏插入圖片描述

Screen

自定義Screen監控圖

在這裏插入圖片描述
create screen
在這裏插入圖片描述
添加所關心的graph
在這裏插入圖片描述
在這裏插入圖片描述
驗證:
搜索 windows,點擊screen
在這裏插入圖片描述
在這裏插入圖片描述
Monitoring下的screens是用戶可自定義的,且可以進行權限控制
在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述

Web

監控數據查看

web是直接在主機上添加的
在這裏插入圖片描述
創建web Scenario
配置Scenario
在這裏插入圖片描述
配置Steps
在這裏插入圖片描述在這裏插入圖片描述
創建好後,在search windows,點擊web
在這裏插入圖片描述
跟模板關聯的web
在這裏插入圖片描述

現在 在主機上獨立的創建一個 web測試2
在這裏插入圖片描述
驗證:
在這裏插入圖片描述

在這裏插入圖片描述

檢測正常,但出現了中文亂碼,怎麼解決?

中文亂碼解決

因爲zabbix前端web默認使用的字體和中文字體不兼容。

拷貝喜歡的字體到web前端的front目錄下,然後修改web前端的字體配置。

在這裏插入圖片描述
把Windows的字體複製到 /tmp/下,然後mv

這裏一定要注意是ttf格式,而不是ttc哦。 通過mv命令修改
mv /tmp/MSYH.TTC /tmp/MSYH.TTF
cp /tmp/MSYH.TTF /usr/share/zabbix/assets/fonts/
cd /usr/share/zabbix/
vim /usr/share/zabbix/include/defines.inc.php
找到兩個FONT_NAME所在的位置

zabbix 4.2/usr/share/zabbix/assets/fonts/
zabbix 4.0/usr/share/zabbix/fonts/

在這裏插入圖片描述

如果頁面還是顯示不出來可以檢查下字體的讀寫權限
在這裏插入圖片描述

4.3 監控閾值設置

告警觸發流程圖
在這裏插入圖片描述
在這裏插入圖片描述

自帶模板的設置

點擊觸發器
在這裏插入圖片描述

diff函數:監控項前後兩個值是否發生變化,如果發送變化就可以觸發告警

laas函數:zabbix最新的監控項的值

avg函數:平均值

nodata:監控Zabbix agent是否收集到數據

自定義觸發器

第一步,創建觸發器
找到之前創建的模板,點擊Trigger
在這裏插入圖片描述
找到之前創建的監控項
在這裏插入圖片描述

因爲正常情況下,如果端口是通的,返回的值是0
手動把觸發器設置爲,如果telnet通的話就告警

爲了實驗方便,設置成反的

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述
驗證:
在這裏插入圖片描述
補充:
觸發器設置了,卻沒觸發告警
應該排除監控項的值是否符合我們預期,找到主機對應監控項的最新數據Monitoring Latest data的值。
1.看平時的監控數據是什麼值,從而決定閾值設置在哪條線
2.最新數據是否滿足觸發條件

頻繁觸發告警
1.監控項波動比較大,設置的表達式比較靈敏

4.4 用戶及告警媒介

告警操作流程圖
在這裏插入圖片描述在這裏插入圖片描述

Administration——》User groups——》User
創建用戶組,給予組權限,創建用戶,把用戶加入到組

第一步:添加用戶

在這裏插入圖片描述
在這裏插入圖片描述

第二步:郵件服務

systemctl status postfix.service
systemctl stop postfix.service
yum install mailx
vim /etc/mail.rc
在最後一行添加上自己的郵箱:
set from=xxx@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=xxx@qq.com
set smtp-auth-password=  自己的授權碼 
set smtp-auth=login
前提是要去郵箱,申請開啓SMTP服務

在這裏插入圖片描述
echo “zabbix@root test”|mailx -s “zabbix alert” [email protected]

默認Alert腳本放在 /usr/lib/zabbix/alertscripts

cd /usr/lib/zabbix/alertscripts
vim mail.sh
#!/bin/bash

SENT_TO=$1
SENT_SUBJECT=$2
SENT_CONTENT=$3

echo "$SENT_CONTENT"|mail -s "$SENT_SUBJECT" $SENT_TO

# chmod a+x mail.sh  注意權限
./mail.sh xxx@qq.com "zabbix test2" "test "

第三步:添加郵件關聯

Administration ——》 Media types ——》Create
在這裏插入圖片描述

Administration——》User
在這裏插入圖片描述

創建告警操作
Configuration——》Actions——》
在這裏插入圖片描述

Operations
告警的內容,條件,操作

故障{TRIGGER.STATUS},服務器:{HOSTNAME1}發生:{TRIGGER.NAME}故障!

告警主機:{HOSTNAME1}
告警事件:{EVENT.DATE}  {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述

Recovery 恢復
在這裏插入圖片描述

第四步:驗證

當主機沒有處於維護模式,觸發器級別大於等於warning的。就會向 findsec用戶組發送郵件告警
在這裏插入圖片描述
手動觸發一個告警,將telnet = 0就觸發告警

優化腳本,將郵件的內容展現在郵件中。 而不是隻有附件

cd /usr/lib/zabbix/alertscripts
vim mail.sh
#!/bin/bash

SENT_TO=$1
SENT_SUBJECT=$2
SENT_CONTENT="/tmp/alert_$$.tmp"   #$$是表示 當前Shell進程ID。對於 Shell 腳本,就是這些腳本所在的進程ID。
echo "$3">$SENT_CONTENT

dos2unix $SENT_CONTENT
mailx -s "$SENT_SUBJECT" $SENT_TO<$SENT_CONTENT


確保腳本的歸屬是zabbix,並且腳本的權限是777
[root@localhost alertscripts]# chmod 777 mail.sh
[root@localhost alertscripts]# chown zabbix:zabbix mail.sh


檢查是否安裝了dos2unix     yum install dos2unix	

補充:測試郵件正常 -v
echo "test" |mailx -v -s "測試mailx" [email protected]


在這裏插入圖片描述在這裏插入圖片描述

 

Monitoring——》Problems——》Apply——》點擊時間點 對比
在這裏插入圖片描述
 

 

補充:觸發器函數

abschange
參數:忽略
支持類型:float,int,str,text,log
作用:返回最近獲得的值與之前獲得值差的絕對值,對於字符串類型:0表示相等,1表示不同

avg
參數:秒或#num
支持類型:float,int
作用:返回一段時間的平均值
舉例:
avg(5):最後5秒的平均值
avg(#5):表示最近5次得到值的平均值
avg(3600,86400):表示一天前的一個小時的平均值
如果僅有一個參數,表示指定時間的平均值,從現在開始算起,如果有第二個參數,表示漂移,從第二個參數前開始算時間,
#n表示最近n次的值
示例:
觸發器名稱:Comparing average load today with average load of the same time yesterday (使用 time_shift 時間偏移量參數).
{server:system.cpu.load.avg(1h)}/{server:system.cpu.load.avg(1h,1d)}>2
This expression will fire if the average load of the last hour tops the average load of the same hour yesterday more than two times. 

max
參數:秒或#num
支持值類型:float,int
描述:返回指定時間間隔的最大值.時間間隔作爲第一個參數可以是秒或收集值的數目(前綴爲#).從Zabbix1.8.2開始,函數支持第二個可選參數time_shift,可以查看avg()函數獲取它的使用方法.
示例:
觸發器名稱:Free disk space is too low Problem: 最近5分鐘內剩餘磁盤空間小於10GB
({TRIGGER.VALUE}=0&{server:vfs.fs.size[/,free].max(5m)}<10G)

min
參數:秒或#num
支持值類型:float,int
描述:返回指定時間間隔的最小值.時間間隔作爲第一個參數可以是秒或收集值的數目(前綴爲#).從Zabbix1.8.2開始,函數支持第二個可選參數time_shift,可以查看avg()函數獲取它的使用方法.
示例:
觸發器名稱:Free disk space is too low Problem:最近10分鐘內磁盤空間大於40GB
({TRIGGER.VALUE}=1&{server:vfs.fs.size[/,free].min(10m)}<40G)

nodata
參數:秒
支持值類型:any
描述:當返回值爲1表示指定的間隔(間隔不應小於30)沒有接收到數據,0表示其他.
示例:
觸發器名稱:No heartbeats within last 3 minutes 使用函數 nodata():
{zabbix.zabbix.com:tick.nodata(3m)}=1

change
參數:忽略
支持類型:float,int,str,text,log
作用:返回最近獲得值與之前獲得值的差值,對於字符串0表示相等,1表示不同
舉例:
change(0)>n:忽略參數一般輸入0,表示最近得到的值與上一個值的差值大於n

count
參數:秒或#num
支持類型:float,int,str,text,log
作用:返回指定時間間隔內數值的統計,
舉例:
count(600)最近10分鐘得到值的個數
count(600,12)最近10分鐘得到值的個數等於12
count(600,12,"gt")最近10分鐘得到值的個數大於12
count(#10,12,"gt")最近10個值中,值大於12的個數
count(600,12,"gt",86400)24小時之前的10分鐘內值大於12的個數
count(600,6/7,"band")-thenumberofvaluesforlast10minuteshaving'110'(inbinary)inthe3leastsignificantbits.
count(600,,,86400)24小時之前的10分鐘數據值的個數
第一個參數:指定時間段
第二個參數:樣本數據
第三個參數:操作參數
第四個參數:漂移參數

#支持的操作類型 
eq: 相等 
ne: 不相等 
gt: 大於 
ge: 大於等於 
lt: 小於 
le: 小於等於 
like: 內容匹配

date
參數:忽略
支持類型:any
作用:返回當前的時間,格式YYYYMMDD

dayofmonth
返回當前是本月的第幾天

dayofweek
返回當前是本週的第幾天

delta
參數:秒或#num
支持類型:floatint
作用:返回時間間隔內的最大值與最小值的差值

diff
參數:忽略
支持值類型:float,int,str,text,log
作用:返回值爲1表示最近的值與之前的值不同,0爲其他情況
示例:
觸發器名稱:/etc/passwd has been changed 使用函數 diff():
{www.zabbix.com:vfs.file.cksum[/etc/passwd].diff(0)}>0

fuzzytime
參數:秒
支持值類型:float,int
作用:返回值爲1表示監控項值的時間戳與ZabbixServer的時間多N秒,0爲其他.常使用system.localtime來檢查本地時間是否與Zabbixserver時間相同.
示例:
觸發器名稱:Check if client local time is in sync with Zabbix server time 使用函數 fuzzytime():
{MySQL_DB:system.localtime.fuzzytime(10)}=0
主機MySQL_DB當前服務器時間如果與zabbix server之間的時間相差10秒以上,表達式返回true,觸發器狀態改變爲“problem” 

last
參數:秒或#num
支持值類型:float,int,str,text,log
作用:最近的值,如果爲秒,則忽略,#num表示最近第N個值,請注意當前的#num和其他一些函數的#num的意思是不同的
例子:
last(0)等價於last(#1)last(#3)表示最近**第**3個值(並不是最近的三個值)
本函數也支持第二個參數**time_shift**,例如
last(0,86400)返回一天前的最近的值
如果在history中同一秒中有多個值存在,Zabbix不保證值的精確順序
#num從Zabbix1.6.2起開始支持,timeshift從1.8.2其開始支持,可以查詢avg()函數獲取它的使用方法

logeventid
參數:string
支持值類型:log
描述:檢查最近的日誌條目的EventID是否匹配正則表達式.參數爲正則表達式,POSIX擴展樣式.當返回值爲0時表示不匹配,1表示匹配。該函數從Zabbix1.8.5起開始支持.

logseverity
參數:忽略
支持值類型:log
描述:返回最近日誌條目的日誌等級(logseverity).當返回值爲0時表示默認等級,N爲具體對應等級(整數,常用於Windowseventlogs).Zabbix日誌等級來源於Windowseventlog的Information列.

logsource
參數:string
支持值類型:log
描述:檢查最近的日誌條目是否匹配參數的日誌來源.當返回值爲0時表示不匹配,1表示匹配。通場用於Windowseventlogs監控.例如logsource["VMWareServer"]

now
參數:忽略
支持值類型:any
描述:返回距離Epoch(19701100:00:00UTC)時間的秒數

prev
參數:忽略
支持值類型:float,int,str,text,log
描述:返回之前的值,類似於last(#2)

regexp
參數:第一個參數爲string,第二個參數爲秒或#num
支持值類型:str,log,text
描述:檢查最近的值是否匹配正則表達式,參數的正則表達式爲POSIX擴展樣式,第二個參數爲秒數或收集值的數目,將會處理多個值.本函數區分大小寫。當返回值爲1時表示找到,0爲其他.

str
參數:第一個參數爲string,第二個參數爲秒或#num
支持值類型:str,log,text
描述:查找最近值中的字符串。第一個參數指定查找的字符串,大小寫敏感。第二個可選的參數指定秒數或收集值的數目,將會處理多個值。當返回值爲1時表示找到,0爲其他.
示例:
觸發器名稱:Zabbix agent needs to be upgraded 使用函數str():
{zabbix.zabbix.com:agent.version.str("beta8")}=1
如果當前zabbix agent版本包含beta8(假設當前版本爲1.0beta8),這個表達式會返回true. strlen 參數:秒或#num 支持值類型:str,log,text 描述:指定最近值的字符串長度(並非字節),參數值類似於last函數.例如strlen(0)等價於strlen(#1),strlen(#3)表示最近的第三個值,strlen(0,86400)表示一天前的最近的值.該函數從Zabbix1.8.4起開始支持 sum 參數:秒或#num 支持值類型:float,int 描述:返回指定時間間隔中收集到的值的總和.時間間隔作爲第一個參數支持秒或收集值的數目(以#開始).從Zabbix1.8.2開始,本函數支持time_shift作爲第二個參數。可以查看avg函數獲取它的用法 time 參數:忽略 支持值類型:any 描述:返回當前時間,格式爲HHMMSS,例如123055
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章