上篇文章IRIS, Caché监控指导 - 警告和告警 发出后收到要求介绍一下发送SNMP通知的具体操作,这里介绍一下。
我省去了SNMP的原理,这个有需要的可以网上查找。这里只做一个配置的操作:测试怎么从一个Windows上安装的IRIS实例发送IRIS Alert给另一台Linux服务器。
第一步: 配置 Windows SNMP
因为安全原因,Windows 10不再默认安装中启动SNMP,用户需要手工安装SNMP启动服务。以下两个文章是古老的Window 2003和新的Windows 10中配置SNMP的安装,给各位做个参考。
- HOW TO: Configure the SNMP Service in Windows Server 2003
- How to Install and Configure SNMP Service on Windows 10
简单的总结一下:Windows系统中有两个服务:
- SNMP Service:使简单网络管理协议(SNMP)请求能够在此计算机上被处理。如果此服务停止,计算机将不能处理 SNMP 请求。如果此服务被禁用,所有明确依赖它的服务都将不能启动。
- SNMP Trap:接收本地或远程简单网络管理协议 (SNMP) 代理程序生成的陷阱消息并将消息转发到此计算机上运行的 SNMP 管理程序。如果此服务被停用,此计算机上基于 SNMP 的程序将不会接收 SNMP trap 消息。如果此服务被禁用,任何依赖它的服务将无法启动。
当前我需要从本机向远端发送SNMP, 所以只需要开启SNMP Service即可。然后需要配置SNMP Service的:
- Community名称
- 发送Trap的目的地址
- Community的权限(在”安全”子页面配置,权限为读写,应该选中“发送身份验证Trap”)
如下图,Commnity是”public”, 发送trap到172.16.58.1和172.16.58.101, 分别是两台远端的服务器。
第二步: 配置IRIS SNMP
在Windows系统注册iscsnmp.dll
Windows系统中,如果IRIS安装在SNMP服务安装之前, 需要手工执行以下命令来注册iscsnmp.dll到Windows Registry。命令成功执行后要重启操作系统的SNMP Service。
打开IRIS Terminal工具,在%SYS命名空间执行:
SYS>set myStatus=$$Register^SNMP()
Cache SNMP Extension Agent DLL successfully added to Registry
上述命令行必须是在Administrator的角色执行,否则会有权限问题, 提示错误 “Unable to open Registry key 'SOFTWARE\Microsoft\Windows\CurrentVersion\CommonFilesDir”
开启 %SNMP_Monitor服务
到System>Security Management >Services, 启动%Service_Monitor服务。%Service_Monitor服务负责Caché和本地操作系统的SNMP Agent的通信,如果关闭,本地和远程的SNMP通信都将中断。
到“系统>配置>监视器配置- 配置设置。选中” 开启SNMP服务随系统启动而启动”,英文”Start SNMP Agent at System Startup”。(Cache'中本页面还包括BMC PORTAL监控软件或者WMI选项,如果不使用,可以不用关心)。
最后,为了启用修改后的配置,需要重启Caché实例。如果是测试环境, 也可以不重启,而是在Caché Terminal执行:Do start^SNMP()
或者Do start^SNMP(705,20)
来应用修改, 其中705是ensemble SNPM作为subagent的默认TCP端口号, 20是超时时间。 命令do stop^SNMP()
命令可以在IRIS停止SNMP工作。
第三步: 向远端服务器发送SNMP Trap
这里,远端服务器我使用net-snamp工具。 net-snmp是linux, unix, mac os上第一选择的snmp服务和工具。简单的介绍centos 7 的net-snmp安装命令
# 安装net-snmp
[root@serverb ~]# yum install net-snmp net-snmp-utils -y
# 查看版本
[root@serverb ~]# snmpd -v
# 启动
[root@serverb ~]# systemctl start snmpd
[root@serverb ~]# systemctl status snmpd
(如果接收警告的SNMP Server是Windows系统,您可以选择一些图形化的工具做SNMP Trap的接收,比如iReasoning. )
设置snmp trap deamon
hma@CNMBPHMA ~ % snmptrapd -df -Lo
NET-SNMP version 5.6.2.1
在IRIS发送Alert
简单的制造一个alert的最简单的方法是用下面的命令,它向messages.log写一个级别为2的记录,这个记录会再写到alert.log里,通过SNMP发送给SNMP服务器。
%SYS>do ##class(%SYS.System).WriteToConsoleLog("Winter is coming",,2)
检查SNMP服务器收到警告
这时去刚才的snmptrapd终端,可以看到收到了警告。
hma@CNMBPHMA ~ % snmptrapd -df -Lo
Received 137 byte packet from UDP: [172.16.58.200]:55212->[0.0.0.0]:0
0000: 30 81 86 02 01 00 04 06 70 75 62 6C 69 63 A4 79 0.......public�y
0016: 06 0A 2B 06 01 04 01 81 81 33 04 02 40 04 AC 10 ..+......3..@.�.
0032: 3A C8 02 01 06 02 01 0E 43 03 5E E4 CB 30 5A 30 :�......C.^��0Z0
0048: 1E 06 14 2B 06 01 04 01 81 81 33 04 01 01 01 01 ...+......3.....
0064: 06 48 43 44 45 4D 4F 04 06 48 43 44 45 4D 4F 30 .HCDEMO..HCDEMO0
0080: 38 06 14 2B 06 01 04 01 81 81 33 04 01 01 01 08 8..+......3.....
0096: 06 48 43 44 45 4D 4F 04 20 5B 55 74 69 6C 69 74 .HCDEMO. [Utilit
0112: 79 2E 45 76 65 6E 74 5D 20 57 69 6E 74 65 72 20 y.Event] Winter
0128: 69 73 20 63 6F 6D 69 6E 67 is coming
到这里,IRIS的警告通过SNMP发送已经成功,接下来,您可以做进一步的测试,比如, 如果您对镜像的警告很重视, 您可以测试做如下的测试:
接收镜像相关的警告
-
Becoming primary mirror server
本镜像成员成为主机
-
Arbiter connection lost
丢失和arbiter的连接。
-
MirrorServer: Connection to xxxx(backup) terminated
丢失和backup的连接。
以上3个警告都会写入alert,并发送给snmp服务器。
最后,如果您熟悉其他的监控工具,这时候您可以配置您的工具来接收警告了。 我后面会贴一个zabbix上监控IRIS的介绍,其中的警告用SNMP Trap实现,有兴趣的同学可关注本作者。