使用Salt-Formulas安装、配置zabbix

目录
  1. 手动添加formula目录
  2. 使用zabbix-formula
    1. 配置Pillar数据文件
    2. 配置top文件
    3. 执行top文件
  3. 调整web配置

作者:杨冬 欢迎转载,也请保留这段声明。谢谢!
出处:https://andyyoung01.github.io/http://andyyoung01.16mb.com/

Salt-Formulas是一些预先写好的Salt States,可以通过check out官方的formula,来进行软件的安装,配置,服务的管理等任务。本篇我们通过使用官方的zabbix-formula,来进行zabbix的安装和配置,同时简单学习一下Salt Formulas的使用。

zabbix是一个开源的系统及网络监视软件,可以对各种服务器、操作系统、网络设备等进行监控。Zabbix目前提供了自己的安装源,可以通过操作系统的包管理器进行安装。salt是一个配置管理工具,可以批量对各种操作系统及设备进行管理。之前的文章介绍过salt的安装配置,可以参考文章“salt的安装和配置”或“通过salt cloud在云端批量部署计算节点”。
这里使用的环境如下:
机器名:centos7-A, IP:192.168.71.167, 将安装zabbix-server和zabbix-agent
机器名:centos7-B, IP:192.138.71.168, 将安装zabbix-agent
其中centos7-A也是salt的master所在的机器。

手动添加formula目录

在centos7-A,也就是salt master机器上,进行如下操作:

  1. 克隆或下载zabbix-formula,mysql-formula,apache-formula存储库到某个目录中:

    1
    2
    3
    4
    5
    mkdir -p /opt/salt/formulas
    cd /opt/salt/formulas
    git clone https://github.com/saltstack-formulas/zabbix-formula.git
    git clone https://github.com/saltstack-formulas/mysql-formula.git
    git clone https://github.com/saltstack-formulas/apache-formula.git
  2. 将新添加的目录加入到master配置文件中的file_roots项中:

    1
    2
    3
    4
    5
    6
    file_roots:
    base:
    - /opt/salt/base
    - /opt/salt/formulas/zabbix-formula
    - /opt/salt/formulas/mysql-formula
    - /opt/salt/formulas/apache-formula
  3. 重启salt master。

使用zabbix-formula

根据SALT FORMULAS的官方文档,在完成手动添加formula目录后,formula应该提供一些默认的配置而立即可用。如果需要进一步的配置,大部分的formulas可以通过Pillar数据进行配置,可以参考每个Formula仓库的pillar.example文件查询可用的配置。然而对于此zabbix-formula来说,它依赖于配置好的mysql和apache的formulas,所以在上一步操作时,也下载了上述的formulas。

配置Pillar数据文件

这里我们先不配置任何Pillar数据,看看此formula提供的一些默认state是怎样的。使用state.show_sls可以查看某个state而不用实际执行,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@centos7-A salt]# salt 'centos7-A' state.show_sls zabbix.repo
centos7-A:
----------
zabbix_non_supported_repo:
...
zabbix_repo:
...
----------
baseurl:
http://repo.zabbix.com/zabbix/2.2/rhel/7/$basearch/
...
zabbix_repo_gpg_file:
...

上面省略了大部分的输出,主要看其baseurl的输出,为2.2版。如果我们想安装2.4版的zabbix,可以通过配置Pillar数据来实现。根据pillar.example文件,配置如下:

1
2
3
zabbix:
lookup:
version_repo: 2.4

刷新pillar数据后,再次使用state.show_sls查看zabbix.repo的state,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@centos7-A salt]# salt 'centos7-A' state.show_sls zabbix.repo
centos7-A:
----------
zabbix_non_supported_repo:
...
zabbix_repo:
...
----------
baseurl:
http://repo.zabbix.com/zabbix/2.4/rhel/7/$basearch/
...
zabbix_repo_gpg_file:
...

根据baseurl的输出,可以看出repo换为2.4版了。所以,几乎所有的配置都可以通过pillar来配置。
这里给出在centos7下的最终的pillar数据,大部分选项保持默认:

1
2
3
4
5
6
7
8
zabbix:
lookup:
version_repo: 2.4
zabbix-agent:
server:
- centos7-A
pidfile: /run/zabbix/zabbix_agentd.pid

上面的配置在centos7环境下,如果不加pidfile的路径,启动zabbix-agent会报错。

配置top文件

可以通过top文件来指定哪个minion可以应用哪个state。我们需要在centos7-A机器上安装zabbix-server,zabbix-frontend和zabbix-agent,在centos7-B机器上只安装zabbix-agent,所以我们在写top配置文件时,在A机器上安装所有组件,在B机器上只安装agent。top文件配置如下:

top.sls
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
base:
'*':
- zabbix.agent.repo
- zabbix.agent.conf
- zabbix.agent
'centos7-A':
- mysql.server
- mysql.client
- zabbix.mysql.conf
- zabbix.mysql.schema
- zabbix.server.repo
- zabbix.server.conf
- zabbix.server
- apache
- apache.mod_php5
- zabbix.frontend.repo
- zabbix.frontend.conf
- zabbix.frontend

由于此formula依赖于mysql-formula,而mysql-formula默认将本地root用户设定了密码,所以要通过salt对mysql进行配置的话,需要将一些连接信息加入到数据库所在机器的/etc/salt/minion文件中:

/etc/salt/minion
1
2
3
mysql.host: 'localhost'
mysql.user: 'root'
mysql.pass: '1034528272'

其中root的密码是通过命令salt 'centos7-A' state.show_sls mysql.server查询到的。
另外,在执行zabbix.mysql.schema的state过程中,在centos7环境下,没有名为“mysql-client”的软件包,导致此state执行失败(Issues),临时的解决方法参考这里

执行top文件

在上述配置都完成后,可以通过命令salt '*' state.highstate test=True先测试一下,然后去掉test=True参数将整个top文件都应用到对应的机器上。
在执行highstate命令时,由于环境配置的不同,很可能不能一次成功,根据失败的输出,进行相应配置文件的调整,然后再次执行,直到命令成功为止。

调整web配置

上面highstate执行成功后,便可以登录zabbix的web页面了。只是登录后,页面最上方会出现需要设置timezone的警告。这个配置没有在zabbix-formula中找到,可以手动修改zabbix.conf文件(文件位置在/etc/httpd/conf.d文件夹下),也可以通过salt的file.managed模块进行配置。只需要将php_value date.timezone Asia/Shanghai前面的注释去掉,然后写入希望配置的时区即可。

本篇通过zabbix-formula学习了salt-formulas的使用。由于formulas还在不断得开发,里面的有些formula还不太完善。例如nginx-formula就还没有加入对centos7的支持,导致在centos7环境下,使用它就出现报错。不过,对于学习如何使用salt进行系统管理,formulas还是提供了一些指导的作用。