zabbix

目录

基本概念

核心基本原理

关键特性

[Zabbix 的意义和价值](#Zabbix 的意义和价值)

基本部署

[‌一、Zabbix-Agent 部署步骤(以 Linux 为例)‌](#‌一、Zabbix-Agent 部署步骤(以 Linux 为例)‌)

[‌1. 安装 Zabbix-Agent‌](#‌1. 安装 Zabbix-Agent‌)

[‌2. 配置 Zabbix-Agent‌](#‌2. 配置 Zabbix-Agent‌)

[‌3. 启动服务‌](#‌3. 启动服务‌)

[‌二、Zabbix-Proxy 部署步骤‌](#‌二、Zabbix-Proxy 部署步骤‌)

[‌1. 安装 Zabbix-Proxy 和数据库‌](#‌1. 安装 Zabbix-Proxy 和数据库‌)

[‌2. 创建数据库‌](#‌2. 创建数据库‌)

[‌3. 导入初始数据‌](#‌3. 导入初始数据‌)

[‌4. 配置 Proxy‌](#‌4. 配置 Proxy‌)

[‌5. 启动服务‌](#‌5. 启动服务‌)

[‌三、Zabbix-Server 端配置‌](#‌三、Zabbix-Server 端配置‌)

‌关键概念解释‌

‌验证部署‌


基本概念

核心基本原理

Zabbix 的工作流程可以概括为‌数据采集 -> 数据处理 -> 告警与通知 -> 数据存储 -> 数据可视化‌。

  1. ‌**数据采集 (Collection):**‌

    • ‌**监控对象 (Hosts):**‌ 被监控的实体,如物理服务器、虚拟机、交换机、路由器、应用程序实例等。
    • ‌**监控项 (Items):**‌ 定义在每个 Host 上需要监控的具体指标。例如:服务器的 CPU 使用率、内存使用量、磁盘空间、网络接口流量;数据库的连接数、查询速率;Web 应用的响应时间;应用程序的特定日志条目等。
    • 采集方式 (Agents/Agentless):
      • ‌**Zabbix Agent (被动/主动模式):**‌ 一个轻量级代理程序,部署在被监控主机上。它接收 Server 的指令(被动模式)或主动向 Server 报告数据(主动模式)。
      • Agentless 监控: ‌ 无需在目标主机安装 Agent。
        • ‌**SNMP (简单网络管理协议):**‌ 广泛用于监控网络设备(路由器、交换机、防火墙)、打印机、UPS 等。
        • ‌**JMX (Java 管理扩展):**‌ 监控 Java 应用程序和 JVM 的性能。
        • ‌**IPMI (智能平台管理接口):**‌ 监控服务器硬件的健康状态(温度、风扇转速、电压等)。
        • ‌**自定义脚本/命令:**‌ 通过 SSH/Telnet 远程执行命令或脚本获取数据。也可在 Zabbix Server/Proxy 上本地执行。
        • ‌**HTTP/HTTPS 检查:**‌ 监控 Web 服务的可用性、响应时间、状态码、页面内容。
        • ‌**数据库监控:**‌ 通过数据库原生协议(如 MySQL, PostgreSQL, Oracle, SQL Server 等)执行 SQL 查询获取数据。
        • ‌**日志文件监控:**‌ 监控本地或远程日志文件中的特定模式或事件。
  2. ‌**数据处理 (Processing):**‌

    • 采集到的原始数据(通常是数值或文本)被发送给 ‌Zabbix Server‌(核心处理引擎)。
    • 预处理 (Pre-processing): ‌ 在存储或进一步处理之前,Server 可以对原始数据进行各种操作:
      • 单位转换(如 Bytes to MB)。
      • 正则表达式匹配/提取。
      • 数值运算(增量、差值、平均值等)。
      • JSON/XML/XPath 提取。
      • 数据校验/阈值检查。
      • 数据压缩/聚合(历史数据)。
      • 脚本执行(自定义数据处理)。
    • 触发器 (Triggers): ‌ 这是 Zabbix 的核心逻辑判断单元。Trigger 定义了基于监控项数据(或监控项之间的逻辑组合)需要满足的条件以及持续多长时间时,系统状态会发生改变(从 OK 变为 PROBLEM,反之亦然)。
      • 例如:{HostA:system.cpu.load[avg1].last()}>5 表示如果 HostA 的 1 分钟平均负载持续大于 5,则触发 PROBLEM 状态;{HostB:net.if.in[eth0].avg(5m)}>{$IF_IN_ETH0_MAX} 表示如果 HostB 的 eth0 接口 5 分钟内平均入站流量超过预定义的阈值 {$IF_IN_ETH0_MAX},则触发 PROBLEM。
      • 支持复杂的逻辑表达式(AND, OR, NOT)。
  3. ‌**告警与通知 (Alerting & Notification):**‌

    • 当 Trigger 的状态从 OK 变为 PROBLEM(或根据配置,也可能在 PROBLEM 持续状态变化或恢复时),Zabbix 会生成一个 ‌**事件 (Event)**‌。
    • 动作 (Actions): ‌ 定义了在特定事件发生时要执行的操作。
      • 发送通知: ‌ 通过多种媒介发送告警信息。Zabbix 原生支持:
        • 邮件 (SMTP)
        • SMS (需要通过短信网关或脚本)
        • 即时消息 (Jabber/XMPP)
        • 自定义脚本 (可集成 Slack、钉钉、企业微信、PagerDuty、Opsgenie 等几乎所有第三方告警平台或 Webhook)
      • ‌**执行远程命令:**‌ 在目标主机上自动尝试修复问题(需谨慎配置)。例如:自动重启服务、清理临时文件。
  4. ‌**数据存储 (Storage):**‌

    • 数据库: ‌ Zabbix Server 需要后端数据库来存储其配置信息和所有采集到的监控数据。支持:
      • ‌**关系型数据库:**‌ MySQL, PostgreSQL, Oracle, SQLite (仅适用于小型测试环境)。
      • ‌**时序数据库 (强烈推荐用于大规模部署):**‌ TimescaleDB (基于 PostgreSQL 的扩展), ClickHouse。时序数据库特别擅长高效存储和查询时间序列数据(监控指标),性能远超传统关系型数据库。
    • 数据分类:
      • ‌**配置数据:**‌ Hosts, Items, Triggers, Actions, Users, Templates 等的定义。
      • ‌**历史数据 (History):**‌ 监控项采集到的原始数值或文本记录。通常保留较短时间(如几天)。
      • ‌**趋势数据 (Trends):**‌ 历史数据的最小值、最大值、平均值、计数等聚合数据(按小时)。保留时间较长(如数月甚至数年),用于长期趋势分析和报告。
      • ‌**事件数据 (Events):**‌ Trigger 状态变化记录。
      • ‌**告警数据 (Alerts):**‌ 发送通知的记录。
  5. ‌**数据可视化与报告 (Visualization & Reporting):**‌

    • ‌**Web 前端:**‌ 提供用户友好的图形界面,用于配置、查看监控数据和告警。
    • ‌**图形 (Graphs):**‌ 单个或多个监控项数据的可视化图表(折线图、饼图、柱状图等)。
    • ‌**聚合图形 (Screens):**‌ 将多个图形、地图、其他信息元素组合到一个屏幕上。
    • ‌**幻灯片 (Slide Shows):**‌ 自动轮播多个聚合图形。
    • ‌**Dashboard (仪表盘):**‌ 新版前端提供的更灵活、直观的数据展示面板,可以自由拖放各种小部件(Widgets),如图形、问题列表、主机状态、地图等。
    • ‌**地图 (Maps):**‌ 创建网络拓扑图或自定义布局图,图标状态实时反映监控对象状态。
    • ‌**报告 (Reports):**‌ 生成关于系统可用性、SLA、容量趋势等的定期报告(PDF, HTML 等格式)。

关键特性

  1. ‌**开源免费:**‌ 核心功能完全免费开源,拥有活跃的社区和支持。
  2. 高度可扩展:
    • 分布式监控: ‌ 通过 ‌Zabbix Proxy‌ 实现。Proxy 部署在远程位置或网络区域,负责收集该区域内的数据,进行初步处理和缓冲,然后将数据转发给中央 Zabbix Server。这大大减轻了 Server 的负载,提高了横向扩展能力,并优化了跨 WAN 的流量。
    • ‌**节点:**‌ 更高级的分布式模式,支持多个独立的 Zabbix 实例(节点)协同工作,共享配置和数据视图。
    • ‌**多 Server:**‌ 主要用于高可用性(HA)部署。
  3. ‌**灵活的数据采集:**‌ 支持 Agent(主动/被动)、SNMP、IPMI、JMX、HTTP/HTTPS、脚本、日志文件、数据库查询等多种方式。
  4. 强大的告警机制:
    • 基于灵活的 Trigger 表达式。
    • 支持告警升级机制(如果问题未解决,逐步通知更高级别人员)。
    • 丰富的通知渠道和灵活的 Action 配置(过滤条件、维护周期等)。
    • 告警确认(Acknowledgment)功能。
  5. 自动发现 (Auto-Discovery):
    • ‌**网络发现:**‌ 自动扫描 IP 网络段,发现新设备并根据规则自动添加监控。
    • ‌**设备自动发现:**‌ 自动识别设备类型(如 SNMP OID 识别)并应用相应的监控模板。
    • ‌**文件系统、网卡、SNMP OID 等发现:**‌ 自动发现主机上的特定实体(如分区、网卡、SNMP 指标)并创建对应的监控项。
  6. ‌**模板 (Templates):**‌ 核心的复用机制。将一组预定义的监控项、触发器、图形、发现规则、Web 场景等封装为一个模板。可以方便地批量应用到多个相似的主机上,大大简化配置和管理工作。官方和社区提供大量现成的模板。
  7. 预测性监控: ‌ Trigger 支持 forecast(), timeleft() 等函数,可以预测磁盘空间何时耗尽、流量何时达到峰值等。
  8. ‌**丰富的 API:**‌ 提供全面的 JSON-RPC API,允许自动化配置管理、集成外部系统、开发自定义界面等。
  9. ‌**权限控制:**‌ 提供基于用户角色(User Roles)和用户组(User Groups)的细致权限管理,控制用户对不同主机、监控项的访问和操作权限。
  10. ‌**审计日志:**‌ 记录用户在 Web 界面上的操作(配置变更),便于追溯和审计。
  11. ‌**高可用性:**‌ 支持通过配置数据库集群、Server 的主动-被动(Active-Passive)集群来实现 HA,减少单点故障。

Zabbix 的意义和价值

  1. ‌**保障业务连续性:**‌ 及时发现服务器宕机、服务中断、资源耗尽等问题,快速通知相关人员处理,最大限度减少业务中断时间,提高系统可用性。
  2. 提升运维效率:
    • ‌**集中监控:**‌ 统一平台监控所有 IT 组件,告别分散的工具和登录。
    • ‌**自动化:**‌ 自动发现、模板应用、告警通知显著减少人工配置和巡检工作量。
    • ‌**快速定位问题:**‌ 清晰的告警信息、丰富的可视化视图和拓扑图帮助快速识别问题根源。
    • ‌**主动运维:**‌ 预测性监控和趋势分析帮助在问题影响用户之前主动处理(如提前扩容磁盘)。
  3. ‌**优化资源利用:**‌ 通过长期监控数据(趋势数据),分析 CPU、内存、磁盘、网络等资源的实际使用情况和增长趋势,为容量规划、资源优化和采购决策提供坚实的数据依据,避免资源浪费或不足。
  4. ‌**满足合规性要求:**‌ 详细的监控日志、审计日志和历史数据,可用于证明系统的运行状态、SLA 达成情况,满足某些行业或内部的合规审计要求。
  5. ‌**性能瓶颈分析:**‌ 深入监控应用层、数据库层、系统层、网络层的性能指标,帮助识别和解决性能瓶颈,提升用户体验。
  6. 降低运维成本:
    • 开源免费,节省商业监控软件的巨额许可费用。
    • 提高效率,相当于减少了所需的人力成本。
    • 预防性维护减少了故障造成的经济损失。
  7. ‌**强大的社区和生态系统:**‌ 活跃的社区提供大量的模板、插件、文档和支持,降低了使用门槛和解决问题的成本。

基本部署

‌**一、Zabbix-Agent 部署步骤(以 Linux 为例)**‌

1. 安装 Zabbix-Agent
复制代码
# 添加 Zabbix 官方仓库(以 Ubuntu/Debian 为例) 
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb 
dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb 
apt update 
  • wget:下载 Zabbix 官方仓库的安装包。

  • dpkg -i:安装仓库配置包。

  • apt update:更新软件包列表。

    安装 Zabbix-Agent apt install zabbix-agent -y

  • apt install:安装 Zabbix-Agent 服务。

2. 配置 Zabbix-Agent

编辑配置文件 /etc/zabbix/zabbix_agentd.conf

复制代码
Server=192.168.1.100 # Zabbix-Server 的 IP 地址 
ServerActive=192.168.1.100 # 主动模式下的 Server IP 
Hostname=web-server-01 # 被监控主机的唯一标识(需与 Server 中配置一致) 
  • Server:允许哪些 Zabbix-Server 拉取数据(被动模式)。
  • ServerActive:Agent 主动上报数据的 Server 地址。
  • Hostname:必须与 Zabbix-Server 中注册的主机名一致。
3. 启动服务
复制代码
systemctl restart zabbix-agent systemctl enable zabbix-agent 
  • restart:重启服务使配置生效。
  • enable:设置开机自启。

二、Zabbix-Proxy 部署步骤

1. 安装 Zabbix-Proxy 和数据库
复制代码
# 安装 Proxy 和 MySQL(可选 PostgreSQL) 
apt install zabbix-proxy-mysql -y 
apt install mysql-server -y 
  • zabbix-proxy-mysql:Proxy 的 MySQL 版本(也可选 zabbix-proxy-pgsql)。
2. 创建数据库
复制代码
mysql -uroot -p 
CREATE DATABASE zabbix_proxy CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; 
CREATE USER 'zabbix_proxy'@'localhost' IDENTIFIED BY 'password'; 
GRANT ALL PRIVILEGES ON zabbix_proxy.* TO 'zabbix_proxy'@'localhost'; 
FLUSH PRIVILEGES; exit 
  • 创建专用于 Proxy 的数据库和用户。
3. 导入初始数据
复制代码
zcat /usr/share/doc/zabbix-proxy-mysql/schema.sql.gz | mysql -uzabbix_proxy -p zabbix_proxy 
  • 导入 Proxy 所需的数据库表结构。
4. 配置 Proxy

编辑 /etc/zabbix/zabbix_proxy.conf

复制代码
Server=192.168.1.100 # Zabbix-Server 的 IP 
Hostname=proxy-01 # Proxy 的唯一标识(需与 Server 中配置一致) 
DBName=zabbix_proxy # 数据库名 
DBUser=zabbix_proxy # 数据库用户 
DBPassword=password # 数据库密码 
  • Server:Proxy 连接的 Zabbix-Server 地址。
  • Hostname:必须与 Server 中注册的 Proxy 名称一致。
5. 启动服务
复制代码
systemctl restart zabbix-proxy systemctl enable zabbix-proxy 

三、Zabbix-Server 端配置

  1. 添加 Agent 主机‌:

    • 在 Web 界面中,进入 ‌Configuration > Hosts > Create Host‌。
    • 填写 Hostname(与 Agent 配置一致)、IP,并链接模板(如 Linux by Zabbix agent)。
  2. 添加 Proxy‌:

    • 进入 ‌Administration > Proxies > Create Proxy‌。
    • 填写 Proxy name(与 Proxy 配置一致)、Proxy mode(主动/被动)。

关键概念解释

  • Zabbix-Agent ‌:
    • 被动模式‌:Server 主动向 Agent 请求数据。
    • 主动模式‌:Agent 主动将数据发送给 Server。
  • Zabbix-Proxy ‌:
    • 用于分布式监控,减轻 Server 负载。
    • 本地缓存数据,避免因网络问题丢失。

验证部署

  • Agent 验证 ‌:

    复制代码
    zabbix_agentd -p | grep ListenPort # 检查端口(默认 10050) 
  • Proxy 验证 ‌:

    复制代码
    tail -f /var/log/zabbix/zabbix_proxy.log # 查看日志是否连接 Server
相关推荐
_風箏6 小时前
Zabbix【部署 02】Zabbix-Java-Gateway安装配置使用(使用Zabbix-Java-Gateway通过JMX监控Java应用程序实例分享)
zabbix
_風箏6 小时前
Zabbix【部署 03】zabbix-agent2安装配置使用(zabbix-agent2监控docker实例分享)
zabbix
SRETalk4 天前
监控系统如何选型:Zabbix vs Prometheus
zabbix·prometheus
婷儿z6 天前
部署 Zabbix 企业级分布式监控
分布式·zabbix
再看扣你眼10 天前
部署 Zabbix 企业级分布式监控笔记
笔记·分布式·zabbix
行止610 天前
部署 Zabbix 企业级分布式监控
分布式·zabbix
果子⌂11 天前
Zabbix 企业级高级应用
linux·运维·nginx·zabbix
归梧谣12 天前
部署Zabbix企业级分布式监控
分布式·zabbix
forestqq15 天前
zabbix平台无法删除已停用主机的处理案例
运维·服务器·zabbix
菜萝卜子16 天前
【Zabbix】Ansible批量部署ZabbixAgent
ansible·zabbix