用于实时监控IPMI SEL的脚本

时间:2012-09-20 03:22:59

标签: bash

我想实时监控IPMI系统事件日志(SEL)。我想要的是,无论何时在SEL中生成事件,都应自动生成邮件警报。

我实现这一目标的一种方法是,我可以编写脚本并在cron中安排它。该脚本每天运行3到4次,因此每当生成新事件时,都会向我发送邮件警报。

我希望监控处于活动状态。就像生成事件时一样,应该向我发送邮件,而不是定期检查。

SEL Log格式如下:

server-001%sudo ipmitool sel list

b4 | 05/27/2009 | 13:38:32 |粉丝#0x37 |上临界高位

c8 | 05/27/2009 | 13:38:35 |粉丝#0x37 |上临界高位

dc | 08/15/2009 | 07:07:50 |粉丝#0x37 |上临界高位

因此,对于上述情况,无论何时生成新事件,都应自动向我发送邮件警报。 如何使用bash脚本实现此目的。任何指针都将受到高度赞赏。

3 个答案:

答案 0 :(得分:3)

我认为某些供应商的固件中有特殊的扩展名,正是您所描述的内容(即您只是在服务处理器中配置了一个电子邮件地址),但我不能说服每个供应商的支持。您必须为此查找主板的文档。

就标准机制而言,您可能正在寻找IPMI PET(平台事件陷阱)支持。使用PET,当生成某些SEL事件时,它将生成SNMP陷阱。 SNMP陷阱一旦被SNMP守护程序接收,就可以执行任何操作,例如发送电子邮件。

FreeIPMI的用户在一个文档中写下了自己的经历并发布了他的脚本,你可以在这里找到:

http://www.gnu.org/software/freeipmi/download.html

(免责声明:我维护FreeIPMI,因此我更了解FreeIPMI,不确定其他IPMI软件是否支持。)

作为一个FYI,几个IPMI SEL日志守护进程(FreeIPMI的ipmiseld和ipmitool的ipmievtd是我知道的两个)根据可配置的秒数轮询SEL并将SEL信息记录到syslog。还可以在syslog中配置邮件警报,以便在发生事件时发送电子邮件。这些守护进程仍然是基于轮询而不是实时的,但守护进程可能会处理许多您的cron脚本可能不知道的IPMI极端情况。

答案 1 :(得分:0)

使用ipmievd工具可以监控IPMI SEL事件。它是ipmitool包的一部分。

  # rpm -qf /usr/sbin/ipmievd
   ipmitool-1.8.11-12.el6.x86_64

要将SEL事件发送到syslog,请执行以下命令。

   ipmievd sel daemon

现在,为了模拟SEL事件的生成,我们将执行以下命令。

   ipmitool event 2

这将生成以下事件

   ` Voltage Threshold - Lower Critical - Going Low`

要获取可生成的SEL事件列表,请尝试

 # ipmitool event

 usage: event <num>
 Send generic test events
 1 : Temperature - Upper Critical - Going High
 2 : Voltage Threshold - Lower Critical - Going Low
 3 : Memory - Correctable ECC

该事件将通知/ var / log / messages。在日志文件中生成以下消息。

Oct 21 15:12:32 mgthost ipmievd: Voltage sensor - Lower Critical going low

答案 2 :(得分:0)

以防它帮助其他人......

我创建了一个shell脚本来记录这种格式的数据,然后我用php解析它并使用google的图表api制作一个漂亮的折线图。 2016-05-25 13:33:15,20℃,23℃ 2016-05-25 13:53:06,21.50摄氏度,24摄氏度 2016-05-25 14:34:39,19℃,22.50℃

#!/bin/sh

DATE=`date '+%Y-%m-%d %H:%M:%S'`
temp0=$(ipmitool sdr type Temperature | grep "CPU0 Diode" | cut -f5 -d"|")
temp1=$(ipmitool sdr type Temperature | grep "CPU1 Diode" | cut -f5 -d"|")
echo "$DATE,$temp0,$temp1" >> /events/temps.dat

我现在遇到的问题是让cron作业正确访问数据,即使它是在root crontab中设置的。