1、手工安裝zabbix用戶端
(1) 下載Windows的zabbix用戶端
從官方下載Zabbix Agent後,壓縮包裡面有2個目錄,一個為win32,另一個是win64,每個目錄下應該有3個檔案,分別 為:zabbix_agentd.exe zabbix_get.exe zabbix_sender.exe
根據作業系統不同,將檔案放在c:\zabbix目錄下
(2) 添加用戶端zabbix_agentd,conf檔案
在c:\zabbix檔案夾中建立zabbix_agentd.conf檔案,寫入如下基本內容:
LogFile=c:\zabbix\zabbix_agentd.log PidFile=c:\zabbix\zabbix_agentd.pid Server=<服務端IP地址> Hostname=<用戶端主機名稱> |
c.執行如下命令,把zabbix_agentd註冊為windows服務。
C:Program Fileszabbix>zabbix_agentd --config "C:Program Fileszabbixzabbix_agentd.conf --install
d.啟動zabbix_agentd服務
C:Program Fileszabbix>zabbix_agentd start
e.到windows的系統服務列表裡面查看ZabbixAgent的狀態,正常情況下你會看到ZabbixAgent已經存在在系統服務裡,而且是自動啟動。
(3) 安裝zabbix用戶端並啟動
進入到目標主機的c:\zabbix目錄下,執行如下命令完成用戶端的安裝:
zabbix_agentd.exe –c c:\zabbix\zabbix_agentd.conf -i |
執行如下命令,啟動用戶端:
zabbix_agentd.exe –c c:\zabbix\zabbix_agentd.conf –s |
參數含義:
-c 制定設定檔所在位置
-I 是安裝用戶端
-s 啟動用戶端
-x 停止用戶端
-d 卸載用戶端
2、自動化安裝zabbix用戶端
如果要為大量Windows伺服器部署zabbix用戶端可以通過寫批次檔來完成用戶端的安裝和啟動。但是考慮到網卡流量的監控,就需要使用perl或python指令碼來實現了。
我的perl自動化安裝指令碼見附件
下載安裝ActiveState.Perl.Dev.Kit.Pro.v9.0,將perl程式產生exe可執行檔,放到c:\zabbix目錄下。
此外,我還寫了一個Windows批處理指令碼agentd.bat放在c:\zabbix目錄下用來對用戶端伺服器上的zabbix_agentd進行安裝、啟動、停止、卸載。指令碼內容如下:
@echo off echo **************************************** echo *****Zabbix Agentd Operation************ echo **************************************** echo ** a. start Zabbix Agentd******** echo ** b. stop Zabbix Agentd******** echo ** c. restart Zabbix Agentd******** echo ** d. install Zabbix Agentd******** echo ** e. uninstall Zabbix Agentd******** echo **************************************** choice /c:abcd /M [a]start,[b]stop,[c]install,[d]uninstall if errorlevel 5 goto uninstall if errorlevel 4 goto install if errorlevel 3 goto restart if errorlevel 2 goto stop if errorlevel 1 goto start :start c:\zabbix\zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.conf -s goto end :stop c:\zabbix\zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.conf -x goto end :restart c:\zabbix\zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.conf -x c:\zabbix\zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.conf -s :install c:\zabbix\zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.conf -i goto end :uninstall c:\zabbix\zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.conf -d goto end :end |
自動化安裝包製作過程如下:
(1)選擇需要打包的zabbix安裝包檔案(預設是放在C盤),右鍵選擇“添加到壓縮檔”
(2)我用的是好壓軟體,在彈出的對話方塊中,壓縮檔格式選擇為7Z,壓縮方式根據需求選擇,我選擇的是預設的標準。壓縮選項中在“建立固實壓縮檔”和“建立自解壓格式壓縮檔”前打鉤。
(3)進入自解壓選項,選擇解壓選項卡,按照下圖進行填寫:
(4) 之後點擊確定,開始進行壓縮。壓縮完畢後產生自解壓檔案zabbix.exe
(5) 安裝包解壓安裝,雙擊安裝包,點擊install即可完成軟體的安裝部署
###############################
4.15 添加對Windows伺服器的監控 4.15.1為Windows模板添加自訂監控項
Zabbix能對Windows伺服器進行監控,但是zabbix預設Windows監控模板並沒有提供更多更好的監控項目。很多監控項目需要自己手工添加或是在zabbix.agentd,conf檔案中進行自訂。
1、zabbix自訂監控Windows伺服器的原理
Zabbix為Windows伺服器的監控提供了PerfCounter(效能計數器)這個功能。Zabbix用戶端通過PerfCounter擷取Windows伺服器上的相關效能資訊,然後發送給伺服器端。
2、如何擷取Windows伺服器的PerfCounter運算式
方法一:
在Windows伺服器的控制台->管理工具->效能的系統監視器中,可以看到這些效能監控。
點擊添加計數器後,在彈出的添加計數器對話方塊中,可以在效能物件下拉式功能表中選擇相應的監控項目,然後在下面的列表中選擇需要使用的計數器,在右邊的裡表中選擇範例。點擊添加。
添加後的計數器在下面列表中可以看到
在添加的計數器上面右鍵選擇屬性,在彈出的視窗中的資料選項卡中可以看到具體的perfCounter運算式
方法二:
進入開始->運行,輸入CMD進入命令視窗。輸入typeperf –qx| more 擷取相關PerfCounter運算式。也可以配合管道輸出給find,尋找想要的相關運算式。以擷取網卡PerfCounter為例,在命令列輸入:typeperf –qx |find “Network Interface”|find /V “LoopBack”
命令的意思是,尋找和“Network Interface”相關的PerfCounter。/V是忽略和”LoopBack”迴環介面的PerfCounter
3、在zabbix中使用Perfcounter為Windows模板添加監控項
在zabbix中,使用PerfCounter的方法有兩種:
方法一:
在模板添加監控項時使用perf_counter作為key運算式:
以添加CPU空閑時間監控為例:
系統配置->模板,選擇Windows監控模板。進入監控項,點擊右上方的Create Item,建立監控項,在key中添加PerfCounter相關的參數,然後在設定一下其他選項,儲存即可。
方法二:
在用戶端設定檔zabbix_agentd.conf檔案中添加類似於Parameter自訂監控的PerfCounter參數。具體使用格式如下
PerfCounter=<監控項key運算式>,<效能計數器名稱> |
以添加網卡監控為例:
修改Windows伺服器上的zabbix用戶端設定檔zabbix_agentd.conf,添加通過typeperf-qx命令擷取的和網卡相關資訊
#Network PerfCounter=NetAllInt0,"\Network Interface(Intel[R] PRO_1000 MT Network Connection)\Bytes Total/sec",30 PerfCounter=NetInInt0,"\Network Interface(Intel[R] PRO_1000 MT Network Connection)\Bytes Received/sec",30 PerfCounter=NetOutInt0,"\Network Interface(Intel[R] PRO_1000 MT Network Connection)\Bytes Sent/sec",30 PerfCounter=NetBandInt0,"\Network Interface(Intel[R] PRO_1000 MT Network Connection)\Current Bandwidth",30 |
4.15.2 Windows伺服器網卡流量監控
方法一:
windows的key的關鍵字可以使用網卡的ip地址來替代。例如:net.if.out[192.168.101.1,bytes]
方法二:
如果更改了ip地址,上面的方法就不靈了。使用Macro能比較好的解決監控本地網卡的需求net.if.out[{IPADDRESS},bytes]
方法三:
Macro中的{IPADDRESS}只是擷取主機的外網IP地址,對於多網卡的主機來說內網網卡就監控不到了。在用戶端設定檔中使用PerfCounter可以解決這個問題。但每個機器的網卡型號不一定相同,因此typeperf的輸出也不一樣。我寫了個perl指令碼,來解決這個問題。
use strict; use warnings; #添加對網卡的監控 my @network=`typeperf -qx |find "Network Interface"|find /V "Loopback"|find "Bytes Total"`; my $i=0; foreach my $int (@network) { if($int=~ /^(\\Network Interface.*\\).*$/) { my $intname=($1); open OUT_FILE, ">>c:\\zabbix\\zabbix_agentd.conf" or die("Could not write the file"); print OUT_FILE <<EOF; #Network PerfCounter=NetAllInt${i},"${intname}Bytes Total/sec",30 PerfCounter=NetInInt${i},"${intname}Bytes Received/sec",30 PerfCounter=NetOutInt${i},"${intname}Bytes Sent/sec",30 PerfCounter=NetBandInt${i},"${intname}Current Bandwidth",30 EOF close(OUT_FILE); $i++; } } |
不同的windows伺服器只要運行這個指令碼,就可以根據伺服器上網卡型號還有網卡數量,將監控寫入到zabbix_agentd.conf設定檔中。