1. 准备工作:
首先,配置zabbix与saltstack的软件仓库,上至需要安装zabbix的主机上,并安装salt-minion,连接至salt-master端。然后,在另一台空闲主机上安装zabbix服务端,客户端以及web端,获取配置文件备用。
2 . Salt-master: Salt Base文件配置
/srv/salt
目录文件结构:
.
├── mariadb #数据库配置目录
│ ├── create.sql.gz #数据库配置文件
│ └── init.sls #数据库初始化及安装模块
├── top.sls # salt推送文件
├── zabbix-agent #zabbix客户端配置目录
│ ├── init.sls #zabbix客户端安装运行模块
│ └── zabbix_agentd.conf #zabbix客户端配置文件
├── zabbix-server #zabbix服务端配置目录
│ ├── init.sls #zabbix服务端安装运行模块
│ └── zabbix_server.conf #zabbix服务端配置文件
└── zabbix-web #zabbix-web组件安装配置
├── init.sls #zabbix-web组件安装运行模块
└── zabbix.conf #zabbix-web在httpd下的配置文件
-
mariadb 模块
#init.sls
db-install:
pkg.installed:
- pkgs:
- mariadb-server
- mariadb
- MySQL-python
service.running:
- name: mariadb
cmd.run:
- name: mysql -pwestos -e "DELETE FROM mysql.user WHERE User='';" && mysql -pwestos -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');" && mysql -pwestos -e "DROP DATABASE IF EXISTS test;" && mysql -pwestos -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'" && mysql -pwestos -e "FLUSH PRIVILEGES;"
- onlyif: mysql -e "show databases;"
#mysql_user.present:
#- name: root
#- password: westos
db-configure:
file.managed:
- name: /mnt/create.sql.gz
- source: salt://mariadb/create.sql.gz
mysql_database.present:
- name: zabbix
- character_set: utf8
- collate: utf8_bin
- connection_user: root
- connection_pass: westos
mysql_user.present:
- name: zabbix
- host: localhost
- password: westos
- connection_user: root
- connection_pass: westos
mysql_grants.present:
- grant: all privileges
- database: zabbix.*
- user: zabbix
- connection_user: root
- connection_pass: westos
cmd.wait:
- name: zcat /mnt/create.sql.gz | mysql -uzabbix -pwestos zabbix
- watch:
- mysql_database: db-configure
所需导入文件在安装好server主机的/usr/share/doc/zabbix-server-mysql-4.0.5/create.sql.gz
-
zabbix-agent模块
# zabbix-agent/init.sls
agent-install:
pkg.installed:
- name: zabbix-agent
file.managed:
- name: /etc/zabbix/zabbix_agentd.conf
- source: salt://zabbix-agent/zabbix_agentd.conf
- template: jinja
- context:
zabbixserver: {{ pillar['Zabbix-server'] }}
hostname: {{ grains['fqdn'] }}
service.running:
- name: zabbix-agent
- watch:
- file: agent-install
# zabbix-agent/zabbix_agentd.conf
ServerActive={{ zabbixserver }} #引用变量
Hostname={{ hostname }}
Server={{ zabbixserver }}
-
zabbix-server模块
#zabbix-server/init.sls
server-install:
pkg.installed:
- pkgs:
- zabbix-server-mysql
- zabbix-agent
file.managed:
- name: /etc/zabbix/zabbix_server.conf
- source: salt://zabbix-server/zabbix_server.conf
- template: jinja
- context:
DBPasswd: {{ pillar['DBPasswd'] }}
service.running:
- name: zabbix-server
- watch:
- file: server-install
zabbix-agent:
service.running
# zabbix-server/zabbix_server.conf
DBPassword={{ DBPasswd }} #引用变量定义server端的DBPassword
-
zabbix-web模块
# zabbix-web/init.sls
web-install:
pkg.installed:
- pkgs:
- zabbix-web-mysql
- zabbix-web
- httpd
- php
- php-mysql
file.managed:
- name: /etc/httpd/conf.d/zabbix.conf
- source: salt://zabbix-web/zabbix.conf
service.running:
- name: httpd
- watch:
- file: web-install
# zabbix-web/zabbix.conf
php_value date.timezone Asia/Shanghai # 修改时区
- 高级推送模块
top.sls
base:
'server66':
- mariadb
- zabbix-server
- zabbix-agent
- zabbix-web
3 . Salt-master: Salt Pillar文件配置![在这里插入图片描述](https://img-blog.csdnimg.cn/20210718181351822.png)
在pillar/top.sls
中引用所用的zabbix数据:
在
pillar/zabbix.sls
中定义所用的zabbix数据:
{% if grains['fqdn'] == 'server66' %}
DBPasswd: westos
Zabbix-server: 172.25.52.66
{% endif %}
3 . Salt-master推送与zabbix配置初始化
salt server66 state.highstate #高级推送至server66
访问server66的zabbix页面