[原]使用SNMP监控Heartbeat状态

    Heartbeat 3.x 提供了一系列的crm 命令对集群进行管理和监控。但若管理的集群比较多,我们可能会希望能进行远程监控(例如Nagios 报警)。pacemaker-mgmt 包提供了把Heartbeat 状态输出到SNMP中的Agent。

一、系统环境
该集群为之前构建Heartbeat 3.0.3 GUI+DRBD+Oracle 10g 双机互备集群一文的环境:

引用
操作系统:Asianux 3.0 SP2 for x86_64
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为:

引用
com2sec notConfigUser  default       public
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 (configure /etc/snmp/snmp.local.conf)
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 文件,加入以下内容:

引用
respawn         root    /usr/lib64/heartbeat/hbagent

注意,我这里是x86_64环境,该库存放在lib64目录下。x86环境,应该在lib目录下的。另外,该包不是heartbeat 软件自带的,其来自:

引用
# rpm -qf /usr/lib64/heartbeat/hbagent
pacemaker-mgmt-2.0.0-1.1

最后,重启heartbeat即可。
HA日志会显示:

引用
May 30 14:56:02 drbd1.linuxfly.org heartbeat: [6790]: info: Starting child client “/usr/lib64/heartbeat/hbagent” (0,0)
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状态
运行以下命令:

引用
# snmpwalk -c public -On 192.168.228.136 -v2c -mLINUX-HA-MIB enterprises.4682
.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

建议:

引用
1、虽然可通过集群中的其中一台机器即可对整个集群状态进行监控,但为避免集群失效切换带来的影响,建议集群中所有机器都进行相同的配置;
2、通过浮动IP来监控;

一些常用的OID点:

引用
1. LINUX-HA-MIB::LHATotalNodeCount.0 – Number of nodes
2. LINUX-HA-MIB::LHALiveNodeCount.0 – Number of Live nodes
3. LINUX-HA-MIB::LHANodeStatus.x – Status of the node x

例如:

引用
# snmpwalk -c public -On 192.168.228.136 -v2c  LINUX-HA-MIB::LHATotalNodeCount.0
.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.hbagent
/usr/share/doc/packages/pacemaker-mgmt/README.hbagentv2

How-to monitor linux heartbeat with SNMP
该文是Debian 5.0 + Heartbeat 2.1.3 的环境,并提供了一个nagios 的插件脚本。

激活Windows下Apache的php_snmp 模块支持
搭建Master-Master Mysql Replication 集群
在Windows下使用红旗HA Cluster  配置工具
自定义SNMP Agent

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/linux/103943.html

(0)
上一篇 2021年8月25日 12:26
下一篇 2021年8月25日 12:26

相关推荐

发表回复

登录后才能评论