專(zhuān)家專(zhuān)欄 | 使用agent2自定義插件采集通過(guò)MQTT協(xié)議發(fā)送的數(shù)據(jù)
MQTT協(xié)議簡(jiǎn)介
MQTT(消息隊(duì)列遙測(cè)傳輸)是ISO 標(biāo)準(zhǔn)(ISO/IEC PRF 20922)下基于發(fā)布/訂閱范式的物聯(lián)網(wǎng)通信協(xié)議。它工作在 TCP/IP協(xié)議族上,是為硬件性能低下的遠(yuǎn)程設(shè)備以及網(wǎng)絡(luò)狀況糟糕的情況下而設(shè)計(jì)的發(fā)布/訂閱型消息協(xié)議。MQTT被廣泛用于汽車(chē),制造業(yè),電信,石油和天然氣等行業(yè)以及通過(guò)衛(wèi)星鏈路與代理通信的傳感器、與醫(yī)療服務(wù)提供者的撥號(hào)連接,以及一系列家庭自動(dòng)化和小型設(shè)備場(chǎng)景。它也是移動(dòng)應(yīng)用的理想選擇,因?yàn)樗w積小,功耗低,數(shù)據(jù)包最小,并且可以有效地將信息分配給一個(gè)或多個(gè)接收器。
MQTT有兩個(gè)組件:
MQTT代理:MQTT代理是通信的中心點(diǎn)。代理負(fù)責(zé)在客戶(hù)端之間分派所有消息。
MQTT協(xié)議簡(jiǎn)介
MQTT(消息隊(duì)列遙測(cè)傳輸)是ISO 標(biāo)準(zhǔn)(ISO/IEC PRF 20922)下基于發(fā)布/訂閱范式的物聯(lián)網(wǎng)通信協(xié)議。它工作在 TCP/IP協(xié)議族上,是為硬件性能低下的遠(yuǎn)程設(shè)備以及網(wǎng)絡(luò)狀況糟糕的情況下而設(shè)計(jì)的發(fā)布/訂閱型消息協(xié)議。MQTT被廣泛用于汽車(chē),制造業(yè),電信,石油和天然氣等行業(yè)以及通過(guò)衛(wèi)星鏈路與代理通信的傳感器、與醫(yī)療服務(wù)提供者的撥號(hào)連接,以及一系列家庭自動(dòng)化和小型設(shè)備場(chǎng)景。它也是移動(dòng)應(yīng)用的理想選擇,因?yàn)樗w積小,功耗低,數(shù)據(jù)包最小,并且可以有效地將信息分配給一個(gè)或多個(gè)接收器。
MQTT有兩個(gè)組件:
MQTT代理:MQTT代理是通信的中心點(diǎn)。代理負(fù)責(zé)在客戶(hù)端之間分派所有消息。
MQTT客戶(hù)端:MQTT客戶(hù)端是連接到broker的任何設(shè)備。發(fā)送消息的客戶(hù)端是發(fā)布者。接收消息的客戶(hù)端是訂閱者。要接收消息,客戶(hù)端必須訂閱該消息的主題。
部署mqtt協(xié)議的服務(wù)
實(shí)現(xiàn)了mqtt協(xié)議的服務(wù)器有很多種,這里我使用了mosquitto服務(wù)在centos上部署
mkdir data && cd data wget http://mosquitto.org/files/source/mosquitto-1.6.8.tar.gz tar -zxvf mosquitto-1.6.8.tar.gz cd mosquitto-1.6.8 make && make install ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1 ldconfig
我們可以編輯配置文件mosquitto.conf,修改監(jiān)聽(tīng)地址,并設(shè)置認(rèn)證用戶(hù)密碼,并在啟動(dòng)的時(shí)候使用-c 參數(shù)指定配置文件
部署完成后啟動(dòng)borker服務(wù),我這里使用默認(rèn)配置
mosquitto -v
訂閱sensor主題
mosquitto_sub -v -t sensor
向sensor主題發(fā)布內(nèi)容
mosquitto_pub -t sensor -m 12
發(fā)布完之后便會(huì)在訂閱者客戶(hù)段接收到
使用zabbxi agent2收集發(fā)布者發(fā)布的消息
zabbix agent2在這里扮演的是一個(gè)訂閱者的角色,zabbix agent2使用GO語(yǔ)言開(kāi)發(fā),這樣我們可以通過(guò)go語(yǔ)言編寫(xiě)一些自定義插件來(lái)實(shí)現(xiàn)我們的監(jiān)控需求,插件相對(duì)于自定義腳本優(yōu)點(diǎn)之一是插件是長(zhǎng)連接的,而自定義腳本每次處理用戶(hù)指標(biāo)時(shí)都會(huì)fork一個(gè)新進(jìn)程,關(guān)于agent與agent2的區(qū)別可以查看官方文檔
點(diǎn)擊查看官方文檔
本文通過(guò)zabbix自定義插件實(shí)現(xiàn)mqtt協(xié)議的消息采集,關(guān)于agent2自定義插件介紹可查看官方文檔
點(diǎn)擊查看官方文檔
或者查看Zabbix認(rèn)證專(zhuān)家米宏翻譯的文章(特別好)
官方博文 | 為Zabbix Agent 2 開(kāi)發(fā)插件
01-下載zabbix agent2源碼并將自定義插件編譯
mqtt插件由維塔利·朱拉夫列夫(Vitaly Zhuravlev)編寫(xiě),地址https://github.com/v-zhuravlev/zbx_plugin_mqtt,就是下面這位大神,其實(shí)刮了胡子還是挺帥的,當(dāng)然僅次于我。
yum install golang git clone https://git.zabbix.com/scm/zbx/zabbix.git --depth 1 zabbix-agent2 cd zabbix-agent2 git submodule add https://github.com/v-zhuravlev/zbx_plugin_mqtt.git src/go/plugins/mqtt
02-導(dǎo)入mqtt插件
vi src/go/plugins/plugins.go
package plugins import ( _ "zabbix.com/plugins/log" _ "zabbix.com/plugins/systemrun" _ "zabbix.com/plugins/zabbix/async" _ "zabbix.com/plugins/zabbix/stats" _ "zabbix.com/plugins/zabbix/sync" _ "zabbix.com/plugins/mqtt" )
03-編譯安裝zabbix agent2
./bootstrap.sh pushd . cd src/go/ go mod vendor popd ./configure --enable-agent2 --enable-static make install
04-編輯配置文件
這里我調(diào)整了日志級(jí)別,方便前臺(tái)調(diào)試
可選參數(shù)
Plugins.MQTTSubscribe.Username =
Plugins.MQTTSubscribe.Password =
Plugins.MQTTSubscribe.ClientID = zabbix-agent2-mqtt-client? //如果未設(shè)置將自動(dòng)生成ClientID
Plugins.MQTTSubscribe.Timeout = 5? ?//定義此插件的連接超時(shí)時(shí)間,如果不定義將使用zabbix agent2的超時(shí)時(shí)間
05- 啟動(dòng)zabbix_agent2
cd /root/zabbix_agent/src/go/bin ./zabbix_agent2 -c ../conf/zabbix_agent2.conf
MQTT插件實(shí)現(xiàn)了一個(gè)Watcher接口,Watcher接口使用的push模型,當(dāng)有新數(shù)據(jù)產(chǎn)生,會(huì)主動(dòng)push給服務(wù)器
08- Zabbix創(chuàng)建監(jiān)控項(xiàng)
鍵值示例如下
mqtt.subscribe[
注意監(jiān)控項(xiàng)類(lèi)型必須是主動(dòng)式
我們可以通過(guò)mqtt client來(lái)發(fā)送一些數(shù)據(jù)
可以在zabbix agent2前臺(tái)看到數(shù)據(jù)實(shí)時(shí)推送給了zabbix server,當(dāng)沒(méi)有新數(shù)據(jù)產(chǎn)生的時(shí)候,agent2也會(huì)每隔兩分鐘(默認(rèn))連接server的10051端口來(lái)請(qǐng)求有關(guān)監(jiān)控項(xiàng)的信息
MQTT TCP/IP 專(zhuān)家
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。