文章目錄
實驗基礎
實驗目的:
利用saltstack構建server-agent架構的zabbix環境,主要指定server端,並添加一個agent端, 其他的agent端可根據需要多添加幾個。
在本篇文章裏,搭建的zabbix環境中,ser4是zabbix-server,ser3是zabbix-agent。
實驗環境:
172.25.2.3 ser2 saltstack-master端(提前做好)
172.25.2.4 ser3 saltstack-minion端 (提前做好)
172.25.2.5 ser4 saltstack-minion端 (提前做好)
172.25.2.2 真機 構建zabbix軟件包的本地倉庫
關閉幾臺虛擬機的firewalld selinux
寫好各自的/etc/hosts解析文件
實驗前的準備:
1.在真機中,將所需的zabbix的軟件包放在/var/www/html/zabbix
目錄中,並進行依賴性創建。
2.在實驗中需要用到4個配置文件,因此我是先手動部署了一遍zabbix,獲得了配置文件,大家可以自行下載,但是文件是必需的。
指定本地yum倉庫
在部署中,也可以選擇網絡安裝,但是這裏爲了加快效率,選擇本地yum,所需的包之前已經放在真機。
[root@ser2 salt]# cd repos/
[root@ser2 repos]# ls
zabbix.sls
[root@ser2 repos]# cat zabbix.sls
zabbix:
pkgrepo.managed:
- baseurl: http://172.25.2.250/zabbix/
- gpgcheck: 0
2.
創建數據庫(用於zabbix-server)
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: westos
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: 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 -pwestos zabbix
- watch:
- mysql_database: db-configure
在這裏,我們需要提前得到create.sql.gz 並且放指定目錄。
1.2.嘗試將mariadb數據庫安裝在ser4
3.在ser4中發現推過去的目錄
編寫/srv/salt/top.sls文件
此文件作用是將後面的軟件等進行一次推。(高級推)
base:
'ser4':
- mariadb.install
- zabbix-server.install
- zabbix-web.install
'ser3':
- zabbix-agent.install
1.
爲ser4部署zabbix-server
創建目錄zabbix-server,裏面寫zabbix-server的sls文件和所需的配置文件
[root@ser2 zabbix-server]# ls
files install.sls
[root@ser2 zabbix-server]# cat 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
1.
2.
vim zabbix_agentd.conf 修改zabbix-server配置文件(jinja模板形式)
DBPassword={{ dbpasswd }}
爲ser3和ser4部署zabbix-agent
[root@ser2 zabbix-agent]# cat 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
1.
2.修改配置文件
98 Server={{ zabbixserver }}
139 ServerActive={{ zabbixserver }}
150 Hostname={{ hostname }}
爲ser4部署zabbix-web界面
[root@ser2 zabbix-web]# cat install.sls
include:
- repos.zabbix
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
2.vim install.sls
編寫配置文件,更改時區就可以
編寫pillar目錄
[root@ser2 pillar]# ls
top.sls zabbix.sls
[root@ser2 pillar]# cat top.sls
base:
'*':
- zabbix
[root@ser2 pillar]# cat zabbix.sls
{% if grains['fqdn'] == 'ser4' %}
DBPASSWD: westos
{% else %}
ZABBIX-SERVER: 172.25.2.5 //zabbix-server的主機ip
{% endif %}
1.2.vim zabbix.sls
至此,配置文件編寫完成,現在進行部署測試。
部署測試及排錯
發現報錯
原因是實驗開始前,已經向ser4裝了mariadb,手動刪除之後再次測試。
再次測試,成功部署。
默認的密碼是zabbix
進入監控頁面發現zabbix-server處於非運行狀態,在ser4上查看端口也沒有發現10051,但是查看zabbix-server的狀態是running的,查看日誌發現問題,原來是數據沒有連接成功。
在ser2上查看配置文件,發現是自己的數據庫密碼設置錯誤,將密碼更改爲westos,之後,刪除ser4上的數據庫及其配置文件,重新推送一次。
再次測試,發現恢復正常。
添加zabbix-agent
將ser3添加至zabbix系統中。
1.添加主機ser3
2.添加模板
3.監控成功