Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

13.2. モニタリングのリソースを使ったイベント通知

ocf:pacemaker:ClusterMon リソースはクラスターのステータスを監視し、各クラスターイベントでアラートをトリガーできます。このリソースは、crm_mon コマンドを一定間隔でバックグラウンドで実行します。
デフォルトでは、crm_mon コマンドはリソースイベントのみをリッスンします。フェンシングイベントのリストを有効にするには、ClusterMon リソースの設定時に --watch-fencing オプションをコマンドに指定します。crm_mon コマンドはメンバーシップの問題を監視しませんが、フェンシングが開始され、そのノードに対して監視が開始されたときにメッセージが出力されます。これはメンバーがクラスターに参加したことを意味します。
ClusterMon リソース は外部プログラムを実行して、extra_options パラメーターを使用してクラスター通知を行うものを判別できます。表13.3「外部監視プログラムへ渡される環境変数」 は、発生したクラスターイベントのタイプを記述する、プログラムに渡される環境変数を一覧表示します。

表13.3 外部監視プログラムへ渡される環境変数

環境変数説明
CRM_notify_recipient
リソース定義からの静的な外部受信側。
CRM_notify_node
状態が変更したノード。
CRM_notify_rsc
状態を変更したリソースの名前。
CRM_notify_task
状態が変更する原因となった操作。
CRM_notify_desc
状態が変更する原因となった操作 (該当の操作がある場合) のテキスト出力の関連エラーコード。
CRM_notify_rc
操作の戻りコード。
CRM_target_rc
操作の予期される戻りコード。
CRM_notify_status
操作の状態の数値表現。
以下の例は、外部プログラム crm_logger.sh を実行する ClusterMon リソースを設定します。このプログラムは指定されたイベント通知をログに記録します。
以下の手順は、このリソースが使用する crm_logger.sh プログラムを作成します。
  1. クラスターのノードの 1 つで、イベント通知をログに記録するプログラムを作成します。
    # cat <<-END >/usr/local/bin/crm_logger.sh
    #!/bin/sh
    logger -t "ClusterMon-External" "${CRM_notify_node} ${CRM_notify_rsc} \
    ${CRM_notify_task} ${CRM_notify_desc} ${CRM_notify_rc} \
    ${CRM_notify_target_rc} ${CRM_notify_status} ${CRM_notify_recipient}";
    exit;
    END
  2. プログラムの所有者とパーミッションを設定します。
    # chmod 700 /usr/local/bin/crm_logger.sh
    # chown root.root /usr/local/bin/crm_logger.sh
  3. scp コマンドを使用して crm_logger.sh プログラムをクラスターの他のノードにコピーし、それらのノードの同じ場所にプログラムを配置し、プログラムに同じ所有者とパーミッションを設定します。
以下の例は、プログラム /usr/local/bin/crm_logger.sh を実行する ClusterMon -External という名前の ClusterMon リソースを設定します。ClusterMon リソースは、クラスターのステータスを html ファイル(この例では /var/www/html/cluster_mon.html )に出力します。pidfileClusterMon がすでに実行されているかどうかを検出します(この例では /var/run/crm_mon-external.pid ファイル)。このリソースはクローンとして作成されるため、クラスターの各ノードで実行されます。watch-fencing は、フェンスリソースの start/stop/monitor、start/monitor など、リソースイベントなどのフェンスイベントの監視を有効にするために指定されます。
# pcs resource create ClusterMon-External ClusterMon user=root \
update=10 extra_options="-E /usr/local/bin/crm_logger.sh --watch-fencing" \
htmlfile=/var/www/html/cluster_mon.html \
pidfile=/var/run/crm_mon-external.pid clone
注記
このリソースが実行され、手動で実行できる crm_mon コマンドは次のとおりです。
# /usr/sbin/crm_mon -p /var/run/crm_mon-manual.pid -d -i 5 \
-h /var/www/html/crm_mon-manual.html -E "/usr/local/bin/crm_logger.sh" \
--watch-fencing
以下の例は、この例によって生成される監視通知の出力形式になります。
Aug  7 11:31:32 rh6node1pcmk ClusterMon-External: rh6node2pcmk.examplerh.com ClusterIP st_notify_fence Operation st_notify_fence requested by rh6node1pcmk.examplerh.com for peer rh6node2pcmk.examplerh.com: OK (ref=b206b618-e532-42a5-92eb-44d363ac848e) 0 0 0 #177
Aug  7 11:31:32 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterIP start OK 0 0 0
Aug  7 11:31:32 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterIP monitor OK 0 0 0
Aug  7 11:33:59 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com fence_xvms monitor OK 0 0 0
Aug  7 11:33:59 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterIP monitor OK 0 0 0
Aug  7 11:33:59 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterMon-External start OK 0 0 0
Aug  7 11:33:59 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com fence_xvms start OK 0 0 0
Aug  7 11:33:59 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterIP start OK 0 0 0
Aug  7 11:33:59 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterMon-External monitor OK 0 0 0
Aug  7 11:34:00 rh6node1pcmk crmd[2887]:   notice: te_rsc_command: Initiating action 8: monitor ClusterMon-External:1_monitor_0 on rh6node2pcmk.examplerh.com
Aug  7 11:34:00 rh6node1pcmk crmd[2887]:   notice: te_rsc_command: Initiating action 16: start ClusterMon-External:1_start_0 on rh6node2pcmk.examplerh.com
Aug  7 11:34:00 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterIP stop OK 0 0 0
Aug  7 11:34:00 rh6node1pcmk crmd[2887]:   notice: te_rsc_command: Initiating action 15: monitor ClusterMon-External_monitor_10000 on rh6node2pcmk.examplerh.com
Aug  7 11:34:00 rh6node1pcmk ClusterMon-External: rh6node2pcmk.examplerh.com ClusterMon-External start OK 0 0 0
Aug  7 11:34:00 rh6node1pcmk ClusterMon-External: rh6node2pcmk.examplerh.com ClusterMon-External monitor OK 0 0 0
Aug  7 11:34:00 rh6node1pcmk ClusterMon-External: rh6node2pcmk.examplerh.com ClusterIP start OK 0 0 0
Aug  7 11:34:00 rh6node1pcmk ClusterMon-External: rh6node2pcmk.examplerh.com ClusterIP monitor OK 0 0 0