通过snmp和syslog监控你的机房设备

大部分系统都通过日志系统来记录系统中发生的各种各样的事件,通过这些事件可以让我们了解系统发生过的重要信息(如告警, 错误等)。对系统日志的监控是运维的一个重要工作,对于中心级的机房,对于大量的设备逐个轮询方式检查不仅费时费力, 而其还不及时。目前有2种比较常用的主动日志推送方法,snmp trap和syslog协议。这2种协议也是目前大部分的设备和程序所内置支持的方式。

1. 概述/架构

Event-Central是一个使用java实现的snmp trap和syslog接收和管理系统,可以接收个系统推送过来的syslog和snmp trap事件,并进行相应的处理,如记录如数据库,分析并通过短信通知管理员,统一界面展示等。

Event-Central分为服务器端和Web客户端,其中服务器端可以运行多个实例,分布式部署。服务器端和客户端是相对独立运行的。

服务器端设计上采用了经典的观察者(Observer)设计模式, 其中定义的org.littlestar.event_central.EventListener接口扮演被观察者角色,具体有2个实现,分别是:

  • org.littlestar.event_central.listener.SnmpTrapListener – 对应snmp trap监听进程, 使用snmp4j实现。
  • org.littlestar.event_central.listener.SyslogListener – 对应syslog事件监听, 使用syslog4j实现。

其中定义的org.littlestar.event_central.EventObserver扮演观察者, 具体由两个实现, 分别是:

  • org.littlestar.event_central.observer.EventDbLogger – 将EventListener监听到的event记录到数据库。
  • org.littlestar.event_central.observer.EventSmLogger – 将EventListener监听到的event通过短信发送给管理员(这个不是通用的,根据各自的短信猫接口编写)

客户端是一个基于java servlet和jQuery(datatables + jquery-ui)的数据Web展现。你也可以不用客户端,或者直接根据数据表自己展现,还可以不用客户端直接查数据库表。

数据库表:

  • events – 用于记录接收到的事件;
  • listeners – 用于记录连接到数据库的服务器端基本信息和状态信息;
  • hosts – events表的辅助表,于event.source(外)连接,可以提高事件源的可读性;
  • blacklist – 辅助表, 用于设置一些排除信息(如你不想每个事件都发短信), 对应org.littlestar.event_central.utils.BlackList.check方法。

2. 安装/使用方法

Event-Central提供了build.xml,可以使用apache ant构建:

$ git clone https://github.com/Li-Xiang/EventCentral.git  
$ ant 

构建生成的文件在dist目录下, lsecs.jar是服务器端程序, lsecs/lsecs.cmd分别对应linux/windows的启动脚本; lsecc.war是Web客户端程序。

服务器端和客户端都需要datasource.xml配置文件,指定数据库。配置文件的文件名是写死的都是datasource.xml.

xml version="1.0" encoding="UTF-8"?>
<Configuration>
	<DataSource>
		<Driver>com.mysql.cj.jdbc.Driver</Driver>
		<Url>jdbc:mysql://127.0.0.1/lsec  
		<User>lsec</User>
		<Password>Passw0rd</Password>
		<Properties>useSSL=false;useUnicode=true;characterEncoding=UTF-8;autoReconnect=true</Properties>
	</DataSource>
</Configuration>

但位置是分别指定的, 其中服务器端的配置文件固定, 在运行目录下。客户端的配置文件是通过WEB-INF/web.xml指定的, 你可以在执行ant之前修改为你需要的,也可以在deploy之后,到对应目录下修改:

$ web.xml --> 
  ...
  <context-param>
	<param-name>ds_config</param-name>
	<param-value>D:\product\lsec\datasource.xml</param-value> 
  </context-param>
  ...

3. 为设备配置snmp trap(IBM设备为例)

HMC(Hardware Managerment Console) v7版本

"Service Management" 
 --> "Manage Serviceable Event Notification"
  --> "SNMP Trap Configuration"

通过snmp和syslog监控你的机房设备_第1张图片

HMC(Hardware Managerment Console) v9版本:

"Serviceability" 
--> "Service Management"
  --> "Manage Serviceable Event Notification"
    --> "SNMP Trap Configuration"

通过snmp和syslog监控你的机房设备_第2张图片

IBM F900/V7000/SVC

IBM FlashSystem 900/Storwize V7000/SAN Volumne Controller管理界面都是一样的。

"Settings"
  --> "Notifications"
    --> "SNMP" 

通过snmp和syslog监控你的机房设备_第3张图片

IBM DS8880

"Service Management"
--> "Manage Serviceable Event Notification"
  --> "SNMP Trap Configuration"

通过snmp和syslog监控你的机房设备_第4张图片

IBM DS5300 (OEM NetApp)

通过snmp和syslog监控你的机房设备_第5张图片
通过snmp和syslog监控你的机房设备_第6张图片

IBM System Storage SAN24B (OEM Brocade)

T_B16_1:admin>  snmpconfig --set snmpv1

SNMP community and trap recipient configuration:
Community (rw): [Secret C0de] 
Trap Recipient's IP address : [0.0.0.0] 
Community (rw): [OrigEquipMfr] 
Trap Recipient's IP address : [0.0.0.0] 
Community (rw): [private] 
Trap Recipient's IP address : [0.0.0.0] 
Community (ro): [public] 192.168.1.1  --> 你的地址
Trap Recipient's IP address : [0.0.0.0] 
Community (ro): [common] 
Trap Recipient's IP address : [0.0.0.0] 
Community (ro): [FibreChannel] 
Trap Recipient's IP address : [0.0.0.0] 
Committing configuration...done.

4. Event-Central客户端

通过snmp和syslog监控你的机房设备_第7张图片

你可能感兴趣的:(运维管理)