欢迎光临白事网
详情描述

方案一:使用Salt States部署Zabbix(推荐)

1. 目录结构规划

/srv/salt/
├── top.sls
├── zabbix/
│   ├── init.sls
│   ├── server.sls
│   ├── agent.sls
│   ├── web.sls
│   ├── files/
│   │   ├── zabbix_server.conf
│   │   ├── zabbix_agentd.conf
│   │   ├── apache.conf
│   │   └── zabbix.conf.php
│   └── templates/
│       └── zabbix_agentd.conf.jinja

2. 核心State文件配置

zabbix/init.sls - 基础组件安装:

# 安装基础依赖
zabbix-deps:
  pkg.installed:
    - pkgs:
      - wget
      - gcc
      - make
      - mysql-devel
      - net-snmp-devel
      - curl-devel
      - libxml2-devel

# 添加Zabbix仓库
zabbix-repo:
  pkgrepo.managed:
    - humanname: Zabbix Repository
    - name: zabbix
    - baseurl: http://repo.zabbix.com/zabbix/5.0/rhel/{{ grains['osmajorrelease'] }}/x86_64/
    - gpgcheck: 1
    - gpgkey: http://repo.zabbix.com/RPM-GPG-KEY-ZABBIX-A14FE591
    - enabled: 1

zabbix/server.sls - Zabbix服务器:

include:
  - zabbix

# 安装Zabbix Server
zabbix-server-pkg:
  pkg.installed:
    - name: zabbix-server-mysql
    - refresh: True

# 安装Zabbix前端
zabbix-web-pkg:
  pkg.installed:
    - name: zabbix-web-mysql
    - refresh: True

# 配置Zabbix Server
zabbix-server-config:
  file.managed:
    - name: /etc/zabbix/zabbix_server.conf
    - source: salt://zabbix/files/zabbix_server.conf
    - template: jinja
    - defaults:
      db_host: {{ salt['pillar.get']('zabbix:db:host', 'localhost') }}
      db_name: {{ salt['pillar.get']('zabbix:db:name', 'zabbix') }}
      db_user: {{ salt['pillar.get']('zabbix:db:user', 'zabbix') }}
      db_password: {{ salt['pillar.get']('zabbix:db:password', '') }}
    - require:
      - pkg: zabbix-server-pkg

# 初始化数据库
zabbix-db-init:
  cmd.run:
    - name: |
        mysql -h {{ pillar['zabbix']['db']['host'] }} -u {{ pillar['zabbix']['db']['user'] }} -p{{ pillar['zabbix']['db']['password'] }} -e "CREATE DATABASE IF NOT EXISTS {{ pillar['zabbix']['db']['name'] }} CHARACTER SET utf8 COLLATE utf8_bin;"
        zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -h {{ pillar['zabbix']['db']['host'] }} -u {{ pillar['zabbix']['db']['user'] }} -p{{ pillar['zabbix']['db']['password'] }} {{ pillar['zabbix']['db']['name'] }}
    - creates: /var/lib/mysql/zabbix/.db_initialized
    - require:
      - pkg: zabbix-server-pkg
      - pkg: mariadb-server

# 启动服务
zabbix-server-service:
  service.running:
    - name: zabbix-server
    - enable: True
    - watch:
      - file: zabbix-server-config

zabbix/agent.sls - Zabbix Agent:

include:
  - zabbix

# 安装Agent
zabbix-agent-pkg:
  pkg.installed:
    - name: zabbix-agent
    - refresh: True

# 配置Agent
zabbix-agent-config:
  file.managed:
    - name: /etc/zabbix/zabbix_agentd.conf
    - source: salt://zabbix/templates/zabbix_agentd.conf.jinja
    - template: jinja
    - defaults:
      server: {{ salt['pillar.get']('zabbix:server:ip', '127.0.0.1') }}
      server_active: {{ salt['pillar.get']('zabbix:server:ip', '127.0.0.1') }}
      hostname: {{ grains['id'] }}
    - require:
      - pkg: zabbix-agent-pkg

# 启动Agent服务
zabbix-agent-service:
  service.running:
    - name: zabbix-agent
    - enable: True
    - watch:
      - file: zabbix-agent-config

3. Pillar配置

/srv/pillar/zabbix.sls

zabbix:
  version: "5.0"
  server:
    ip: "192.168.1.100"
    port: "10051"
  db:
    host: "localhost"
    name: "zabbix"
    user: "zabbix"
    password: "secure_password"
  web:
    timezone: "Asia/Shanghai"
    admin_pass: "admin123"

4. Top文件配置

/srv/salt/top.sls

base:
  'zabbix-server':
    - match: grain
    - zabbix.server
    - zabbix.web

  'zabbix-agent':
    - match: grain
    - zabbix.agent

  'db*':
    - match: glob
    - mariadb

方案二:使用Salt Formula(更规范)

1. 使用官方或社区Formula

安装Zabbix Formula:

# 使用GitFS或手动下载
cd /srv/formulas
git clone https://github.com/saltstack-formulas/zabbix-formula

2. 配置Pillar

/srv/pillar/zabbix/init.sls

zabbix:
  agent:
    enabled: true
    server: 192.168.1.100
    serveractive: 192.168.1.100
    hostname: {{ grains['id'] }}
    listenport: 10050

  server:
    enabled: true
    dbhost: localhost
    dbname: zabbix
    dbuser: zabbix
    dbpassword: secure_password
    listenport: 10051

  web:
    enabled: true
    dbhost: localhost
    dbname: zabbix
    dbuser: zabbix
    dbpassword: secure_password
    timezone: Asia/Shanghai

3. 应用部署

# 部署Zabbix Server
salt 'zabbix-server' state.apply zabbix.server

# 部署Zabbix Agent到所有主机
salt '*' state.apply zabbix.agent

# 部署完整环境
salt 'zabbix-server' state.apply zabbix

常用命令

# 测试连接
salt '*' test.ping

# 检查状态
salt 'zabbix-server' state.show_sls zabbix.server

# 仅安装软件包
salt 'zabbix-agent*' pkg.install zabbix-agent

# 重启服务
salt 'zabbix-server' service.restart zabbix-server
salt 'zabbix-agent*' service.restart zabbix-agent

# 查看日志
salt 'zabbix-server' cmd.run "tail -f /var/log/zabbix/zabbix_server.log"

最佳实践建议

环境分离:使用不同的Pillar文件区分dev/staging/prod环境 版本控制:将States和Pillar文件纳入Git版本控制 配置模板:使用Jinja模板动态生成配置文件 监控Salt自身:部署Zabbix监控Salt Master和Minion状态 自动化测试:使用Test Kitchen或Vagrant测试States

故障排查

# 查看详细输出
salt-call state.apply zabbix.agent -l debug

# 检查配置文件
salt 'zabbix-agent' file.search /etc/zabbix/zabbix_agentd.conf "Server="

# 验证服务状态
salt 'zabbix-server' cmd.run "systemctl status zabbix-server"

这种部署方式可以快速、一致地部署Zabbix监控系统,并且易于维护和扩展。

相关帖子
不同城市间关于父母随迁落户的具体执行细则,主要差异体现在哪里?
不同城市间关于父母随迁落户的具体执行细则,主要差异体现在哪里?
多地发放的文旅消费券具体能用来做什么,可以用来预订酒店和门票吗?
多地发放的文旅消费券具体能用来做什么,可以用来预订酒店和门票吗?
2026年全球机场过境免签服务设施体验与测评
2026年全球机场过境免签服务设施体验与测评
赵州桥的千年智慧:隋代敞肩拱设计如何实现减重与防洪
赵州桥的千年智慧:隋代敞肩拱设计如何实现减重与防洪
诸暨市精准获客助手#网站优化公司,专业开发团队
诸暨市精准获客助手#网站优化公司,专业开发团队
安庆市外贸网站建设#品牌网站制作设计,专业建站
安庆市外贸网站建设#品牌网站制作设计,专业建站
丹东市殡葬礼仪服务公司-丧葬礼仪服务公司,陵园白事服务
丹东市殡葬礼仪服务公司-丧葬礼仪服务公司,陵园白事服务
为什么在同样的气温下,有风的日子感觉更凉快,无风时却闷热难耐?
为什么在同样的气温下,有风的日子感觉更凉快,无风时却闷热难耐?
学法减分真的能有效帮助驾驶员减免记分吗?它的实际效果如何评估?
学法减分真的能有效帮助驾驶员减免记分吗?它的实际效果如何评估?
2026年社区景观和公共设施,应该如何考察其实际维护与使用状况?
2026年社区景观和公共设施,应该如何考察其实际维护与使用状况?
日照市企业获客软件&网站制作设计服务,一站式建站服务
日照市企业获客软件&网站制作设计服务,一站式建站服务
湖州市丧葬一站式服务|丧事追悼会,一流的质量
湖州市丧葬一站式服务|丧事追悼会,一流的质量
如何确认自己是否被纳入“免申即享”范围,从而避免错过应有权益?
如何确认自己是否被纳入“免申即享”范围,从而避免错过应有权益?
从环保角度深入分析,电子书真的比纸质书更有利于可持续发展吗?
从环保角度深入分析,电子书真的比纸质书更有利于可持续发展吗?
如何具体地表达对礼物的喜爱,才能让对方真切感受到你的真诚感谢?
如何具体地表达对礼物的喜爱,才能让对方真切感受到你的真诚感谢?
茂名市精准获客#网站设计建设,模板建站
茂名市精准获客#网站设计建设,模板建站
对比单一票价,阶梯式票价优惠在公平性与运营可持续性上是如何取得平衡的?
对比单一票价,阶梯式票价优惠在公平性与运营可持续性上是如何取得平衡的?
洛阳市高效获客软件&模版网站开发,提供一站式建站服务
洛阳市高效获客软件&模版网站开发,提供一站式建站服务
公摊面积部分的物业费与取暖费缴纳标准,未来是否有更精细化的核算趋势?
公摊面积部分的物业费与取暖费缴纳标准,未来是否有更精细化的核算趋势?
在经济转型背景下,传统产业技能人才的薪酬如何实现平稳过渡与增长?
在经济转型背景下,传统产业技能人才的薪酬如何实现平稳过渡与增长?