SNMPトラップの確認-Pacemaker1.1.15

Pacemaker1.1.15がリリースされて、新しいSNMPのトラップ機能も同時に利用可能となりました。
機能的にはAlertと呼ばれ、クラスタイベントのSNMPトラップ送信の他、ファイルへのクラスタイベントの保存、メールでのクラスタイベントの通知もデフォルトで利用可能なスクリプトが用意されています。
自前でスクリプトを用意することによって、Pacemakerで用意されているクラスタイベントを自由に処理することも可能です。

SNMPトラップ(クラスタイベント）としては、ノードイベント（参加、離脱）、フェンシングイベント（stonithの実行)、リソースイベント(start,monitor,stop,demote,promote,notify)が通知可能です。

# 構成
今回は全てKVM上のゲストで構成しています。

 1. SNMPマネージャーノード - SNMPトラップを受信するノード 1台(snmp-manager)
   - SNMPマネージャーノードのインストールに関しては、http://qiita.com/HideoYamauchi/items/c0740306761018c01bd6 の「SNMPマネージャー(トラップの監視側)のインストール」を参照にしてください。
 2. クラスタノード - Pacemakerでクラスタを構成するノード 2台(vm1,vm2)
 3. リソースはMaster/Slave構成とします。投入するCRMファイルは以下としています。pingのhost_listパラメータはネットワーク疎通確認先(SWなど）のアドレスを設定してください。ping/diskdは、SNMPトラップを確認するだけであれば、省いても問題はありません。

```
property no-quorum-policy="ignore" \
        stonith-enabled="false" \
        startup-fencing="false"

rsc_defaults resource-stickiness="INFINITY" \
        migration-threshold="1"

primitive prmDummy ocf:pacemaker:Dummy \
        op start interval="0s" timeout="60s" on-fail="restart" \
        op monitor interval="10s" timeout="60s" on-fail="restart" \
        op stop interval="0s" timeout="60s" on-fail="block"

primitive prmStateful ocf:pacemaker:Stateful \
        op start interval="0" timeout="60s" on-fail="restart" \
        op monitor interval="10" timeout="60s" on-fail="restart" role="Master" \
        op monitor interval="20" timeout="60s" on-fail="restart" role="Slave" \
        op stop interval="0" timeout="60s" on-fail="block"
ms msStateful prmStateful meta master-node-max="1" clone-node-max="1"

primitive clnPrmPingd ocf:pacemaker:ping \
        params name="default_ping_set" host_list="xxx.xxx.xxx.xx" multiplier="100" dampen="0" \
        op start interval="0s" timeout="60s" on-fail="restart" \
        op monitor interval="10s" timeout="60s" on-fail="restart" \
        op stop interval="0s" timeout="60s" on-fail="block"
primitive clnPrmDiskd ocf:pacemaker:diskd \
        params name="diskcheck_status_internal" write_dir="/tmp/tmp2" interval="10" \
        op start interval="0s" timeout="60s" on-fail="restart" \
        op monitor interval="10s" timeout="60s" on-fail="restart" \
        op stop interval="0s" timeout="60s" on-fail="block"

clone clnPingd clnPrmPingd meta clone-node-max="1"
clone clnDiskd clnPrmDiskd meta clone-node-max="1"

location rsc_location-prmDummy prmDummy \
        rule 200: #uname eq vm1 \        rule 100: #uname eq vm2 \
        rule -inf: not_defined default_ping_set or default_ping_set lt 100 \
        rule -inf: not_defined diskcheck_status_internal or diskcheck_status_internal eq ERROR
location rsc_location-msStateful msStateful \
        rule 200: #uname eq vm1 \        rule 100: #uname eq vm2 \
        rule -inf: not_defined default_ping_set or default_ping_set lt 100 \
        rule -inf: not_defined diskcheck_status_internal or diskcheck_status_internal eq ERROR
```

# 準備
 1. SNMPマネージャーノードでsnmptrapdを起動しておきます。クラスタノードからのSNMPトラップ受診を許可する為、必要に応じてfirewalld/iptablesの設定を行ってください。
 2. クラスタノードにPacemaker1.1.15をインストールし、必要な初期設定(corosync.confなど)を行っておきます。
 3. 念の為、クラスタノードの/var/lib/pacemaker/配下のディレクトリ内のファイルは消去しておきます。
 4. 今回はPacemaker1.1.15で用意されているSNMPトラップスクリプト(/usr/share/pacemaker/alerts/alert_snmp.sh.sample)をそのまま利用する為、クラスタノードのSNMPトラップスクリプトに実行権をchmodで付与しておきます。
 5. 上記で利用するSNMPトラップスクリプトでは、snmptrapコマンドを利用する為、クラスタノードにはnet-snmp-utilsパッケージをインストールしておきます。

# 確認
## 2台のクラスタノードを起動します
リソースはまだ起動していませんが、クラスタノードのゲストが安定して起動(online)したことをcrm_monコマンドで確認します。

```
[root@vm1 ~]# crm_mon -1 -Af
(snip)
2 nodes configured
0 resources configured

Online: [ vm1 vm2 ]


Node Attributes:
* Node vm1:
* Node vm2:

Migration Summary:
* Node vm1:
* Node vm2:
```

## alert設定を流し込みます
本来、crmshを利用してCRMファイルに設定を記載して流し込みを行いたい所ですが、crmsh2.1.6まではalert設定は未対応の為、先にalert設定のみをcibadminコマンドで流し込みます。

recipient要素のvalue属性には、SNMPマネージャーのアドレスを指定します。
また、今回の設定では、発生詳細時刻(trap_add_hires_timestamp_oid)のトラップは無視、notifyイベントは無視、正常なmonitorのイベントも無視する設定にしています。

```
# cibadmin --create --xml-text '<configuration> 
  <alerts>
    <alert id="notify_1" path="/usr/share/pacemaker/alerts/alert_snmp.sh.sample">
       <instance_attributes id="insta_1">
          <nvpair id="trap_add_hires_timestamp_oid" name="trap_add_hires_timestamp_oid" value="false"/>
          <nvpair id="trap_resource_tasks" name="trap_resource_tasks" value="start,stop,monitor,promote,demote"/>
       </instance_attributes>
       <recipient id="recipient_1" value="192.xxx.xxx.x">
       </recipient>
     </alert>
  </alerts>
</configuration>'
```

最新版のcrmshを利用する場合は、CRMファイルに記載することで、この手順は省略可能です。
その場合は、以下のcrmshのマニュアルを参考に、CRMファイル内にalert設定を記載してください。
http://crmsh.github.io/man/#cmdhelp_configure_alert

## CRMファイルを流し込みます
先に示したCRMファイルをcrmコマンドで流し込みます。

```
[root@vm1 ~]# crm configure load update qiita.crm 
```

リソースがMasterノード/Slaveノードで起動します。

```
[root@vm1 ~]# crm_mon -1 -Af
(snip)
2 nodes configured
7 resources configured

Online: [ vm1 vm2 ]

 prmDummy       (ocf::pacemaker:Dummy): Started vm1
 Master/Slave Set: msStateful [prmStateful]
     Masters: [ vm1 ]
     Slaves: [ vm2 ]
 Clone Set: clnDiskd [clnPrmDiskd]
     Started: [ vm1 vm2 ]
 Clone Set: clnPingd [clnPrmPingd]
     Started: [ vm1 vm2 ]

Node Attributes:
* Node vm1:
    + default_ping_set                  : 100       
    + diskcheck_status_internal         : normal    
    + master-prmStateful                : 5         
* Node vm2:
    + default_ping_set                  : 100       
    + diskcheck_status_internal         : normal    
    + master-prmStateful                : 5         

Migration Summary:
* Node vm1:
* Node vm2:
```

また、リソースの起動トラップがSNMPマネージャーに送信されます。

```
Jun 29 18:24:35 snmp-manager snmptrapd[31216]: 2016-06-29 18:24:35 vm1 [UDP: [xxx.xxx.xx.xxx]:60954->[xxx.xxx.xx.xxx]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (8225984) 22:50:59.84#011SNMPv2-MIB::snmpTrapOID.0 = OID: PACEMAKER-MIB::pacemakerNotificationTrap#011PACEMAKER-MIB::pacemakerNotificationNode = STRING: "vm1"#011PACEMAKER-MIB::pacemakerNotificationResource = STRING: "clnPrmDiskd"#011PACEMAKER-MIB::pacemakerNotificationOperation = STRING: "start"#011PACEMAKER-MIB::pacemakerNotificationDescription = STRING: "ok"#011PACEMAKER-MIB::pacemakerNotificationStatus = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationReturnCode = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationTargetReturnCode = INTEGER: 0
Jun 29 18:24:36 snmp-manager snmptrapd[31216]: 2016-06-29 18:24:36 vm2 [UDP: [xxx.xxx.xx.xxx]:33518->[xxx.xxx.xx.xxx]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (59317944) 6 days, 20:46:19.44#011SNMPv2-MIB::snmpTrapOID.0 = OID: PACEMAKER-MIB::pacemakerNotificationTrap#011PACEMAKER-MIB::pacemakerNotificationNode = STRING: "vm2"#011PACEMAKER-MIB::pacemakerNotificationResource = STRING: "clnPrmDiskd"#011PACEMAKER-MIB::pacemakerNotificationOperation = STRING: "start"#011PACEMAKER-MIB::pacemakerNotificationDescription = STRING: "ok"#011PACEMAKER-MIB::pacemakerNotificationStatus = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationReturnCode = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationTargetReturnCode = INTEGER: 0
Jun 29 18:24:37 snmp-manager snmptrapd[31216]: 2016-06-29 18:24:37 vm2 [UDP: [xxx.xxx.xx.xxx]:48656->[xxx.xxx.xx.xxx]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (59318036) 6 days, 20:46:20.36#011SNMPv2-MIB::snmpTrapOID.0 = OID: PACEMAKER-MIB::pacemakerNotificationTrap#011PACEMAKER-MIB::pacemakerNotificationNode = STRING: "vm2"#011PACEMAKER-MIB::pacemakerNotificationResource = STRING: "clnPrmPingd"#011PACEMAKER-MIB::pacemakerNotificationOperation = STRING: "start"#011PACEMAKER-MIB::pacemakerNotificationDescription = STRING: "ok"#011PACEMAKER-MIB::pacemakerNotificationStatus = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationReturnCode = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationTargetReturnCode = INTEGER: 0
Jun 29 18:24:37 snmp-manager snmptrapd[31216]: 2016-06-29 18:24:37 vm1 [UDP: [xxx.xxx.xx.xxx]:40676->[xxx.xxx.xx.xxx]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (8226193) 22:51:01.93#011SNMPv2-MIB::snmpTrapOID.0 = OID: PACEMAKER-MIB::pacemakerNotificationTrap#011PACEMAKER-MIB::pacemakerNotificationNode = STRING: "vm1"#011PACEMAKER-MIB::pacemakerNotificationResource = STRING: "clnPrmPingd"#011PACEMAKER-MIB::pacemakerNotificationOperation = STRING: "start"#011PACEMAKER-MIB::pacemakerNotificationDescription = STRING: "ok"#011PACEMAKER-MIB::pacemakerNotificationStatus = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationReturnCode = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationTargetReturnCode = INTEGER: 0
Jun 29 18:24:37 snmp-manager snmptrapd[31216]: 2016-06-29 18:24:37 vm1 [UDP: [xxx.xxx.xx.xxx]:60088->[xxx.xxx.xx.xxx]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (8226208) 22:51:02.08#011SNMPv2-MIB::snmpTrapOID.0 = OID: PACEMAKER-MIB::pacemakerNotificationTrap#011PACEMAKER-MIB::pacemakerNotificationNode = STRING: "vm1"#011PACEMAKER-MIB::pacemakerNotificationResource = STRING: "prmDummy"#011PACEMAKER-MIB::pacemakerNotificationOperation = STRING: "start"#011PACEMAKER-MIB::pacemakerNotificationDescription = STRING: "ok"#011PACEMAKER-MIB::pacemakerNotificationStatus = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationReturnCode = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationTargetReturnCode = INTEGER: 0
Jun 29 18:24:37 snmp-manager snmptrapd[31216]: 2016-06-29 18:24:37 vm1 [UDP: [xxx.xxx.xx.xxx]:51029->[xxx.xxx.xx.xxx]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (8226217) 22:51:02.17#011SNMPv2-MIB::snmpTrapOID.0 = OID: PACEMAKER-MIB::pacemakerNotificationTrap#011PACEMAKER-MIB::pacemakerNotificationNode = STRING: "vm1"#011PACEMAKER-MIB::pacemakerNotificationResource = STRING: "prmStateful"#011PACEMAKER-MIB::pacemakerNotificationOperation = STRING: "start"#011PACEMAKER-MIB::pacemakerNotificationDescription = STRING: "ok"#011PACEMAKER-MIB::pacemakerNotificationStatus = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationReturnCode = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationTargetReturnCode = INTEGER: 0
Jun 29 18:24:37 snmp-manager snmptrapd[31216]: 2016-06-29 18:24:37 vm2 [UDP: [xxx.xxx.xx.xxx]:59101->[xxx.xxx.xx.xxx]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (59318075) 6 days, 20:46:20.75#011SNMPv2-MIB::snmpTrapOID.0 = OID: PACEMAKER-MIB::pacemakerNotificationTrap#011PACEMAKER-MIB::pacemakerNotificationNode = STRING: "vm2"#011PACEMAKER-MIB::pacemakerNotificationResource = STRING: "prmStateful"#011PACEMAKER-MIB::pacemakerNotificationOperation = STRING: "start"#011PACEMAKER-MIB::pacemakerNotificationDescription = STRING: "ok"#011PACEMAKER-MIB::pacemakerNotificationStatus = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationReturnCode = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationTargetReturnCode = INTEGER: 0
Jun 29 18:24:39 snmp-manager snmptrapd[31216]: 2016-06-29 18:24:39 vm1 [UDP: [xxx.xxx.xx.xxx]:34945->[xxx.xxx.xx.xxx]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (8226439) 22:51:04.39#011SNMPv2-MIB::snmpTrapOID.0 = OID: PACEMAKER-MIB::pacemakerNotificationTrap#011PACEMAKER-MIB::pacemakerNotificationNode = STRING: "vm1"#011PACEMAKER-MIB::pacemakerNotificationResource = STRING: "prmStateful"#011PACEMAKER-MIB::pacemakerNotificationOperation = STRING: "promote"#011PACEMAKER-MIB::pacemakerNotificationDescription = STRING: "ok"#011PACEMAKER-MIB::pacemakerNotificationStatus = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationReturnCode = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationTargetReturnCode = INTEGER: 0


```

## MasterゲストのPacemakerを停止します。
Masterゲストのリソースの停止トラップがSNMPマネージャーに送信されます。
続けて、Slaveゲストでのリソースの起動トラップがSNMPマネージャーに送信されます。

```
Jun 29 18:28:17 snmp-manager snmptrapd[31314]: 2016-06-29 18:28:17 vm2 [UDP: [xxx.xxx.xx.xxx]:46865->[xxx.xxx.xx.xxx]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (59340057) 6 days, 20:50:00.57#011SNMPv2-MIB::snmpTrapOID.0 = OID: PACEMAKER-MIB::pacemakerNotificationTrap#011PACEMAKER-MIB::pacemakerNotificationNode = STRING: "vm2"#011PACEMAKER-MIB::pacemakerNotificationResource = STRING: "prmDummy"#011PACEMAKER-MIB::pacemakerNotificationOperation = STRING: "start"#011PACEMAKER-MIB::pacemakerNotificationDescription = STRING: "ok"#011PACEMAKER-MIB::pacemakerNotificationStatus = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationReturnCode = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationTargetReturnCode = INTEGER: 0
Jun 29 18:28:17 snmp-manager snmptrapd[31314]: 2016-06-29 18:28:17 vm1 [UDP: [xxx.xxx.xx.xxx]:35255->[xxx.xxx.xx.xxx]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (8248201) 22:54:42.01#011SNMPv2-MIB::snmpTrapOID.0 = OID: PACEMAKER-MIB::pacemakerNotificationTrap#011PACEMAKER-MIB::pacemakerNotificationNode = STRING: "vm1"#011PACEMAKER-MIB::pacemakerNotificationResource = STRING: "prmDummy"#011PACEMAKER-MIB::pacemakerNotificationOperation = STRING: "stop"#011PACEMAKER-MIB::pacemakerNotificationDescription = STRING: "ok"#011PACEMAKER-MIB::pacemakerNotificationStatus = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationReturnCode = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationTargetReturnCode = INTEGER: 0
Jun 29 18:28:17 snmp-manager snmptrapd[31314]: 2016-06-29 18:28:17 vm1 [UDP: [xxx.xxx.xx.xxx]:49557->[xxx.xxx.xx.xxx]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (8248208) 22:54:42.08#011SNMPv2-MIB::snmpTrapOID.0 = OID: PACEMAKER-MIB::pacemakerNotificationTrap#011PACEMAKER-MIB::pacemakerNotificationNode = STRING: "vm1"#011PACEMAKER-MIB::pacemakerNotificationResource = STRING: "clnPrmDiskd"#011PACEMAKER-MIB::pacemakerNotificationOperation = STRING: "stop"#011PACEMAKER-MIB::pacemakerNotificationDescription = STRING: "ok"#011PACEMAKER-MIB::pacemakerNotificationStatus = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationReturnCode = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationTargetReturnCode = INTEGER: 0
Jun 29 18:28:17 snmp-manager snmptrapd[31314]: 2016-06-29 18:28:17 vm1 [UDP: [xxx.xxx.xx.xxx]:33792->[xxx.xxx.xx.xxx]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (8248211) 22:54:42.11#011SNMPv2-MIB::snmpTrapOID.0 = OID: PACEMAKER-MIB::pacemakerNotificationTrap#011PACEMAKER-MIB::pacemakerNotificationNode = STRING: "vm1"#011PACEMAKER-MIB::pacemakerNotificationResource = STRING: "clnPrmPingd"#011PACEMAKER-MIB::pacemakerNotificationOperation = STRING: "stop"#011PACEMAKER-MIB::pacemakerNotificationDescription = STRING: "ok"#011PACEMAKER-MIB::pacemakerNotificationStatus = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationReturnCode = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationTargetReturnCode = INTEGER: 0
Jun 29 18:28:17 snmp-manager snmptrapd[31314]: 2016-06-29 18:28:17 vm1 [UDP: [xxx.xxx.xx.xxx]:54763->[xxx.xxx.xx.xxx]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (8248216) 22:54:42.16#011SNMPv2-MIB::snmpTrapOID.0 = OID: PACEMAKER-MIB::pacemakerNotificationTrap#011PACEMAKER-MIB::pacemakerNotificationNode = STRING: "vm1"#011PACEMAKER-MIB::pacemakerNotificationResource = STRING: "prmStateful"#011PACEMAKER-MIB::pacemakerNotificationOperation = STRING: "demote"#011PACEMAKER-MIB::pacemakerNotificationDescription = STRING: "ok"#011PACEMAKER-MIB::pacemakerNotificationStatus = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationReturnCode = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationTargetReturnCode = INTEGER: 0
Jun 29 18:28:17 snmp-manager snmptrapd[31314]: 2016-06-29 18:28:17 vm1 [UDP: [xxx.xxx.xx.xxx]:52564->[xxx.xxx.xx.xxx]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (8248226) 22:54:42.26#011SNMPv2-MIB::snmpTrapOID.0 = OID: PACEMAKER-MIB::pacemakerNotificationTrap#011PACEMAKER-MIB::pacemakerNotificationNode = STRING: "vm1"#011PACEMAKER-MIB::pacemakerNotificationResource = STRING: "prmStateful"#011PACEMAKER-MIB::pacemakerNotificationOperation = STRING: "stop"#011PACEMAKER-MIB::pacemakerNotificationDescription = STRING: "ok"#011PACEMAKER-MIB::pacemakerNotificationStatus = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationReturnCode = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationTargetReturnCode = INTEGER: 0
Jun 29 18:28:18 snmp-manager snmptrapd[31314]: 2016-06-29 18:28:18 vm2 [UDP: [xxx.xxx.xx.xxx]:48628->[xxx.xxx.xx.xxx]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (59340104) 6 days, 20:50:01.04#011SNMPv2-MIB::snmpTrapOID.0 = OID: PACEMAKER-MIB::pacemakerNotificationTrap#011PACEMAKER-MIB::pacemakerNotificationNode = STRING: "vm2"#011PACEMAKER-MIB::pacemakerNotificationResource = STRING: "prmStateful"#011PACEMAKER-MIB::pacemakerNotificationOperation = STRING: "promote"#011PACEMAKER-MIB::pacemakerNotificationDescription = STRING: "ok"#011PACEMAKER-MIB::pacemakerNotificationStatus = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationReturnCode = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationTargetReturnCode = INTEGER: 0

``` 

## SlaveゲストのPacemakerを停止します。
Slaveゲストのリソースの停止トラップがSNMPマネージャーに送信されます。

```
Jun 29 18:30:30 snmp-manager snmptrapd[31353]: 2016-06-29 18:30:30 vm2 [UDP: [xxx.xxx.xx.xxx]:44341->[xxx.xxx.xx.xxx]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (59353357) 6 days, 20:52:13.57#011SNMPv2-MIB::snmpTrapOID.0 = OID: PACEMAKER-MIB::pacemakerNotificationTrap#011PACEMAKER-MIB::pacemakerNotificationNode = STRING: "vm2"#011PACEMAKER-MIB::pacemakerNotificationResource = STRING: "clnPrmDiskd"#011PACEMAKER-MIB::pacemakerNotificationOperation = STRING: "stop"#011PACEMAKER-MIB::pacemakerNotificationDescription = STRING: "ok"#011PACEMAKER-MIB::pacemakerNotificationStatus = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationReturnCode = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationTargetReturnCode = INTEGER: 0
Jun 29 18:30:30 snmp-manager snmptrapd[31353]: 2016-06-29 18:30:30 vm2 [UDP: [xxx.xxx.xx.xxx]:55250->[xxx.xxx.xx.xxx]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (59353365) 6 days, 20:52:13.65#011SNMPv2-MIB::snmpTrapOID.0 = OID: PACEMAKER-MIB::pacemakerNotificationTrap#011PACEMAKER-MIB::pacemakerNotificationNode = STRING: "vm2"#011PACEMAKER-MIB::pacemakerNotificationResource = STRING: "prmDummy"#011PACEMAKER-MIB::pacemakerNotificationOperation = STRING: "stop"#011PACEMAKER-MIB::pacemakerNotificationDescription = STRING: "ok"#011PACEMAKER-MIB::pacemakerNotificationStatus = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationReturnCode = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationTargetReturnCode = INTEGER: 0
Jun 29 18:30:30 snmp-manager snmptrapd[31353]: 2016-06-29 18:30:30 vm2 [UDP: [xxx.xxx.xx.xxx]:45382->[xxx.xxx.xx.xxx]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (59353370) 6 days, 20:52:13.70#011SNMPv2-MIB::snmpTrapOID.0 = OID: PACEMAKER-MIB::pacemakerNotificationTrap#011PACEMAKER-MIB::pacemakerNotificationNode = STRING: "vm2"#011PACEMAKER-MIB::pacemakerNotificationResource = STRING: "clnPrmPingd"#011PACEMAKER-MIB::pacemakerNotificationOperation = STRING: "stop"#011PACEMAKER-MIB::pacemakerNotificationDescription = STRING: "ok"#011PACEMAKER-MIB::pacemakerNotificationStatus = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationReturnCode = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationTargetReturnCode = INTEGER: 0
Jun 29 18:30:30 snmp-manager snmptrapd[31353]: 2016-06-29 18:30:30 vm2 [UDP: [xxx.xxx.xx.xxx]:41176->[xxx.xxx.xx.xxx]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (59353371) 6 days, 20:52:13.71#011SNMPv2-MIB::snmpTrapOID.0 = OID: PACEMAKER-MIB::pacemakerNotificationTrap#011PACEMAKER-MIB::pacemakerNotificationNode = STRING: "vm2"#011PACEMAKER-MIB::pacemakerNotificationResource = STRING: "prmStateful"#011PACEMAKER-MIB::pacemakerNotificationOperation = STRING: "demote"#011PACEMAKER-MIB::pacemakerNotificationDescription = STRING: "ok"#011PACEMAKER-MIB::pacemakerNotificationStatus = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationReturnCode = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationTargetReturnCode = INTEGER: 0
Jun 29 18:30:30 snmp-manager snmptrapd[31353]: 2016-06-29 18:30:30 vm2 [UDP: [xxx.xxx.xx.xxx]:58209->[xxx.xxx.xx.xxx]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (59353387) 6 days, 20:52:13.87#011SNMPv2-MIB::snmpTrapOID.0 = OID: PACEMAKER-MIB::pacemakerNotificationTrap#011PACEMAKER-MIB::pacemakerNotificationNode = STRING: "vm2"#011PACEMAKER-MIB::pacemakerNotificationResource = STRING: "prmStateful"#011PACEMAKER-MIB::pacemakerNotificationOperation = STRING: "stop"#011PACEMAKER-MIB::pacemakerNotificationDescription = STRING: "ok"#011PACEMAKER-MIB::pacemakerNotificationStatus = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationReturnCode = INTEGER: 0#011PACEMAKER-MIB::pacemakerNotificationTargetReturnCode = INTEGER: 0

```

Masterゲスト停止時にcorosyncも停止すれば、ノード離脱(lost)のトラップもSlaveゲストから送信されます。
リソース故障などでもSNMPトラップはきちんと発生しますので、興味のある方は確認してみてください。

(2016/08/18補足)
PM1.1.15には不具合があり、一部、トラップが飛ばない事象があります。解決には以下の修正を含んだ開発版（今後、PM1.1.16でリリース）を利用してください。
 - https://github.com/ClusterLabs/pacemaker/commit/9b4ee98cbfdadcd9f9bc479de0c14a233b46bda7

以上です。