Saltstack实现zabbix监控的自动安装部署

一、Saltstack多节点推送实现zabbix监控的自动安装部署
实验环境:

主机名 ip 服务
server1 172.25.1.1 salt-master、salt-minion、mariadb数据库
server2 172.25.1.2 salt-minion、zabbix-server服务端、zabbix-agent客户端
server3 172.25.1.3 salt-minion、zabbix-web前端

思路:server1做数据库,server2做zabbix服务端与客户端,server3做前端。创建三个目录及一个top.sls文件:
三个目录:

  • zabbix-server目录里边含有server2上要部署的zabbix-server服务与zabbix-agent服务所需安装包的安装步骤及服务-配置步骤.sls文件,及files目录。files目录里边包含.sls写到的各服务配置文件。
  • zabbix-web目录里边含有server3上要部署的zabbix-web服务的所需安装包的安装步骤及服务配置步骤.sls文件,及files目录。files目录里边包含.sls写到的各服务配置文件。
  • mariadb目录里边含有server1上要部署的mariadb服务的所需安装包的安装步骤及服务配置步骤.sls文件,及files目录。files目录里边包含.sls写到的各服务配置文件。
    一个top.sls文件:
  • 指定要给哪个节点推送什么服务。

实验:
步骤一:在/srv/salt目录下创建三个目录zabbix-server、zabbix-web、mariadb。

[root@server1 salt]# cd /srv/salt/
[root@server1 salt]# mkdir zabbix-server
[root@server1 salt]# mkdir zabbix-web
[root@server1 salt]# mkdir mariadb

步骤二:在zabbix-server目录中编写服务安装配置文件并传入相应配置文件
(1)编写服务安装文件install.sls

zabbix-server-install:
  pkg.installed:
    - pkgs:
      - zabbix-server-mysql
      - zabbix-agent

  cmd.run:   #此模块的调用是为了配置阿里云仓库,为了下载所需安装包及依赖项
    - name: cd /etc/yum.repos.d/ && echo -e "[zabbix]\nname= zabbix\nbaseurl= https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/ \ngpgcheck= no " > 4.0.repo && echo -e "[update] \nname= update \nbaseurl= https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/x86_64/ \ngpgcheck= no" > update.repo && yum clean all > /dev/null
    - creates: /etc/yum.repos.d/update.repo

  file.managed:
    - name: /etc/zabbix/zabbix_server.conf
    - source: salt://zabbix-server/files/zabbix_server.conf
    - template: jinja  #调用jinja模板
    - context: 
      dbhost: {{ pillar['dbhost'] }}
      dbuser: {{ pillar['dbuser'] }}
      dbpass: {{ pillar['dbpass'] }}

  service.running:  #服务重启
    - name: zabbix-server
    - reload: true
    - watch:   #监控zabbix-server-install模块是否有变动
      - file: zabbix-server-install

zabbix-agent:  
  service.running

(2)在/srv/pillar目录下定义pillar数据变量并将文件关联到top.sls文件
pillar变量:

[root@server1 pillar]# vim zabbix.sls
{% if grains['fqdn'] == 'server2' %} #如果匹配到server2主机,则可使用以下变量
dbhost: 172.25.1.1  #我在这里定义好数据库主机
dbuser: zabbix
dbpass: zabbix
{% elif grains['fqdn'] == 'server3' %}
dbhost: 172.25.1.1
dbuser: zabbix
dbpass: zabbix
{% endif %}

关联到top.sls文件

[root@server1 pillar]# vim top.sls
base:
  '*':
    - zabbix

(3)在/srv/salt/zabbix-server/files目录下导入服务配置文件

做法:提前在某台主机上安装zabbix-server-mysql服务,将生成的配置文件/etc/zabbix/zabbix_server.conf拷贝到/srv/salt/zabbix-server/files目录下。并做如下配置:

 91 DBHost={{ dbhost }}
100 DBName=zabbix
116 DBUser={{ dbuser }}
124 DBPassword={{ dbpass }}

install.sls文件中使用了模板,调用了pillar模板变量,通过context参数,传递给source中定义的此文件中。

步骤二:在zabbix-web目录中编写服务安装配置文件并传入相应配置文件

(1)编写服务安装文件install.sls

zabbix-web-install:
  pkg.installed:   #要下载的包
    - pkgs:
      - httpd
      - zabbix-web-mysql

  cmd.run:  #配置yum源
    - name: cd /etc/yum.repos.d/ && echo -e "[centos] \nname=centos \nbaseurl= https://mirrors.aliyun.com/centos/7/os/x86_64/ \ngpgcheck=0" > centos.repo  && echo -e "[zabbix]\nname= zabbix\nbaseurl= https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/ \ngpgcheck= no " > 4.0.repo && echo -e "[update] \nname= update \nbaseurl= https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/x86_64/ \ngpgcheck= no" > update.repo && yum clean all > /dev/null
    - creates: /etc/yum.repos.d/update.repo

  file.managed:  #传送配置文件
    - name: /etc/httpd/conf.d/zabbix.conf
    - source: salt://zabbix-web/files/zabbix.conf

  service.running:  #重启httpd服务
    - name: httpd
    - reload: true
    - watch:
      - file: zabbix-web-install

(2)在/srv/salt/zabbix-server/files目录下导入服务配置文件

做法:提前在某台主机上安装zabbix-web-mysql及httpd服务,将生成的配置文件/etc/httpd/conf.d/zabbix.conf拷贝到/srv/salt/zabbix-web/files目录下。并做如下配置:

php_value date.timezone Asia/Shanghai

Saltstack实现zabbix监控的自动安装部署_第1张图片
步骤三:在mariadb目录中编写服务安装配置文件并传入相应配置文件

(1)编写服务安装文件install.sls

mariadb-install:
  pkg.installed:
    - pkgs:
      - mariadb-server
      - MySQL-python

  file.managed:
    - name: /etc/my.cnf
    - source: salt://mariadb/files/my.cnf

  service.running:
    - name: mariadb
    - watch:
      - file: mariadb-install

(2)编写服务配置文件service.sls文件

include:
  - mariadb.install

database-init:  
  cmd.run:   #【1】数据库安全初始化
    - name: mysql -e "DELETE FROM mysql.user WHERE User='';" -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');" -e "DROP DATABASE IF EXISTS test;" -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';" -e "create database zabbix;" -e "UPDATE mysql.user SET Password=PASSWORD('westos') WHERE User='root';" -e "FLUSH PRIVILEGES;" && touch /var/lib/mysql/init.lock
    - creates: /var/lib/mysql/init.lock

zabbix-init:
  file.managed:
    - name: /mnt/create.sql.gz  #zabbix数据库初始化
    - source: salt://mariadb/files/create.sql.gz

  cmd.run:   
    - name: zcat /mnt/create.sql.gz | mysql -uroot -pwestos zabbix && touch /var/lib/mysql/zabbix-init.lock
    - creates: /var/lib/mysql/zabbix-init.lock
  
  mysql_user.present:   #创建远程登陆用户zabbix
    - host: '%'
    - name: zabbix
    - password: zabbix
 
  mysql_grants.present:  #对zabbix用户授于zabbix数据库所有权限
    - grant: all privileges
    - database: zabbix.*
    - user: zabbix
    - host: '%'

【1】数据库安全初始化及创建数据库zabbix

在某台主机上安装mariadb-server后,手动安全初始化,会生成文件/usr/bin/mysql_secure_installation文件,里边含有数据库安全初始化的 SQL操作语句,可将其复制粘贴过来。

(3)在/srv/salt/mariadb/files目录下导入服务配置文件

在某台主机上安装mariadb-server,拷贝配置文件/etc/my.cnf到此目录下,并做如下修改:
Saltstack实现zabbix监控的自动安装部署_第2张图片
在某台主机上安装zabbix-server-mysql,将/usr/share/doc/zabbix-server-mysql-4.0.15/create.sql.gz zabbix数据库初始化信息拷贝到server1主机/srv/salt/mariadb/files/目录下
(4)在你要作为数据库的minion主机上,将minion端与数据库连接
在配置文件/etc/salt/minion后面追加:

mysql.host: 'localhost'
mysql.port: 3306
mysql.user: 'root'
mysql.pass: 'westos'
mysql.db: 'zabbix'
mysql.unix_socket: '/var/lib/mysql/mysql.sock'
mysql.charset: 'utf8'

注意:如果你之前在mariadb主机上安装过mariadb-server,则需要删除数据。

rm -fr /var/lib/mysql

步骤四:编写多节点推送文件/srv/salt/top.sls文件并推送

base:
  'server1':
    - mariadb.service
  'server2':  
    - zabbix-server.install
  'server3':
    - zabbix-web.install

Saltstack实现zabbix监控的自动安装部署_第3张图片
推送:

salt '*' state.highstate

成功标志
Saltstack实现zabbix监控的自动安装部署_第4张图片
Saltstack实现zabbix监控的自动安装部署_第5张图片
Saltstack实现zabbix监控的自动安装部署_第6张图片
步骤五:在网页上搜索zabbix-web所在主机
http://172.25.1.3/status
Saltstack实现zabbix监控的自动安装部署_第7张图片
Saltstack实现zabbix监控的自动安装部署_第8张图片
Saltstack实现zabbix监控的自动安装部署_第9张图片
Saltstack实现zabbix监控的自动安装部署_第10张图片
Saltstack实现zabbix监控的自动安装部署_第11张图片
Saltstack实现zabbix监控的自动安装部署_第12张图片
Saltstack实现zabbix监控的自动安装部署_第13张图片

你可能感兴趣的:(企业实战)