文章目录
实验基础
实验目的:
利用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.监控成功