您好,登錄后才能下訂單哦!
通過前面章節(jié)的學(xué)習(xí),你會(huì)發(fā)現(xiàn)Zabbix是一個(gè)非常靈活、功能強(qiáng)大的監(jiān)控系統(tǒng),但是在實(shí)際環(huán)境中配置好Zabbix是一個(gè)非常繁重的工作。所幸的是Zabbix提供了一些工具,能夠讓Zabbix自動(dòng)化的完成任務(wù),讓運(yùn)維工作變的輕松。
Zabbix的自動(dòng)化工具主要有networkdiscovery(網(wǎng)絡(luò)發(fā)現(xiàn))、active agentauto-registration(主動(dòng)式代理自動(dòng)注冊(cè))和 Low-leveldiscovery(低級(jí)發(fā)現(xiàn))。
Zabbix中網(wǎng)絡(luò)發(fā)現(xiàn)由兩部分組成:discovery(發(fā)現(xiàn))和actions(動(dòng)作),首先通過定期掃描網(wǎng)絡(luò),按照預(yù)先定義的規(guī)則搜索網(wǎng)絡(luò)中的服務(wù)器或設(shè)備。當(dāng)發(fā)現(xiàn)符合條件的服務(wù)器或設(shè)備時(shí)生成發(fā)現(xiàn)事件,然后結(jié)合我們定義的基于發(fā)現(xiàn)事件的動(dòng)作,發(fā)現(xiàn)并添加/刪除主機(jī)和其他一些簡(jiǎn)單的管理,依照網(wǎng)絡(luò)環(huán)境快速的搭建監(jiān)控系統(tǒng)。這些動(dòng)作包括:
創(chuàng)建或刪除主機(jī)。
啟用或禁用主機(jī)。
添加主機(jī)到主機(jī)組。
從主機(jī)組中刪除。
鏈接模板到主機(jī)或取消鏈接的模板。
發(fā)送通知。
執(zhí)行遠(yuǎn)程命令。
在指定的IP地址范圍中,Zabbix使用下列三種方法檢測(cè)網(wǎng)絡(luò)中的服務(wù)器或設(shè)備:
從Zabbix agent接收的信息(不支持加密模式)。
從SNMP agent接收的信息。
基于服務(wù)(FTP、SSH、WEB、POP3、IMAP、TCP等)的可用性。
?
每一次完成一個(gè)主機(jī)(IP)和服務(wù)的檢測(cè)時(shí),網(wǎng)絡(luò)發(fā)現(xiàn)會(huì)生成一個(gè)發(fā)現(xiàn)事件。可生成事件的列表如下:
Service Discovered:第一次發(fā)現(xiàn)或者服務(wù)的狀態(tài)以前是down,現(xiàn)在的狀態(tài)是up。
Service Up:服務(wù)的狀態(tài)一直是up。
Service Lost:服務(wù)的狀態(tài)以前是up,現(xiàn)在的狀態(tài)是down。
Service Down:服務(wù)的狀態(tài)一直是down。
Host Discovered:主機(jī)上所有服務(wù)以前的狀態(tài)是down,現(xiàn)在至少有一個(gè)服務(wù)的狀態(tài)是up。
Host Up:主機(jī)上至少有一個(gè)服務(wù)的狀態(tài)一直是up。
Host Lost:主機(jī)以前至少有一個(gè)服務(wù)的狀態(tài)是up,現(xiàn)在所有服務(wù)的狀態(tài)是down。
Host Down:主機(jī)上所有服務(wù)的狀態(tài)一直是down。
如果在動(dòng)作中選擇了Add host操作,新發(fā)現(xiàn)的主機(jī)會(huì)自動(dòng)創(chuàng)建,同時(shí)還可以在動(dòng)作中定義下列操作:
允許主機(jī)
禁用主機(jī)
添加主機(jī)到主機(jī)組
鏈接模板到主機(jī)
創(chuàng)建主機(jī)時(shí),主機(jī)名稱以Zabbix server或proxy server進(jìn)行DNS反向查詢的結(jié)果命名,如果反向查詢失敗則用IP地址命名。反向查詢失敗后是否重試取決于discovery在哪里執(zhí)行,在proxyserver上查詢失敗后不再重試。
新創(chuàng)建的主機(jī)名稱在Zabbix server中已經(jīng)存在時(shí),新創(chuàng)建主機(jī)的名稱會(huì)在名稱后面添加_2表示第二個(gè)重名的主機(jī),_3表示第三個(gè)重名的主機(jī),以此類推。
新創(chuàng)建的主機(jī)默認(rèn)添加到Discovered hosts group主機(jī)組中,這個(gè)默認(rèn)值是在Administration--> General --> Other頁面中的Group fordiscovered hosts參數(shù)中配置的。如果你希望主機(jī)添加到其他主機(jī)組中,需要在動(dòng)作的操作中添加 Remove from host groups(指定Discovered hosts),同時(shí)添加Add tohost groups(指定其他的主機(jī)組)。
如果在網(wǎng)絡(luò)發(fā)現(xiàn)規(guī)則運(yùn)行中在指定的IP范圍中沒有發(fā)現(xiàn)已經(jīng)創(chuàng)建的主機(jī)時(shí),這個(gè)由網(wǎng)絡(luò)發(fā)現(xiàn)規(guī)則創(chuàng)建的主機(jī)會(huì)自動(dòng)刪除。
?
通過網(wǎng)絡(luò)發(fā)現(xiàn)創(chuàng)建新的主機(jī)后,還需要在主機(jī)中創(chuàng)建相應(yīng)的接口,創(chuàng)建接口時(shí)依照下列原則:
檢測(cè)服務(wù)。例如,如果SNMP檢測(cè)成功,將創(chuàng)建一個(gè)SNMP接口。
如果主機(jī)同時(shí)響應(yīng)了Zabbixagent和SNMP的請(qǐng)求,兩種接口都會(huì)創(chuàng)建。
如果以Zabbix agent 或SNMP返回的數(shù)據(jù)作為唯一條件,發(fā)現(xiàn)主機(jī)的第一個(gè)接口將會(huì)成為默認(rèn)接口,其他的IP地址將添加為附加接口。
如果一個(gè)主機(jī)只響應(yīng)agent checks,創(chuàng)建的接口只有agent 接口。如果以后響應(yīng)SNMP,將添加額外的SNMP接口。
?
近日完成《深入淺出?zabbix 4.0》視頻教程的錄制并正式發(fā)布,該教程基于 zabbix 4.2 ,對(duì)Zabbix進(jìn)行全面講解。歡迎大家圍觀。課程鏈接:https://edu.51cto.com/sd/ce000?
網(wǎng)絡(luò)發(fā)現(xiàn)的配置分兩部分,即配置rule(規(guī)則)和action(動(dòng)作)。
在Configuration --> Discovery頁面的右上角點(diǎn)擊Create rule按鈕創(chuàng)建網(wǎng)絡(luò)發(fā)現(xiàn)規(guī)則,或者在頁面列表中點(diǎn)擊規(guī)則的名稱修改配置。配置頁面如下圖12-1所示。
??
圖 12-1
Rules配置頁面中各參數(shù)的含義如下:
Name:唯一的規(guī)則名稱。例如 Local network。
Discovery by proxy:選擇no proxy是在Zabbix server上執(zhí)行discovery,選擇proxy server的名稱是在相應(yīng)的proxy server上執(zhí)行。
IP range:發(fā)現(xiàn)的IP地址范圍,支持多種格式:
單IP地址:192.168.10.10。
IP地址范圍:192.168.1-10.1-255。包含的地址總數(shù)不能超過64000個(gè)。
IP 掩碼:192.168.10.0/24。支持的IPv4掩碼為 /16 - /30,IPv6的掩碼為 /112 - /128。
IP地址列表:192.168.1.1-255, 192.168.2.1-100, 192.168.4.0/24
此外還支持spaces(空格)、tab,可以定義多行。
Delay (in sec):自上一次執(zhí)行規(guī)則之后再次執(zhí)行規(guī)則的時(shí)間間隔,默認(rèn)值為3600秒。
Checks:用于發(fā)現(xiàn)主機(jī)或服務(wù)的檢測(cè)方法。支持的檢測(cè)方法有:SSH、LDAP、SMTP、FTP、HTTP、HTTPS、POP、NNTP、IMAP、TCP、Telnet、Zabbix agent、SNMPv1 agent、SNMPv2 agent、SNMPv3 agent、ICMP ping?;趨f(xié)議的發(fā)現(xiàn)只有net.tcp.service[]函數(shù)檢測(cè)主機(jī),SNMP通過查詢SNMP OID檢測(cè)主機(jī),Zabbixagent在沒有加密的傳輸模式下查詢item檢測(cè)主機(jī)。定義協(xié)議相關(guān)的Ports參數(shù)時(shí),可以定義單端口(如22)、端口范圍(如22-45)、端口列表(如22-45,55,60-70)。
Device uniqueness criteria:設(shè)備唯一性的標(biāo)準(zhǔn)。有兩種:
IP address:不會(huì)對(duì)多個(gè)單IP地址的設(shè)備進(jìn)行處理。如果相同IP地址的設(shè)備已經(jīng)存在,將視為已經(jīng)發(fā)現(xiàn),不會(huì)創(chuàng)建新的主機(jī)。
Zabbix agent 或SNMP的檢測(cè)方法:使用Checks自動(dòng)中定義的agent或SNMP的方法。
Enabled:勾選為啟用規(guī)則,Zabbix server將執(zhí)行該規(guī)則。
配置好規(guī)則后,接下來繼續(xù)配置動(dòng)作。在Configuration --> Actions頁面的右上角的Event source下拉框中選擇Discovery,點(diǎn)擊Create action按鈕創(chuàng)建基于Discovery事件的動(dòng)作,或者在頁面列表中點(diǎn)擊動(dòng)作的名稱修改配置。
配置動(dòng)作最主要的就是配置Conditions(條件)和Operations(操作)。在Conditions中我們可以定義一系列的條件,如Discoverystatus、Service type、Host IP、Uptime/Downtime等,其中Received value條件是特別有用的,通過它可以區(qū)分不同的操作系統(tǒng)、應(yīng)用程序的版本等。如下圖12-2所示。
?
圖 12-2
通過Conditions中配置的各種條件過濾出需要的主機(jī)之后,就需要采取一些操作,這些操作的配置在Operations標(biāo)簽中進(jìn)行。如下圖12-3所示。
圖 12-3
從Operation type中我們可以看到可選的操作,通過這些操作可以自動(dòng)的將符合發(fā)現(xiàn)規(guī)則的服務(wù)器或設(shè)備進(jìn)行創(chuàng)建(或刪除)主機(jī)、添加到主機(jī)組、鏈接模板等,從而實(shí)現(xiàn)自動(dòng)化的監(jiān)控。尤其是在經(jīng)常有大量的新增設(shè)備或移除的環(huán)境中,更能體現(xiàn)出Zabbix 網(wǎng)絡(luò)發(fā)現(xiàn)的優(yōu)勢(shì)。
?
在例子中假設(shè)網(wǎng)路的IP地址范圍是192.168.1.1-192.168.1.254。需要實(shí)現(xiàn)的目標(biāo)如下:
發(fā)現(xiàn)運(yùn)行Zabbix agent的主機(jī)。
每10分鐘運(yùn)行一次discovery。
上線時(shí)間大于1小時(shí)的設(shè)備添加主機(jī)。
下線時(shí)間大于24小時(shí)的設(shè)備刪除主機(jī)。
添加Linux主機(jī)到Linux servers主機(jī)組中。
鏈接Template OSLinux 到Linux 主機(jī)。
鏈接Template OSWindows到Windows主機(jī)。
第一步,定義網(wǎng)路發(fā)現(xiàn)規(guī)則。如下圖12-4所示。
圖 12-4
Zabbix將在IP地址范圍192.168.1.1 – 192.168.1.1254中通過Zabbix agent嘗試發(fā)現(xiàn)主機(jī),并使用system.uname收集系統(tǒng)信息,在動(dòng)作中可以利用收集的系統(tǒng)信息區(qū)分不同的操作系統(tǒng),采取不同的操作,例如鏈接Template OS Windows模板到Windows服務(wù)器,鏈接Template OS Linux模板到Linux服務(wù)器。
這個(gè)規(guī)則創(chuàng)建后,Zabbix每10分鐘執(zhí)行一次(600秒),并生成基于發(fā)現(xiàn)規(guī)則的事件進(jìn)行下一步處理。
第二步,定義一個(gè)動(dòng)作將發(fā)現(xiàn)的Linux服務(wù)器添加指定的主機(jī)組和模板,如下圖12-5所示。
圖 12-5
從上圖中我們可以看到,當(dāng)Zabbix agent服務(wù)的狀態(tài)是Up,system.uname的值中包含Linux,上線時(shí)間大于等于1小時(shí)(3600秒)的條件滿足時(shí),動(dòng)作將被激活,執(zhí)行相應(yīng)的操作,如下圖12-6所示。
圖 12-6
從上圖12-6中我們可以看到動(dòng)作將執(zhí)行下面的操作:
添加發(fā)現(xiàn)的主機(jī)到Linuxservers主機(jī)組中(如果主機(jī)還沒有添加時(shí)也會(huì)添加主機(jī))。
鏈接Template OSLinux 到發(fā)現(xiàn)的主機(jī)。Zabbix將使用模板中定義的監(jiān)控項(xiàng)和觸發(fā)器自動(dòng)對(duì)主機(jī)進(jìn)行監(jiān)控。
第三步,定義一個(gè)動(dòng)作將發(fā)現(xiàn)的Linux服務(wù)器添加指定的主機(jī)組和模板,如下圖12-7所示。
圖 12-7
?
第四步,定義一個(gè)刪除主機(jī)的動(dòng)作,如下圖12-8所示。
圖 12-8
如果發(fā)現(xiàn)的主機(jī)Zabbix agent 服務(wù)的狀態(tài)是down,并超過24小時(shí)(86400秒)時(shí)服務(wù)器將被刪除。
Active agent auto-registration(主動(dòng)式代理自動(dòng)注冊(cè))提供了另一種自動(dòng)化的方法,不同與網(wǎng)絡(luò)發(fā)現(xiàn)。網(wǎng)絡(luò)發(fā)現(xiàn)時(shí)從server 端掃描網(wǎng)絡(luò),發(fā)現(xiàn)并完成一些自動(dòng)化操作,而主動(dòng)式代理自動(dòng)注冊(cè)是active agent 向Zabbix server發(fā)送查詢監(jiān)控項(xiàng)檢測(cè)清單的請(qǐng)求時(shí),主動(dòng)將hostname、host metadata等信息提供給Zabbix server,由Zabbix server完成一些自動(dòng)化操作。
使用主動(dòng)式代理自動(dòng)注冊(cè),可以自動(dòng)添加active agent主機(jī)為監(jiān)控主機(jī)并且不需要在Zabbixserver上做任何手工配置。同時(shí)也支持對(duì)監(jiān)控主機(jī)使用Passivechecks進(jìn)行監(jiān)控,當(dāng)active agent向Zabbix server發(fā)送查詢監(jiān)控項(xiàng)檢測(cè)清單的請(qǐng)求時(shí),也會(huì)把配置文件zabbix_agentd.conf中設(shè)置的 ListenIP(agent監(jiān)聽的IP地址)和ListenPort(agent監(jiān)聽的端口)提供給Zabbix server,在ListenIP中指定了多個(gè)IP地址時(shí)只有第一個(gè)IP地址會(huì)發(fā)送給Zabbix server。
當(dāng)添加一個(gè)新的自動(dòng)注冊(cè)的主機(jī)時(shí),會(huì)使用 agent配置文件中設(shè)置的IP地址和端口,如果在配置文件中沒有設(shè)置IP地址,那在添加主機(jī)時(shí)會(huì)使用當(dāng)前網(wǎng)路連接使用的IP地址。如果在配置文件中沒有設(shè)置端口就使用默認(rèn)的10050端口。
這種方式特別適合在云基礎(chǔ)架構(gòu)中實(shí)現(xiàn)新的云計(jì)算節(jié)點(diǎn)的自動(dòng)化監(jiān)控,當(dāng)一個(gè)新節(jié)點(diǎn)開始運(yùn)行時(shí),Zabbix將自動(dòng)監(jiān)控節(jié)點(diǎn),收集性能指標(biāo),監(jiān)控節(jié)點(diǎn)的可用性。
?
首先需要在配置文件zabbix_agentd.conf中配置一些參數(shù)。
# vi /etc/zabbix/zabbix_agentd.conf
ServerActive=192.168.10.102
Hostname=test-server
其中ServerActive參數(shù)時(shí)必須配置的,格式為IP:port(或 hostname:port),可以指定單個(gè)或多個(gè)Zabbix server的IP地址和端口(用逗號(hào)分隔),如果沒有指定端口則使用系統(tǒng)默認(rèn)的端口。例如ServerActive=127.0.0.1:20051,zabbix.mydomain.com。也支持IPv6地址。
Hostname是唯一的大小寫敏感的主機(jī)名稱,在active(主動(dòng)模式)中需要設(shè)置,自動(dòng)注冊(cè)主機(jī)時(shí)使用這個(gè)名稱。如果沒有設(shè)置這個(gè)參數(shù),注冊(cè)主機(jī)時(shí)會(huì)使用HostnameItem參數(shù)的值。配置文件中HostnameItem設(shè)置為system.hostname,即使用system.hostname這個(gè)Key收集主機(jī)名稱,在Linux系統(tǒng)中實(shí)際上就是執(zhí)行hostname命令收集主機(jī)名稱。
當(dāng)完成上述配置后,重啟Zabbix agent服務(wù)。接下來創(chuàng)建一個(gè)基于auto-registration事件的動(dòng)作。在Zabbix 前端頁面中,點(diǎn)擊Configuration--> Actions進(jìn)入Actions列表頁面,在頁面右上角Event source下拉框中選擇 Autoregistration,點(diǎn)擊旁邊的Create action按鈕。在Action配置頁面中的Conditions標(biāo)簽中添加條件Host name like test-server,如下圖12-9所示。
圖 12-9
在Operations標(biāo)簽中添加需要執(zhí)行的操作,如下圖12-10所示。
圖 12-10
在鏈接模板時(shí)需要注意,如果自動(dòng)注冊(cè)的主機(jī)只支持active(主動(dòng)式)監(jiān)控方式,例如主機(jī)和Zabbixserver之間有防火墻,Zabbix server不能直接訪問到自動(dòng)注冊(cè)的主機(jī),在這種情況下需要指定一個(gè)監(jiān)控項(xiàng)都使用Zabbix agent(active)監(jiān)控方式的模板。例如Template_Linux-active。
如果自動(dòng)注冊(cè)的主機(jī)中監(jiān)控項(xiàng)的監(jiān)控方式使用Zabbix agent(被動(dòng)式),需要在agent配置文件中下面的幾個(gè)參數(shù)。
# vi /etc/zabbix/zabbix_agentd.conf
Server=192.168.10.102
ListenIP=
ListenPort-
其中Server參數(shù)需要設(shè)置為Zabbix server的IP地址或主機(jī)名,否則在agent的日志中出現(xiàn)failed to accept an incoming connection: connection from"192.168.10.102" rejected, allowed hosts: ""的信息,不能收集監(jiān)控項(xiàng)的值。
ListenIP(agent監(jiān)聽的IP地址)和 ListenPort(agent監(jiān)聽的端口)可以設(shè)置也可以不設(shè)置,如果在配置文件中沒有設(shè)置ListenIP,那在添加主機(jī)時(shí)會(huì)使用當(dāng)前網(wǎng)路連接使用的IP地址。如果在配置文件中沒有設(shè)置ListenPort就使用默認(rèn)的10050端口。
動(dòng)作配置完成后,稍等一會(huì)在主機(jī)列表中你就能看到自動(dòng)注冊(cè)的主機(jī)。在Monitoring --> Latest data頁面中可以查詢自動(dòng)注冊(cè)主機(jī)的監(jiān)控項(xiàng)的值。
當(dāng)active agent發(fā)送自動(dòng)注冊(cè)的請(qǐng)求到Zabbixserver的同時(shí),會(huì)把agent配置文件中的Hostname也發(fā)送給Zabbixserver,但是在實(shí)際環(huán)境中,僅僅通過Hostname是不夠的,在Hostname無法區(qū)分主機(jī)的情況下,以Hostname作為條件會(huì)出現(xiàn)很多問題。因此Zabbix中引入新的方法Host metadata來解決這個(gè)問題。
在zabbix_agentd.conf配置文件中,有兩種方法可以配置Hostmetadata。Host metadata僅在active agent自動(dòng)注冊(cè)過程中使用
HostMetadata,可設(shè)置長度不超過255個(gè)字符的字符串。如果沒有設(shè)置該參數(shù),將從HostMetadataItem參數(shù)收集。如果設(shè)置的值長度超過255或字符串中使用了非UTF-8的字符串時(shí),agent會(huì)啟動(dòng)失敗并在日志中生成錯(cuò)誤信息。
HostMetadataItem,該參數(shù)僅在沒有設(shè)置HostMetadata參數(shù)時(shí)使用。支持UserParameters和aliases,支持system.run[](無論EnableRemoteCommands參數(shù)是否設(shè)置)。如果指定的監(jiān)控項(xiàng)返回值超過255個(gè)字符時(shí)會(huì)在日志中生成錯(cuò)誤信息。另外監(jiān)控項(xiàng)的返回值必須是一個(gè)UTF-8字符串,否則它將被忽略。
?
實(shí)例一:使用host metadata區(qū)分Linux和Windows主機(jī)。
1、? 在agent配置文件中設(shè)置:HostMetadataItem=system.uname。重啟Zabbix agent服務(wù)。
2、? 在Zabbix前端頁面配置2個(gè)動(dòng)作。
動(dòng)作 1:
??????????????????? Name:Linux host autoregistration
??????????????????? Conditions:Host metadata like Linux
??????????????????? Operations:Link to Templates: Template os Linux
動(dòng)作 2:
??????????????????? Name:Windows host autoregistration
??????????????????? Conditions:Host metadata like Windows
??????????????????? Operations:Link to templates: Template OS Windows
你可能注意到在Operations中只加入了一個(gè)鏈接到模板操作,沒有添加主機(jī)的操做。實(shí)際上這是沒有問題的,因?yàn)殒溄拥侥0宓牟僮魇紫刃枰砑右粋€(gè)主機(jī),在這里Zabbix server會(huì)自動(dòng)添加主機(jī)。
?
實(shí)例二:使用host metadata添加特定的主機(jī)。
1、? 在agent配置文件中設(shè)置:HostMetadata=Linux onlydemo。重啟Zabbix agent服務(wù)。
2、? 在Zabbix前端頁面配置動(dòng)作。
Name:Linux host autoregistration
Type of calculation:AND
Conditions (A):Host metadata like Linux
Conditions (B):Host metadata like onlydemo
Operations:Link to Templates: Template os Linux
??????????????????? ?? Add to host groups: Linux servers
?
12.3 Low-level discovery
Low-level discovery是Zabbix中提供的一種非常有用的功能,通過在模板中配置low-level discovery,可以自動(dòng)創(chuàng)建監(jiān)控項(xiàng)、觸發(fā)器、圖形和主機(jī)。尤其是在監(jiān)控對(duì)象動(dòng)態(tài)變換的環(huán)境中,可以定期的執(zhí)行發(fā)現(xiàn)規(guī)則,自動(dòng)添加或刪除監(jiān)控對(duì)象,例如網(wǎng)絡(luò)接口的數(shù)量和類型、文件系統(tǒng)的類型等,如果為主機(jī)的每個(gè)網(wǎng)絡(luò)接口和每一種文件系統(tǒng)手工創(chuàng)建監(jiān)控項(xiàng)和觸發(fā)器,可以想見工作量是巨大的,而通過Low-level discovery可以代替手工方式自動(dòng)化的完成相關(guān)任務(wù)。
發(fā)現(xiàn)規(guī)則由監(jiān)控項(xiàng)和基于監(jiān)控項(xiàng)的返回值創(chuàng)建的原型(items、triggers、graphs和host)兩部分組成。發(fā)現(xiàn)規(guī)則中的監(jiān)控項(xiàng)和在主機(jī)中定義的監(jiān)控項(xiàng)非常相似,不同的是發(fā)現(xiàn)規(guī)則中監(jiān)控項(xiàng)返回值是一個(gè)特定的JSON格式的監(jiān)控對(duì)象(如網(wǎng)路接口)的列表,例如net.if.discovery的返回值可能是:{#IFNAME} → lo ?和 {#IFNAME} → eth0。
當(dāng)Zabbix server接收到發(fā)現(xiàn)規(guī)則中監(jiān)控項(xiàng)的返回值后,會(huì)根據(jù)返回值中的macro --> value在原型中創(chuàng)建items、triggers、graphs或hosts。這些宏變量可以在name、keys或其他原型中的字段中使用,這些位置包括:
在item prototypes中
names
key parameters
units
SNMP OIDs
IPMI sensor fields
calculated item formulas
SSH and Telnet scripts
database monitor itemparameters
descriptions
在triggerprototypes 中
names
expressions
URLs
descriptions
在graphprototypes 中
names
在host prototypes中
names
visible names
host group prototype names
?
在Zabbix中支持下列六種發(fā)現(xiàn)規(guī)則:
discovery of file systems
discovery of network interfaces
discovery of CPUs and CPU cores
discovery of SNMP OIDs
discovery using ODBC SQLqueries
discovery of Windows services
另外我們也可以自定義發(fā)現(xiàn)規(guī)則,只需要數(shù)據(jù)格式遵循特定的JSON協(xié)議即可,詳細(xì)內(nèi)容如下表12-1所示。
表 12-1
item的key | Item 類型 | 返回值 |
vfs.fs.discovery | Zabbix agen | { "data": [ {"{#FSNAME}":<path>", ?"{#FSTYPE}":"<fstype>"}, {"{#FSNAME}":<path>", ?"{#FSTYPE}":"<fstype>"}, {"{#FSNAME}":<path>", ?"{#FSTYPE}":"<fstype>"}, …] } |
net.if.discovery | Zabbix agent | { "data":[ {"{#IFNAME}":"<name>"}, {"{#IFNAME}":"<name>"}, {"{#IFNAME}":"<name>"}, } |
system.cpu.discovery | Zabbix agent | { "data":[ {"{#CPU.NUMBER}":"<idx>", ?"{#CPU.STATUS}":"<value>"}, {"{#CPU.NUMBER}":"<idx>", ?"{#CPU.STATUS}":"<value>"}, {"{#CPU.NUMBER}":"<idx>", ?"{#CPU.STATUS}":"<value>"}, …] } |
db.odbc.discovery | Database monitor | { "data": [ ?? {"{#HOST}": ?"<value>", "{#COUNT}": "<value>" }, ?? {"{#HOST}": ?"<value>","{#COUNT}": "<value>"}, ?? ?{"{#HOST}": "<value>","{#COUNT}": ?"<value>"} ?? …] } |
snmp.discovery | SNMP (v1, v2, or v3) agent | { "data":[ } |
Service.discovery | Zabbix agent | { "data":[ ?? {"{#SERVICE.DISPLAYNAME}": ?"<value>", ??? ?"{#SERVICE.NAME}": "<value>", ??? ?"{#SERVICE.PATH}": "<value>", ??? ?"{#SERVICE.STARTUPNAME}": "<value>", ??? ?"{#SERVICE.STARTUP}": “<value>”, ??? ?"{#SERVICE.STATENAME}": "<value>", ??? ?"{#SERVICE.STATE}":” <value>”, ??? ?"{#SERVICE.TYPENAME}": "<value>r", ??? ?"{#SERVICE.TYPE}": “<value>”, ??? ?"{#SERVICE.USER}": "<value>"}, ...] } |
custom.discovery | Any | { "data":[ {"{#CUSTOM1}":"<value>","{#CUSTOM2}":"<value>"}, {"{#CUSTOM1}":"<value>","{#CUSTOM2}":"<value>"}, {"{#CUSTOM1}":"<value>","{#CUSTOM2}":"<value>"}, …] } |
當(dāng)我們準(zhǔn)備開始定義發(fā)現(xiàn)規(guī)則時(shí),可以通過zabbix_get工具查看Key收集的數(shù)據(jù)。例如:
# zabbix_get -s 127.0.0.1 -k net.if.discovery
{"data":[
{"{#IFNAME}":"enp0s3"},
{"{#IFNAME}":"lo"}
]}
?
# zabbix_get -s 127.0.0.1 -k vfs.fs.discovery
{"data":[
{"{#FSNAME}":"/","{#FSTYPE}":"rootfs"},
{"{#FSNAME}":"/sys","{#FSTYPE}":"sysfs"},
{"{#FSNAME}":"/proc","{#FSTYPE}":"proc"},
{"{#FSNAME}":"/dev","{#FSTYPE}":"devtmpfs"},
{"{#FSNAME}":"/sys/kernel/security","{#FSTYPE}":"securityfs"},
{"{#FSNAME}":"/dev/shm","{#FSTYPE}":"tmpfs"},
{"{#FSNAME}":"/dev/pts","{#FSTYPE}":"devpts"},
{"{#FSNAME}":"/run","{#FSTYPE}":"tmpfs"},
…
]}
?
SNMP發(fā)現(xiàn)規(guī)則的Key不能通過zabbix_get工具驗(yàn)證,只能在Web頁面中進(jìn)行配置使用。
在Configuration --> Templates頁面中,點(diǎn)擊模板的Discovery列中的鏈接,如下圖12-11所示。
圖 12-11
創(chuàng)建Low-level discovery規(guī)則
在Discovery rules頁面中點(diǎn)擊右上角的Creatediscovery rule按鈕可以創(chuàng)建新的發(fā)現(xiàn)規(guī)則。如下圖12-12所示。
圖 12-12
Discovery rule標(biāo)簽中各參數(shù)的含義如下:
Name:發(fā)現(xiàn)規(guī)則的名稱。
Type:用于發(fā)現(xiàn)的監(jiān)控方式。
Key:item的key,如vfs.fs.discovery。
Update interval (in sec):執(zhí)行發(fā)現(xiàn)規(guī)則的間隔時(shí)間,單位是秒。如果設(shè)置為0,item將停止收集數(shù)據(jù)。
Custom intervals:設(shè)置Flexible或Scheduling。
Keep lost resources period (indays):當(dāng)發(fā)現(xiàn)狀態(tài)變?yōu)?/span>Not discoveredanymore時(shí),保留發(fā)現(xiàn)記錄的天數(shù)。最大為3650天。如果設(shè)置為0將立即刪除,不會(huì)保留。
Description:描述信息。
Enabled:勾選此項(xiàng)為啟用該發(fā)現(xiàn)規(guī)則。
?
Filters標(biāo)簽中設(shè)置filters計(jì)算類型,通過點(diǎn)擊Add連接添加多個(gè)宏變量。如下圖12-13所示。
圖 12-13
其中各參數(shù)的含義如下:
Type of calculation:計(jì)算Filters的類型。有以下幾種類型:
And:必須滿足所有filters。
Or:只有滿足其中一個(gè)filters。
And/Or:不同的宏變量使用And,相同的宏變量使用Or。
Custom expression:自定義filters計(jì)算,公式中必須包括列表中所有filters,不能超過255個(gè)字符。
Filters:使用宏變量匹配正在表達(dá)式。在Regular expression中正則表達(dá)式可以直接輸入,也可以引用 Administration --> General --> Regular expressions中定義的全局正則表達(dá)式。例如只需要監(jiān)測(cè)文件系統(tǒng)類型為ext和reiserfs的文件系統(tǒng),使用{#FSTYPE}匹配正則表達(dá)式^ext|^reiserfs,此時(shí)監(jiān)控項(xiàng)返回值中只包括文件系統(tǒng)類型為 ext或reiserfs的數(shù)據(jù)。
所有的參數(shù)設(shè)置后,點(diǎn)擊Add按鈕保存。
創(chuàng)建文件系統(tǒng)的發(fā)現(xiàn)規(guī)則時(shí),使用Zabbix agent監(jiān)控方式,Key使用vfs.fs.discovery,在Filters中需要使用{#FSTYPE}匹配正在表達(dá)式,得到你想要的數(shù)據(jù),windows agent還支持{#FSDRIVETYPE},例如{#FSDRIVETYPE} --> “fixed”。正則表達(dá)式可以使用命令grep –E進(jìn)行檢測(cè)。例如:for f inext2 nfs reiserfs smbfs; do echo $f | grep -E '^ext|^reiserfs' || echo"SKIP: $f"; done。
創(chuàng)建網(wǎng)絡(luò)接口的發(fā)現(xiàn)規(guī)則時(shí),使用Zabbix agent監(jiān)控方式,Key使用net.if.discovery,在Filters中使用{#IFNAME}匹配正則表達(dá)式。在此規(guī)則上你可以創(chuàng)建 item prototypes,例如 net.if.in[{#IFNAME},bytes]”,“net.if.out[{#IFNAME},bytes]。
創(chuàng)建CPUs和CPU cores發(fā)現(xiàn)規(guī)則時(shí),使用Zabbix agent監(jiān)控方式,Key使用system.cpu.discovery,這個(gè)Key返回兩個(gè)macros,即 {#CPU.NUMBER} 和{#CPU.STATUS},需要注意的是這里不能明確的區(qū)分出實(shí)際的物理處理器、內(nèi)核和超線程。{#CPU.STATUS} 在Linux、UNIX 和 BSD系統(tǒng)中返回處理器的狀態(tài)為 online 或 offline,在Windows系統(tǒng)中可能是unknown,意思是已經(jīng)檢測(cè)到處理器,但還沒有收集到更多的信息。在此規(guī)則上你可以創(chuàng)建 item prototypes,例如system.cpu.util[{#CPU.NUMBER}, <type>, <mode>]” or“system.hw.cpu[{#CPU.NUMBER}, <info>]。
創(chuàng)建SNMP OIDs 的發(fā)現(xiàn)規(guī)則時(shí),不像定義文件系統(tǒng)或網(wǎng)絡(luò)接口的發(fā)現(xiàn)規(guī)則,不使用snmp.discovery這個(gè)Key,使用SNMP agnet監(jiān)控方式就可以,在SNMPOID字段中定義需要發(fā)現(xiàn)的OIDs,格式為 discovery[{#MACRO1}, oid1, {#MACRO2}, oid2, …,]。如下圖12-14所示。
圖 12-14
創(chuàng)建ODBC SQL查詢的發(fā)現(xiàn)規(guī)則時(shí),需要使用SQL查詢并將結(jié)果自動(dòng)轉(zhuǎn)換成JSON格式。Key使用db.odbc.select[<description>,<dsn>],監(jiān)控方式為Database monitor。如下圖12-15所示。
圖 12-15
創(chuàng)建Windows服務(wù)的發(fā)現(xiàn)規(guī)則時(shí),使用Zabbixagent監(jiān)控方式,Key使用service.discovery,和創(chuàng)建文件系統(tǒng)的發(fā)現(xiàn)規(guī)則方法一樣,在Filters中支持使用下面的這些macros:{#SERVICE.NAME}、{#SERVICE.DISPLAYNAME}、{#SERVICE.DESCRIPTION}、{#SERVICE.STATE}、{#SERVICE.STATENAME}、{#SERVICE.PATH}、{#SERVICE.USER}、{#SERVICE.STARTUP}、{#SERVICE.STARTUPNAME}。在此規(guī)則上你可以創(chuàng)建item prototypes,例如 service.info[{#SERVICE.NAME},<param>],param可以是state、displayname、path、user、startup和description,如果param沒有指定,默認(rèn)返回state。{#SERVICE.STATE}和 {#SERVICE.STATENAME}返回相同的內(nèi)容,{#SERVICE.STATE} 返回的是數(shù)值(0 - 7),{#SERVICE.STATENAME}返回的是文字(running,paused、start pending、pause pending、continuepending、stop pending、stopped or unknown)。{#SERVICE.STARTUP}返回的是數(shù)值(0 -4),{#SERVICE.STARTUPNAME}返回的是文字(automatic、automatic delayed、 manual、disabled、unknown)。
創(chuàng)建自定義的發(fā)現(xiàn)規(guī)則時(shí),可以使用任意的監(jiān)控方式。通常使用腳本生成JOSN格式的數(shù)據(jù),在自定義發(fā)現(xiàn)規(guī)則中,宏變量的數(shù)量沒有限制,
1、Item 原型
當(dāng)發(fā)現(xiàn)規(guī)則創(chuàng)建成功后,在發(fā)現(xiàn)規(guī)則列表中點(diǎn)擊ITEMS列中的item prototypes鏈接,在item prototypes頁面中點(diǎn)擊右上角的Createitem prototype按鈕進(jìn)入Item prototype配置頁面。如下圖12-16所示。
圖 12-16
在Name和Key中需要使用macro,如上圖中的{#FSNAME}。Application prototypes是一個(gè)比較特殊的選項(xiàng),在這個(gè)選項(xiàng)中也可以使用宏變量。在同一個(gè)發(fā)現(xiàn)規(guī)則中幾個(gè)item prototypes可以使用同一個(gè)applicationprototypes。
?
2、Trigger 原型
在發(fā)現(xiàn)規(guī)則列表中點(diǎn)擊TRIGGERS列中的? Trigger prototypes鏈接,在Trigger prototypes頁面中點(diǎn)擊右上角的Createtrigger prototype按鈕進(jìn)入Trigger prototype配置頁面。如下12-17圖所示。
圖 12-17
在Dependencies標(biāo)簽中可以定義依賴的triggerprototypes。一個(gè)觸發(fā)器原型可以依賴于相同發(fā)現(xiàn)規(guī)則下的另一個(gè)觸發(fā)器原型或一個(gè)常規(guī)的觸發(fā)器。一個(gè)觸發(fā)器原型不能依賴于其他發(fā)現(xiàn)規(guī)則下的觸發(fā)器原型或從一個(gè)觸發(fā)器原型創(chuàng)建的觸發(fā)器。
?
3、Graph 原型
在發(fā)現(xiàn)規(guī)則列表中點(diǎn)擊GRAPHS列中的Graph prototypes鏈接,在Graph prototypes頁面中點(diǎn)擊右上角的CreateGraph prototype按鈕進(jìn)入Graph prototype配置頁面。如下圖12-18所示。
圖 12-18
?
4、Host原型
???? 在發(fā)現(xiàn)規(guī)則列表中點(diǎn)擊HOSTS列中的Host prototypes鏈接,在Host prototypes頁面中點(diǎn)擊右上角的CreateHost prototype按鈕進(jìn)入Host prototype配置頁面。如下圖12-19所示。
圖 12-19
在Host 原型中,可以鏈接模板,在host name、visible name和groupprototypes中使用LLD 宏變量。通過Host原型創(chuàng)建的主機(jī)是以發(fā)現(xiàn)規(guī)則的名稱為名稱前綴創(chuàng)建的,在Web前端主機(jī)列表中,這些主機(jī)可以手工刪除,也可以自動(dòng)刪除(基于發(fā)現(xiàn)規(guī)則中定義的Keep lost resources period (in days)參數(shù)設(shè)置)。除了Enable選項(xiàng)和host inventory外,大部分選項(xiàng)都是只讀的。
在Zabbix中提供的模板 Template VirtVMware中,在 Discover VMware VMs 和Discover VMware hypervisors 發(fā)現(xiàn)規(guī)則中定義了Host prototypes,分別用來發(fā)現(xiàn)和創(chuàng)建虛擬機(jī)和VMwareESX服務(wù)器的監(jiān)控主機(jī),可以作為參考更好的理解Host prototypes。
?
??
本文出自?http://ustogether.blog.51cto.com/8236854/1929748,如需轉(zhuǎn)載請(qǐng)與作者聯(lián)系。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。