Heartbeat 3.x 提供了一系列的crm 命令对集群进行管理和监控。但若管理的集群比较多,我们可能会希望能进行远程监控(例如Nagios 报警)。pacemaker-mgmt 包提供了把Heartbeat 状态输出到SNMP中的Agent。
一、系统环境
该集群为之前构建Heartbeat 3.0.3 GUI+DRBD+Oracle 10g 双机互备集群一文的环境:
DRBD 版本:8.3.8
Heartbeat 版本:3.0.3
Oracle 版本:10.2.0.4
两服务器:
drbd1.linuxfly.org:192.168.228.133
drbd2.linuxfly.org:192.168.228.134
DRBD 镜像分区:
资源名称:oradata
设备:/dev/drbd0
挂载点:/oradata (存放Oracle实例)
SNMP 为操作系统自带的版本:
net-snmp-5.3.2.2-5.2AXS3
net-snmp-devel-5.3.2.2-5.2AXS3
net-snmp-libs-5.3.2.2-5.2AXS3
net-snmp-perl-5.3.2.2-5.2AXS3
net-snmp-devel-5.3.2.2-5.2AXS3
net-snmp-libs-5.3.2.2-5.2AXS3
net-snmp-utils-5.3.2.2-5.2AXS3
php-snmp-5.1.6-23.2AXS3
二、配置SNMP
修改/etc/snmp/snmpd.conf为:
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
view all included .1
access notConfigGroup “” any noauth exact all none none
syslocation Unknown (edit /etc/snmp/snmpd.conf)
syscontact Root
pass .1.3.6.1.4.1.4413.4.1 /usr/bin/ucd5820stat
master agentx
trap2sink localhost
其他配置选项,请看SNMP 原理及配置简述一文。其中,红色部分为pacemaker-mgmt 包的hbagent提供接口。
三、配置Heartbeat
修改/etc/ha.d/ha.cf 文件,加入以下内容:
注意,我这里是x86_64环境,该库存放在lib64目录下。x86环境,应该在lib目录下的。另外,该包不是heartbeat 软件自带的,其来自:
pacemaker-mgmt-2.0.0-1.1
最后,重启heartbeat即可。
HA日志会显示:
May 30 14:56:02 drbd1.linuxfly.org heartbeat: [6805]: info: Starting “/usr/lib64/heartbeat/hbagent” as uid 0 gid 0 (pid 6805)
May 30 14:56:08 drbd1.linuxfly.org lha-snmpagent: [6805]: info: hbagentv2 initialization completed.
May 30 14:56:08 drbd1.linuxfly.org lha-snmpagent: [6805]: info: sending hbagent trap. status:1
四、查看HA状态
运行以下命令:
.1.3.6.1.4.1.4682.1.1.0 = Counter32: 2
.1.3.6.1.4.1.4682.1.2.0 = Counter32: 2
.1.3.6.1.4.1.4682.1.3.0 = INTEGER: 2
.1.3.6.1.4.1.4682.1.4.0 = Counter32: 0
.1.3.6.1.4.1.4682.2.1.2.1 = STRING: drbd2.linuxfly.org
.1.3.6.1.4.1.4682.2.1.2.2 = STRING: drbd1.linuxfly.org
.1.3.6.1.4.1.4682.2.1.3.1 = INTEGER: normal(1)
.1.3.6.1.4.1.4682.2.1.3.2 = INTEGER: normal(1)
.1.3.6.1.4.1.4682.2.1.4.1 = INTEGER: active(3)
.1.3.6.1.4.1.4682.2.1.4.2 = INTEGER: active(3)
.1.3.6.1.4.1.4682.3.1.2.1.1 = STRING: eth0
.1.3.6.1.4.1.4682.3.1.2.2.1 = STRING: eth0
.1.3.6.1.4.1.4682.3.1.3.1.1 = INTEGER: up(1)
.1.3.6.1.4.1.4682.3.1.3.2.1 = INTEGER: down(2)
.1.3.6.1.4.1.4682.6.1.2.0 = STRING: drbd2.linuxfly.org
.1.3.6.1.4.1.4682.6.1.2.1 = STRING: drbd1.linuxfly.org
.1.3.6.1.4.1.4682.6.1.3.0 = Hex-STRING: 00 F5 FE 38 00 00 00 07 00 00 00 00 00 00 00 05
00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 04
00 00 00 00 00 00 00 0A 00 00 00 00 00 00 00 07
00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 02
.1.3.6.1.4.1.4682.6.1.3.1 = Hex-STRING: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
.1.3.6.1.4.1.4682.6.1.4.0 = STRING:
.1.3.6.1.4.1.4682.6.1.4.1 = STRING:
.1.3.6.1.4.1.4682.6.1.5.0 = INTEGER: true(1)
.1.3.6.1.4.1.4682.6.1.5.1 = INTEGER: true(1)
.1.3.6.1.4.1.4682.6.1.6.0 = INTEGER: nochange(1)
.1.3.6.1.4.1.4682.6.1.6.1 = INTEGER: nochange(1)
.1.3.6.1.4.1.4682.6.1.7.0 = Timeticks: (0) 0:00:00.00
.1.3.6.1.4.1.4682.6.1.7.1 = Timeticks: (0) 0:00:00.00
.1.3.6.1.4.1.4682.7.1.0 = STRING: 3.0.2
.1.3.6.1.4.1.4682.7.3.0 = STRING: 2
.1.3.6.1.4.1.4682.7.4.0 = STRING: 30
.1.3.6.1.4.1.4682.7.5.0 = STRING: 30000ms
.1.3.6.1.4.1.4682.7.6.0 = STRING: 15000ms
.1.3.6.1.4.1.4682.7.7.0 = STRING: 30
.1.3.6.1.4.1.4682.7.9.0 = STRING: 19200
.1.3.6.1.4.1.4682.7.12.0 = INTEGER: on(1)
.1.3.6.1.4.1.4682.7.13.0 = STRING: N/A
.1.3.6.1.4.1.4682.7.14.0 = STRING: N/A
.1.3.6.1.4.1.4682.7.15.0 = STRING: N/A
.1.3.6.1.4.1.4682.8.1.2.1 = STRING: group_oracle
.1.3.6.1.4.1.4682.8.1.2.2 = STRING: ip_oracle
.1.3.6.1.4.1.4682.8.1.2.3 = STRING: fs_oracle
.1.3.6.1.4.1.4682.8.1.2.4 = STRING: oracle_lsnrctl
.1.3.6.1.4.1.4682.8.1.2.5 = STRING: oracle_instant
.1.3.6.1.4.1.4682.8.1.2.6 = STRING: ms_drbd_oracle
.1.3.6.1.4.1.4682.8.1.2.7 = STRING: ms_drbd_oracle
.1.3.6.1.4.1.4682.8.1.2.8 = STRING: drbd_oracle:0
.1.3.6.1.4.1.4682.8.1.2.9 = STRING: drbd_oracle:1
.1.3.6.1.4.1.4682.8.1.3.1 = INTEGER: group(2)
.1.3.6.1.4.1.4682.8.1.3.2 = INTEGER: primitive(1)
.1.3.6.1.4.1.4682.8.1.3.3 = INTEGER: primitive(1)
.1.3.6.1.4.1.4682.8.1.3.4 = INTEGER: primitive(1)
.1.3.6.1.4.1.4682.8.1.3.5 = INTEGER: primitive(1)
.1.3.6.1.4.1.4682.8.1.3.6 = INTEGER: masterSlave(4)
.1.3.6.1.4.1.4682.8.1.3.7 = INTEGER: masterSlave(4)
.1.3.6.1.4.1.4682.8.1.3.8 = INTEGER: primitive(1)
.1.3.6.1.4.1.4682.8.1.3.9 = INTEGER: primitive(1)
.1.3.6.1.4.1.4682.8.1.4.1 = STRING: drbd2.linuxfly.org
.1.3.6.1.4.1.4682.8.1.4.2 = STRING: drbd2.linuxfly.org
.1.3.6.1.4.1.4682.8.1.4.3 = STRING: drbd2.linuxfly.org
.1.3.6.1.4.1.4682.8.1.4.4 = STRING: drbd2.linuxfly.org
.1.3.6.1.4.1.4682.8.1.4.5 = STRING: drbd2.linuxfly.org
.1.3.6.1.4.1.4682.8.1.4.6 = STRING: drbd1.linuxfly.org
.1.3.6.1.4.1.4682.8.1.4.7 = STRING: drbd2.linuxfly.org
.1.3.6.1.4.1.4682.8.1.4.8 = STRING: drbd1.linuxfly.org
.1.3.6.1.4.1.4682.8.1.4.9 = STRING: drbd2.linuxfly.org
.1.3.6.1.4.1.4682.8.1.5.1 = INTEGER: started(2)
.1.3.6.1.4.1.4682.8.1.5.2 = INTEGER: started(2)
.1.3.6.1.4.1.4682.8.1.5.3 = INTEGER: started(2)
.1.3.6.1.4.1.4682.8.1.5.4 = INTEGER: started(2)
.1.3.6.1.4.1.4682.8.1.5.5 = INTEGER: started(2)
.1.3.6.1.4.1.4682.8.1.5.6 = INTEGER: master(4)
.1.3.6.1.4.1.4682.8.1.5.7 = INTEGER: master(4)
.1.3.6.1.4.1.4682.8.1.5.8 = INTEGER: slave(3)
.1.3.6.1.4.1.4682.8.1.5.9 = INTEGER: master(4)
.1.3.6.1.4.1.4682.8.1.6.1 = INTEGER: managed(1)
.1.3.6.1.4.1.4682.8.1.6.2 = INTEGER: managed(1)
.1.3.6.1.4.1.4682.8.1.6.3 = INTEGER: managed(1)
.1.3.6.1.4.1.4682.8.1.6.4 = INTEGER: managed(1)
.1.3.6.1.4.1.4682.8.1.6.5 = INTEGER: managed(1)
.1.3.6.1.4.1.4682.8.1.6.6 = INTEGER: managed(1)
.1.3.6.1.4.1.4682.8.1.6.7 = INTEGER: managed(1)
.1.3.6.1.4.1.4682.8.1.6.8 = INTEGER: managed(1)
.1.3.6.1.4.1.4682.8.1.6.9 = INTEGER: managed(1)
.1.3.6.1.4.1.4682.8.1.7.1 = INTEGER: 0
.1.3.6.1.4.1.4682.8.1.7.2 = INTEGER: 0
.1.3.6.1.4.1.4682.8.1.7.3 = INTEGER: 0
.1.3.6.1.4.1.4682.8.1.7.4 = INTEGER: 0
.1.3.6.1.4.1.4682.8.1.7.5 = INTEGER: 0
.1.3.6.1.4.1.4682.8.1.7.6 = INTEGER: 0
.1.3.6.1.4.1.4682.8.1.7.7 = INTEGER: 0
.1.3.6.1.4.1.4682.8.1.7.8 = INTEGER: 0
.1.3.6.1.4.1.4682.8.1.7.9 = INTEGER: 0
.1.3.6.1.4.1.4682.8.1.8.1 = STRING:
.1.3.6.1.4.1.4682.8.1.8.2 = STRING: group_oracle
.1.3.6.1.4.1.4682.8.1.8.3 = STRING: group_oracle
.1.3.6.1.4.1.4682.8.1.8.4 = STRING: group_oracle
.1.3.6.1.4.1.4682.8.1.8.5 = STRING: group_oracle
.1.3.6.1.4.1.4682.8.1.8.6 = STRING:
.1.3.6.1.4.1.4682.8.1.8.7 = STRING:
.1.3.6.1.4.1.4682.8.1.8.8 = STRING: ms_drbd_oracle
.1.3.6.1.4.1.4682.8.1.8.9 = STRING: ms_drbd_oracle
建议:
2、通过浮动IP来监控;
一些常用的OID点:
2. LINUX-HA-MIB::LHALiveNodeCount.0 – Number of Live nodes
3. LINUX-HA-MIB::LHANodeStatus.x – Status of the node x
例如:
.1.3.6.1.4.1.4682.1.1.0 = Counter32: 2
# snmpwalk -c public -On 192.168.228.136 -v2c LINUX-HA-MIB::LHALiveNodeCount.0
.1.3.6.1.4.1.4682.1.2.0 = Counter32: 2
# snmpwalk -c public -On 192.168.228.136 -v2c LINUX-HA-MIB::LHANodeStatus.1
.1.3.6.1.4.1.4682.2.1.4.1 = INTEGER: active(3)
# snmpwalk -c public -On 192.168.228.136 -v2c LINUX-HA-MIB::LHANodeStatus.2
.1.3.6.1.4.1.4682.2.1.4.2 = INTEGER: active(3)
有了这些信息,剩下的就可以通过脚本或监控工具来实现了,这里不再一一说明。
五、参考资料
pacemaker-mgmt 包提供的README文档:
/usr/share/doc/packages/pacemaker-mgmt/README.hbagentv2
How-to monitor linux heartbeat with SNMP
该文是Debian 5.0 + Heartbeat 2.1.3 的环境,并提供了一个nagios 的插件脚本。
搭建Master-Master Mysql Replication 集群
在Windows下使用红旗HA Cluster 配置工具
自定义SNMP Agent
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/103943.html