LSI 芯片的监控

主流的 x86 服务器基本都是 LSI 的 RAID 芯片,或者像 DELL/HP 那样做贴牌处理,扒了皮还是 LSI。
要监控 RAID 的状态,方法很多,以市场占有率最大的 DELL 为例,可以使用其提供的 openmanager snmp 来监控 controller 以及磁盘,openmanager 应该只是做了一层封装而已,里面整合了大量的底层管理工具,不过适用性有一定的局限,只能用在 DELL 的机器上。要监控 LSI 的产品,当然是直接调用他们自己提供的工具最为方便。对于 nagios 来说,有一套完整的工具来帮助诊断 。zabbix 的也差不多,基本的东西都一样,都是通过 LSI 提供的 megaraid 来获取信息。安装、基本的使用就不说了,前面的都有纪录。

很早的一片博客提到,如果想让 zabbix 用户执行某些只有 root 才能执行的命令,可以有下面两种方式:
1. 增加 AllowRoot=1
2. visudo:  zabbix  ALL=(ALL)      NOPASSWD:NOPASSWD:ALL
现在看来,只要将方案 2 稍加修改就会变的相对完美了,像下面这样,就可以精确的控制 zabbix 用户的权限问题了:
zabbix  ALL=(ALL) NOPASSWD:/opt/MegaRAID/MegaCli/MegaCli64

根据《MegaRAID SAS Software User Guide》这个文档的说明,PD 一共分为 8 个状态,LD 一共分为 5 个状态,这个可以通过 zabbix 的 mapping 表现出来。虽然官方分了这么多的类别,不过我们真正关心的是,最好 pd 的状态是 Online,LD 的状态是 Optimal,其他的所有状态都是我们不希望看到的。因此可以简单的将其分为 ok 跟 problem 两种状态,因为一旦出现了 problem,工程师肯定会登录到机器上进行进一步的情况确认。

下面我们就以简化的方式来进行磁盘的监控,如果希望添加 mapping 的功能,可以参考这篇博客进行。

了解了 LSI 芯片之后,会发现真正需要监控的主要包括 adp、pd、ld 这三个组件的状态:
# MegaCli64 -adpallinfo -aALL
# MegaCli64 -PDList -aALL
# MegaCli64 -ldinfo -Lall -aALL

这个脚本的基础上做了些简单的修改,获取当前磁盘状态的脚本放在了这里

接下来就是定义 UserParameter:
UserParameter=lsi.raid.batterystate,/etc/zabbix/scripts/check_raid.sh batterystate
UserParameter=lsi.raid.isSOHGood,/etc/zabbix/scripts/check_raid.sh isSOHGood
UserParameter=lsi.raid.adapter,/etc/zabbix/scripts/check_raid.sh adapter
UserParameter=lsi.raid.mediaerrors,/etc/zabbix/scripts/check_raid.sh mediaerrors
UserParameter=lsi.raid.otherrrors,/etc/zabbix/scripts/check_raid.sh otherrrors
UserParameter=lsi.raid.raiderrors,/etc/zabbix/scripts/check_raid.sh raiderrors
UserParameter=lsi.raid.alarm,/etc/zabbix/scripts/check_raid.sh alarm

这里还有个简易的 megaraid 的监控程序,对于只有几台机器的公司完全适用。

  • Terry Zheng

    Megaraid 里的概念还真是不少。
    我们老大还让我监控物理磁盘的数量,怕有人把磁盘拔走了都不知道,记得是靠 `Span Depth‘ 算出来的, 脚本在这里 https://gist.github.com/gotnix/3938141,欢迎拍砖。

    • http://jaseywang.me/ Jasey Wang

      你们服务器是露天放?

      • Terry Zheng

        还不至于露天,机柜没有门是有可能的。

  • base

    请教下,做的raid0,用MegaCli64 -adpallinfo -aALL 没有其他输出信息,Exit Code: 0x00 可能是什么原因
    Serial Attached SCSI controller: LSI Logic / Symbios Logic SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] (rev 03)