corosyncとPacemakerのSNMPトラップをSNMPマネージャー(snmptrapd)で確認する環境を簡易に作成してみます。
SNMPマネージャー(トラップの監視側)のインストール
- SNMPマネージャーノードとして、CentOS7を最小インストールします。
- 念の為、firewalldは停止しておきます。
- この例では、SNMPマネージャーのIPアドレスは192.168.40.2だということとします。
- DVD(もしくはiso)をマウントして参照できるようにリポジトリに登録します。
- net-snmpをインストールします。
[root@snmp-manager2 Packages]# yum install net-snmp
(snip)
依存性関連をインストールしました:
(snip)
perl-libs.x86_64 4:5.16.3-285.el7 perl-macros.x86_64 4:5.16.3-285.el7 perl-parent.noarch 1:0.225-244.el7 perl-podlators.noarch 0:2.5.1-3.el7 perl-threads.x86_64 0:1.87-4.el7
perl-threads-shared.x86_64 0:1.43-6.el7
完了しました!
- corosync+PacemakerのMIBファイルを転送しておきます
- COROSYNC-MIB.txt、PCMK-MIB.txtをcorosync+Pacemakerをインストールしたノードから、SNMPマネージャーノードの /usr/share/snmp/mibs/ディレクトリに転送しておきます。
- /etc/sysconfig/snmptrapdを編集します。(OPTIONSを変更します)
# snmptrapd command line options
# '-f' is implicitly added by snmptrapd systemd unit file
OPTIONS="-Ls6 -p /var/run/snmptrapd.pid"
- /etc/snmp/snmp.confを新規に作成します。(mibdirs/mibsを追加します)
mibdirs /usr/share/snmp/mibs
mibs ALL
- /etc/snmp/snmptrapd.confを編集します。(disableAuthorizationを追加します)
# Example configuration file for snmptrapd
#
# No traps are handled by default, you must edit this file!
#
# authCommunity log,execute,net public
# traphandle SNMPv2-MIB::coldStart /usr/bin/bin/my_great_script cold
disableAuthorization yes
- /etc/rsyslog.confを編集します。
- snmpのトラップを別ログ(local6でsnmptrapd.log)に出力するように編集して、rsyslogを再起動します。
(snip)
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none;local6.none /var/log/messages
(snip)
# Save boot messages also to boot.log
local7.* /var/log/boot.log
local6.* /var/log/snmptrapd.log
- 最後にsnmptrapdサービスを再起動しておきます。
[root@snmp-manager2 ~]# systemctl restart snmptrapd
[root@snmp-manager2 ~]# systemctl status snmptrapd
snmptrapd.service - Simple Network Management Protocol (SNMP) Trap Daemon.
Loaded: loaded (/usr/lib/systemd/system/snmptrapd.service; disabled)
Active: active (running) since 金 2015-11-20 14:28:55 JST; 3s ago
Main PID: 10283 (snmptrapd)
CGroup: /system.slice/snmptrapd.service
└─10283 /usr/sbin/snmptrapd -Ls6 -p /var/run/snmptrapd.pid -f
11月 20 14:28:55 snmp-manager2 snmptrapd[10283]: NET-SNMP version 5.7.2
11月 20 14:28:55 snmp-manager2 systemd[1]: Started Simple Network Management Protocol (SNMP) Trap Daemon..
- トラップが見れるように、SNMPマネージャーノードでログを監視します。
[root@snmp-manager2 ~]# tail -f /var/log/snmptrapd.log
Nov 20 14:30:19 snmp-manager2 snmptrapd[10283]: 2015-11-20 14:30:19 NET-SNMP version 5.7.2 Stopped.
Nov 20 14:30:19 snmp-manager2 snmptrapd[10283]: Stopping snmptrapd
Nov 20 14:30:19 snmp-manager2 snmptrapd[10291]: NET-SNMP version 5.7.2
corosync+Pacemaker(トラップの送信元)での設定
- corosyncのトラップ送信用に/etc/sysconfig/corosync-notifydを作成します。
- -mパラメータで送信先のSNMPマネージャーを指定します。
OPTIONS="-s -m 192.168.40.2"
- Pacemakerのトラップ送信用に/etc/sysconfig/crm_monを編集します。
- -Sパラメータで送信先のSNMPマネージャーを指定します。
#
# Example for SNMP : OPTIONS="-d -S <snmp manager address> -W -p <pid file>"
# OPTIONS="-d -S 192.168.40.2 -W -p /tmp/ClusterMon-upstart.pid"
#
# Please refer to a help and a manual for the detailed option.
#
OPTIONS="-d -S 192.168.40.2 -W -p /var/run/ClusterMon-upstart.pid"
- corsoync,corosync-notifyd,crm_mon,pacemakerを起動(startやsystemctl)します。
- なお、SNMPが利用出来るように構築されているモジュールを利用する必要があります。
SNMPトラップの確認
- crmコマンドなどでPacemakerのクラスタでリソースを起動するとSNMPマネージャーノードのログにトラップが出力されます。
- クラスタを構成するノードの停止や起動でもトラップは確認出来ます。
[root@snmp-manager2 ~]# tail -f /var/log/snmptrapd.log
Nov 20 14:30:19 snmp-manager2 snmptrapd[10283]: 2015-11-20 14:30:19 NET-SNMP version 5.7.2 Stopped.
Nov 20 14:30:19 snmp-manager2 snmptrapd[10283]: Stopping snmptrapd
Nov 20 14:30:19 snmp-manager2 snmptrapd[10291]: NET-SNMP version 5.7.2
Nov 20 14:31:46 snmp-manager2 snmptrapd[10291]: 2015-11-20 14:31:46 <UNKNOWN> [UDP: [192.168.40.100]:41163->[192.168.40.2]:162]:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1447997505) 167 days, 14:12:55.05 SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-SMI::enterprises.32723.1 SNMPv2-SMI::enterprises.32723.1.2 = STRING: "prmStonith2-1" SNMPv2-SMI::enterprises.32723.1.1 = STRING: "snmp1" SNMPv2-SMI::enterprises.32723.1.3 = STRING: "start" SNMPv2-SMI::enterprises.32723.1.4 = STRING: "OK" SNMPv2-SMI::enterprises.32723.1.6 = INTEGER: 0 SNMPv2-SMI::enterprises.32723.1.7 = INTEGER: 0 SNMPv2-SMI::enterprises.32723.1.5 = INTEGER: 0
現状、crm_monを経由したSNMPトラップはクラスタの再構成時に、通知済みのトラップが再トラップされる事象があります。
これらは、Pacemaker1.1.14以降のSNMPトラップ機能で、改善される予定です。
- 2015/12/22追記 - 残念ながら、PM1.1.14での新SNMP機能の公式リリースはなくなりました。再度、仕様が検討されてPM1.1.15で登場する模様です。
- 2016/04/24追記 - PM1.1.15rc1で新SNMP機能が盛り込まれした。もう少しするとリリースですが、その前にまた別途、新SNMP機能について投稿したい思います。
以上です。