Zabbix由浅入深之主机自动化注册(Linux篇),


近些年来,自动化运维越来越受流行,Zabbix也不例外。我们都知道Zabbix在监控系统类都是通过侵入式agent实现,那么随着机器的增多,会面临两个问题,一个是安装的问题,另外一个是升级的问题,第一个很好解决,可以通过封装镜像的方式,将Zabbix的agent集成进去,第二个则需要一台台登录升级,比较麻烦,另外我们需要在前端一台台加,所以自动化注册可以大大减少这类的工作。

正文

环境

  • Zabbix版本:5.4
  • Ansible版本:2.9.23
  • 系统版本:CentOS 8.2

Ansible安装

ansible具体是干什么用的,就不细展开了,可以自行查阅互联网。

  1. ####CentOS 8#### 
  2. dnf -y install epel-release 
  3. dnf -y install ansible 
  4. ####CentOS 7#### 
  5. yum -y install epel-release 
  6. yum -y install ansible 

配置Ansible免密登录

该篇文章会以playbook的方式操作,

1.生成本地密钥(公钥和私钥)

ssh-keygen -t rsa

Zabbix由浅入深之主机自动化注册(Linux篇)

生成本地密钥,/root/.ssh目录下

2.编写yml文件

  1. vi key.yml 
  2.  
  3. --- 
  4. - hosts: all 
  5.   tasks: 
  6.     - name: No Secret Login 
  7.       authorized_key: user=root key="{{ lookup('file', '~/.ssh/id_rsa.pub') }}"  state=present 
Zabbix由浅入深之主机自动化注册(Linux篇)

注意格式不要错误

3.配置ansible hosts文件

由于传递免密公钥到对方需要SSH登录,所以这里需要带密码的变量,另外格式为如下格式,IP为你测试机器的IP,密码为测试机器的密码

  1. vi /etc/ansible/hosts 
  2. [kasar] 
  3. 192.168.31.152 
  4. [kasar:vars] 
  5. ansible_ssh_pass="123" 
Zabbix由浅入深之主机自动化注册(Linux篇)

配置一览

4.关闭key检测

由于初次登录需要信任指纹,会出现异常,所以需要关闭,将下图的该字段#去掉

  1. vi /etc/ansible/ansible.cfg 
Zabbix由浅入深之主机自动化注册(Linux篇)

关闭key检查

5.ansible执行命令

  1. ansible-playbook key.yml 
Zabbix由浅入深之主机自动化注册(Linux篇)

测试正常

编写安装zabbix agent脚本

写脚本的时候要提前规划好是否存在Proxy的情况,如果有需要在脚本里提前写入,假设没有,也可以通过ansible统一修改配置即可。

通过下载好的安装包安装(方式一)

  1. vi install.ssh 
  2. #!/bin/sh 
  3. yum -y localinstall /tmp/zabbix-agent2-5.4.2-1.el7.x86_64.rpm 
  4. hostname=`hostname` 
  5. sed -i 's/Server=127.0.0.1/Server=192.168.31.137/g' /etc/zabbix/zabbix_agent2.conf 
  6. sed -i 's/ServerActive=127.0.0.1/ServerActive=192.168.31.137/g' /etc/zabbix/zabbix_agent2.conf 
  7. sed -i 's/Hostname=Zabbix server/Hostname='$hostname'/g' /etc/zabbix/zabbix_agent2.conf 
  8. systemctl restart zabbix-agent2 
  9. systemctl enable zabbix-agent2 

通过yum安装(方式二)

  1. vi install.ssh 
  2. #!/bin/sh 
  3. 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 
  4. yum -y install zabbix-agent2 
  5. hostname=`hostname` 
  6. sed -i 's/Server=127.0.0.1/Server=192.168.31.137/g' /etc/zabbix/zabbix_agent2.conf 
  7. sed -i 's/ServerActive=127.0.0.1/ServerActive=192.168.31.137/g' /etc/zabbix/zabbix_agent2.conf 
  8. sed -i 's/Hostname=Zabbix server/Hostname='$hostname'/g' /etc/zabbix/zabbix_agent2.conf 
  9. systemctl restart zabbix-agent2 
  10. systemctl enable zabbix-agent2 

Ansible推送安装

如果无法访问外网,就采用本地安装包方式(注意格式)

Zabbix agent的包的下载可以自行前往官网查看

  1. --- 
  2. - hosts: kasar 
  3.   tasks: 
  4.     - name: copy 
  5.       copy: 'src=/root/.ssh/install.sh dest=/tmp/ owner=root group=root mode=755' 
  6.     - name: copy 
  7.       copy: 'src=/tmp/zabbix-agent2-5.4.2-1.el7.x86_64.rpm  dest=/tmp/ owner=root group=root mode=644' 
  8.     - name: shell  
  9.       shell: "/tmp/install.sh" 

yum安装方式(注意格式)

  1. --- 
  2. - hosts: kasar 
  3.   tasks: 
  4.     - name: copy 
  5.       copy: 'src=/root/.ssh/install.sh dest=/tmp/ owner=root group=root mode=755' 
  6.     - name: shell  
  7.       shell: "/tmp/install.sh" 

执行操作

  1. ansible-playbook install.yml 
Zabbix由浅入深之主机自动化注册(Linux篇)

本地化安装

Zabbix前端操作

1.找到自动注册选项,如下图

Zabbix由浅入深之主机自动化注册(Linux篇)

2.创建动作及条件

这里需要根据你的实际情况来判定注册的方式,标准化比较重要,条件比较好写,建议多看看官方文档,对于以后的规划大有好处

Zabbix由浅入深之主机自动化注册(Linux篇)

3.创建操作

思路是添加主机--加入群组--链接到模板,这里其实根据你的条件而定,例如CentOS主机就划到Linux就好了,模板也用Linux

Zabbix由浅入深之主机自动化注册(Linux篇)

查看效果

已经发现自动上线了。

Zabbix由浅入深之主机自动化注册(Linux篇)

总结

这篇文章更像是利用ansible批量注册,但实际上也是有自动化运维的思想,但我感觉自动化运维技术只是一方面,更多的是ITIL的建设、CMDB的建设以及底层的标准化才是关键,有了这些,你的自动化运维道路将会变得非常简单,希望大家能通过本文举一反三,同时对一些不太理解的技术,可以自行学习,毕竟技多不压身。

相关内容