首页 » 运维 » 正文

如何为zabbix创建自己的的ansible module

作为一个运维狗,zabbix这个强大的工具肯定知道吧,因为我们大部分的时间都在zabbix上:添加监控,ack报警,我们要创建一个个的template,一个个的item,和一个个的trigger

当然,我们可以直接web页面添加,但是,如果有一天,zabbix彻底坏了,重新创建上千条监控的手动工作量你是的懂的…..

既然不向手动创建,肯定是想把这些item,template, trigger, 通过文件管理起来,然后通过github来管理版本,然后通过ansible-playbook来统一创建,下次有人告诉你zabbix挂了的时候,不用着急,ansible-palybook一跑,半个小时给你一个全新的一模一样的zabbix(数据库得自己备份)

进入正题: ansible 其实是提供监控模块的 http://docs.ansible.com/ansible/list_of_monitoring_modules.html

我们可以用这个现成的模块来做一些基本的操作:例如增加一个mantain:

或者更新一个主机信息:http://docs.ansible.com/ansible/zabbix_host_module.html

但是,毕竟,这些是有限的,例如,我们想创建一个item, 创建一个模版,官方是没有提供的,这个时候,我们就要自己写,要自己写module,首先确定了如下:

1: zabbix 提供了相应的api

2:python 可以调去api

满足以上两个条件之后,自己写module就不成问题了

首先,我们要创建一个zabbix api文件,用来负责建立连接(参见:https://github.com/openshift/openshift-tools/blob/prod/openshift_tools/zbxapi/__init__.py)

目录结构:

然后就是我们的module了(这个地方要注意,module的名字,就是你的文件名)https://github.com/openshift/openshift-tools/tree/prod/ansible/roles/lib_zabbix/library

目录结构:

,目录结构里有很多其它方法,全是我们组在使用的module,全部在github上,大家可以自行前往(我大Redhat! 威武霸气)

然后就是具体使用了:

 

我们将写好的变量存放到/var下的yml文件, 引入之后,通过with_items来进行循环,直接调用,zabbix就自动创建了

调用这个方法的时候,已经传入template变量了

 

具体的存储模版是

https://github.com/openshift/openshift-tools/blob/prod/ansible/roles/os_zabbix/vars/template_openshift_master.yml

 

 

 

 

 

 

Zhiming Zhang

Senior devops at Appannie
一个奔跑在运维路上的胖子
Zhiming Zhang

Latest posts by Zhiming Zhang (see all)

本文共 2 个回复

  • 衣皇后 2017/06/05 16:10

    相当精彩的博客!

  • 广州网站建设 2018/07/04 10:15

    很不错,收藏了

Comments are closed.