Zabbix由淺入深之主機自動化注冊(Linux篇)
近些年來,自動化運維越來越受流行,Zabbix也不例外。我們都知道Zabbix在監(jiān)控系統(tǒng)類都是通過侵入式agent實現(xiàn),那么隨著機器的增多,會面臨兩個問題,一個是安裝的問題,另外一個是升級的問題,第一個很好解決,可以通過封裝鏡像的方式,將Zabbix的agent集成進去,第二個則需要一臺臺登錄升級,比較麻煩,另外我們需要在前端一臺臺加,所以自動化注冊可以大大減少這類的工作。
正文
環(huán)境
- Zabbix版本:5.4
- Ansible版本:2.9.23
- 系統(tǒng)版本:CentOS 8.2
Ansible安裝
ansible具體是干什么用的,就不細展開了,可以自行查閱互聯(lián)網(wǎng)。
- ####CentOS 8####
- dnf -y install epel-release
- dnf -y install ansible
- ####CentOS 7####
- yum -y install epel-release
- yum -y install ansible
配置Ansible免密登錄
該篇文章會以playbook的方式操作,
1.生成本地密鑰(公鑰和私鑰)
ssh-keygen -t rsa

生成本地密鑰,/root/.ssh目錄下
2.編寫yml文件
- vi key.yml
- ---
- - hosts: all
- tasks:
- - name: No Secret Login
- authorized_key: user=root key="{{ lookup('file', '~/.ssh/id_rsa.pub') }}" state=present

注意格式不要錯誤
3.配置ansible hosts文件
由于傳遞免密公鑰到對方需要SSH登錄,所以這里需要帶密碼的變量,另外格式為如下格式,IP為你測試機器的IP,密碼為測試機器的密碼
- vi /etc/ansible/hosts
- [kasar]
- 192.168.31.152
- [kasar:vars]
- ansible_ssh_pass="123"

配置一覽
4.關(guān)閉key檢測
由于初次登錄需要信任指紋,會出現(xiàn)異常,所以需要關(guān)閉,將下圖的該字段#去掉
- vi /etc/ansible/ansible.cfg

關(guān)閉key檢查
5.ansible執(zhí)行命令
- ansible-playbook key.yml

測試正常
編寫安裝zabbix agent腳本
寫腳本的時候要提前規(guī)劃好是否存在Proxy的情況,如果有需要在腳本里提前寫入,假設(shè)沒有,也可以通過ansible統(tǒng)一修改配置即可。
通過下載好的安裝包安裝(方式一)
- vi install.ssh
- #!/bin/sh
- yum -y localinstall /tmp/zabbix-agent2-5.4.2-1.el7.x86_64.rpm
- hostname=`hostname`
- sed -i 's/Server=127.0.0.1/Server=192.168.31.137/g' /etc/zabbix/zabbix_agent2.conf
- sed -i 's/ServerActive=127.0.0.1/ServerActive=192.168.31.137/g' /etc/zabbix/zabbix_agent2.conf
- sed -i 's/Hostname=Zabbix server/Hostname='$hostname'/g' /etc/zabbix/zabbix_agent2.conf
- systemctl restart zabbix-agent2
- systemctl enable zabbix-agent2
通過yum安裝(方式二)
- vi install.ssh
- #!/bin/sh
- rpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/7/x86_64/zabbix-release-5.4-1.el7.noarch.rpmrpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/7/x86_64/zabbix-release-5.4-1.el7.noarch.rpm
- yum -y install zabbix-agent2
- hostname=`hostname`
- sed -i 's/Server=127.0.0.1/Server=192.168.31.137/g' /etc/zabbix/zabbix_agent2.conf
- sed -i 's/ServerActive=127.0.0.1/ServerActive=192.168.31.137/g' /etc/zabbix/zabbix_agent2.conf
- sed -i 's/Hostname=Zabbix server/Hostname='$hostname'/g' /etc/zabbix/zabbix_agent2.conf
- systemctl restart zabbix-agent2
- systemctl enable zabbix-agent2
Ansible推送安裝
如果無法訪問外網(wǎng),就采用本地安裝包方式(注意格式)
Zabbix agent的包的下載可以自行前往官網(wǎng)查看
- ---
- - hosts: kasar
- tasks:
- - name: copy
- copy: 'src=/root/.ssh/install.sh dest=/tmp/ owner=root group=root mode=755'
- - name: copy
- copy: 'src=/tmp/zabbix-agent2-5.4.2-1.el7.x86_64.rpm dest=/tmp/ owner=root group=root mode=644'
- - name: shell
- shell: "/tmp/install.sh"
yum安裝方式(注意格式)
- ---
- - hosts: kasar
- tasks:
- - name: copy
- copy: 'src=/root/.ssh/install.sh dest=/tmp/ owner=root group=root mode=755'
- - name: shell
- shell: "/tmp/install.sh"
執(zhí)行操作
- ansible-playbook install.yml

本地化安裝
Zabbix前端操作
1.找到自動注冊選項,如下圖

2.創(chuàng)建動作及條件
這里需要根據(jù)你的實際情況來判定注冊的方式,標準化比較重要,條件比較好寫,建議多看看官方文檔,對于以后的規(guī)劃大有好處

3.創(chuàng)建操作
思路是添加主機--加入群組--鏈接到模板,這里其實根據(jù)你的條件而定,例如CentOS主機就劃到Linux就好了,模板也用Linux

查看效果
已經(jīng)發(fā)現(xiàn)自動上線了。

總結(jié)
這篇文章更像是利用ansible批量注冊,但實際上也是有自動化運維的思想,但我感覺自動化運維技術(shù)只是一方面,更多的是ITIL的建設(shè)、CMDB的建設(shè)以及底層的標準化才是關(guān)鍵,有了這些,你的自動化運維道路將會變得非常簡單,希望大家能通過本文舉一反三,同時對一些不太理解的技術(shù),可以自行學習,畢竟技多不壓身。