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
相关推荐
朱包林21 小时前
ansible批量部署zabbix客户端
linux·运维·服务器·云计算·ansible·zabbix
眠修21 小时前
部署 Zabbix 企业级分布式监控
笔记·分布式·zabbix
付出不多21 小时前
Zabbix企业级分布式监控
分布式·zabbix
Pseudo…21 小时前
部署zabbix企业级分布式监控
分布式·zabbix
YUNYINGXIA1 天前
部署Zabbix企业级分布式监控
zabbix
别骂我h1 天前
部署 Zabbix 企业级分布式监控
网络·分布式·zabbix
528301 天前
部署 Zabbix 企业级分布式监控
分布式·zabbix
小周学学学2 天前
zabbix服务器告警处理
zabbix
2401_831501735 天前
Linux之Zabbix分布式监控篇(二)
数据库·分布式·zabbix