SAP システム内のイベントを確実に把握するには: Pacemaker アラートの活用方法
Google Cloud Japan Team
※この投稿は米国時間 2022 年 3 月 8 日に、Google Cloud blog に投稿されたものの抄訳です。
重要なサービスでの障害の発生は、企業にとって収益や生産性、信用を失うリスクとなります。SAP アプリケーションを運用する Google Cloud のお客様が、Google Cloud 上の高可用性(HA)システムのデプロイを選択しているのはこれが理由です。
このデプロイでは、Linux オペレーティング システムのクラスタリングは、アプリケーションとゲストがアプリケーションの状態を認識できるようにして、クラスタノード、リソース、ノードのフェイルオーバーやアクションの失敗などの障害発生時の復旧処理を自動化します。
Pacemaker は、Linux の管理者が HA クラスタの管理に使用する最も一般的なソフトウェアで、フェイルオーバー、フェンシング、ノード、属性、リソースなどのイベントに関する通知の自動化や、イベントに関するレポートの作成などに使用されます。アラートやレポートが自動化されるため、Linux の管理者はイベント発生時に詳細を把握できるだけでなく、重大なイベントが発生した場合には、他の関係者にアラートを出して対策を講じてもらうこともできます。また、過去のイベントを調査して、HA システムの全体的な状態を評価することも可能です。
この記事では、HA クラスタのイベントに対する自動アラートの設定と、アラートのレポートを作成する手順を説明します。
アラートのスクリプトをデプロイする方法
次の手順に沿ってスクリプトを実行し、イベントベースのアラートを設定します。
1. スクリプト ファイル「gcp_crm_alert.sh」を https://github.com/GoogleCloudPlatform/pacemaker-alerts-cloud-logging からダウンロードします。
2. root ユーザーで、スクリプトに exec フラグを追加して、次のようにデプロイを実行します。
3. デプロイが正常に実行されていることを確認します。正常に実行された場合、以下の INFO ログ メッセージが表示されます。
Red Hat Enterprise Linux(RHEL)システムの場合:
- SUSE Linux Enterprise Server(SLES)の場合:
ここで、クラスタノード、リソース、ノードのフェイルオーバー、アクションの失敗が発生した場合、Pacemaker はアラートのメカニズムを開始します。アラート エージェントについて詳しくは、Pacemaker Explained のドキュメントをご覧ください。
アラートのレポート作成に Cloud Logging を使用する方法
アラートが出たイベントは、Cloud Logging で公開されます。以下は、クラスタのアラートの Key-Value ペアが jsonPayload ノードに記録されたログレコードのペイロードの例です。
たとえば、HANA トポロジのリソース モニタリングに障害が発生した場合、リソースのイベント通知を受け取るには、アラートの定義に次のフィルタを使用します。
フェンシングのイベントに関するアラートを定義するには、次のフィルタを適用します。
フェンシングのログエントリが、警告の重大度とともに記録されるので、より詳細な分析情報を得られるうえ、この情報をさらに具体的なフィルタ条件として活用することもできます。
アラートは、テキストやメールなど、複数のチャネルで配信できます。以下は、前述の例で定義した HANA トポロジのリソース モニタリングの障害に関するアラートによるメール通知の例です。
ログベースのアラートにフィルタを書き込んで適用すれば、特定のインシデントを分離し、時系列でイベントを分析することができます。たとえば、次のスクリプトでは、特定の日付の 2 時間という時間枠で発生したリソースのイベントを表示できます。
ログに記録されたアラートを時系列で分析する機能を使えば、イベントのパターンからなんらかのアクションを取るべきかどうかを判断できます。
[サイドバー]
アラートのスクリプトは、標準出力とログファイル /var/log/crm_alerts_log に詳細を出力するので、時間が経てば経つほどこれらが増えていきます。ファイル システム容量を制限するために、Linux の logrotate サービスを使用してログファイルの設定をすることをおすすめします。次のコマンドを使用して、アラート用ログファイルに必要な logrotate の設定を作成します。
[サイドバーの終了]
トラブルシューティングのヒント
アラートのスクリプトを初めてデプロイする場合、意図したとおりに実行できたかどうかはどうすれば確認できるでしょうか?以下のコマンドを使用してテストします。
- RHEL の場合:
- SLES の場合:
スクリプトが正しい場合、次のように表示されます。
RHEL の場合:
SLES の場合:
コマンドでアラートが正しく表示されない場合は、スクリプトを再デプロイしてください。
スクリプトに問題がある場合や、Cloud Logging の記録が想定どおりに表示されない場合は、スクリプトのログファイル /var/log/crm_alerts_log を調べてください。エラーと警告は、次のようにフィルタできます。
Pacemaker のアラートが失敗した場合は、メッセージか Pacemaker ログ、または両方に記録が残ります。直近のアラートの失敗を調べるには、次のコマンドを使用します。
Pacemaker ログの場所は、システムによっては上記の例とは異なる場合もあるのでご注意ください。
リアクティブからプロアクティブへ
重要な SAP アプリケーションが停止するというリスクは絶対に避ける必要があります。Google Cloud 上の SAP システムの高可用性クラスタを管理するのに最も効果的な方法は、Pacemaker のアラート機能を最大限に活用し、システムを常に健全で利用可能な状態に保つために先を見越したアクションを取ることです。
Google Cloud での SAP の運用について詳しくはこちらをご覧ください。
- 技術ソリューション エンジニア マネージャー Tsvetomir Tsvetanov