凌峰创科服务平台

zabbix 监控服务器硬件

Zabbix 作为一款功能强大的开源监控解决方案,广泛应用于企业级 IT 基础设施的监控与管理,在服务器硬件监控领域,Zabbix 通过灵活的插件机制、丰富的模板支持和自定义能力,能够实现对服务器硬件状态的全面、实时监控,确保系统稳定运行并提前预警潜在故障,本文将详细介绍如何利用 Zabbix 监控服务器硬件的核心组件、实施步骤及关键配置要点。

zabbix 监控服务器硬件-图1
(图片来源网络,侵删)

Zabbix 监控服务器硬件的核心组件

服务器硬件监控主要涵盖 CPU、内存、磁盘、电源、风扇、温度传感器等物理组件,Zabbix 通过以下核心功能实现对这些组件的监控:

  1. Zabbix Agent:部署在被监控服务器上的轻量级代理,负责收集本地硬件指标(如 CPU 使用率、内存占用、磁盘 I/O 等)并上报给 Zabbix Server,支持 Zabbix Agent(原生)、Zabbix Agent2(改进版,支持更多插件)以及 SNMP 协议(用于网络设备或无 Agent 环境)。

  2. 模板(Template):Zabbix 提供预定义模板(如 Template OS Linux、Template HW Linux),包含监控项、触发器、图形等预设配置,可直接链接到主机,快速实现硬件监控,Template OS Linux 包含 CPU 负载、内存使用率、磁盘空间等监控项。

  3. 自定义监控项:对于硬件厂商特有的指标(如服务器温度、电源状态),可通过编写自定义脚本(如 Shell、Python)或利用硬件管理接口(如 IPMI、 Dell OpenManage)实现数据采集,并在 Zabbix 中定义自定义监控项。

    zabbix 监控服务器硬件-图2
    (图片来源网络,侵删)
  4. 触发器(Trigger):基于监控项数据设置阈值条件,当指标超出阈值时触发告警,设置“CPU 使用率持续 5 分钟超过 90%”或“磁盘剩余空间小于 10%”等触发器,及时通知管理员。

  5. 可视化:通过图形(Graph)、仪表盘(Dashboard)展示硬件指标趋势,直观呈现服务器运行状态,可创建 CPU 使用率时间序列图、磁盘 I/O 柱状图等。

服务器硬件监控的关键指标及实现

CPU 监控

CPU 是服务器的核心组件,需监控使用率、负载、温度等指标。

  • 监控项
    • CPU 使用率(用户态、系统态、空闲)
    • CPU 负载(1分钟、5分钟、15分钟平均值)
    • CPU 温度(需硬件支持,如通过 sensors 命令或 IPMI 获取)
  • 实现方式
    • 使用 Zabbix Agent 自带监控项(如 system.cpu.util),通过 vfs.fs.size 监控磁盘空间,system.load 监控负载。
    • 自定义脚本:通过 /proc/stat 计算 CPU 使用率,或利用 lm-sensors 采集温度数据,定义为 UserParameter

内存监控

内存不足会导致服务器性能下降,需监控总内存、已用内存、空闲内存及交换分区使用情况。

zabbix 监控服务器硬件-图3
(图片来源网络,侵删)
  • 监控项
    • 内存总容量、已用容量、使用率
    • 交换分区(Swap)使用率
  • 实现方式
    • Zabbix Agent 自带 vm.memory.size 监控项,通过 mode=used 获取已用内存,mode=total 获取总内存。
    • 触发器示例:内存使用率 > 90% 持续 10 分钟触发告警。

磁盘及存储监控

磁盘性能和容量直接影响服务器数据存储能力,需监控磁盘使用率、I/O 速度、错误率等。

  • 监控项
    • 磁盘分区使用率、剩余空间
    • 磁盘 I/O 读写速率(ops/s、B/s)
    • 磁盘健康状态(如 SMART 信息,需 smartctl 工具)
  • 实现方式
    • 使用 vfs.fs.size 监控磁盘空间,vfs.fs.dev[*] 监控磁盘 I/O。
    • 自定义脚本:通过 smartctl -a /dev/sda 获取磁盘 SMART 属性,提取 Reallocated_Sector_Count 等关键指标。

硬件健康状态监控(服务器级)

对于刀片服务器、机架式服务器等,需监控电源状态、风扇转速、温度传感器等硬件组件。

  • 监控项
    • 电源状态(在线/离线)
    • 风扇转速(RPM)
    • 温度传感器(CPU 温度、主板温度)
  • 实现方式
    • IPMI 集成:通过 Zabbix Agent 调用 ipmitool 命令采集数据,
      UserParameter=system.power.status,/ipmitool fru | grep "Power Supply" | awk '{print $4}'
    • 硬件厂商管理工具:如 Dell 的 omreport、HP 的 hpasmcli,编写脚本提取硬件状态数据。

网络硬件监控

虽然网络监控通常归为网络设备范畴,但服务器网卡状态(如带宽使用、错误包数)也需纳入硬件监控。

  • 监控项
    • 网卡流量(入站/出站)
    • 网络错误包数(CRC 错误、丢包)
  • 实现方式
    • 使用 net.if.in[*]net.if.out[*] 监控网卡流量,net.if.err[*] 监控错误包数。

Zabbix 硬件监控实施步骤

  1. 环境准备

    • 安装 Zabbix Server(建议 6.0+ 版本)及 Zabbix Agent。
    • 确保被监控服务器与 Zabbix Server 网络连通,开放 Agent 端口(默认 10050)。
  2. 部署 Agent

    • 在 Linux 服务器上安装 Zabbix Agent:
      rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
      yum install zabbix-agent
    • 配置 Agent 配置文件 /etc/zabbix/zabbix_agentd.conf,设置 Server(Zabbix Server IP)和 Hostname(与 Zabbix Web 界面主机名一致)。
  3. 创建主机并链接模板

    • 登录 Zabbix Web 界面,创建主机(Configuration → Hosts),填写主机名、IP 地址等基本信息。
    • 链接预定义模板(如 Template OS Linux),或自定义模板(包含硬件监控项、触发器等)。
  4. 配置自定义监控项(可选)

    • 对于硬件特有指标,在 Agent 端定义 UserParameter,例如监控 CPU 温度:
      UserParameter=cpu.temp,sensors | grep "Core 0" | awk '{print $3}' | cut -d'+' -f2
    • 在 Zabbix Web 界面创建监控项(Configuration → Items),选择“Zabbix Agent”类型,键名为 cpu.temp
  5. 设置触发器与告警

    • 为关键监控项配置触发器,
      • 名称:CPU 温度过高
      • 条件:{Template OS Linux:cpu.temp.last()}>70(温度超过 70℃)
      • 告警级别: Disaster
    • 配置告警媒介(邮件、钉钉、微信等),确保故障信息及时推送。
  6. 可视化与报表

    • 创建图形(Monitoring → Graphs),选择监控项生成趋势图。
    • 通过仪表盘(Dashboards)汇总多台服务器的硬件状态,实现统一监控视图。

常见硬件监控问题及优化

  1. 数据采集延迟

    • 原因:Agent 与 Server 网络不稳定、监控项采集间隔过长。
    • 优化:调整监控项采集间隔(如关键指标设为 30 秒),启用 Zabbix Agent 的主动模式(Active Mode)减少 Server 端压力。
  2. 自定义监控项数据异常

    • 原因:脚本逻辑错误、权限不足(如 ipmitool 需 root 权限执行)。
    • 优化:测试脚本单独执行,确保返回数值格式正确;配置 Agent sudo 权限,避免权限问题。
  3. 告警风暴

    • 原因:触发器阈值设置不合理、频繁波动。
    • 优化:使用触发器表达式中的 nodata() 函数处理数据缺失,或增加“持续时间”条件(如 avg() > 90 for 5m)。

相关问答 FAQs

Q1:如何通过 Zabbix 监控服务器硬盘的 SMART 健康状态?
A1:可通过自定义监控项实现,首先安装 smartmontools 工具(yum install smartmontools),然后编写脚本提取 SMART 属性,

UserParameter=smart.health,/usr/sbin/smartctl -H /dev/sda | grep "SMART overall-health" | awk '{print $NF}'

在 Zabbix 中创建监控项,键名为 smart.health,并设置触发器(如状态为 FAILED 时告警)。

Q2:Zabbix 如何监控服务器的电源状态(如电源是否掉电)?
A2:若服务器支持 IPMI,可通过 ipmitool 命令采集电源状态,在 Agent 端定义:

UserParameter=power.status,/usr/bin/ipmitool fru | grep "Power Supply" | awk '{print $4}' | grep -c "Yes"

监控项返回 1 表示电源正常,0 表示异常,配置触发器:{power.status.last()}=0 时触发告警。

分享:
扫描分享到社交APP
上一篇
下一篇