您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關怎么理解Zabbix 監控方式,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
有人說通過Zabbix可以完成任何監控任務,只有你想不到的,但沒有監控不了的,真是這樣嗎?當你通過本章了解了Zabbix提供的多種監控方式后,你就會發現此言非虛。
這里所說的監控方式,實際上就是Zabbix中的配置監控項時選擇的監控項類型。為了適應各種應用場景的需要,Zabbix提供了多種方法幫助你更好的完成監控任務。
Zabbix 3.0中提供的監控方式包括:
Active agents
Passive agents
Extending agents
Simple checks
SNMP agents
Zabbix Internal checks
Zabbix trapper
IPMI agents
JMX agents
External checks
Database monitoring
SSH agents
Telnet agents
SNMP Traps
Aggregate checks
Calculated checks
使用Zabbix agent創建監控項時有兩種方式,即Active(主動式)agent和Passive (被動式)agent。
在Active agent模式下,Zabbix agent啟動后,由agent端初始化和Zabbix server之間的通信,向Zabbix server發出獲取監控項清單的請求,server端收到請求后響應agent發出的請求,并將監控項清單發送給agent。agent端定期和Zabbix server通信,保證獲得最新的監控項清單。agent則根據監控項清單查詢監控項的數據并將結果發送給Zabbixserver。流程如下圖3-1所示。
圖 3-1
為了啟用Active agent模式,需要在zabbix_agentd.conf文件中配置ServerActive參數,告訴agent可以聯系到哪些服務器(默認端口是10051)。通過配置RefreshActiveChecks參數,可以設置agent端多長時間向server詢問一次監控項清單,默認是120秒。在默認設置下server端改變active agent監控項有關的一些設置后,server端需要1分鐘刷新配置緩存(通過server配置文件中的參數CacheUpdateFrequency設置,默認是60秒),agent需要等待2分鐘才能夠知道監控項的變化。如果從server查詢監控項清單失敗(網絡問題或其他原因),agent端會等待1分鐘后重新向server發出查詢請求。Active agent也有自己的緩存,可以通過BufferSend或BufferSize進行設置, BufferSend參數設置監控項數據在緩存中保留的時間,默認是5秒(可以設置到3600)。BufferSize參數設置保留監控項數據的緩存大小,默認是100(可以設置到65535)
配置Active agent監控項的步驟:
1、 Zabbix agent安裝完成后,打開配置文件zabbix_agentd.conf。
2、 設置ServerActive參數,格式為IP:port 或DNS主機名:port。在這里我們可以設置多個server或proxy的DNS主機名或IP地址,用逗號分隔。
3、 設置Hostname參數,這個名字必須是唯一的并和Zabbixserver中Configuration -->Hosts頁面中添加的主機名稱相同。
4、 驗證Zabbix server的10051端口能夠訪問。
5、 重啟zabbix_agent(systemctlrestart zabbix-agent.service)。
6、 檢查agent日志(tail -f/var/log/zabbix/zabbix_agentd.log)。
7、 在主機中添加主動式監控項(Configuration --> Hosts --> Items --> Create item)。選擇監控項的Type(類型)為Zabbix agent(active)。
Passive agent為我們提供了一種簡單易行的方法,Zabbixserver或proxy根據監控項中配置的Update interval(數據更新間隔),定期向agent端發出查詢請求,如CPU負載、磁盤使用空間等等。agent根據請求收集監控項數據并返回給server或proxy。整個過程就是簡單的一問一答,你要什么值我給你什么值,從agent角度來看是被動的回答。如下圖3-2所示。
圖 3-2
近日完成《深入淺出 zabbix 4.0》視頻教程的錄制并正式發布,該教程基于 zabbix 4.2 ,對Zabbix進行全面講解。歡迎大家圍觀。課程鏈接:https://edu.51cto.com/sd/ce000
配置Passive agent監控項的步驟:
1、 安裝Zabbix agent,打開配置文件zabbix_agentd.conf。
2、 設置Server參數,格式為IP 或DNS主機名。在這里我們可以設置多個server或proxy的DNS主機名或IP地址,用逗號分隔。
3、 注釋掉ServerActive和Hostname這兩個參數,在Passive agent模式中不需要這兩個參數,如果你想同時使用active agent,這兩個參數必須配置。
4、 驗證agent端的10050端口能夠訪問。
5、 重啟zabbix_agent(systemctlrestart zabbix-agent.service)。
6、 檢查agent日志(tail -f/var/log/zabbix/zabbix_agentd.log)。
7、 在主機中添加被動式監控項(Configuration --> Hosts --> Items --> Create item)。選擇監控項的Type(類型)為Zabbix agent。
Zabbix中提供了一些標準的監控項可以使用Key,當你添加Zabbix agent監控項時可以選擇使用,但在實際環境中這些標準的Key并不能滿足特定的監控需求,在Zabbix中可以使用多種方法進行擴展,其中一個方法就是在agent配置文件中使用UserParameter進行擴展。
通過UserParameter參數擴展監控項的key,可以靈活的實現多種監控需求。Zabbix中定義UserParameter的格式為UserParameter=<key>,<command>。
配置UserParameter的步驟:
1、 打開agent配置文件zabbix_agentd.conf。
2、 設置UserParameter參數。例如:UserParameter=mysql.threads,mysqladmin -u root –p<password> status|cut -f3 -d":"|cut -f1-d"Q" ,該參數返回MySQL線程的數量給自定義的key:mysql.threads。
3、 保存配置文件,重新啟動Zabbix agent服務。
4、 Web前端Configuration --> Hosts--> Items頁面中添加監控項。
u Name字段中設置監控項名稱,例如 MySQL Threads。
u Type字段中選擇Zabbix agent或者Zabbix agent(active)。
u Key字段中填寫mysql.threads,這里填寫的內容必須和UserParameter中定義的一樣。
u Type of Information字段中選擇Numeric(unsigned)。
u Data type中選擇Decimal。
u 其他配置參數保持不變。點擊Add按鈕保存。
5、 Monitoring --> Latest data頁面查看監控項MySQL Threads。
Zabbix 中simple checks是基于ICMP ping或者端口檢測來確定主機是否在線或服務端口能否正常連接。這種方式下主機中不需要安裝Zabbix agent,當我們檢測主機或端口的可用性時simplechecks返回的值為1或者0,當我們檢測性能時返回的是浮點數(如檢測ping的響應時間時返回值0.02秒),如果檢測失敗則返回0。
為了降低網絡流量,更高效的進行ICMP檢測,Zabbix執行icmppingsec、icmpping 和 icmppingloss檢測時使用了一個第三方的工具fping和fping6,依賴linux不同的發行版安裝的版本各有不同,建議使用fping 3.0以上的版本。在CentOS系統中需要安裝fping時可以通過命令yum install fping完成安裝。
Zabbix中默認定義了3個用于ICMP檢測的監控項和2個用于TCP/UDP連接檢測的監控項,分別是:
Icmpping:主機響應ICMP ping返回1,否則返回0。
Icmppingloss:返回丟失ICMP ping數據包的百分比。
Icmppingsec:返回ICMP ping的響應時間,單位是秒。如果主機沒有響應(timeout reached)則返回0。如果返回值小于0.0001秒時返回值將被設置為0.0001。
Net.tcp.service / net.udp.service:主機上指定的服務正常運行并能建立TCP / UDP連接時返回1,否則返回0。
Net.tcp.service.perf / net.udp.service.perf:返回連接到指定TCP / UDP端口的服務所使用的時間,單位是秒。如果服務沒有運行則返回0.000000。
net.tcp.service 和net.tcp.service.perf支持我們知道的大部分協議,如SSH、FTP、HTTP等。這兩個項目是非常有用的,我們可以對特定的IP和端口進行簡單的TCP握手連接完成可用性的檢測,同時對主機或應用的性能不會有任何影響。
下面一起來看看這幾個項目的用法。
Icmpping
格式:Icmpping[<target>,<packets>,<interval>,<size>,<timeout>]。其中target是主機IP或DNS主機名;packets是數據包的數量;interval是數據包之間的間隔時間,單位是微秒;size是數據包的大小,單位是bytes;timeout是超時時間,單位是微秒。例如icmpping[,20,50,256,100],如果你不想定義target、packet等值,可以不填寫任何參數,可以寫成icmpping[,4],只要4個數據包有1個響應,監控項就會返回1。
Icmppingloss
格式:icmppingloss[<target>,<packets>,<interval>,<size>,<timeout>]。其中target是主機IP或DNS主機名;packets是數據包的數量;interval是數據包之間的間隔時間,單位是微秒;size是數據包的大小,單位是bytes;timeout是超時時間,單位是微秒。
Icmppingsec
格式:icmppingsec[<target>,<packets>,<interval>,<size>,<timeout>,<mode>]。其中target是主機IP或DNS主機名;packets是數據包的數量;interval是數據包之間的間隔時間,單位是微秒;size是數據包的大小,單位是bytes;timeout是超時時間,單位是微秒。
net.tcp.servic
格式:net.tcp.service[service,<ip>,<port>]。其中service是TCP協議的名稱,如:ssh、ldap、smtp、ftp、http、pop、nntp、imap、Telnet等等;IP是IP地址或DNS主機名(默認使用定義監控項的主機的IP或DNS主機名);port是端口號(默認使用服務標準的端口號)。例如:net.tcp.service[ftp,45]。當前不支持加密協議的檢測,像IMAP的993端口或POP的995端口,但我們可以用net.tcp.service[tcp,<ip>,port]來完成對它們的檢測。Zabbix 從v2.0起支持https和telnet。
net.tcp.service.perf
格式:net.tcp.service.perf[service,<ip>,<port>]。其中service是TCP協議的名稱,如:ssh、ldap、smtp、ftp、http、pop、nntp、imap、Telnet等等;IP是主機的IP地址或DNS主機名(默認使用定義該監控項主機的IP或DNS主機名);port是端口號(默認使用服務標準的端口號)。例如:net.tcp.service.perf [ssh]。當前不支持加密協議的檢測,像IMAP在993端口或POP在995端口上,但我們可以用net.tcp.service.perf [tcp,<ip>,port]來完成對它們的檢測。
net.udp.service
格式:net.udp.service[service,<ip>,<port>]。其中service是UDP協議的名稱,如:ntp;IP是主機的IP地址或DNS主機名(默認使用定義該監控項主機的IP或DNS主機名);port是端口號(默認使用服務標準的端口號)。例如:net.udp.service[ntp,45],在UDP端口45上檢測NTP服務的可用性。
net.udp.service.perf
格式:net.udp.service.perf[service,<ip>,<port>]。其中service是UDP協議的名稱,如:ntp;IP是主機的IP地址或DNS主機名(默認使用定義該監控項主機的IP或DNS主機名);port是端口號(默認使用服務標準的端口號)。例如:net.udp.service.perf [ntp],可以檢測NTP服務的響應時間。
Simple checks是一種簡單而高效的監控方式,由于其不需要傳輸復雜的監控數據,因此在監控成百上千的主機和服務的可用性時,對整體的網絡流量產生的影響是最小的。
配置Simple checks的步驟:
1、 創建一個新的監控項(Configuration --> Template --> Items--> Create item 或Configuration --> Host --> Items --> Create item)。
2、 在監控項配置頁面中:
填寫Name ,例如:Check SSH port $3。($3是key中的第三個參數{$SSH_PORT})。
選擇Type為Simple check。
填寫Key,例如:net.tcp.service[ssh,,{$SSH_PORT}],{$SSH_PORT}是定義的macro。
Type of information選擇Numeric。
Data type選擇Decimal。
如果需要可以在NewApplication中填寫一個監控項組的名稱,如:ssh check。
其他配置參數可以保持不變,點擊Add按鈕保存。
3、 Monitoring --> Latest data頁面查看監控項。
監控交換機、路由器、UPS等設備時,你是沒有辦法通過Zabbixagent進行監控的,原因是這些設備中沒有辦法安裝agent程序,但這并不代表Zabbix不能對這些設備進行監控,利用標準的SNMP協議,可以輕松實現Zabbix對這些設備的監控。
SNMP(簡單網絡管理協議)是TCP/IP協議簇的一個應用層協議,是一種廣泛用于監測網絡設備(例如:交換機、路由器、UPS等)的網絡協議。在每個被監控的設備中都會運行設備自帶的SNMP agent, Zabbix使用SNMP協議向被監控設備的SNMP agent發出查詢指令,并由SNMP agent返回查詢的值。
在設置SNMP agent監控項之前,我們先要確定OID(SNMP對象標識符)。SNMP將被管理對象用一個樹來組織,被管理對象用OID表示,如:1.3.6.1.2.1.1.3 代表sysUpTime。實際環境中會使用很多廠商的產品,每個產品中定義的OID不盡相同,所以準備使用SNMP agent 監控設備前,需要廠商提供設備的MIB文件。MIB文件是基于SMI語法定義的說明某個OID在OID樹中的位置、數據類型、描述等信息的文本文件,如果沒有MIB文件,你很難理解一串數字代表的含義是什么。
配置SNMP agent的步驟:
1、 確定已經安裝了net-snmp-utils,如果沒有安裝,可通過以下命令安裝:
# yum install net-snmp-utils
如果你是編譯源碼安裝的Zabbix server,一定要使用 --with-net-snmp選項。
2、 Zabbix server中添加新的主機并填寫SNMPInterface 信息,如下圖3-3所示。
圖 3-3
3、 用snmpwalk檢查能否從被監控設備獲取到OID的值。
# snmpwalk -v 2c -cpublic 192.168.10.1 | more
其中 -v 2c 是SNMP協議的版本,Zabbix支持SNMP v1、2c、和3。-c public是community字符串。執行上面的命令有結果返回,說明被監控主機可以連接,可以使用SNMP進行監控。我們可以進一步確定OID的值。
# snmpget -v 2c -cpublic 192.168.10.1 -On IF-MIB::ifInOctets.1
返回信息:.1.3.6.1.2.1.2.2.1.10.1 = Counter32:1494804。
如果你想獲取完整的OID字符串,可以執行下面的命令。
# snmpget -v 2c -cpublic 192.168.10.1 -Of IF-MIB::ifInOctets.1
返回信息:.iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifInOctets.1= Counter32: 1566936。
4、 現在創建新的監控項:
Name中輸入ifInOctets $1($1是Key中第一個參數 Port1)。
Type選擇正確的SNMP版本,例如SNMPv2 agent。
Key中輸入任何你想使用的名稱,如:ifInOctets[Port1]。
Host Interface使用主機中定義的SNMP接口。
SNMP OID中輸入第3步中用snmpget命令返回的OID。這里無論使用哪種格式的OID都是可以的。
SNMP community中填寫community字符串。
Type of information中選擇 Numeric(float)。
Units中填寫Bytes。
Store value中選擇Delta(speed per seconds)。
其他參數可以保持不變,單擊Add按鈕保存。
如下圖3-4所示。
圖 3-4
5、 Monitoring --> Latest data頁面查看監控項。
Zabbix Internal主要是用來監測Zabbixserver 或 proxy server自身的性能。Zabbix Internal由Zabbix server 或proxy server進行計算,從Zabbix 2.4版本開始,即使在主機維護狀態下也會處理Zabbix Internal。Zabbix server處理Zabbix Internal時不依賴agent,你只需要擁有超級管理員的權限即可。
Zabbix在系統中已經預設了針對Zabbix server和 proxy server的模板,模板的名稱是Template App Zabbix Server 和 Template App Zabbix Proxy。
配置Zabbix Internal的步驟:
1、 創建一個新的監控項(Configuration --> Template --> Items --> Create item 或Configuration --> Host --> Items --> Create item)。
Name中填寫監控項的名稱。
Type中選擇Zabbix internal。
Key中選擇(單擊右側的Select按鈕)zabbix[process,<type>,<num>,<state>],在這里我們使用zabbix[process,poller,avg,busy]。
Type of information選擇Numeric (float)。
Units填寫% 。
其他參數可以保持原狀,單擊Add按鈕保持。
如下圖3-5所示。
圖 3-5
2、 Monitoring --> Latest data頁面查看監控項。
Zabbix使用agent、IPMI或SNMP的方式收集監控數據時,有時候會因為監控項Key中使用的腳本執行時間過長而超時,從而無法獲取數據。因此Zabbix 提供了trapper的監控方式,利用zabbix-sender工具可以主動將數據從被監控主機發送到Zabbix server,這種方式中不需要在被監控主機中安裝Zabbix agent。
配置Zabbix trapper的步驟:
1、 首先我們要在被監控主機中安裝zabbix-sender程序,安裝命令如下:
# yum installzabbix-sender
2、 創建監控項(Configuration --> Template --> Items --> Create item 或Configuration --> Host --> Items --> Create item)。
Name中填寫監控項名稱。
Type中選擇Zabbix trapper。
Key中填寫你想使用的key名稱(例如:trapper.key)。
Type of information和Data type中選擇發送到Zabbixserver的數據類型。
Allowed hosts中可以填寫被監控主機的IP地址或DNS主機名,如果填寫,trapper只接收來自這些主機的數據。這里可以設置一個IP地址或DNS主機名,例如:192.168.10.22或testtrapper.Zabbix.com。也可以設置多個IP地址或DNS主機名(使用逗號分隔),例如:192.168.10.22,192.168.10.23,192.168.10.24或testtrapper1.Zabbix.com, testtrapper2.Zabbix.com, testtrapper3.Zabbix.com。
其他參數可以保持不變,單擊Add按鈕保存。
如下圖3-6所示。
圖 3-6
3、 在被監控主機中運行 zabbix_sender -z <ip-zabbixserver> -s <hostname> -k <item_key> -o<value>。例如:
# zabbix_sender -z 192.168.10.102 –s "trapper host" -k trapper.key -o 20
4、 Monitoring --> Latest data頁面查看監控項。
IPMI(Intelligent PlatformManagement Interface)是一個開放標準的硬件管理接口規范,定義了嵌入式管理子系統進行通信的特定方法。現在主流的服務器使用遠程控制卡(例如Dell的DRAC、HP的ILO等)都可以進行遠程控制管理,通過IPMI你可以遠程開機、關機、重啟,遠程查看服務器當前的運行狀態,可以安裝操作系統,實現帶外管理。Zabbix server通過IPMI可以直接監控服務器硬件,即使是服務器的電源處在關閉的狀態下也是沒有問題的。
如果你是編譯安裝Zabbix,并且需要在Zabbix中使用IPMI agent,那么在編譯時需要帶上 --with-openipmi參數。
在使用IPMI agent之前,我們需要在主機中安裝IPMI相關工具。
# yum install ipmitoolOpenIPMI OpenIPMI-libs
安裝完成后,我們可以檢測下溫度:
# ipmitool sdr list | grepTemp
Ambient Temp | 23degrees C | ok
CPU 1 Temp | 45degrees C | ok
CPU 2 Temp |disabled | ns
CPU 3 Temp |disabled | ns
CPU 4 Temp |disabled | ns
進一步可以看看CPU 1 Temp的詳細情況:
# ipmitool event “CPU 1Temp” list
Finding sensor CPU 1 Temp... ok
Sensor States:
lnr : Lower Non-Recoverable
lcr : Lower Critical
lnc : Lower Non-Critical
unc : Upper Non-Critical
ucr : Upper Critical
unr : Upper Non-Recoverable
接下來我們配置IPMI的管理賬號,這一步可以通過服務器的遠程控制卡管理界面完成,也可以通過OpenIPMI工具完成。
重新設置管理員密碼,2為 root用戶的ID。
# ipmitool user setpassword 2 <new_password>
設置Zabbix用戶賬號,例子中用戶ID是3,在設置前要先確認ID 3 沒有其他用戶使用。
# ipmitool user set name 3 zabbix
設置Zabbix用戶密碼。
# ipmitool user setpassword 3
Password for user 3:
Password for user 3:
為Zabbix用戶授權。
# ipmitool channelsetaccess 1 3 link=on ipmi=on callin=on privilege=2
啟用Zabbix用戶。
# ipmitool user enable 3
驗證設置是否正確。
# ipmitool channelgetaccess 1 3
Maximum User IDs : 15
Enabled User IDs :2
User ID :3
User Name :zabbix
Fixed Name :No
Access Available :call-in / callback
Link Authentication :enabled
IPMI Messaging :enabled
Privilege Level :USER
看到上面的信息時,說明Zabbix用戶已經創建,Privilege Level是USER。但這個賬號還不能通過網絡訪問,我們需要授權訪問。
# ipmitool lan set 1 authUSER MD5
驗證設置是否正確。
# ipmitool lan print 1
Set in Progress : Set Complete
Auth Type Support :NONE MD5 PASSWORD
Auth Type Enable : Callback :
: User : MD5
: Operator :
: Admin : MD5
: OEM :
現在我們使用Zabbix用戶遠程查詢服務器的狀態。
# ipmitool –U Zabbix –H192.168.10.22 -I lanplus sdr list | grep Temp
Ambient Temp | 23degrees C | ok
CPU 1 Temp | 45degrees C | ok
CPU 2 Temp |disabled | ns
CPU 3 Temp |disabled | ns
CPU 4 Temp |disabled | ns
修改zabbix_server.conf配置文件。
# vi zabbix_server.conf
StartIPMIPollers=5
重啟Zabbix server服務。
# systemctl restartzabbix-server
配置IPMI checks的步驟:
1、 在Configuration --> Host頁面中,單擊Name列中的主機名稱,例如Zabbix server,在主機配置頁面Host標簽下添加IPMI接口配置,如下圖3-7所示。
圖 3-7
2、 在IPMI標簽下配置身份驗證算法、權限級別、用戶名及密碼。如下圖3-8所示。
圖 3-8
3、 單擊Update按鈕保存主機的配置。
4、 創建一個新的監控項。
Name中填寫監控項名稱。
Type中選擇IPMI agent。
Key中填寫key名稱,例如:CPU 1 Temp。
Host Interface中選擇IPMI接口。
IPMI Sensor中填寫CPU 1 Temp。
Type of information選擇Numeric(float)
Units中填寫℃。
其他參數可以保持不變,單擊Add按鈕保存。
如下圖3-9所示。
圖 3-9
5、 Monitoring --> Latest data頁面查看監控項。
Zabbix通過JMX(Java Management Extensions)可以對Java Application進行監控,Zabbix利用原生的Zabbix Java gateway,一個Java守護進程監控JMX應用。當Zabbix想要知道某個JMX counter當前的數據時,它只去詢問ZabbixJava gateway,而gateway會去查詢需要的數據,所有這些查詢都是通過JMX管理API完成的。
使用時,一個Java應用不需要額外安裝任何其他的軟件,也不需要實現或擴展新的代碼來處理Zabbix的查詢,僅僅需要在Java 應用的配置文件中設置一些參數,支持遠程JMX的監控。
這些參數主要有:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=<你要設置的端口號>
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
例如:
java \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-jar/usr/share/doc/openjdk-6-jre-headless/demo/jfc/Notepad/Notepad.jar
上面的配置定義了Java程序使用12345端口監聽來自本地的JMX的連接,并不需要身份驗證和加密。如果你想從其他主機訪問,需要配置 -Djava.rmi.server.hostname 參數。
在實際環境中從安全的角度考慮,需要設置身份驗證和加密。具體設置步驟如下:
1、 啟用身份驗證并指定一個包含密碼的文件。
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.password.file=/etc/java-6-penjdk/management/jmxremote.password
jmxremote.password文件內容:
monitorRole <monitor-password-here>
controlRole <control-password-here>
2、 指定用戶的配置文件。
-Dcom.sun.management.jmxremote.access.file=/etc/java-6-penjdk/management/jmxremote.access
jmxremote.access文件內容:
monitorRole readonly
controlRole readwrite
3、 啟用SSL。
-Dcom.sun.management.jmxremote.ssl=true
綁定下面的參數:
-Djavax.net.ssl.keyStore=<你的keyStore >
-Djavax.net.ssl.keyStorePassword=<你的 keyStorePassword >
-Djavax.net.ssl.trustStore=<你的trustStore >
-Djavax.net.ssl.trustStorePassword=<你的trustStorePassword >
-Dcom.sun.management.jmxremote.ssl.need.client.auth=true
完整的例子如下:
java \
-Djava.rmi.server.hostname=192.168.3.14 \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.authenticate=true \
-Dcom.sun.management.jmxremote.password.file=/etc/java-6-openjdk/management/jmxremote.password\
-Dcom.sun.management.jmxremote.access.file=/etc/java-6-openjdk/management/jmxremote.access\
-Dcom.sun.management.jmxremote.ssl=true \
-Djavax.net.ssl.keyStore=<你的KeyStore> \
-Djavax.net.ssl.keyStorePassword=<你的KeyStorePassword> \
-Djavax.net.ssl.trustStore=<你的trustStore > \
-Djavax.net.ssl.trustStorePassword=<你的trustStorePassword > \
-Dcom.sun.management.jmxremote.ssl.need.client.auth=true \
-jar/usr/share/doc/openjdk-6-jre-headless/demo/jfc/Notepad/Notepad.jar
-D參數需要寫到你的應用或應用服務器的啟動文件中,在完成上述的各項配置后,你的啟動文件中將包含一些敏感的內容(keyStore和trustStore密碼),因此需要保護好你的啟動文件。
為了在Zabbix server使用JMX agent,還需要在Zabbix server中安裝Java gateway。
# yum installzabbix-java-gateway
# systemctl enablezabbix-java-gateway
# systemctl startzabbix-java-gateway
如果你是編譯源碼安裝的Zabbix server,一定要使用 --enable-java選項。
在zabbix_server.conf文件中進行配置。
# vi zabbix_server.conf
Java gateway = 127.0.0.1
Java Gateway Port = 10052
Start Java pollers = 5
不要忘記修改zabbix_server.conf文件后要重啟Zabbixserver服務。
# systemctl restartzabbix-server
下面我們就可以配置一個JMX agent監控項,步驟如下:
1、 在Configuration --> Host頁面中,單擊Name列中的主機名稱,例如Zabbix server,在主機配置頁面Host標簽下添加JMX接口配置,如下圖3-10所示。
圖 3-10
2、 單擊Update按鈕保存主機的配置。
3、 創建一個新的監控項。
Name中填寫監控項名稱。
Type中選擇JMX agent。
Key中填寫你要監控的項目,格式為jmx[<object name>,<attribute name>]。例如:
jmx["java.lang:type=Memory","HeapMemoryUsage.used"]
Host interface中選擇JMX接口。
安裝JMX控制臺后為了安全,通常我們會設置一個登錄控制臺的用戶名和密碼,Zabbix中支持這種方式,在User name和Password中填寫就可以了。
Type of information選擇Numeric(unsigned)。
Data type中選擇Decimal。
Unit中設置單位,如:B。
其他參數可以保持不變,單擊Add按鈕保存。
如下圖3-11所示。
圖 3-11
4、 Monitoring --> Latest data頁面查看監控項。
如果你想監控返回值為true或false的Boolean類型的監控項,你可以指定Typeof information為Numeric(unsigned),Data type為Boolean,Zabbix server將保存這個Boolean的值為1或0。
在Zabbix server中只能安裝一個Javagateway,如果你需要的話可以在每個proxyserver中安裝一個Java gateway。
如果遇到問題可以檢查JMX 的日志文件:/var/log/zabbix_java_gateway.log。
在設置JMX agent的Key時,需要注意下面的一些情況:
屬性名稱中包含有點分隔符(.),比如說all.pen,你需要用 \ 轉義,例如:jmx[com.example:Type=Test,all\.pen.color]
屬性名稱中包含有反斜杠(\),你需要使用兩個 \\ ,例如:jmx[com.example:Type=Test,c:\\utility]
對象名稱或屬性名稱中包含有空格或逗號,它需要用兩個雙引號(”)括起來,例如:jmx[com.example:type=Hello,"c:\\documentsand settings"]
通過External checks監控方式可以在Zabbixserver上執行腳本或二進制程序收集監控數據,這種方式不需要在被監控設備中安裝agent。
使用這種方式之前,需要在zabbix-server.conf配置文件中定義腳本或程序的路徑,設置正確的執行權限,保證Zabbix用戶能夠執行腳本或程序。
# vi /etc/zabbix/zabbix-server.conf
ExternalScripts=/usr/lib/zabbix/externalscripts
ExternalScripts 參數中可以使用系統默認的路徑,你也可以指定其他路徑,需要執行的腳本或程序必須在ExternalScripts配置的目錄中,并設置相應的執行權限。以監測系統CPU內核數量的腳本為列子,看一下設置的過程。
1、 創建一個檢測系統CPU內核數量的腳本。
# touch cores.sh
2、 設置可執行權限。
# chmod +x cores.sh
3、 編輯cores.sh腳本內容。
# vi cores.sh
#! /bin/bash
nproc
4、 設置cores.sh腳本的所有者和所屬組為zabbix。
# chown zabbix:zabbixcores.sh
在External checks監控方式中,定義監控項的key必須遵循特定的語法,語法格式為:script[<parameter1>,<parameter2>,...] 。其中script是腳本/可執行程序的名稱,parameter是可選的命令行參數。腳本不帶參數時,可以寫成script[] 或者 script。
配置External checks監控項的步驟:
1、 在Configuration--> Host頁面,單擊Items列中的鏈接,例如主機Zabbix server的Items鏈接,在Items頁面右上角點擊Create item按鈕創建新的監控項。
Name中輸入監控項名稱,例如Number of CPU Core。
Type中選擇External check。
Key中填寫腳本的名字,例如:cores.sh[]。
Host Interface中選擇agent接口。
Type of information中選擇Numeric(unsigned)。
Data Type選擇Decimal。
其他參數可以保持不變,點擊Add按鈕保存。
如下圖3-12所示。
圖 3-12
2、 Monitoring --> Latest data頁面查看監控項。
如果腳本或可執行程序需要傳遞參數時,可以把這些參數放到名稱后面的方括號中,例如:myscript.sh[“var1”,”var2]”,”var3”]。系統中定義的宏變量也可以傳遞給腳本或可執行程序,例如:myscript.sh[“{HOST.IP}”,”var1”]。
這里需要注意腳本或可執行程序的執行時間不能太長,如果超過3秒鐘,Zabbix 會標記這個item為unsupported,腳本進程將被殺掉。Zabbix server的配置文件中默認配置的Timeout參數是3秒,你可以調整這個參數,最大可以設置為30秒。
對于數據庫Zabbix也提供了監控方法,可以通過ODBC(Open Database Connectivity)接口對數據庫進行數據查詢,ODBC做為Zabbix和數據庫系統之間的中間件,能夠讓Zabbix查詢不同的數據庫收集數據,當然這個數據庫需要unixODBC或Independent Open DataBase Connectivity(iODBC)的支持。
使用ODBC監控數據庫之前,你要確認Zabbix支持ODBC,通過yum包管理器安裝的Zabbix server默認支持ODBC,如果你使用源碼編譯安裝Zabbixserver,在編譯時需要使用選項 --with-unixODBC,
首先需要安裝unixODBC。
# yum -y install unixODBC
# yum -y installunixODBC-devel(源碼編譯安裝Zabbix server時需要)
安裝數據庫的連接器,我們以MySQL為例子。
# yum -y install mysql-connector-odbc
接下來配置odbcinst.ini文件,使用下面的命令查找ODBC數據庫驅動的位置。
# odbcinst -j
# odbcinst –j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
編輯配置文件。
# vi /etc/odbcinst.ini
# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc5.so
Setup =/usr/lib/libodbcmyS.so
Driver64 =/usr/lib64/libmyodbc5.so
Setup64 =/usr/lib64/libodbcmyS.so
FileUsage = 1
創建或編輯odbc.ini文件,設置dsn(data source),添加數據庫的配置。
# vi /etc/odbc.ini
[mysql-test] #dsn 名稱
Description = Mysql test DB #描述
Driver = mysql
Server = 127.0.0.1
User = root
Password = <root db password> #密碼
Port = 3306
Database = <zabbix database> #zabbix 數據庫
完成上面的配置后,我們可以測試能否連接到數據庫。
# isql mysql-test
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
SQL> select count(*) from items
+---------------------+
| count(*) |
+---------------------+
| 708 |
+---------------------+
SQLRowCount returns 1
1 rows fetched
當你看到上面的輸出內容,并能執行SQL查詢語句就說明配置沒有問題。接下來就可以添加監控項了。
配置ODBC監控項的步驟:
1、 創建新的監控項(Configuration--> Host --> Items --> Ctreate item)。
Name中輸入監控項名稱,例如item counts。
Type中選擇Database monitor。
Key中選擇(點擊右側Select按鈕)db.odbc.select[<uniqueshort description>,<dsn>],其中<unique short description>是我們自己定義的唯一的key的名字,<dsn>是odbc.ini中定義的DSN名稱。
如果在odbc.ini中設置了數據庫的用戶名和密碼,Username 和 Password就不需要填寫了。
SQL query中填寫我們想要執行的SQL查詢語句,例如:select count(*)from items。
Type of information和Data type中選擇相應的數據類型
其他配置可以保持不變,點擊Add按鈕保存。
如下圖3-13所示
圖 3-13
2、 Monitoring --> Latest data頁面查看監控項。
Zabbix中通過SSH協議也可以實現監控目標,通過SSH agent監控方式,需要對服務器進行監控但又不能安裝Zabbix agent的環境中非常有用。Zabbix中使用SSh agent時要求libssh3的最低版本是 1.0.0。
SSH agent支持兩種身份認證的方式:基于用戶名密碼的方式和基于秘鑰的方式,使用用戶名密碼的方式不需要任何特殊的配置,添加監控項時需要在頁面中輸入明文的用戶名和密碼,因此在實際環境中建議使用基于秘鑰的方式,但這個方式需要做些額外的配置。下面我們來看看基于秘鑰的方式如何配置的。
首先,檢查zabbix用戶的設置,使用下面的命令。
# grep zabbix /etc/passwd
zabbix:x:996:994:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
可以看到系統中zabbix用戶的home目錄是/var/lib/zabbix,確認該目錄是否存在,如果不存在,使用下面的命令創建目錄。
# mkdir –p /var/lib/zabbix/.ssh
# chown –R zabbix:zabbix /var/lib/zabbix
接下來我們需要修改zabbix-server.conf文件,配置SSH Key文件的存儲路徑。
# vi /etc/zabbix/zabbix-server.conf
SSHKeyLocation=/ var/lib/zabbix/.ssh
修改完zabbix-server.conf配置文件后重啟Zabbixserver。
# systemctl restartzabbix-server
現在,我們生成zabbix用戶的SSH Key,詢問passphrase時直接回車就可以。
# sudo -u zabbixssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/zabbix/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /var/lib/zabbix/.ssh/id_rsa.
Your public key has been saved in /var/lib/zabbix/.ssh/id_rsa.pub.
The key fingerprint is:
15:3e:d5:61:ed:16:b3:0a:67:9d:35:f0:35:55:0b:7e zabbix@zbxserver
The key's randomart p_w_picpath is:
+--[ RSA 2048]- -----+
| . .+++*|
| . o..++*|
| + ..EB|
| . o o.+o|
| S + .. |
| . |
| |
| |
| |
+----------------------------+
# ll
total 8
-rw------- 1 zabbix zabbix 1675 May 31 13:29 id_rsa
-rw-r--r-- 1 zabbix zabbix 398 May 31 13:29 id_rsa.pub
接下來拷貝秘鑰文件到被監控主機中,假設被監控主機的IP 地址是192.168.10.112。
# sudo -u zabbixssh-copy-id root@192.168.10.112
The authenticity of host '192.168.10.112 (192.168.10.112)' can't beestablished.
ECDSA key fingerprint is0d:33:e5:5c:43:c3:5b:c4:da:e4:f0:6d:0c:fb:4a:6e.
Are you sure you want to continue connecting (yes/no)? yes
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), tofilter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if youare prompted now it is to install the new keys
root@192.168.10.112's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.10.112'"
and check to make sure that only the key(s) you wanted were added.
現在我們測試一下能否登錄成功。
# sudo -u zabbix ssh root@192.168.10.112
當完成上面的配置后,就可以創建SSH agent監控方式的監控項了。
配置SSH agent監控項的步驟:
1、 創建一個新主機(Configuration --> Host --> Create host)。在主機配置頁面的Host標簽下添加Agentinterfaces接口配置,如下圖3-14所示。
圖 3-14
2、 在主機中創建新的監控項。
Name中輸入監控項名稱,例如Check uname。
Type中選擇SSH agent。
Key中內容替換成ssh.run[uname]。
Host interface 中選擇agent接口。
Authentication method中選擇Public key。
User name中填寫root ,Public key file中填寫id_rsa_pub,Private keyfile中填寫 id_rsa。
Key passphrase留空,如果生成密鑰時你輸入了passphrase,就需要在這里輸入相同的passphrase。
Executed script中輸入uname -a。
Type of information中選擇Text類型。
其他參數可以保持不變,點擊Add按鈕保存。
如下圖3—15所示。
圖 3-15
3、 Monitoring --> Latest data頁面查看監控項。
使用SSH agent監控方式需要注意的是libssh3可能會把可執行腳本的輸出截斷到32KB,另外在腳本中最好使用命令的全路徑。
Telnet agent監控方式和SSH agent方式一樣,可以在無法安裝agent軟件的環境中使用。但和SSH 不同的是,Telnet不是一個加密的協議,只支持用戶名密碼的身份認證方式。除非是只能使用Telnet agent方式而別無選擇時可以使用Telnetagent,一般情況下不建議使用,使用時最好將用戶賬戶設置成只讀的權限。
使用Telnet agent方式前,需要確認被監控設備中已經安裝并啟動了Telnet server,設置了使用Telnet 登錄系統的用戶賬戶。
如果被監控設備中沒有安裝Telnet server,可以使用下面的命令安裝。
# yum –y installtelnet-server
編輯xinet.d配置文件,配置telnetserver的參數,將disabled設置從yes變為no。
# vi /etc/xinetd.d/telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = no
}
設置telnet服務在設備重啟后能自動啟動。
# systemctl starttelnet.socket
# systemctl enabletelnet.socket
在telnet服務器中添加用戶。
# useradd zabbix
# passwd zabbix
如果Zabbix server中沒有安裝Telnet客戶端,可以使用下面的命令進行安裝。
# yum -y install telnet
接下來我們就可以創建使用Telnet agnet方式的監控項了。
配置Telnet agent監控項的步驟:
1、 在主機中創建新的監控項。
在Name中輸入監控項的名稱,例如:Check uname。
Type中選擇TELNET agent。
Key中輸入telnet.run[uname]。
Host Interface中選擇agent接口。
User name中輸入telnet用戶名,如:zabbix。
Password中輸入telnet用戶密碼,如:zabbix。
Executed script中輸入命令,如:uanme -a。
Type of information中選擇Text。
其他參數可以保持不變,點擊Add按鈕保存。
如下圖3—16所示。
圖 3-16
2、 Monitoring --> Latest data頁面查看監控項。
SNMP Traps監控方式和前面介紹的監控方式有所不同,在這種方式中被監控設備能夠主動發送信息到Zabbix server。被監控設備發生一些特定事件時,例如設備重啟、網絡接口宕掉或磁盤損壞等,被監控設備中的SNMP agent會給Zabbix server發送事件的狀態信息。
Zabbix中并沒有定義一種簡單的監控項指標對應到特定的事件,為了能讓Zabbix有效的管理SNMP Traps,Zabbix額外使用snmptrapd守護進程幫助處理來自被監控設備中SNMP agent發送的traps信息,通過腳本進行格式化處理后將結果交給Zabbix server。
配置SNMP Traps監控項的步驟:
創建一個新主機(Configuration--> Host --> Create host)。在主機配置頁面的Host標簽下添加SNMP interfaces接口配置,如下圖3-17所示。
圖 3-17
在主機中創建新的監控項。
u Name中輸入Link Down trap。
u Type選擇SNMP trap。
u Key中選擇snmptrap[<regex>],將<regex>替換為linkDown。在這里主要有兩個選項,snmptrap.fallback是捕獲那些在該接口上沒有被snmptrap[]監控項捕獲的SNMP traps。snmptrap[<regex>]是捕獲所有和指定的regexp匹配的SNMP traps,如果沒有指定regexp則捕獲任意trap。
u Host Interface中選擇SNMP 接口。
u Type of information中選擇Log。如果想使用其他類型像Numeric也是可以的,但需要我們自定義trap handler處理程序。
u 其他參數可以保持不變,點擊 Add按鈕保存。
如下圖3-18所示。
圖 3-18
Monitoring --> Latest data頁面查看監控項。
直到現在,我們看到Zabbix提供的監控方式都是用不同的方法獲得監控項的原始數據,但在實際環境中,當我們想了解同一主機組中所有主機CPU負載的總計時,就需要用到Aggregatechecks監控方式。Aggregate我們可以理解為匯總的意思,這種方式不需要從被監控主機中直接收集原始數據,而是從數據庫中獲取監控項的數據進行計算,因此Aggregate checks僅對Numeric類型的監控項有效。
配置Aggregate 監控項的步驟:
1、 創建一個新的主機組,例如aggregated(Configuration --> Host groups --> Create host group),并添加兩個或多個Linux 主機到該組中。
2、 創建一個新的模板(Configuration--> Templates --> Create template),在這個模板中創建一個監控項,key為system.cpu.load。將這個模板鏈接到主機組Aggregated中所有的Linux主機上。
3、 創建一個新主機(Configuration--> Host --> Create host)。在主機配置頁面的Host標簽下添加Agent interfaces接口,IP地址可以填寫127.0.0.1或者0.0.0.0都可以。
4、 在新建主機上添加一個監控項。
Name中填寫監控項名稱,例如avg cpu load。
Type中選擇Zabbix aggregate。
Key設置為grpavg["aggregated","system.cpu.load","last"]。其中aggregated是前面創建的主機組,system.cpu.load是該組中主機上的監控項。
Type of information中選擇Numeric(float)。
Date type中選擇Decimal。
其他參數可以保持不變,點擊Add按鈕保存。
如下圖3-19所示。
圖 3-19
5、 Monitoring --> Latest data頁面查看監控項。
Calculated checks和Aggregatechecks類似,也是從數據庫中獲取已經存在的數據進行計算,但和Aggregate checks不同的是Calculatedchecks不會限制到特定的主機組。Calculated 監控項的計算結果會保存到數據庫中,可以在觸發器表達式中使用Calculated 監控項,也可以在宏變量、圖形和動作中像其他類型的監控項一樣引用,
Calculated 監控項的定義包含在一個formula(公式)中,根據你的需要可以很簡單也可以很復雜。一個簡單公式的語法如下。
func(<key>|<hostname:key>,<parameter1>,<parameter2>,...)
其中func是觸發器表達式中支持的函數,包括:last、min、max、avg和count。Key或hostname:key是你想使用的其他監控項。建議將整個key放到雙引號中,以避免由于key中含有空格或逗號造成的解析錯誤,key中含有雙引號時要用斜杠( \ )轉義。Parameter為所需的參數。
Calculated 監控項遇到下面的情況時可能會變成unsupported:
沒有發現引用的監控項
沒有數據供函數計算
被零除
使用不正確的語法
在Calculated 監控項公式中引用宏變量時,可以對參數和常量進行擴展,不能對函數、主機名、監控項的key或運算符進行擴展。Zabbix處理Calculated監控項時使用的數據是依靠監控項定期收集的監控數據,不像觸發器表達式那樣接收到新的數據時馬上進行計算。
配置Calculated監控項的步驟:
1、 創建一個新主機(Configuration--> Host --> Create host)。在主機配置頁面的Host標簽下添加Agent interfaces接口,IP地址可以填寫127.0.0.1或者0.0.0.0都可以。
2、 在新建主機上添加一個監控項。
Name中填寫監控項名稱,例如% free on root。
Type中選擇Calculated。
Key中填寫free.root,這個名字和其他監控項一樣必須是唯一的。
Formula中輸入100*last("vfs.fs.size[/,free]",0)/last("vfs.fs.size[/,total]",0)。
Type of information中選擇Numeric(float)。
Units中填寫% 。
其他參數可以保持不變,點擊Add按鈕保存
如下圖3-20所示。
圖3-20
3、 Monitoring --> Latest data頁面查看監控項。
以上就是怎么理解Zabbix 監控方式,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。