使用Salt-Formulas安装、配置zabbix
作者:杨冬 欢迎转载,也请保留这段声明。谢谢!
出处: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机器上,进行如下操作:
克隆或下载zabbix-formula,mysql-formula,apache-formula存储库到某个目录中:
12345mkdir -p /opt/salt/formulascd /opt/salt/formulasgit clone https://github.com/saltstack-formulas/zabbix-formula.gitgit clone https://github.com/saltstack-formulas/mysql-formula.gitgit clone https://github.com/saltstack-formulas/apache-formula.git将新添加的目录加入到master配置文件中的file_roots项中:
123456file_roots:base:- /opt/salt/base- /opt/salt/formulas/zabbix-formula- /opt/salt/formulas/mysql-formula- /opt/salt/formulas/apache-formula重启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而不用实际执行,例如:
上面省略了大部分的输出,主要看其baseurl的输出,为2.2版。如果我们想安装2.4版的zabbix,可以通过配置Pillar数据来实现。根据pillar.example文件,配置如下:
刷新pillar数据后,再次使用state.show_sls查看zabbix.repo的state,如下:
根据baseurl的输出,可以看出repo换为2.4版了。所以,几乎所有的配置都可以通过pillar来配置。
这里给出在centos7下的最终的pillar数据,大部分选项保持默认:
上面的配置在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文件配置如下:
由于此formula依赖于mysql-formula,而mysql-formula默认将本地root用户设定了密码,所以要通过salt对mysql进行配置的话,需要将一些连接信息加入到数据库所在机器的/etc/salt/minion文件中:
其中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还是提供了一些指导的作用。