SaltStack自动化运维管理——一键部署zabbix监控
1. 准备工作
三台虚拟机:server1,server2,server3,关闭火墙和selinux,可以连网,并且已经完成saltstack的部署(配置过程点击这里查看)。
salt-master端:server1
salt-minion端:server2和server3
2. 搭建软件仓库
在真机中,搭建zabbix软件仓库,加快部署效率
cd zabbix/4.4/
ls
apache-tomcat-8.5.24.tar.gz php-gd-5.4.16-46.el7.x86_64.rpm zabbix-java-gateway-4.4.1-1.el7.x86_64.rpm
fping-3.10-1.el7.x86_64.rpm php-ldap-5.4.16-46.el7.x86_64.rpm zabbix-proxy-mysql-4.4.1-1.el7.x86_64.rpm
jdk-8u121-linux-x64.rpm php-mbstring-5.4.16-46.el7.x86_64.rpm zabbix-sender-4.4.1-1.el7.x86_64.rpm
oneitsm_zabbix_release-1.2.0.tar.gz php-mysql-5.4.16-46.el7.x86_64.rpm zabbix-server-mysql-4.4.1-1.el7.x86_64.rpm
percona-zabbix-templates-1.1.8-1.noarch.rpm php-pdo-5.4.16-46.el7.x86_64.rpm zabbix-web-4.4.1-1.el7.noarch.rpm
php-5.4.16-46.el7.x86_64.rpm php-xml-5.4.16-46.el7.x86_64.rpm zabbix-web-mysql-4.4.1-1.el7.noarch.rpm
php-bcmath-5.4.16-46.el7.x86_64.rpm simkai.ttf zbx_percona_mysql_template_20200312_191902.xml
php-cli-5.4.16-46.el7.x86_64.rpm zabbix-agent-4.4.1-1.el7.x86_64.rpm zbx_percona_mysql_template.xml
php-common-5.4.16-46.el7.x86_64.rpm zabbix-get-4.4.1-1.el7.x86_64.rpm
3. 配置仓库目录
在server1中:
cd /srv/salt
mkdir repos
cd repos/
vim zabbix.sls
zabbix:
pkgrepo.managed:
- baseurl: http://172.25.1.250/zabbix/4.4
- gpgcheck: 0
4. 配置数据库
在server1中:
mkdir /srv/salt/mariadb
cd /srv/salt/mariadb
vim install.sls
db-install:
pkg.installed:
- pkgs:
- mariadb-server
- mariadb
- MySQL-python
service.running:
- name: mariadb
cmd.run:
- name: mysql -e "DELETE FROM mysql.user WHERE User='';" && mysql -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');" && mysql -e "DROP DATABASE IF EXISTS test;" && mysql -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'" && mysql -e "FLUSH PRIVILEGES;"
- onlyif: mysql -e "show databases;"
mysql_user.present:
- name: root
- password: redhat
db-configure:
file.managed:
- name: /mnt/create.sql.gz
- source: salt://mariadb/files/create.sql.gz
mysql_database.present:
- name: zabbix
- character_set: utf8
- collate: utf8_bin
- connection_user: root
- connection_pass: redhat
mysql_user.present:
- name: zabbix
- host: localhost
- password: westos
- connection_user: root
- connection_pass: redhat
mysql_grants.present:
- grant: all privileges
- database: zabbix.*
- user: zabbix
- connection_user: root
- connection_pass: redhat
cmd.wait:
- name: zcat /mnt/create.sql.gz | mysql -predhat zabbix
- watch:
- mysql_database: db-configure
在这里,我们需要提前得到create.sql.gz 并且放指定目录/srv/salt/mariadb/files
中(提前在某台主机上安装zabbix获取/usr/share/doc/zabbix-server-mysql-4.4.1/create.sql.gz
)
files目录下为要导入的数据库,将zabbix数据导入到数据库中的文件 create.sql.gz
cd /srv/salt/mariadb/files/
ls
5. 配置zabbix-server
mkdir /srv/salt/zabbix-server
vim /srv/salt/zabbix-server/install.sls
include:
- repos.zabbix
server-install:
pkg.installed:
- pkgs:
- zabbix-server-mysql
- zabbix-agent
file.managed:
- name: /etc/zabbix/zabbix_server.conf
- source: salt://zabbix-server/files/zabbix_server.conf
- template: jinja
- context:
dbpasswd: {{ pillar['DBPASSWD'] }}
service.running:
- name: zabbix-server
- watch:
- file: server-install
zabbix-agent:
service.running
这里我们同样需要提前得到zabbix_server.conf(/etc/zabbix/zabbix_server.conf
)放到指定目录/srv/salt/zabbix-server/files
中,并进行修改:
cd /srv/salt/zabbix-server/files/
ls
vim zabbix_server.conf
124 DBPassword={{ dbpasswd }}
6. 配置zabbix-agent
mkdir /srv/salt/zabbix-agent
cd /srv/salt/zabbix-agent
vim install.sls
include:
- repos.zabbix
agent-install:
pkg.installed:
- name: zabbix-agent
file.managed:
- name: /etc/zabbix/zabbix_agentd.conf
- source: salt://zabbix-agent/files/zabbix_agentd.conf
- template: jinja
- context:
zabbixserver: {{ pillar['ZABBIX-SERVER'] }}
hostname: {{ grains['fqdn'] }}
service.running:
- name: zabbix-agent
- watch:
- file: agent-install
这里我们同样需要提前得到zabbix_server.conf(/etc/zabbix/zabbix_server.conf
)放到指定目录/srv/salt/zabbix-agent/files
中,并进行修改:
cd /srv/salt/zabbix-agent/files/
ls
vim zabbix_agentd.conf
98 Server={{ zabbixserver }}
139 ServerActive={{ zabbixserver }}
150 Hostname={{ hostname }}
7. 配置zabbix-web
mkdir /srv/salt/zabbix-web
cd /srv/salt/zabbix-web
vim install.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/files/zabbix.conf
service.running:
- name: httpd
- watch:
- file: web-install
这里我们同样需要提前得到zabbix.conf(/etc/httpd/conf.d/zabbix.conf
)放到指定目录/srv/salt/zabbix-web/files
中,并进行修改:
cd /srv/salt/zabbix-web/files/
ls
vim zabbix.conf
20 php_value date.timezone Asia/Shanghai #修改时区
8. 编写top文件
可以将上述的推送整合到top文件中,一键推送:
vim /srv/salt/top.sls
base:
'server2':
- mariadb.install
- zabbix-server.install
- zabbix-web.install
- zabbix-agent.install
'server3':
- zabbix-agent.install
9. 编写pillar目录
mkdir /srv/pillar
cd /srv/pillar/
vim top.sls
base:
'*':
- zabbix
vim zabbix.sls
{% if grains['fqdn'] == 'server2' %}
DBPASSWD: redhat
{% else %}
ZABBIX-SERVER: 172.25.1.2
{% endif %}
10. 一键推送部署
salt '*' state.highstate
浏览器输入访问:http://172.25.1.2/zabbix
登陆成功:
修改后:
添加监控主机:
到此,使用SaltStack一键部署zabbix监控就完成了。