作者:唐辉
1.文档编写目的
Fayson在前面的文章《0259-如何通过Cloudera Manager配置使用SNMP方式转发告警》和《0372-CM告警SNMP对接补充》介绍了使用SNMP的方式对接,对接SNMP告警时CM提供了告警的MIB文件,对于MIB文件中的每个OID的含义以及如何使用工具查看MIB文件,找到告警的各个指标。本篇文章Fayson主要介绍SNMP 中的DateAndTime 类型的解析
- 测试环境
1.CM和CDH版本为CDH 5.16.1
2.操作系统版本为RedHat 7.2
2.问题描述
在前面两篇文章中我们已经知道oid 以1.1.2.2 结尾的对应事件发生的时间,如下图所示:
我们获取的时间是一长串16进制的数据,当然这并不是一个以秒或者毫秒数字的时间戳。
通过查看cm.mlib 文件可以看到事件发现时间对应的字段notifEventOccurredTime 类型为DateAndTime, DateAndTime是Snmpv2中的一种数据类型,它主要提供了对日期时间的描述。
下面是RFC中对DateAndTime的定义:
由定义可见,DateAndTime仍然是OCTET STRING类型的数据,只是对每个字节进行了具体的定义。比如前两个字节表示年,第五个字节表示小时等。
3.DateAndTime解析
通过上述对SNMP 中DateAndTime的类型的结构的了解,就可以很轻松的通过代码来解析。
3.1.Java 解析示例
public class Test { public static void main(String[] args) { String hexString = " 07 E3 04 08 13 10 3B 08 2B 08 00"; DateAndTimeToString(hexString); } public static String DateAndTimeToString(String hexString){ String hexstring = hexString.replace("