zabbix中文配置指南

weixin_34117211發表於2017-11-07

一、Zabbix簡介

1.1 Zabbix簡介

  Zabbix是一個企業級的開源分散式監控解決方案,由一個國外的團隊持續維護更新,軟體可以自由下載使用,運作團隊靠提供收費的技術支援贏利。官方網站:http://www.zabbix.com官方文件:http://www.zabbix.com/documentation/2.0/manual/quickstart。Zabbix通過C/S模式採集資料,通過B/S模式在web端展示和配置。

Zabbix執行條件:

  Server:Zabbix Server需執行在LAMP(Linux+Apache+Mysql+PHP)環境下,對硬體要求低。

  Agent:目前已有的agent基本支援市面常見的OS,包含Linux、HPUX、Solaris、Sun、windows。

  SNMP:支援各類常見的網路裝置

1.2 Zabbix功能

  具備常見的商業監控軟體所具備的功能(主機的效能監控、網路裝置效能監控、資料庫效能監控、FTP等通用協議監控、多種告警方式、詳細的報表圖表繪製)支援自動發現網路裝置和伺服器;支援分散式,能集中展示、管理分散式的監控點;擴充套件性強,server提供通用介面,可以自己開發完善各類監控。

1.3 優劣勢

  優點:開源,無軟體成本投入;Server對裝置效能要求低(實際測試環境:虛擬機器CentOS5,2GCPU 1G記憶體,監控5臺裝置,CPU使用率基本保持在10%以下,記憶體剩餘400M以上);支援裝置多;支援分散式集中管理;開放式介面,擴充套件性強。

  缺點:中文資料較少。

二、Zabbix配置檔案

2.1 說明

  Server:指安裝zabbix服務的伺服器(以下簡稱伺服器端),是最重要的部份,主要安裝在linux系統上(支援多種作業系統),採用mysql儲存監控資料並使用apache+php的方式呈現。

  Agent:指安裝在被監控裝置上的zabbix代理(以下簡稱代理),被監控裝置上的資料由代理收集後統一上傳到伺服器端由伺服器端收集、整理並呈現。

  SNMP:也是agent的一種,指支援SNMP協議的裝置(也可以是伺服器),通過設定SNMP的引數將相關監控資料傳送至伺服器端(大部份的交換機、防火牆等網路裝置都支援SNMP協議)。

  IPMI:Agent的另一種方式,主要應用於裝置的物理效能監控,例如裝置的溫度、風扇的轉速等。

2.2 Zabbix架構

  Zabbix支援多種網路方式下的監控,可通過分散式的方式部署和安裝監控代理,整個架構如(圖一、圖四)所示。

 

圖一:架構圖

 

圖四:架構圖

2.3 Zabbix服務配置檔案

  Zabbix安裝後服務端預設的配置檔案存在安裝資料夾中的/etc中,假設編譯的引數是“—prefix=/usr/local/zabbix”,那麼服務端的配置檔案則在“vi /usr/loca/zabbix/etc/”。如圖二所示。

圖二:配置檔案

  主要的配置檔案兩個:“zabbix_server.conf”負責伺服器端的設定;“zabbix_agent.conf”用來設定客戶端代理引數;“zabbix_proxy.conf”用來設定分散式的部署。

2.4 zabbix_server.conf說明

  Zabbix_server.conf中的引數比較多,設定值的跨度也很大,這裡僅列出常用的一些引數。如圖三所示。Zabbix_server.conf引數除了保證服務正常執行外還涉及該伺服器的效能,如果引數設定不合理可能會導致zabbix新增主機不正常、代理端資料無法正常收集或是zabbix伺服器效能嚴重下降,經常報告CPU佔用過高或是IO佔用過高等問題。

圖三:zabbix_server.conf

DBName=zabbix                            zabbix所屬資料庫名稱
DBUser=zabbix                            zabbix所屬資料庫使用者
DBPassword=www.xxxxxx.com                zabbix資料庫密碼
StartPollers=30                         輪詢的初始值(0-1000)
StartIPMIPollers=4                       IPMI輪詢的初始值(0-1000)
StartPollersUnreachable=30               輪詢不可達的主機數(包括IPMI 0-1000)
StartTrappers=8                         捕獲的初始值(0-1000)
StartPingers=4                          ping的初始值(0-1000)
StartDiscoverers=0                      自動發現的初始值(0-250)
CacheSize=384M                          快取大小
CacheUpdateFrequency=300                快取更新的頻率
StartDBSyncers=8                        資料庫同步時間
TrendCacheSize=128M                     總趨勢快取大小
AlertScriptsPath=/usr/bin               指令碼的存放位置
LogSlowQueries=1000                     日誌慢查詢設定

2.5 zabbix_agent.conf說明

  Zabbix_agent.conf用來配置代理的引數,該檔案中需要更改的地方比較少,僅更改幾個常用的引數就行了(linux的agent和windows的都差不多,大同小異,以下的說明以windows為例)。如圖五所示。

LogFile=c:\zabbix\zabbix_agentd.log                         日誌檔案的存放位置
Server=192.168.0.189                                        zabbix伺服器的IP
Hostname=192.168.0.13  
                   被監控機的IP

  需要注意的是代理端的設定引數“Hostname=192.168.0.13”要和配置時填入的主機名稱一致,不然日誌中將會報“host {主機名}not found”的錯誤。如(圖六、七)所示。

圖五:zabbix_agent.conf

圖六:主機名不一致的錯誤提示

圖七:填入正確的主機名

2.6 Agent安裝

  Zabbix需要在被監控的host上安裝agent,在zabbix官網上下載相應平臺的agent包到各被監控端,按如下方式在被監控上執行agent。(注:官網上下載的agent包裡沒有執行agentd所必須的配置檔案,可以從zabbix server上拷貝一份zabbix_agentd.conf,這個conf檔案是所有平臺都通用的)

2.6.1 Linux Agent安裝

  Linux、UNIX上的agent是編譯好了的,不用編譯安裝。(圖八)

useradd zabbix  cd /usr/local/zabbix tar zxvf zabbix_agents_1.8.linux2_6.i386.tar.gz

圖八:agent安裝

  取一份server上的zabbix_agnetd.conf到本地,然後按說明修改,一般我們只需修改2.5中的三個引數。修改完成後,執行agentd。

/usr/local/zabbix/sbin/zabbix-agentd –c /usr/local/zabbix/zabbix_agentd.conf & ps –ef|grep zabbix_agentd

  如果程式沒起來,可檢視agentd.log日誌來排查問題。(注:啟動時建議用全路徑,否則可能會出錯),加入開機執行。

echo ‘/usr/local/zabbix/sbin/zabbix-agentd –c /usr/local/zabbix/zabbix_agentd.conf &‘ >>/etc/rc.local

2.6.2 Windows agent安裝

  Windows下解壓客戶端包到c:\zabbix,下載修改好的zabbix_agentd.conf檔案也放到c:\zabbix,開啟cmd命令列,執行:

zabbix_agentd -c "c:\zabbix\zabbix_agentd.conf" -i zabbix_agentd -c "c:\zabbix\zabbix_agentd.conf" -s

  安裝後會在系統服務裡新增一個zabbix_agentd服務(圖九),會自動開機執行。如果需要將解除安裝客戶端,請執行(圖十):

zabbix_agentd -c "c:\zabbix\zabbix_agentd.conf" -x zabbix_agentd -c "c:\zabbix\zabbix_agentd.conf" –d

圖九:zabbix agent服務

圖十:zabbix agent服務解除安裝、安裝命令

三、Zabbix配置

3.1 更改Zabbix map圖示

  Zabbix的maps用來圖形化顯示監控裝置的拓撲圖,並且以不同的標記顯示故障事件,通過該圖表很直觀的顯示裝置的整體情況。系統預設的圖示比較簡陋,如圖十一所示。通過更改系統自帶的圖示讓監控顯示更加直觀、方便(圖十二)。

  首先下載Icon圖示,通過http://www.zabbix.com/forum/attachment.php?attachmentid=1855&d=1239079235下載圖示庫並壓至相關目錄。

圖十一:預設的maps圖

圖十二:新maps圖

unzip zabbix_icons_set_generic.zip unzip make_img_insert_sql.sh.gz sh make_img_insert_sql.sh ./48 1000 mv my_images_mysql.sql my_images_mysql_48.sql sh make_img_insert_sql.sh ./128 2000 mv my_images_mysql.sql my_images_mysql_128.sql cat my_images_mysql_48.sql |mysql -u zabbix -p zabbix cat my_images_mysql_128.sql |mysql -u zabbix -p zabbix

  指令執行後可能出現128_g_router_off.png、128_g_router_on.png、128_g_router_unknown.png這三個檔案的錯誤提示,對於這三個檔案可以直接通過web方式更改提交。

3.2 新增簡訊報警(指令碼方式)

  簡訊提醒功能(圖二十)可以讓運維團隊在第一時間瞭解故障,讓系統管理人員快速定位、解決故障。以下是詳細步驟:

3.2.1 新建簡訊傳送指令碼

  對於可以通http方式傳送簡訊的方式都可以參考該指令碼,這個例子中日常的簡訊傳送都是通過windows平臺傳送,這裡把它轉換成了linux下可用的指令碼(圖十三)。這裡通過“curl”指令來實現http的操作,隨後通後“iconv”指令實現編碼轉換(utf8轉gbk編碼),否則可能出現收到簡訊是亂碼的情況。

  需注意的是該指令碼的存放位置要和2.4中的指令碼存放位置一致。

#!/bin/sh IFS="" sms="http://x1.xxxxxxxx.cn/gbk/interface/send_sms.aspx?username=xxxxxx&password=yyyyyy&receiver=$1&content=$2,$3" echo $sms|tr ' ' '.'|iconv -f utf8 -t gbk >/tmp/sendsms.in cont=`cat /tmp/sendsms.in` curl $cont -s -o /tmp/sendsms.log

圖十三:sendsms.sh圖

3.2.2 增加報警方式型別

  進入zabbix的WEB管理頁面,在“Administration”---“Media types”,新建一個告警方式型別,描述欄填寫“message send by mobile”,型別欄選擇“Script”,Script name欄填寫“sendsms.sh”,勾選“enable”單擊儲存按鈕。(圖十四)

圖十四:media types圖

3.2.3 增加報警通知的使用者

  進入zabbix的WEB管理頁面,在“Administration”---“Users”—“Create user”進入新建使用者頁面,在該頁面中選擇“Media”選擇新建報警型別“add”。設定告警方式為“message send by mobile”,在send to欄中設定接收報警的手機號碼,在相應的欄中設定事件的等級(N未分級、I資訊、W警告、A平均、H高、D害難)和工作時間,點選儲存。(圖十五)

圖十五:user圖

3.2.4 增加報警動作

  進入zabbix的WEB管理頁面,在“Configuration”---“Actions”—“Create action”進入新建動作頁面,在該頁面中共包含三專案內容:

  “Action”指報警動作的名稱、報警週期、標題、詳細內容及故障恢復時的報警標題和內容。這裡需要注意的是標題和內容不能太長,不然一條簡訊無法定遠整顯示(圖十六、十七分別表示action預設的內容和精簡後的內容)。在標題和內容中都可以使用zabbix中自定義的巨集。常見的巨集有以下內容:

{HOST.CONN}                                主機IP地址
{TRIGGER.NAME}                            觸發事件名稱
{TRIGGER.STATUS}                           事件觸發狀態
{TRIGGER.SEVERITY}                         事件觸發級別
{ITEM.NAME1}                               監控項的名稱
{ITEM.KEY1}                                監控項的引數
{ITEM.VALUE1}                              監控專案的值

圖十六:預設action圖

圖十七:修改的action圖

  “Conditions”指滿足條件的主機。“Type of calculation”指的是條件的集合,分為兩種:“AND”指條件必須同時滿足,“OR”指滿足其中的一個條件就可以。“Conditions”指滿足條件的主機。圖十八所表達的意思是:“當主機的狀態不是“維護”並且主機已經觸發“問題”並且主機組等於“project3 group”時的所有裝置”。

圖十八:報警條件

  “Operations”指對於滿足條件的主機所採取的操作(圖十九)。選擇正確的傳送週期“step”,預設為0,“operation type”指的是操作方式,可選擇傳送資訊和執行遠端指令;“send user groups”指傳送的使用者組;“send to users”傳送到的使用者;“send only to”採用的具體傳送方式。

圖十九:報警操作

  以上的這些設定好後就點“save”儲存,當滿足條件的主機觸發報警時相關的使用者就會收到簡訊提醒(圖二十)。

圖二十:簡訊提醒

3.3 新增 Hosts

  Host是Zabbix監控的基本載體,所有的監控項都是基於host的。通過Configuration->Hosts->Create Host來建立監控裝置(圖二一)。 

圖二一:HOST

  按提示填入Host name、Groups、IP ,其他選項預設即可,Link Templates 處選擇一個模板,save即可成功新增裝置。(注:如果host上沒安裝agent,新增後的狀態會是unmonitor,會採集不到值,Zabbix自帶大量的裝置監控模板,我們新增主機時通過link到這些模板,就可以快速新增主機的監控項和告警觸發條件。)
一類的hosts可以歸屬到同一個Host Group,便於分類管理同一類裝置,在Configuration->Host Group->Create Host Group 可以新增裝置組。

3.4 新增 Items

  Item是監控項,是監控的基本元素,每一個監控項對應一個被監控端的採集值。(圖二二、二三)

  在Configuration->Hosts介面,我們能看到每個host所包含的items總數,點選對應主機的items項,可以看到具體的每個item資訊,這些items可以引用自templates,也可以自己建立。

 圖二二:ITEM

  通過點選具體item名字可以修改已有監控項的屬性,點選Satus的連結可以禁用/啟用這個監控項。(注:我們可以通過新建一個template,在template中禁用掉所有不需要用到的items,然後把同一類hosts link to這個template,就不用一臺臺主機去更改items)新增item可以通過點選右上角的create item來建立。

圖二三:ITEM圖

  按提示逐項填入相關資訊即可,其中key是zabbix已經自帶的取值方法,Application類似於host groups,是item的組。(item key也可以自定義,後面會講到如何自定義監控項)。

3.5 新增 Triggers

  Trigger是觸發器,當Items採集值滿足triggers的觸發條件時,就會產生actions。(圖二四、二五)每一個trigger必須對應一個item,但一個item可以對應多個trigger。

  同樣,通過點選Configuration->Hosts->Triggers中某個trigger的名字,可以修改trigger的屬性。(注意:引用自template的trigger觸發值是不能單獨修改的,必須在template中修改,或是複製一個同樣的trigger再修改,然後禁用掉之前的)新增trigger可以通過點選右上角的create trigger來建立。

圖二四:Triggers圖

 圖二五:Triggers圖

  Expression中選擇對應的item、觸發方式及觸發值,Severity是告警級別,根據trigger的嚴重性來選擇。Zabbix 提供多種trigger觸發方式供選擇,常用的我們可以選擇last value </>/=/#/N(最近一次採集值),或是選擇maximal value for period of time (一段時間內的最大值),等等。可以根據實際需要來設定觸發方式。

3.6 新增 Graphs

  Zabbix的Graphs功能很強大,可以為每一個item繪製圖表,也可以把多個items繪製在一張圖表內。通過configuration->hosts選擇要繪製圖表的host,點選graphs,create graphs即可建立圖表。(圖二六、二七)

圖二六:graph圖

圖二七:graph圖

  Graph type:圖表樣式,有線狀、柱狀、餅狀;還可以自定義圖表大小,及Y軸最大最小值;通過add items可以新增在同一個圖表中展示的多個items(注:注意每個item的顏色及取值範圍,範圍相差太大圖表會顯示不全);配置好的graphs在monitoring->graphs中檢視。在monitoring->last data下能快速檢視每個host的每個item的graph。

3.7 新增 Screens

  Screen將多種資訊放在一起展示,便於集中展示某個host的多個資訊,或是比較多個hosts的同一種資訊,這些資訊可以為graphs、maps、server infos等等,幾乎涵蓋zabbix所有的監控資訊。(圖二八、二九)

  通過configuration->screen->creat screen來建立,建立時定義screen的行數和列數,點選對應單元格內的change,新增相應的資訊。

圖二八:screen圖

圖二九:screen圖

  通過monitoring-screen,可以檢視之前配置好的資訊。

3.8 新增 Maps

  這裡可以新增關於主機的拓撲圖:configration-maps,在右上角可以create maps或者import map。這裡我們點選crate maps 點save儲存。(圖三十、三一)

圖三十:maps圖

圖三一:maps圖

3.9 新增 SNMP監控

  Zabbix snmp的監控要在configration 中hosts中新增相關主機和snmp裝置IP地址,一般用snmp監控網路裝置就可以了。(圖三二、三三)在我看來zabbix 對server的監控一般是用agent來做的,所以zabbxi不建議用snmp對server監控,這一點和cacit有本質的區別,因為cacti主要是通過snmp對主機和網路裝置進行監控的。

圖三二:SNMP圖

圖三三:SNMP圖

3.10 新增 Templates

  如果有大量的同一類裝置,需要監控的資訊也大致類似,一個個去修改相關引數比較麻煩,我們可以通過建立一個template來簡化操作。(圖三四)
Configuration->Host Groups->Template->Create Template。建立template後,在configuration->host->template下找到剛建立的Template_MicrosoftSQLServer2008,修改相關的items、triggers、graphs等資訊,使滿足要求後link到相關的host即可。

圖三四:模板圖

3.11 新增Reports(定製報表)

  在zabbix中關於報表的功能有三項:Avaliability report:(圖三五)整個系統可用的系統報表提供過濾功能。

圖三五:avaliability report圖

  Most busy triggers top 100:(圖三六)提供最常用的triggers 預覽。

圖三六:triggers top 100圖

  Bar report :(圖三七)可定製報表可以報多個報表整合到一起。

圖三七:bar report圖

3.12 Export/Import XML

  Zabbix提供將所有配置匯出為標準XML格式的檔案,同樣,也支援匯入標準格式的XML配置檔案。

  通過configuration->Host->Export,勾選要匯出的host,選擇export即可匯出xml檔案到本地。(圖三九)

圖三九:export圖

  Import可匯入本地的XML檔案,注意格式一定要符合標準要求,如果server上有同名的配置,會被覆蓋掉。(圖三八)

圖三八:import圖

  如果有大量的配置需要手動新增,譬如新增oralce監控,我們可以手動編寫xml,一次匯入所有的items和triggers,但要注意格式,可自己匯出一個配置後參考。

四、Zabbix ITEM、模板及SNMP配置

4.1 Zabbix ITEM說明及配置

  Item是zabbix中最小的監控單位,相關的資料都由item提供。在item項中,最重要的是“Key”項,該項提供具體的監控點(圖四十)。這裡有幾個重要的值,分別如下:

type                          監控型別(有zabbix agent、snmp、jmx等)
key                           監控值(對於windows監控點使用perf_counter字首)
type of information           資訊的型別(數值型、字元型、日誌型、文字型等)
data type                     資料的類理(整數型、浮點型等)
Units                         單元(例如B=Byte)
Update interval               數值的更新週期

圖四十:item圖

  可以通過zabbix_get指令來獲取被監控裝置的資料值(圖四一)。其中:-s指定需要取值的客戶端;-p指定通訊埠;-k指定具體的鍵值。

圖四一:zabbix_get圖

  理論上只要是windows效能監視器可以檢視的值,通過zabbix都可以監控到,但是對於不同的伺服器安裝的同類應用有可能存在監控鍵值不一樣的情況,在windows系統下通過指令typeperf可以匯出windows所有的監控鍵值(圖四二、四三、四四)。

圖四二:typeperf圖

圖四三:sql2005圖

圖四四:sql2008圖

  Windows主機的監控可以參考圖四三、圖四四所匯出來的監控點,在新增的item中新建key,格式為“perf_counter【監控值】”(例如perf_counter[\Processor(_Total)\% Processor Time]),圖四五是參考SQL2005模板結合匯出的監控點檔案整理的SQL2008模板,請重點對照Key項。

圖四五:sql2008模板圖

4.2 Zabbix頁面顯示項配置

  通過更改zabbix的配置檔案可以控制zabbix的頁面顯示內容,在zabbix初始安裝完成後,管理介面上的“configuration”中還有一個頁面是“install”選項,存在誤操作重新安裝的風險,通過修改menu.inc.php檔案可以禁用該顯示專案(圖四六)。

vi /var/www/html/zabbix/include/menu.inc.php

圖四六:menu.inc.php圖

4.3 Zabbix SNMP說明及配置

  SNMP協議主要用在對網路裝置的監控方面,如交換機、防火牆等。首先需要在被監控裝置上啟用SNMP協議(圖四七),然後在zabbix中增加被監控的主機。對於未找到snmp模板的裝置就需要自己手動新增item,這裡通過snmp指令查詢到相關值,然後根據實際情況定製自己所需要item。

圖四七:啟用snmp

snmpwalk 172.16.1.1 -v1 -c public |egrep -i 'if(in|out)'|less snmpwalk -v1 -c public -On 172.16.1.1 ifInOctets.7 snmpwalk -v1 -c public -On 172.16.1.1 ifOutOctets.7 snmpwalk -v1 -c public -On 172.16.1.1 ifInOctets.9 snmpwalk -v1 -c public -On 172.16.1.1 ifOutOctets.9 snmpwalk 172.16.1.1 -v1 -c public |grep -i eth0 snmpwalk 172.16.1.1 -v1 -c public |grep -i eth2

  通過第一條指令結合實際情況找出需要監控的網路卡(一個裝置上有多個網路卡但僅啟用了其中的兩個),並且區分出內網網路卡和外網網路卡;通過其它指令進一步確認網路卡的狀態及實時的資料,根據得出的資料結合裝置實際情況定製zabbix的snmp item項,注意OID的填寫(圖四八、四九、五十)。

圖四八:snmpwalk指令

圖四九:snmpwalk指令










本文轉自 chengxuyonghu 51CTO部落格,原文連結:http://blog.51cto.com/6226001001/1746434,如需轉載請自行聯絡原作者

相關文章