zabbix自動註冊

本文參考文檔:https://www.zabbix.com/documentation/4.0/zh/manual/discovery/auto_registration
官方文檔已經寫的很詳細,很感人了因此這裏不多做解釋只寫我的操作:

環境:ubuntu14
zabbix版本:3.4.0
功能實現:當以前未知的active agent要求檢查時,會發生自動註冊。

在agent配置文件中zabbix_agentd.conf添加or修改以下內容:

ServerActive=service.zabbixbetadns****.com (我們公司實際是使用的域名,官方文檔給出的是IP,根據自己實際情況修改)

RefreshActiveChecks=15 (這裏我定義的是15s, 可以不定義 不定義默認爲重啓後立即發送請求)

Hostname = 172.25.100.100 (被監控主機IP)
如果你沒有在zabbix_agentd.conf中特別定義了Hostname,則服務器將使用agent的系統主機名命名主機。Linux中的系統主機名可以通過運行'hostname'命令獲得。

HostMetadataItem=system.uname
修改配置後重啓agent使配置生效

在Zabbix頁面,轉到配置→動作,選擇自動註冊爲事件源,然後單擊創建操作:
在“動作“選項卡,定義 Action 名稱
可選指定條件。如果要使用“主機元數據”條件,請參閱下一節。
在“操作”選項卡中,添加“添加主機”,“添加到主機組”(例如,發現的主機),“鏈接到模板”等。
zabbix自動註冊

zabbix自動註冊

到這裏就可以實現自動註冊
可以試驗一臺機器 刪除後重啓zabbix_agentd 將會自動監控目標主機
zabbix自動註冊
至此自動發現功能實現,接下來的問題是實現批量修改被監控主機agentd配置文件
如果公司主機少的話當然可以手動進行修改,服務器如果太多手動就太沒有效率了!

import paramiko
from multiprocessing import Pool

def main(hostname):
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    try:
        ssh.connect(hostname,22,'用戶名','密碼')
    except:
        with open("/tmp/error.txt",'a') as f:
            f.write("%s is connect error\n" % hostname)
            return
    ssh.exec_command('grep HostMetadataItem=system.uname /etc/zabbix/zabbix_agentd.conf >> /dev/null  || echo "HostMetadataItem=system.uname" >> //etc/zabbix/zabbix_agentd.conf')
    ssh.exec_command('sed -i "s/Hostname.*/Hostname=%s/g" /etc/zabbix/zabbix_agentd.conf' % hostname)
    ssh.exec_command('sed -i "s/^ServerActive/#ServerActive/" /etc/zabbix/zabbix_agentd.conf')
    ssh.exec_command('service zabbix-agent restart')

if __name__ == '__main__':
    f = open("host.txt")
    for i in f:
        hostname = i.strip()
        main(hostname)

該腳本會調用本地host.txt文件中的IP使用時將IP寫入host.txt並將文件和腳本放在同一目錄
該腳本可重複執行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章