大量收集發現的物品
(這是針對Zabbix 2.2.2的。)
我有一個發現規則,可以返回 100 多個我想監控的項目。每個項目的數據都可以通過呼叫單獨的執行檔的使用者參數來收集。
將這些實現為被動檢查會吃掉 zabbix 代理,為每個項目生成一個外部程序。
所有項目的數據可以很容易地一次收集並批量發送到 Zabbix 伺服器(通過zabbix_sender)。我不知道如何正確實施。該文件沒有回答我的(可能是愚蠢的)問題。
如何讓 Zabbix 代理對我的自定義數據收集腳本進行一次外部呼叫,並為 100 多個發現的項目批量發回所有數據,而不是為每個項目呼叫客戶端操作? 我想要避免的是讓 Zabbix 代理嘗試單獨收集每個項目。
發現規則必須創建項目。據我了解,每個項目都會導致 zabbix 代理嘗試做一些事情來收集它的數據。有沒有辦法可以防止這種情況或將一組項目與單個客戶端主動檢查相關聯?
我不明白的部分內容是應該如何實施主動檢查。如果一個活動檢查可以發回一批項目的數據,如何為該主機定義項目(以便代理不會嘗試單獨收集項目的數據)以及定義哪些項目來呼叫活動檢查(或應使用的任何項目類型)將進行實際數據收集(但不保存任何數據本身)?這是文件沒有為我回答的真正問題。Zabbix 打算如何讓我實施主動檢查或使用 zabbix_sender 發送項目的批量更新(代理將嘗試自行收集)。
基本 Zabbix 概念 - 一項(檢查)= 一個值。Zabbix 伺服器不提供解析器功能來解析多個值,因此它必須始終只有一個值。
如果要返回更多值,則必須使用一些解決方法,請參閱 zabbix UserParameter return 2 or more values
Zabbix 發件人範例:
允許在 zabbix-agent 中執行命令並創建項目(主動或被動)來執行您的腳本:
system.run["myscript.sh > output_for_zabbix_sender.txt; zabbix_sender -s <host_name> -z <zabbix_server> -i output_for_zabbix_sender",nowait]
它將在 nowait 模式下執行命令。myscript.sh 產生以下格式的輸出:
hostname key1 value1 hostname key2 value2 ...
並且這個輸出由 zabbix_sender 處理(發送)到 zabbix 伺服器。在這種情況下,項目類型必須是 Zabbix Trapper (zabbix_sender)。最終您不需要 system.run 項目,您可以使用 zabbix_sender 作為 cron 作業執行腳本。
如果您需要完美的監控解決方案,請不要忘記處理錯誤、最小化 IOP、…
您也可以使用 zabbix_sender 進行發現 - 只需遵循有關所需格式的文件,例如:
hostname discovery_key {"data":[{"{#ID}": "/"},{"{#ID}":"/usr"},{"{#ID}":"/var"}]}