跳到主要内容

用夜莺监控 IPMI

通过 IPMI 读取服务器带外的温度、风扇、电压、电源和传感器状态,本地或远程 BMC 都能采。

最后校对于

IPMI 插件从 ipmi_exporter 移植而来,原理是执行 FreeIPMI 的一系列命令并把输出转换成指标:温度、风扇转速、电压、功耗、各传感器的健康状态,以及机箱电源状态。这些数据来自 BMC,操作系统挂了也能读到。

可以在服务器本机采集,也可以在一台采集机上配置多个远端 BMC 的地址和账号集中采集。前提是 IPMI 本身已经配置正确、ipmimonitoring 这类命令能拿到输出,否则插件没有数据可转。

模板里有什么​

  • 3 张仪表盘,共 31 个面板
  • 4 条告警规则,每条附处置步骤
  • 19 条指标说明
  • Categraf 采集配置:input.ipmi

怎么接入​

  1. 安装 Categraf,把下面的配置放到 conf/input.ipmi/conf.toml,按实际地址和凭据改好后重启 Categraf。启动日志里出现 input: local.ipmi started 就说明插件已加载。

    # Read metrics from the bare metal servers via freeipmi
    [[instances]]
    # target指定是本地采集还是远程采集
    #target="localhost"
    # 指定采集的用户名和密码,这里务必保证ipmi命令能获取正确输出,不是网上查到一个用户名 密码就可以。
    #user = "user"
    #pass = "1234"

    # ipmi协议版本,支持1.5 和 2.0
    #driver = "LAN_2_0"

    # 指定特权用户名
    #privilege = "user"

    ## session-timeout, ms
    #timeout = 100000

    # 支持的采集器 bmc, bmc-watchdog, ipmi, chassis, dcmi, sel,sm-lan-mode
    # 默认使用 bmc, ipmi, chassis和dcmi,建议保持下列配置便于仪表盘更好的展示
    collectors = [ "bmc", "ipmi", "chassis", "sel", "dcmi"]

    # 不关注的传感器,指定id 排除掉
    #exclude_sensor_ids = [ 2, 29, 32, 50, 52, 55 ]

    # 如果你想使用定制化的参数覆盖内置的命令,可以修改以下内容; 建议保持注释
    #[instances.collector_cmd]
    #ipmi = "sudo"
    #sel = "sudo"
    #[instances.default_args]
    #ipmi = [ "--bridge-sensors" ]
    #[instances.custom_args]
    #ipmi = [ "--bridge-sensors" ]
    #sel = [ "ipmi-sel" ]
  2. 在夜莺「集成中心」里找到 IPMI,把仪表盘和告警规则导入到业务组。

  3. 导入的告警规则默认是停用的。先确认指标已经入库,再按自己环境的阈值逐条启用。

内置仪表盘​

仪表盘面板数
IPMI12
IPMI by Categraf12
IPMI for Prometheus7

内置告警规则​

共 4 条。每条给出触发条件(PromQL)和告警后的处置步骤,导入后可以直接改阈值。

CPU温度超过90​

S2 警告 · 持续 1 分钟 · 触发条件:

ipmi_cpu1_temp{} > 90 or ipmi_cpu2_temp{} > 90

处置步骤:

  1. 用 ipmitool sdr type temperature 确认各温度传感器的实际读数与门限;
  2. 检查机箱风扇是否全部正常转动(ipmitool sdr type fan)、滤网与散热片是否积灰;
  3. 确认机房空调与冷通道温度是否正常,同机柜其他机器是否同样高温;
  4. 短期可降低该机负载或迁走关键业务,为停机除尘/换风扇争取时间。

CPU电压异常​

S2 警告 · 持续 1 分钟 · 触发条件:

count by (agent_hostname, server) ({__name__=~"ipmi_vcpu[0-9]+", status_code=~"lcr|ucr"}) > 0

处置步骤:

  1. 用 ipmitool sdr type voltage 看各电压传感器的读数与上下门限,确认偏离方向;
  2. 检查电源模块状态(ipmitool sdr type 'Power Supply'),双电源机型确认是否有一路失效;
  3. 检查供电线路与 PDU 输出是否稳定,同机柜是否有其他机器同时报警;
  4. 确认为电源模块故障的安排更换,期间把关键业务迁走。

风扇转速异常​

S2 警告 · 持续 1 分钟 · 触发条件:

count by (agent_hostname, server) ({__name__=~"ipmi_fan[0-9]+", status_code=~"lcr|lnc|unc|ucr"}) > 0

处置步骤:

  1. 用 ipmitool sdr type fan 看每个风扇的转速与门限,定位是哪一颗异常;
  2. 转速为 0 或远低于同型号其他风扇的,基本可判定风扇故障,安排更换;
  3. 全部风扇都在高转速则说明进风温度或负载过高,检查机房温度、滤网积灰与风道遮挡;
  4. 换风扇前先用 ipmitool sdr type temperature 确认温度是否已经上来,必要时先迁走业务。

主板温度超过90​

S2 警告 · 持续 1 分钟 · 触发条件:

ipmi_system_temp > 90 or ipmi_pch_temp > 90

处置步骤:

  1. 用 ipmitool sdr type temperature 确认是哪个传感器高温及其门限;
  2. 检查机箱风扇与风道,重点看主板区域是否有线缆遮挡进风;
  3. 确认机房空调与机柜内温度,以及机器是否被塞在密闭位置;
  4. 除尘并整理线缆后复测,仍不下降则联系厂商检查散热组件。

指标说明​

共 19 条,和仪表盘、告警规则里用到的指标一一对应。

指标含义单位
ipmi_bmc_infoIPMI BMC 信息 — 包含BMC固件版本、制造商ID、系统固件版本等信息的常量指标。
ipmi_chassis_cooling_fault_stateIPMI 机箱冷却故障状态 — 机箱冷却/风扇故障状态,1为无故障,0为有故障。
ipmi_chassis_drive_fault_stateIPMI 机箱磁盘故障状态 — 磁盘故障状态,1为无故障,0为有故障。
ipmi_chassis_power_stateIPMI 机箱电源状态 — 表示机箱电源状态,1为电源开启,0为电源关闭。
ipmi_current_amperesIPMI 电流(安培) — 电流传感器测量的电流值,单位为安培。A
ipmi_current_stateIPMI 电流传感器状态 — 电流传感器的状态,0为正常,1为警告,2为临界,NaN为不可用。
ipmi_dcmi_power_consumption_wattsIPMI DCMI 功率消耗(瓦特) — 通过DCMI收集的当前功率消耗值,单位为瓦特。W
ipmi_fan_speed_rpmIPMI 风扇转速(转/分钟) — 风扇转速传感器测量的转速值,单位为转/分钟。RPM
ipmi_fan_speed_stateIPMI 风扇转速传感器状态 — 风扇转速传感器的状态,0为正常,1为警告,2为临界,NaN为不可用。
ipmi_power_stateIPMI 功率传感器状态 — 功率传感器的状态,0为正常,1为警告,2为临界,NaN为不可用。
ipmi_scrape_duration_secondsIPMI 抓取持续时间(秒) — 抓取IPMI数据所花费的时间,单位为秒。s
ipmi_sel_free_space_bytesIPMI SEL 剩余空间(字节) — 系统事件日志(SEL)的剩余可用空间,单位为字节。bytes
ipmi_sel_logs_countIPMI SEL 日志数量 — 系统事件日志(SEL)中的事件日志条目总数。
ipmi_sensor_stateIPMI 传感器状态 — 未明确分类的通用传感器的状态,0为正常,1为警告,2为临界,NaN为不可用。
ipmi_temperature_celsiusIPMI 温度(摄氏度) — 温度传感器测量的温度值,单位为摄氏度。°C
ipmi_temperature_stateIPMI 温度传感器状态 — 温度传感器的状态,0为正常,1为警告,2为临界,NaN为不可用。
ipmi_upIPMI 收集器状态 — 指示指定收集器是否成功从远程主机获取数据,1为成功,0为失败。
ipmi_upIPMI 采集状态 — 抓取元数据指标,1表示抓取成功,0表示失败。
ipmi_voltage_stateIPMI 电压传感器状态 — 电压传感器的状态,0为正常,1为警告,2为临界,NaN为不可用。

相关链接​