如何自動化添加上百臺Zabbix監(jiān)控
前言
當(dāng)我們熟悉了Zabbix的日常監(jiān)控,可以在生產(chǎn)環(huán)境正確的部署和實施監(jiān)控工作。而且通過修改Zabbix Agent為主動方式并結(jié)合Zabbix Proxy的使用,可以滿足大規(guī)模監(jiān)控的需求。那么同樣的問題就是大規(guī)模監(jiān)控環(huán)境中,如何能讓操作自動化。面對上百、數(shù)千乃至上萬的規(guī)模,手動添加監(jiān)控基本上是不可能的。
可以將Zabbix自動化分為三個大方向:
- Zabbix Agent的自動添加
- Zabbix Discovery自動發(fā)現(xiàn)
- 使用Zabbix API
那么今天我們來說說Zabbix Agent的自動添加。
Zabbix Agent主動注冊指的是,當(dāng)我們新增加一臺服務(wù)器,安裝好Zabbix Agent,并配置Zabbix Server的IP地址后,Zabbix Agent主動聯(lián)系Zabbix Server,Zabbix Server接收到Agent的連接后,根據(jù)Agent的特征,和相應(yīng)的策略自動將它們加入Host,并且可以根據(jù)相關(guān)的特征自動關(guān)聯(lián)相應(yīng)的監(jiān)控模板。
Zabbix Agent配置
需要開啟Zabbix Agent的主動注冊,首先我們需要對ZabbixAgent進(jìn)行配置。
- ServerActive=Zabbix Server的IP地址
- Hostname=auto.example.com
- #設(shè)置主機(jī)名,如果不設(shè)置默認(rèn)使用HostnameItem獲取主機(jī)名。而默認(rèn)情況下HostnameItem=system.hostname,這樣就可以獲取到Agent的主機(jī)名了。
- #HostMetadata=nginx
- #HostMetadata用于定義主機(jī)的元數(shù)據(jù),在自動注冊的時候使用,不能大于255個字符,如果不設(shè)置默認(rèn)從HostMetadataItem獲取
- HostMetadataItem=system.uname
- # HostMetadataItem也是用于定義主機(jī)的元數(shù)據(jù),在自動注冊的時候使用,不能大于255個字符,這里設(shè)置的Item指的是Zabbix自帶的監(jiān)控項,注意這個值只用于HostMetadata沒有設(shè)置的時候才生效。
Zabbix Action配置
配置完畢Agent后,我們在Web界面上來配置一個Action。步驟為:
configuration>>action>>Eventsource(選擇Auto registration)>>CreateAction。
可以自定義一個名稱,其它的默認(rèn)即可。
Action選項卡
Conditions選項卡
我們要在Conditions里面定義好需要的條件,這里我們選擇Host metadata like Linux。這樣就剛好可以匹配到我們在agent配置文件里面設(shè)置的HostMetadataItem=system.uname。
Operations選項卡
接下來我們配置Operations選項卡,告知Action匹配到條件后的操作。下面我們配置了三個操作,滿足條件的activehost發(fā)起請求后會進(jìn)行下面操作:
- 把a(bǔ)gent加到host列表
- 把a(bǔ)gent加入linuxservers組
- agent主機(jī)link模板Template OS linux
經(jīng)過這樣的配置,那么新的Agent就會自動被Zabbix Server添加到主機(jī)監(jiān)控中,并自動鏈接模板。
- 需要強(qiáng)調(diào)的是,你需要修改模板中的監(jiān)控類型為Zabbix Agent(active)。
目前自動注冊并不會產(chǎn)生一個事件所以在Event中是看不到Zabbix Server自動添加了一臺主機(jī)的。