欢迎光临白事网
详情描述

方案一:使用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年全球机场过境免签服务设施体验与测评
赵州桥的千年智慧:隋代敞肩拱设计如何实现减重与防洪
赵州桥的千年智慧:隋代敞肩拱设计如何实现减重与防洪
诸暨市精准获客助手#网站优化公司,专业开发团队
诸暨市精准获客助手#网站优化公司,专业开发团队
汕头市办理殡葬服务-丧葬服务车出租,丧事告别会布置
汕头市办理殡葬服务-丧葬服务车出租,丧事告别会布置
公司部分业务停工停产,可以将员工随意调到其他城市或岗位吗?
公司部分业务停工停产,可以将员工随意调到其他城市或岗位吗?
认养一棵城市里的古树名木,需要承担哪些具体的养护责任和义务?
认养一棵城市里的古树名木,需要承担哪些具体的养护责任和义务?
商丘市AI数字人制作短视频&网站开发服务,企业解决方案
商丘市AI数字人制作短视频&网站开发服务,企业解决方案
2026年购买首套住房,契税和印花税的具体计算方式和缴纳标准是怎样的?
2026年购买首套住房,契税和印花税的具体计算方式和缴纳标准是怎样的?
因公司业务调整导致原有岗位取消,变更劳动合同内容时员工可以如何协商?
因公司业务调整导致原有岗位取消,变更劳动合同内容时员工可以如何协商?
泸州市小视频制作#网站运营服务,多年专业建站经验
泸州市小视频制作#网站运营服务,多年专业建站经验
Python第三方库Emoji库的使用教程
Python第三方库Emoji库的使用教程
如果考虑成为“全职儿女”,需要和家庭事先协商并明确哪些关键事项?
如果考虑成为“全职儿女”,需要和家庭事先协商并明确哪些关键事项?
脑机接口等新技术在未来的应用,可能会催生哪些前所未有的个人数字消费?
脑机接口等新技术在未来的应用,可能会催生哪些前所未有的个人数字消费?
数字人民币钱包可以像银行卡一样,向其他人的钱包或银行卡直接转账吗?
数字人民币钱包可以像银行卡一样,向其他人的钱包或银行卡直接转账吗?
如何证明自己符合享受带薪年休假以及未休年假工资的资格条件?
如何证明自己符合享受带薪年休假以及未休年假工资的资格条件?
包头市白事一条龙服务|白事灵棚布置,是您的放心选择
包头市白事一条龙服务|白事灵棚布置,是您的放心选择
长春市殡葬服务热线电话-丧葬一条龙,丧事告别会服务
长春市殡葬服务热线电话-丧葬一条龙,丧事告别会服务