自動化運維工具應用之 SaltStack 一鍵部署zabbix環境

實驗基礎

實驗目的:

利用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.監控成功
在這裏插入圖片描述在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章