zabbix實現百臺服務器的自動化監控--技術流ken
前言
最近有小夥伴通過Q聯系到我說:公司現在有百多臺服務器,想要部署zabbix進行監控,怎麽實現自動化全網監控?
本篇博客就把我告訴他的解決方案寫出來,供大家以後參考。
實現自動化全網監控,需要用到腳本,以及zabbix的自動註冊或者自動發現的功能。以前也寫過一篇關於兩者的博客《分布式系統監視zabbix講解八之自動發現/自動註冊--技術流ken》,但是內容可能沒有那麽詳盡,本篇博客將詳細完整的演示如何使用zabbix實現百臺服務器的自動化監控。
zabbix自動註冊
活動的Zabbix agent可以自動註冊到服務器進行監控。這種方式無需在服務器上手動配置它們。
當以前未知的active agent要求檢查時,會發生自動註冊。
該功能可能非常方便自動監控新的節點。一旦在集群中有一個新節點,Zabbix將自動啟動主機監控,並進行性能和可用性數據的收集。
Active agent自動註冊還支持對被添加的主機進行被動檢查的監控。當active agent要求檢查時,提供它配置文件中定義的“ListenIP”或“ListenPort”配置參數,這些參數將發送到服務器。(如果指定了多個IP地址,則第一個將被發送到服務器。)
服務器在添加新的自動註冊主機時,使用接收到的IP地址和端口配置agent。如果沒有接收到IP地址值,則使用傳入連接的IP地址。如果沒有接收到端口值,則使用10050。
註:自動註冊需要把agent運行在主動模式即 serveractive=服務器端地址
zabbix自動發現
自動發現(LLD)提供了一種在計算機上為不同實體自動創建監控項,觸發器和圖形的方法。例如,Zabbix可以在你的機器上自動開始監控文件系統或網絡接口,而無需為每個文件系統或網絡接口手動創建監控項。此外,可以配置Zabbix根據定期執行發現後的得到實際結果,來移除不需要的監控項。
自動化分發密鑰
本篇博客將會是強調自動化,實現自動化的前提就是實現服務器與從節點的互信。
下面的腳本將會完成密鑰的自動化分發。
#!/bin/bash #author:技術流ken #date:2018-12-2 #desc: auto-deliver keys to clients . /etc/init.d/functions #下載expect yum install expect -y &>/dev/null if [ $? -eq 0 ];then echo -n "download expect" success echo "" else echo -n "download expect" failure echo "" exit 8 fi #刪除保存的秘鑰信息 if [ -f id_rsa -o -f id_rsa.pub -o known_hosts ];then rm -rf /root/.ssh/id* rm -rf /root/.ssh/known* fi #自動生成秘鑰對 /usr/bin/expect<<eof spawn ssh-keygen expect { "(/root/.ssh/id_rsa)" {send \r;exp_continue} "passphrase" {send \r;exp_continue} "again" {send \r} } expect eof exit eof #在各個節點分發秘鑰 for i in 2 7 8 9 10 11 do ken=172.20.10.$i /usr/bin/expect<<eof spawn ssh-copy-id $ken expect { "yes/no" {send yes\r;exp_continue} "password" {send o\r} } expect eof exit eof done
自動化配置從節點
現在我們已經為各個節點分發了密鑰,如果還一個一個配置從節點真的是臺low了。下面我就為大家提供兩種解決方案。
第一種:shell腳本
#!/bin/bash #author:技術流ken #date:2018-12-2 #desc:this script for downloading zabbix-agent for clients ip=172.20.10. for i in 2 7 8 9 10 11 do ssh $ip$i yum install zabbix-agent -y &>/dev/null scp /root/zabbix_agentd.conf $ip$i:/etc/zabbix/zabbix_agentd.conf &>/dev/null ssh $ip$i systemctl restart zabbix-agent &>/dev/null done
第二種:ansible劇本
- hosts: all tasks: - copy: src=/etc/yum.repos.d/zabbix.repo dest=/etc/yum.repos.d/ - yum: name=zabbix-agent state=present - copy: src=/etc/zabbix/zabbix_agentd.conf dest=/etc/zabbix/zabbix_agentd.conf - service: name=zabbix-agent state=restarted
zabbix自動註冊實現全網監控
第一步:執行分發密鑰腳本
[root@server ~]# bash keys.sh [root@server ~]# cat keys.sh #!/bin/bash #author:技術流ken #date:2018-12-2 #desc: auto-deliver keys to clients . /etc/init.d/functions #下載expect yum install expect -y &>/dev/null if [ $? -eq 0 ];then echo -n "download expect" success echo "" else echo -n "download expect" failure echo "" exit 8 fi #刪除保存的秘鑰信息 if [ -f id_rsa -o -f id_rsa.pub -o known_hosts ];then rm -rf /root/.ssh/id* rm -rf /root/.ssh/known* fi #自動生成秘鑰對 /usr/bin/expect<<eof spawn ssh-keygen expect { "(/root/.ssh/id_rsa)" {send \r;exp_continue} "passphrase" {send \r;exp_continue} "again" {send \r} } expect eof exit eof #在各個節點分發秘鑰 for i in 2 7 8 9 10 11 do ken=172.20.10.$i /usr/bin/expect<<eof spawn ssh-copy-id $ken expect { "yes/no" {send yes\r;exp_continue} "password" {send o\r} } expect eof exit eof done
第二步:準備zabbix-agent的配置文件
需要修改三處:
1. 主動模式,IP指向監控服務器端
2.server執行服務器端
3.註銷掉hostname,修改為主機名自動獲取
[root@ken ~]# vim /etc/zabbix/zabbix_agentd.conf Server=172.20.10.6 ServerActive=172.20.10.6 # Hostname= HostnameItem=system.hostname
第三步:配置ansible主機文件
在該文件末行填寫如下內容
[7:11]表示7-11即7,8,9,11,12
[root@server ~]# vim /etc/ansible/hosts [ken] 172.20.10.2 172.20.10.[7:11]
第四步:檢查ansible劇本
[root@server ~]# ansible-playbook --syntax-check auto_ins.yml
playbook: auto_ins.yml
第五步:執行劇本
第四步檢查無誤後即可進行執行
[root@server ~]# ansible-playbook auto_ins.yml PLAY [all] ************************************************************************************************************** TASK [Gathering Facts] ************************************************************************************************** ok: [172.20.10.9] ok: [172.20.10.8] ok: [172.20.10.2] ok: [172.20.10.10] ok: [172.20.10.7] ok: [172.20.10.11] TASK [copy] ************************************************************************************************************* changed: [172.20.10.8] changed: [172.20.10.7] changed: [172.20.10.10] changed: [172.20.10.2] changed: [172.20.10.9] changed: [172.20.10.11] TASK [yum] ************************************************************************************************************** ok: [172.20.10.7] ok: [172.20.10.2] changed: [172.20.10.8] changed: [172.20.10.9] changed: [172.20.10.10] changed: [172.20.10.11] TASK [copy] ************************************************************************************************************* changed: [172.20.10.9] ok: [172.20.10.2] changed: [172.20.10.8] ok: [172.20.10.7] changed: [172.20.10.10] changed: [172.20.10.11] TASK [service] ********************************************************************************************************** changed: [172.20.10.7] changed: [172.20.10.10] changed: [172.20.10.2] changed: [172.20.10.8] changed: [172.20.10.9] changed: [172.20.10.11] PLAY RECAP ************************************************************************************************************** 172.20.10.10 : ok=5 changed=4 unreachable=0 failed=0 172.20.10.11 : ok=5 changed=4 unreachable=0 failed=0 172.20.10.2 : ok=5 changed=2 unreachable=0 failed=0 172.20.10.7 : ok=5 changed=2 unreachable=0 failed=0 172.20.10.8 : ok=5 changed=4 unreachable=0 failed=0 172.20.10.9 : ok=5 changed=4 unreachable=0 failed=0
第六步:配置zabbix自動註冊
點擊 配置>動作>自動註冊>創建動作
動作中只需填寫一個名稱
條件中不需要填寫任何東西
操作中選擇如下三項,然後點擊添加即可
這樣就創建好了一個自動註冊的策略
第七步:查看主機
等待大約十幾秒鐘之後就可以看到我們想要監控的主機已經自動添加進來了
zabbix自動發現實現全網監控
第一步:修改zabbix-agent的配置文件
自動發現和自動註冊客戶端配置一樣!!
server以及serveractive後面的IP地址都指向zabbix的監控服務器端
[root@ken ~]# vim /etc/zabbix/zabbix_agentd.conf Server=172.20.10.6 ServerActive=172.20.10.6 # Hostname= HostnameItem=system.hostname
第二步:再次執行ansible劇本
劇本無需任何修改
[root@server ~]# ansible-playbook auto_ins.yml PLAY [all] ************************************************************************************************************** TASK [Gathering Facts] ************************************************************************************************** ok: [172.20.10.2] ok: [172.20.10.8] ok: [172.20.10.9] ok: [172.20.10.10] ok: [172.20.10.7] ok: [172.20.10.11] TASK [copy] ************************************************************************************************************* ok: [172.20.10.10] ok: [172.20.10.8] ok: [172.20.10.7] ok: [172.20.10.2] ok: [172.20.10.9] ok: [172.20.10.11] TASK [yum] ************************************************************************************************************** ok: [172.20.10.10] ok: [172.20.10.2] ok: [172.20.10.7] ok: [172.20.10.9] ok: [172.20.10.8] ok: [172.20.10.11] TASK [copy] ************************************************************************************************************* changed: [172.20.10.7] changed: [172.20.10.9] changed: [172.20.10.10] changed: [172.20.10.8] changed: [172.20.10.2] changed: [172.20.10.11] TASK [service] ********************************************************************************************************** changed: [172.20.10.10] changed: [172.20.10.7] changed: [172.20.10.9] changed: [172.20.10.8] changed: [172.20.10.2] changed: [172.20.10.11] PLAY RECAP ************************************************************************************************************** 172.20.10.10 : ok=5 changed=2 unreachable=0 failed=0 172.20.10.11 : ok=5 changed=2 unreachable=0 failed=0 172.20.10.2 : ok=5 changed=2 unreachable=0 failed=0 172.20.10.7 : ok=5 changed=2 unreachable=0 failed=0 172.20.10.8 : ok=5 changed=2 unreachable=0 failed=0 172.20.10.9 : ok=5 changed=2 unreachable=0 failed=0
第三步:zabbix在web端添加自動發現
點擊創建發現規則
輸入你想要的名稱
需要檢測的IP地址範圍
檢查規則采用icmp ping的方式
第四步:查看發現的主機
點擊檢測中>自動發現 就可以看到已經檢測到的主機了
但是可以發現我們現在僅僅只是檢測到了這些主機,還沒有真正的進行監控
第四步:配置發現動作
點擊配置>動作>自動發現>創建動作
條件這裏只需要輸入名稱即可
條件這裏需要輸入你的檢測的主機的IP範圍
操作這裏添加如下規則即可。
第五步:查看主機
和自動註冊不同,自動發現加入到主機的時間比較長,大概需要十幾二十分鐘,耐心等待即可。(自動註冊只需要十幾秒)
可以發現所有的主機都已經被添加進了host裏面進行了監控
zabbix實現百臺服務器的自動化監控--技術流ken