使用ansible自动化安装zabbix3.0

[背景]

最近需要使用ansible自动化部署zabbix的server端和agent端,所以研究了一下。去年的时候,曾经接触过ansible,尝试用来部署openstack,但是那时候刚刚开始实习,啥也没鼓捣出来,后期会继续鼓捣。


[环境]
(1)OS版本:CentOS7
(2)zabbix版本:3.0.4(当前最新版本)
(3)数据库:Mysql
(4)网络环境:无法连接外网

(5)zabbix安装方式:由于没网,采用源码包编译安装。


[安装参考]
我的安装脚本都是按照之前博客的步骤来写的,链接:

zabbix server:http://blog.csdn.net/wn_hello/article/details/52121826

zabbix agent:http://blog.csdn.net/wn_hello/article/details/52121888


[代码详细]
这里主要是server端的代码解释,agent端比较简单,就不解释了。

执行方式:先ansible-playbook main.yml,然后在http://ip/zabbix上进行GUI安装,然后执行ansible-playbook after-setup.yml。

(1)mian.yml是各种playbook的集合,使用include让playbook的执行顺序更加明显,代码如下:

---
- hosts: zabbix
  become: yes
  vars_files:
    - default_vars.yml
  tasks:
    - name: install many packages
      include: prepare.yml
      tags:
        - setup1

    - name: set environment parameters
      include: set-env.yml
      tags:
        - setup2

    - name: import tables to zabbix database
      include: set-zabbix.yml
      tags:
        - setup3

    - name: install zabbix && modify config
      include: install-zabbix.yml
      tags: 
        - setup4

  handlers:
    - include: handlers.yml

(2)default_vars.yml是变量文件,可以在其中修改参数。

(3)prepare.yml主要是安装一堆package,主要是basic、mysql、php和apache的package。因为我的虚拟机是裸机,一开始安装zabbix以及后期报错缺了不少包,所以我决定一股脑都安装起来。

(4)set-env.yml是防火墙端口设置、selinux设置、数据库创建等。

(5)set-zabbix.yml是复制源码包、导入数据库表。

(6)install-zabbix.yml是编译安装zabbix、php配置和系统配置等。

(7)after-setup.yml的代码如下:

---
#Step5: after GUI setup
- hosts: zabbix
  remote_user: root
  vars_files:
    - default_vars.yml
  tasks:
    - name: copy zabbix.conf.php
      template: src=zabbix.conf.php.j2 dest={{html_dir}}/conf/zabbix.conf.php
      tags:
        - zabbix-conf-php
        - others
      notify:
        - restart zabbix_server
  handlers:
    include: handlers.yml

主要功能是,在gui安装完后,配置zabbix.conf.php文件,这一步不能提前做,否则无法登陆zabbix。

[模块详细]
一开始写脚本的时候,我几乎都使用的shell模块,然后用creates避免重复执行shell;
后期使用的模块主要有:
(1)shell:使用&&相当于管道符,执行多个shell命令
(2)lineinfile:确认文件中是否包含某行
(3)mysql_db:需要依赖MySQL-python包,用于创建数据库
(4)mysql_user:需要依赖MySQL-python包,用于创建数据库user
(5)service:用于服务重启
(6)file:可以用于创建文件、文件夹、创建软链接之类的
我觉得模块虽好,但是使用的功能范围较小,我比较懒,大多数还是使用的shell。

另外tags这个属性也不错,在跑playbook时,可以使用tags,控制需要跑的task。用法:ansible-playbook main.yml --tags="setup1"

[ansible tips]
ansible的官方文档非常全面,但是我觉得直接看文档还是很boring的,可以先看看别人写的代码,然后相应的去文档中查找不理解的地方。

(1)使用yum install ansible安装,若不成功则可能需要配置epel 源。安装完毕,可使用ansible --version命令,查看安装的版本。
(2)hosts文件的默认路径是/etc/ansible/,在hosts中定义机器的别名、ip等,分配机器在不同的[group]中,常用的参数有ansible_ssh_host、ansible_ssh_private_key_file、ansible_ssh_port、ansible_ssh_user。这些参数也可以在ansible.cfg中定义,参数大同小异。
(3)ssh公钥登录或者密钥文件配置完后,使用ansible -m ping 机器别名或群组名,eg:
# ansible -m ping zabbix
vagrant4 | success >> {
    "changed": false,
    "ping": "pong"
}
输出"ping": "pong",即代表连接成功。
(4)运行playbook的命令是ansible-playbook test.yml,编写playbook时要注意缩进空格,"-",":"等字符。另外,playbook对于双引号好像没有严格要求使用,转义字符\建议不要使用,其实也没必要使用。
(5)ansible具有幂等性,若执行playbook过程中报错,不会回滚。再次执行playbook时,已执行成功的task一般也不会重复操作。(这里的不会重复操作的task是指使用ansible模块的task,如果使用shell命令,可以使用creates关键字避免重复操作。)

[代码地址]
我写的脚本放在github上,可能还会有修改。
zabbix安装的链接:https://github.com/hello-wn/ansible_zabbix
另外github上也有写的很好的源码,是dj-wasabi的,对系统和数据库兼容性都非常好,而且直接跳过了web的GUI安装,安装成功后可以直接登陆。我在CentOS7上跑下来,基本上只有缺一两个安装包和mysql没启动的一些小bug,但是需要网络,从zabbix官网上下载rpm包;在ubuntu14.04上跑下来,全程没有报错,但是server的log里面报错了,可能也是缺包的问题。
dj-wasabi的github链接:https://github.com/dj-wasabi/ansible-zabbix-server



  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Zabbix 是一个企业级分布式开源监控解决方案。  Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。  Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用。  Zabbix 是免费的。Zabbix 是根据 GPL 通用公共许可证的第二版编写和发布的。这意味着产品源代码是免费发布的,可供公共使用。 本课程主要讲解以下方面: 1.  网络设备的监控,如 Dell R420、Juniper ssg5等。2.  Linux 和 Windows 服务器的监控。3.  应用服务的监控,如 httpd、nginx等。4.  Zabbix 代理的配置与使用以及 Zabbix 的多种告警方式。 注意:该课程,需要有一定的 zabbix 和 Linux 基础,建议您先把>和>看完,再看此套课程,这个是在它的基础上进行讲解的。                                                                   

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值