基于Ansible实现Zabbix自动部署

2019-03-07 05:22范永合杨澎涛朱应科孙剑湛林福付巧娟
电脑知识与技术 2019年35期

范永合 杨澎涛 朱应科 孙剑 湛林福 付巧娟

摘要:随着云计算技术的发展,许多企业单位都建有私有云或共享中心,用于资源集中共享使用并提供服务。随着计算机节点的线性增多,应用服务膨胀增长,导致系统运维压力极大增加。如何利用各种自动化运维监控工具,提高运维质量、效率和水平,保障应用服务的稳定高效,成为面临的紧要问题。为此,本文基于Ansible实现Zabbix自动部署,帮助运维人员进行自动化运维监控平台的快速构建和优化管理,有效提升云中心智能运维的管理水平。

关键词:Ansible;Zabbix;自动部署

中图分类号:TP391 文献标识码:A

文章编号:1009-3044(2019)35-0000-00

随着云计算技术的发展,资源中心的节点规模极其庞大,设备类型多样,操作系统版本也不尽相同。从安全、运维等方面需要对这些设备实现实时监控。现许多企业采用开源的Zabbix方案来构建自己的监控平台,该方案需要被监控设备安装客户端,传统部署方式需要手工安装客户端,烦琐费时,同时由于操作系统多样性导致人工配置过程复杂易出错。由于应用环境复杂,各企业监控关注点各有侧重,而Zabbix自带的监控模板及参数无法满足实际应用需求。这就需要各企业根据自身需求进行客户端参数定制,从原型测试到快速部署需要一种自动化运维技术进行支持。

为此采用Ansible技术来实现Zabbix客户端及配置相关参数的自动分发部署。通过该方案,可以实现对海量监控节点的自动化部署,参数优化修正,应用群组定制监控方案等功能。

1 技术实现

需要考虑的难点问题包括:针对不同的主机操作系统安装相应的客户端版本;实现客户端配置文件定制及自动化生成;指定应用群组主机定制功能分发。

实现该方案的基础准备包括:安装配置实现控制对应主机的Ansible控制主机;配置安装Zabbix客户端的YUM环境;已安装调试正常的Zabbix环境及测试脚本。

(1)不同操作系统安装相应客户端

解决方法有多种,其中之一:对主机操作系统版本信息获取并分组,然后对应的每组主机安装相应的repo文件,最后操纵相应主机安装客户端。

yum模块用于yum包管理软件的管理。主要参数为name和state。name:指定进行操作的软件包的名字;state:表示进行的操作,可选择installed(安装)、latest(安装最新版本),删除软件包可选择absent、removed。示例:ansible 192.168.1.1-myum-a“name=zabbix-agent state=installed”安装zabbix-agent服务

setup模块用于主机信息获取。使用setup模块查机器的所有facts信息,facts信息包括远程主机发行版,IP地址,CPU核数,系统架构,主机名等等,使用filter来查看指定信息。示例:ansible all-m setup—a”filter=ansible_distribution_major_ver-sion”獲取所有主机的操作系统版本号

group_by模块仅能在playbook中使用,使用facts获取的信息组合加工后实现主机分组。示例:group_by: key=machine_{{ansible_machine}}可以实现主机体系架构分组。

当然也可以使用特定host文件或文件中指定分组的方式,达到类似目的。这种情况需要运维人员对主机组情况非常了解。仅使用host文件方法的话,运维人员需要多了解主机组与操作系统关系映射。

(2)客户端配置文件的定制及自动生成参数

Zabbix客户端安装后,需要配置zabbix-agent.conf文件中相应参数,才能正常使用客户端。需要配置的参数最少要包括:

Server=192.X.X.X

#填写zabbix服务器IP地址

ServerActive=192.X.X.X

#填写zabbix服务器IP地址

Hostname=test01

#zabbix_agent客户端计算机名(被监控主机)

在海量节点添加操作中,如果使用手工操作,简直不可想象。解决方法就是自动获取机器名并修改配置文件。

template模块基于模板方式生成一个文件复制到远程主机。template使用Jinjia2格式作为文件模版,进行文档内变量的替换。主要参数为src和dest。src:在Ansible控制器上的Jinja2格式化模板的路径。dest:将模板渲染到远程机器上的位置。group:目标文件属组。mode:目标文件的权限模式,模式可以被指定为符号模式(例如,u+rwx或u=rw,g=r,o=r)。示例:

-name: copy template

template:

src: test.j2

dest: /tmp/test.conf

可以实现对应conf配置文件的模板化复制。

Jinja2是基于python的模板引擎。使用"{%%}"对控制语句进行包含,比如"if"控制语句、"for"循环控制语句等都需要包含在"{%%}"中。可以直接使用ansible的facts获取的变量参数。示例:Hostname={{ansible_hostname))可以直接匹配对应远端主机的机器名。

2 实例演示

(1)操作系统分组后安装客户端

执行对应playbook,将所有主机节点按照版本号分组,复制对应版本的zabbix客户端repo源配置文件,然后执行安装最新版本的操作。如果体系建设完整的话,可以更新YUM服务器端的软件源后,直接再次执行playbook剧本达到更新客户端的目的。

(2)客户端配置文件定制及自动化部署

通过执行对应playbook,完成客户端配置文件的定制分发,服务的启动及使能。同时也可以部署企业定制化的功能脚本,以完善扩展Zabbix平台的功能。

3 总结

随着云中心节点数量的不断增长和应用复杂度的增加,原有的手工运维已经不能满足新形势下的需求。因此需要充分利用各种自动化运维工具,运用智能运维思路来建设维护云中心的体系,提升运维质量效率。基于Ansible实现Zabbix自动部署,做到了安装Zabbix客户端、修改Agent配置文件的自动化,简化了客户端安装步骤,智能配置参数,实现海量节点的批量配置修改,提高计算机运维监控人员的工作效率。

参考文献:

[1]吴夫丹.基于云平台的服务器监控系统设计[D].西安:西安工业大学,2014.

[2]李晓晖,基于Zabbix的应用监控系统[J].价值丁程,2018,37(28).

[3]孙春雨.基于Linux集群的Ansible部署与自动化管理研究[J].中国管理信息化,2019(9):165-166.

[4]周萌,林国策,杨厚云.CENTOS下ZABBIX的配置与使用[J].北京信息科技大学学报:自然科学版,2015,30(1):90-94.

[5]通过ansible自动化部署zabbix应用.https://www.cnblogs.com/flytor/p/11440822.html

[6]ansible官方文档.https://docs.ansible.com/ansible/latest/index.html

[7]zabbix官方文档.https://www.zabbix.com/documentation/4.0/zh/manual

【通联编辑:唐一东】

收稿日期:2019-08-20

作者简介:范永合(1974-),男,山东东营人,大学,工程师,主要从事勘探开发领域的软硬件运维管理工作。