Amazon Web Services ブログ

SAP監視: Amazon CloudWatchを使用したサーバレスアプローチ

AWS上でSAPを稼働しているアクティブなお客様は5,000を超えており、様々なSAPリリースとバージョンのSAPワークロードを実行されています。大半のお客様は、1つ以上のアプリケーションサーバとデータベースで構成されるSAP NetWeaver ABAPベースの環境で動作しています。SAPのお客様は、多くの場合、SAP Solution Manager Focus RunAvantraのような3rdパーティー製の商用ソリューションを使用して、SAPアプリケーションを総合的かつ大規模に監視しています。

このブログ記事では、その代わりとなるAmazon CloudWatchとAWS Lambdaに基づくサーバレスのアプローチを紹介します。このアプローチにより、お客様はサーバやエージェントを展開、管理する必要なく、低コストでSAP ABAPベースの環境を効率的に監視できます。このソリューションは、AWS Serverless Application RepositoryまたはAWS CloudFormationを使用して、シームレスに数分で展開できます。CloudWatchのカスタムメトリクスと新しい埋め込みログフォーマットの機能を活用します。これにより、CloudWatchで、SAPアプリケーションレベルのパフォーマンスデータなどの独自のメトリクスを簡単に発行し、しきい値とアラームを作成できます。

アーキテクチャ

次のアーキテクチャ図は、AWS CloudFormationで展開される監視設定を示しています。SAP Java Connector (JCo)のLambdaレイヤー”sapjco“は、あらかじめ手動で作成する必要があります。

Target Architecture

生成されたAmazon CloudWatchのルールは、JavaベースのLambda関数を毎分トリガーし、Lambdaレイヤーとして機能する公式のSAP JCo ライブラリを通じてSAPシステムに対し複数のRemote Function Call (RFC)を実行します。この接続は、最新のAWS Lambdaのネットワーク機能改善も利用して、既存のAmazon Virtual Private Cloud (VPC)にLambdaを追加して作成します。

SAP RFCの認証情報と接続情報はAWS Secrets Manager内に安全に保存され、オンデマンドで読み取って接続を確立します。Lambda関数は、SAPアプリケーションレベルのメトリクスを抽出し、それぞれのカスタム名前空間を追加して、それをCloudWatchにプッシュします。ユーザーは、その後にCloudWatch内に独自のカスタムダッシュボードを作成できます。

設定

前提条件

  • SAP NetWeaver ABAP 740以上 (ECC, S4, BW, …)
    • SAPコンポーネントST-PIリリース740 SP 08以上
    • SAP統計レコードが有効 (トランザクションコード stad / st03)。デフォルトで有効になってない場合は、SAPノート 2369736を確認
    • SAP RFCのユーザーとパスワード – “手順 1”を参照
  • SAP Java ConnectorをダウンロードするためのSAP Sユーザー – “手順 2”を参照
  • Lambda関数がプライベートサブネット経由で監視対象のSAPシステムに接続できるように、ポート33<インスタンスID>でインバウンド/アウトバウンドのトラフィックを許可するAmazon VPCセキュリティグループ – 前の“アーキテクチャ”の章も参照
  • 本稼働システムの場合、SAPノート 1656250に従って、CloudWatch詳細モニタリングを有効化

手順 1: 監視用のSAPユーザーを作成 (SAPGUI)

ステップバイステップガイドと必要な権限の管理リストを参照してください。

手順 2: SAP JCoのLambdaレイヤーを作成 (コンソール)

この操作は、その後の展開に関係なく、一度だけ実施する必要があります。

ステップバイステップガイドを参照してください。

手順 3: ソリューションを展開 (コンソール)

大半のAWSリージョンにおいて、”sap-monitor“を検索することで、AWS Serverless Application Repositoryを使ってソリューションを簡単に展開できます。”カスタムIAMロールまたはリソースポリシーを作成するアプリを表示する“にチェックしてください。

お使いのリージョンで利用できない場合は、次のAWS CloudFormation テンプレートを実行して手動で展開してください。

Serverless Application Repository

SAPシステムID、クライアント、ホスト/IPアドレス、インスタンスID、RFCのユーザーとパスワード、ターゲットVPCのセキュリティグループとサブネットなど、必要な詳細をすべて慎重に入力します。SAPプライマリアプリケーションサーバとそれぞれのAmazon Elastic Compute Cloud (Amazon EC2)の設定の入力内容も比較してください。

注意: 複数のシステムを監視する場合は、SAPシステムIDごとにこのアプリケーションの単一インスタンスを展開する必要があります。

Serverless Application Repository Deployment

この手順で問題が発生した場合は、トラブルシューティングガイドを参照してください。

監視を介して自動的にではなく、自身で/SDF/SMONを開始したい場合は、ドキュメントの手動スケジューリングを確認してください。

手順 4: 関数をテスト (コンソール)

Lambdaコンソールを開いて、”sap-monitor-<SID>“を選択し、”テスト“を選択します。”テストイベントの設定“のページでは、”新しいテストイベントの作成“を選択し、{“refresh”:true}を入力します。

Lambda Create Test Event

テスト“を押します。予想される出力を以下に示します。

Lambda Test function

この手順で問題が発生した場合は、トラブルシューティングガイドを参照してください。

手順 5: スケジューラーを有効化 (コンソール)

CloudWatchコンソールを開きます。ナビゲーションペインで、”ルール“を選択します。ルール”sap-monitor-<SID>“を選択し、”アクション“から”有効化“を選択して、定期的に実行されるようにします。

CloudWatch Rule to trigger the monitor

手順 6: ダッシュボートを作成 (コンソール)

CloudWatchコンソールを開きます。ナビゲーションペインで、”メトリクス“を選択します。”カスタム名前空間“の下に、SIDごとに配列されたカスタムメトリクスを見つけます。任意のメトリクスを選択して、出力をプレビューすることができます。

CloudWatch Locate custom metrics

ダッシュボード“に移動して、新しいカスタムダッシュボードを設定するために”ダッシュボードの作成“を押します。”ウィジェットの追加“を選択し、リストからそれぞれのカスタムメトリクスを選択します。粒度と期間が一致しているか確認します。”保存“するのを忘れないでください。

結果としてダッシュボードは次のようになります。

Dashboard Part2

Dashboard Part1

CloudWatchでは、 お客様のウェブページにグラフを埋め込むこともできます。

手順 7: アラームを作成

アラームを作成し、目的のしきい値を超えたときに通知を受け取ることができます。

次のように関数”sap-monitor-<SID>“のLambdaメトリクス”エラー“を選択して、sap-monitor自身を監視するシンプルなアラームから始めましょう。

CloudWatch Alarm to monitor the monitor

対応するAmazon Simple Notification Service (Amazon SNS)のトピックを設定した場合は、 監視が失敗したときにEメールで通知をするよう選択できます。最新の注意を払う必要があるメトリクスについては、他のアラームを続行してください。

パフォーマンスに関する考慮事項

現在、2つの手法を使用してSAPシステムに定期的にクエリを実行し、洞察を収集しています。

  • 30秒の粒度で/SDF/SMONを1分間周期 (オンデマンドで毎日スケジュール):
    SAPによると、/SDF/SMONが必要とするSAPシステムのCPUとメモリのオーバーヘッドは無視でき、本稼働環境でも安全に実行できます
  • st03の”直近の負荷”を5分間周期:
    通常、SAP統計レコード (stad)と関連する集計 (st03)はデフォルトで有効になっています (そうでない場合は、SAPノート 2369736を確認)。これらは、特にSAP GoingLive Check、SAP EarlyWatch Alert、SAP Solution ManagerによるSAP監視の基盤です

コストに関する考慮事項

例えば、2つのアプリケーションサーバを備えた単一のSAPシステムで、無料枠を考慮しない場合、推定コストはSIDあたり月額16米ドルです。

保存されるログデータを制限し、長期的にコストを削減するためには、/aws/lambda/sap-monitor-<SID>も1週間に保持期限を削減してください。 

収集されるメトリクス

現時点で収集されるメトリクスとその重要性の完全なリストは、GitHubリポジトリにあります。

ハードディスクの空き容量のような他のOS関連のメトリクスも監視したい場合は、加えてCloudWatch エージェントを展開することもできます。

貢献

このソリューションは現状のまま提供され、いかなる保証もありませんが、GitHubリポジトリを使用したバグの報告、アイデアの収集、貢献を奨励しています。

結論

このブログ記事では、Amazon CloudWatchでSAP ABAPベースのシステムを監視する方法を紹介しました。また、AWS Serverless Application RepositoryとAWS CloudFormationを通じて展開できるSAPアプリケーションのメトリクスのベースラインを備えたすぐに使用可能なソリューションも提供しています。SAPの認証情報はAWS Secrets Manager内に安全に保存されることもお伝えしています。SAPシステムへの接続は明確に定義されており、オンデマンドで簡単に無効化できます。ソースコードは公に入手可能であり、また拡張することができます。

これにより、SAPシステムを監視する簡単な方法が得られ、監視ダッシュボードとアラームはお客様独自の要件に合わせて調整できます。

このブログ記事がお役に立てば幸いです。ご意見やご質問はお気軽にお問い合わせください。

翻訳はPartner SA 河原が担当しました。原文はこちらです。