1. 程式人生 > >主動與被動監控 拓撲圖組合圖 自定義監控

主動與被動監控 拓撲圖組合圖 自定義監控

sys 接受 wait command mman sym 參數 標記 ase

Top

NSD SECURITY DAY06

  1. 案例1:實現Zabbix報警功能
  2. 案例2:Zabbix自動發現
  3. 案例3:Zabbix主動監控
  4. 案例4:拓撲圖與聚合圖形
  5. 案例5:自定義監控案例

1 案例1:實現Zabbix報警功能

1.1 問題

沿用第5天Zabbix練習,使用Zabbix實現報警功能,實現以下目標:

  1. 監控Linux服務器系統賬戶
  2. 創建Media,設置郵件服務器及收件人郵箱
  3. 當系統賬戶數量超過35人時發送報警郵件

1.2 方案

自定義的監控項默認不會自動報警,首頁也不會提示錯誤,需要配置觸發器與報警動作才可以自定報警。

什麽是觸發器(trigger)?

表達式,如內存不足300M,用戶超過30個等

當出發條件發生後,會導致一個觸發事件

觸發事件會執行某個動作

什麽是動作(action)?

動作是觸發器的條件被觸發後所執行的行為

可以是發送郵件、也可以是重啟某個服務等

參考如下操作步驟:

  1. 創建觸發器並設置標記
  2. 設置郵箱
  3. 創建Action動作

1.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:創建觸發器規則

1)創建觸發器

創建觸發器時強烈建議使用英文的語言環境,通過Configuration--> Templates,找到我們之前創建的count.line.passwd模板,點擊模板後面的triggers,如圖-1所示。

技術分享圖片

圖-1

2)觸發器表達式

創建觸發器時需要定義表達式,觸發器表達式(Expression)是觸發異常的條件,觸發器表達式格式如下:

{<server>:<key>.<function>(<parameter>)}<operator><constant>

{主機:key.函數(參數)}<表達式>常數

在如圖-2所示的藍色方框中編寫觸發器表達式,可以直接手寫,也可以通過add選擇表達式模板。

技術分享圖片

圖-2

下面,我們看幾個表達式的案例:

{web1:system.cpu.load[all,avg1].last(0)}>5 //0為最新數據

如果web1主機最新的CPU平均負載值大於5,則觸發器狀態Problem

{vfs.fs.size[/,free].max(5m)}<10G //5m為最近5分鐘

根分區,最近5分鐘的最大容量小於10G,則狀態進入Problem

{vfs.file.cksum[/etc/passwd].diff(0)}>0 //0為最新數據

最新一次校驗/etc/passwd如果與上一次有變化,則狀態進入Problem

大多數函數使用秒作為參數,可以使用#來表示其他含義(具體參考表-1)。

avg, count, last, min and max 等函數支持額外的第二個參數time_shift(時間偏移量),這個參數允許從過去一段時間內引用數據。

3)配置觸發器

設置觸發器名稱,如圖-3所示,點擊add添加表達式,填寫表達式:監控項為賬戶數量,最近300秒賬戶數量大於26(根據系統賬戶數量實際填寫),效果如圖-4所示。

技術分享圖片

圖-3

技術分享圖片

圖-4

選擇觸發器報警級別,如圖-5所示,Add創建該觸發器,如圖-6所示。

技術分享圖片

圖-5

技術分享圖片

圖-6

步驟二:設置郵件

1)創建Media

通過Administration(管理)-->Media Type(報警媒體類型)-->選擇Email(郵件),如圖-7所示。

技術分享圖片

圖-7

設置郵件服務器信息,設置郵件服務器及郵件賬戶信息,如圖-8所示。

技術分享圖片

圖-8

2)為用戶添加Media

在Administration(管理)-->Users(用戶)中找到選擇admin賬戶,如圖-9所示。

技術分享圖片

圖-9

點擊Admin賬戶後,在彈出的界面中選擇Media(報警媒介)菜單-->點擊Add(添加)報警媒介,如圖-10所示。

技術分享圖片

圖-10

點擊Add(添加)後,在Meida Type中填寫報警類型,收件人,時間等信息,如圖-11所示。

技術分享圖片

圖-11

步驟三:創建Action動作

1)Action動作

Action(動作)是定義當觸發器被觸發時的時候,執行什麽行為。

通過Configuration(配置)-->Actions(動作)-->Create action(創建動作),如圖-12所示。

技術分享圖片

圖-12

2)配置Action動作的觸發條件

填寫Action動作的名稱,配置什麽觸發器被觸發時會執行本Action動作(賬戶數量大於26),如圖-13所示。

技術分享圖片

圖-13

3)配置Action動作的具體行為

配置動作的具體操作行為(發送信息或執行遠程命令),無限次數發送郵件,60秒1次,發送給Admin用戶,如圖-14和圖-15所示。

技術分享圖片

圖-14

技術分享圖片

圖-15

4)測試效果

在被監控主機創建賬戶(讓賬戶數量大於26),然後登錄監控端Web頁面,在儀表盤中查看問題報警(需要等待一段時間),如圖-16所示。

技術分享圖片

圖-16

查看報警郵件,在監控服務器上使用mail命令查收報警郵件,如圖-17所示。

技術分享圖片

圖-17

2 案例2:Zabbix自動發現

2.1 問題

沿用前面的練習,配置Zabbix的自動發現機制,實現以下目標:

  1. 創建自動發現規則
  2. 創建自動發現後的動作,添加主機、為主機鏈接模板

2.2 方案

什麽是自動發現(Discovery)?

當Zabbix需要監控的設備越來越多,手動添加監控設備越來越有挑戰,此時,可以考慮使用自動發現功能,自動添加被監控主機,實現自動批量添加一組監控主機功能。

自動發現可以實現:

  • 自動發現、添加主機,自動添加主機到組;
  • 自動連接模板到主機,自動創建監控項目與圖形等。

自動發現(Discovery)流程:

  • 創建自動發現規則
  • 創建Action動作,說明發現主機後自動執行什麽動作
  • 通過動作,執行添加主機,鏈接模板到主機等操作

2.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:自動發現規則

1)創建自動發現規則

通過Configuration(配置)-->Discovery(自動發現)-->Create discovery rule(創建發現規則),如圖-18所示。

技術分享圖片

圖-18

2)填寫規則

填寫自動發現的IP範圍(逗號隔開可以寫多個),多久做一次自動發現(默認為1小時,僅實驗修改為1m),如圖-19所示。配置檢查的方式:HTTP、FTP、Agent的自定義key等檢查,如圖-20所示。

技術分享圖片

圖-19

技術分享圖片

圖-20

步驟二:創建動作

1)創建Action動作

通過Configuration(配置)--> Actions Event source(事件源):自動發現(Discovery)-->Create action(創建動作),如圖-21所示。

技術分享圖片

圖-21

2)配置Action動作具體行為

配置動作,添加動作名稱,添加觸發動作的條件,如圖-22所示。

技術分享圖片

圖-22

點擊操作(觸發動作後要執行的操作指令),操作細節:添加主機到組,與模板鏈接(HTTP模板),如圖-23所示。

技術分享圖片

圖-23

步驟二:添加新的虛擬機

1)創建新的虛擬機

創建一臺新的主機,驗證zabbix是否可以自動發現該主機,可以重新部署一臺新的虛擬機(註意前面的課程,我們已經創建了虛擬機web2,並且已經安裝部署了Zabbix agent,如果沒有該虛擬機或沒有安裝Agent,則需要前在web2部署Agent),也可以將舊虛擬機的IP地址,臨時修改為其他IP。

2)驗證結果

登陸Zabbix服務器的Web頁面,查看主機列表,確認新添加的主機是否被自動加入監控主機列表,是否自動綁定了監控模板。

3 案例3:Zabbix主動監控

3.1 問題

沿用前面的練習,配置Zabbix主動監控,實現以下目標:

  1. 修改被監控主機agent為主動監控模式
  2. 克隆模板,修改模板為主動監控模板
  3. 添加監控主機,並鏈接主動監控模板

3.2 方案

默認zabbix采用的是被動監控,主動和被動都是對被監控端主機而言的!

被動監控:Server向Agent發起連接,發送監控key,Agent接受請求,響應監控數據。

主動監控:Agent向Server發起連接,Agent請求需要檢測的監控項目列表,Server響應Agent發送一個items列表,Agent確認收到監控列表,TCP連接完成,會話關閉,Agent開始周期性地收集數據。

區別:Server不用每次需要數據都連接Agent,Agent會自己收集數據並處理數據,Server僅需要保存數據即可。

當監控主機達到一定量級後,Zabbix服務器會越來越慢,此時,可以考慮使用主動監控,釋放服務器的壓力。

另外,Zabbix也支持分布式監控,也是可以考慮的方案。

3.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:添加被監控主機

1)為被監控主機安裝部署zabbix agent

註意:前面的實驗,我們已經在web2主機安裝部署了zabbix agent,如果已經完成,則如下操作可以忽略。

  1. [[email protected] ~]# yum -y install gcc pcre-devel
  2. [[email protected] ~]# tar -xf zabbix-3.4.4.tar.gz
  3. [[email protected] ~]# cd zabbix-3.4.4/
  4. [[email protected] ~]#./configure --enable-agent
  5. [[email protected] ~]# make && make install

2)修改agent配置文件

將agent監控模式修改為主動模式。

  1. [[email protected] ~]# vim /usr/local/etc/zabbix_agentd.conf
  2. #Server=127.0.0.1,192.168.2.5
  3. //註釋該行,允許誰監控本機
  4. StartAgents=0
  5. //被動監控時啟動多個進程
  6. //設置為0,則禁止被動監控,不啟動zabbix_agentd服務
  7. ServerActive=192.168.2.5
  8. //允許哪些主機監控本機(主動模式),一定要取消127.0.0.1
  9. Hostname=zabbix_client_web2
  10. //告訴監控服務器,是誰發的數據信息
  11. //一定要和zabbix服務器配置的監控主機名稱一致(後面設置)
  12. RefreshActiveChecks=120
  13. //默認120秒檢測一次
  14. UnsafeUserParameters=1
  15. //允許自定義key
  16. Include=/usr/local/etc/zabbix_agentd.conf.d/
  17. [[email protected] ~]# killall zabbix_agentd //關閉服務
  18. [[email protected] ~]# zabbix_agentd //啟動服務

步驟二:創建主動監控的監控模板

1)克隆Zabbix自動的監控模板

為了方便,克隆系統自帶模板(在此基礎上就該更方便)。

通過Configuration(配置)-->Templates(模板)-->選擇Template OS Linux

-->全克隆,克隆該模板,新建一個新的模板。如圖-24所示。

新模板名稱為:Template OS Linux ServerActive。

技術分享圖片

圖-24

2)修改模板中的監控項目的監控模式

將模板中的所有監控項目全部修改為主動監控模式,通過Configuration(配置)-->Templates(模板)-->選擇新克隆的模板,點擊後面的Items(監控項)-->點擊全選,選擇所有監控項目,點擊批量更新,將類型修改為:Zabbix Agent(Active主動模式),如圖-25所示。

技術分享圖片

圖-25

3)禁用部分監控項目

批量修改監控項的監控模式後,並非所有監控項目都支持主動模式,批量修改後,會發現有幾個沒有修改主動模式成功,說明,這些監控項目不支持主動模式,關閉即可。

可以點擊類型排序,方便操作,點擊狀態即可關閉。如圖-26所示。

技術分享圖片

圖-26

步驟三:添加監控主機

1)手動添加監控主機(主動模式監控)

在Zabbix監控服務器,添加被監控的主機(主動模式),設置主機名稱:zabbix_client_web2 (必須與被監控端的配置文件Hostname一致),將主機添加到Linux servers組,IP地址修改為0.0.0.0,端口設置為0,如圖-27和圖-28所示。

技術分享圖片

圖-27

技術分享圖片

圖-28

為主機添加監控模板,選擇剛剛創建的模板(主動模式),添加鏈接模板到主機,如圖-29所示。

技術分享圖片

圖-29

2)驗證監控效果

查看數據圖表,通過Monitoring-->Graphs菜單,選擇需要查看的主機組、主機以及圖形,查看效果,如圖-30所示。

技術分享圖片

圖-30

CPU、內存等其他數據可用正常獲取,但是,查看分區圖表時並無數據,因為分區數據采用的是自動發現監控,與普通監控項一樣,修改為主動模式即可,選擇Template OS Linux ServerActive模板,修改Discovery自動發現為主動模式。如圖-31所示。

技術分享圖片

圖-31

4 案例4:拓撲圖與聚合圖形

4.1 問題

沿用前面的練習,熟悉zabbix拓撲圖與聚合圖形,實現以下目標:

  1. 創建修改拓撲圖
  2. 創建聚合圖形

4.2 步驟

實現此案例需要按照如下步驟進行。

步驟一:創建拓撲圖

1)創建拓撲

繪制拓撲圖可以快速了解服務器架構,通過Monitoring(監控中)-->Maps(拓撲圖),選擇默認的Local network拓撲圖,編輯即可(也可以新建一個拓撲圖),如圖-32所示。

技術分享圖片

圖-32

2)拓撲圖圖表說明

  • Icon(圖標),添加新的設備後可以點擊圖標修改屬性
  • Shape(形狀)
  • Link(連線),先選擇兩個圖標,再選擇連線
  • 完成後,點擊Update(更新)

創建完拓撲圖,效果如圖-33所示。

技術分享圖片

圖-33

步驟二:創建聚合圖形

1)創建聚合圖形

聚合圖形可以在一個頁面顯示多個數據圖表,方便了解多組數據。

通過Monitoring(監控中)-->Screens(聚合圖形)-->Create screen(創建聚合圖形)即可創建聚合圖形,如圖-34所示。

技術分享圖片

圖-34

修改聚合圖形參數如下:

  • Owner:使用默認的Admin用戶
  • Name:名稱設置為Web2_host
  • Columns:列數設置為2列
  • Rows:行數設置為4行

2)為聚合圖形中添加監控圖形

選擇剛剛創建的聚合圖形(web2_host),點擊後面的構造函數(constructor),點擊Change(更改),設置每行每列需要顯示的數據圖表,如圖-35所示。

技術分享圖片

圖-35

5 案例5:自定義監控案例

5.1 問題

沿用前面的練習,使用自定義key監控常用監控項目,實現以下目標:

  1. 監控Nginx狀態
  2. 監控網絡連接狀態

5.2 步驟

實現此案例需要按照如下步驟進行。

步驟一:監控Nginx服務狀態

1)準備環境,部署nginx軟件

安裝nginx軟件,開啟status模塊

  1. [[email protected] nginx-1.12.2]# ./configure \
  2. > --with-http_stub_status_module
  3. [[email protected] nginx-1.12.2]# make && make install
  4. [[email protected] ~]# cat /usr/local/nginx/conf/nginx.conf
  5. … …
  6. location /status {
  7. stub_status on;
  8. }
  9. … …
  10. [[email protected] ~]# curl http://192.168.4.5/status
  11. Active connections: 1
  12. server accepts handled requests
  13. 10 10 3
  14. Reading: 0 Writing: 1 Waiting: 0

2)自定義監控key

語法格式:

UserParameter=key,command

UserParameter=key[*],<command>

key裏的所有參數,都會傳遞給後面命令的位置變量

如:

UserParameter=ping[*],echo $1

ping[0], 返回的結果都是0

ping[aaa], 返回的結果都是aaa

註意:被監控端修改配置文件,註意要允許自定義key並設置Include!

創建自定義key

  1. [[email protected] ~]# vim /usr/local/etc/zabbix_agentd.conf.d/nginx.status
  2. UserParameter=nginx.status[*],/usr/local/bin/nginx_status.sh $1
  3. [[email protected] ~]# killall zabbix_agentd
  4. [[email protected] ~]# zabbix_agentd

自定義監控腳本(僅供參考,未檢測完整狀態)

  1. [[email protected] ~]# vim /usr/local/bin/nginx_status.sh
  2. #!/bin/bash
  3. case $1 in
  4. active)
  5. curl -s http://192.168.2.100/status |awk ‘/Active/{print $NF}‘;;
  6. waiting)
  7. curl -s http://192.168.2.100/status |awk ‘/Waiting/{print $NF}‘;
  8. accepts)
  9. curl -s http://192.168.2.100/status |awk ‘NR==3{print $2 }‘;;
  10. esac
  11. [[email protected] ~]# chmod +x /usr/local/bin/nginx_status.sh

測試效果:

  1. [[email protected] ~]# zabbix_get -s 192.168.2.100 -k ‘nginx.status[accepts]‘

登陸Zabbix監控Web,創建監控項目item,點擊Configuration(配置)-->Hosts(主機),點擊主機後面的items(項目),點擊Create item(創建項目)。修改項目參數如圖-36所示。

技術分享圖片

圖-36

步驟二:監控網絡連接狀態

1)了解TCP協議

熟悉TCP三次握手,參考圖-37。

技術分享圖片

圖-37

熟悉TCP連接的四次斷開,參考圖-38。

技術分享圖片

圖-38

2)查看網絡連接狀態

模擬多人並發連接

  1. [[email protected] ~]# ab -c 1000 -n 100000 http://192.168.2.100/

查看網絡連接狀態,仔細觀察、分析第二列的數據

  1. [[email protected] ~]# ss -antup
  2. //-a顯示所有
  3. //-t顯示TCP連接狀態
  4. //-u顯示UDP連接狀態
  5. //-n以數字形式顯示端口號和IP地址
  6. //-p顯示連接對應的進程名稱

3)創建自定義key

註意:被監控端修改配置文件,註意要允許自定義key並設置Include。

  1. [[email protected] ~]# vim /usr/local/etc/zabbix_agentd.conf.d/net.status
  2. UserParameter=net.status[*],/usr/local/bin/net_status.sh $1
  3. [[email protected] ~]# killall zabbix_agentd
  4. [[email protected] ~]# zabbix_agentd

自定義監控腳本(僅供參考,未檢測完整狀態)

  1. [[email protected] ~]# vim /usr/local/bin/net_status.sh
  2. #!/bin/bash
  3. case $1 in
  4. estab)
  5. ss -antp |awk ‘/^TIME-WAIT/{x++} END{print x}‘;;
  6. close_wait)
  7. ss -antp |awk ‘/^CLOSE-WAIT/{x++} END{print x}‘;;
  8. time_wait)
  9. ss -antp |awk ‘/^TIME-WAIT/{x++} END{print x}‘;;
  10. esac
  11. [[email protected] ~]# chmod +x /usr/local/bin/net_status.sh

測試效果:

  1. [[email protected] ~]# zabbix_get -s 192.168.2.100 -k ‘net.status[time_wait]‘

4) 監控netstatus

在監控服務器,添加監控項目item,Configuration-->Hosts?點擊主機後面的items

點擊Create item,如圖-39所示。

技術分享圖片

圖-39

主動與被動監控 拓撲圖組合圖 自定義監控