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監控就完成了。