标题 | 基于Ansible实现Zabbix自动部署 |
范文 | 范永合 杨澎涛 朱应科 孙剑 湛林福 付巧娟 摘要:随着云计算技术的发展,许多企业单位都建有私有云或共享中心,用于资源集中共享使用并提供服务。随着计算机节点的线性增多,应用服务膨胀增长,导致系统运维压力极大增加。如何利用各种自动化运维监控工具,提高运维质量、效率和水平,保障应用服务的稳定高效,成为面临的紧要问题。为此,本文基于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-),男,山东东营人,大学,工程师,主要从事勘探开发领域的软硬件运维管理工作。 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。