ソリューションのモニタリング - AWS での Instance Scheduler

ソリューションのモニタリング

ロギングと通知

Instance Scheduler は、CloudWatch Logs Insights クエリ用に最適化された構造化ログ記録を使用します。このソリューションは、タグ付けされた各インスタンスの処理情報、インスタンスの期間評価の結果、その期間中のインスタンスの望ましい状態、適用されたアクション、デバッグメッセージを記録します。

ログは 2 つのロググループで Amazon CloudWatch Logs に書き込まれます。

{stackName}-{namespace}-administrative-logs

リソースの登録と登録解除、カスタムリソースオペレーション、CLI リクエスト、およびその他の管理アクティビティのログ。

{stackName}-{namespace}-scheduling-logs

オーケストレーションやリクエストハンドラーの実行などのスケジューリングオペレーションのログ。

警告とエラーログは、ソリューションが作成した Amazon SNS トピックにも送信され、そこからサブスクライブされたメールアドレスにメッセージが送信されるよう設定することもできます。Amazon SNS のトピックの名前は、このソリューションスタックの [出力] タブで確認できます。

CloudWatch Logs Insights クエリの例

Instance Scheduler の構造化ログ記録形式により、CloudWatch Logs Insights を使用した効率的なクエリが可能になります。Logs Insights を使用してログデータを検索、分析、視覚化し、運用上の問題のトラブルシューティングやスケジューリングアクティビティのモニタリングを行うことができます。

Instance Scheduler には、CloudWatch Logs コンソールの [保存されたクエリー] セクションからアクセスできる事前形式のログクエリが用意されています。

SchedulingHistory

開始および停止オペレーションなど、リソースに対して実行されるスケジューリングアクションをクエリします。

RegistrationEvents

リソースの登録イベントと登録解除イベントをクエリします。

Errors

エラーログをクエリして、ソリューションに関する問題をトラブルシューティングします。

CloudWatch Logs Insights の詳細については、「Amazon CloudWatch Logs ユーザーガイド」の「CloudWatch Logs Insights でログデータを分析する」を参照してください。

Operational Insights ダッシュボード

Operational Insights ダッシュボードは、スケジュールされたインスタンス管理によるソリューションのパフォーマンスとコスト削減を可視化します。

このダッシュボードを使用するには、ハブスタックパラメータで、[Operational Monitoring] が [有効] に設定されていることを確認します。CloudWatch に移動し、ナビゲーションメニューから [ダッシュボード] を選択します。ダッシュボード名は *{stack-name}-Operational-Insights-Dashboard* になります。

ダッシュボードには、マネージドインスタンス数、保存された実行時間、Lambda 関数のパフォーマンスメトリクスが表示されます。

Operational Insights ダッシュボードの概要

OpsDashboardOverview
注記

これらのグラフの情報は、ソリューションハブスタックで設定されているスケジューリング間隔によって異なります。ソリューションのスケジューリング間隔を更新すると、スケジューリング間隔に対する直近の更新後のスケジューリングメトリクスのみがダッシュボードに表示されます。

Lambda の実行時間をモニタリングして、最適なパフォーマンスを提供します (「クォータ」を参照)。実行時間がタイムアウトしきい値に一貫して近づいている場合は、Lambda サイズプロパティを増やすか、Instance Scheduler をマネージドリージョンへのレイテンシーが低いリージョンにデプロイすることを検討してください。

期間とエラー数を示す Lambda メトリクス

OpsDashboardLambdaMetrics

この機能に関連する追加コスト

この運用ダッシュボードは、ソリューションで収集したカスタム CloudWatch メトリクスを利用するため、追加コストが発生します。この機能をオフにするには、ソリューションハブスタックで [Operational Monitoring] を無効にします。この機能には、デプロイのサイズに基づいて、1 か月あたり 3.00 USD と追加のスケーリングコストがかかります。コストは以下のとおりです。

カスタム CloudWatch ダッシュボード 3 USD

インスタンスタイプごとのメトリックス

0.90 USD / インスタンスタイプ*

API の使用

アクティブなターゲットあたり最大 0.10 USD**

*これらのコストはサービスカテゴリ (EC2/RDS) ごとに追跡され、スケジューリングに実際に使用されたインスタンスタイプに対してのみ追跡されます。

*

EventBridge イベントのモニタリング

Instance Scheduler は、スケジューリングイベントと登録イベントを EventBridge イベントバスに発行して、ソリューションオペレーションを可視化し、他の AWS サービスとの統合を可能にします。

イベントタイプ

このソリューションは、主に次の 2 つのカテゴリのイベントを発行します。

スケジュールイベント: Instance Scheduler がマネージドリソースを開始、停止、または設定するアクションを実行したときに発行されます。これらのイベントには、インスタンス、スケジュール、実行されたアクションに関する詳細が含まれます。これらのイベントには、インスタンス、スケジュール、実行されたアクションに関する詳細が含まれます。

登録イベント: リソースがタグ付けオペレーションに基づいてスケジューリングのために登録または登録解除されたときに発行されます。

イベントの送信先

IS-LocalEvents イベントバス: IS-LocalEvents イベントバスは、各メンバーアカウント (ハブアカウントを含む) の各マネージドリージョンにデプロイされます。各バスは、そのリージョン内のスケジュールアクションとリソース登録のイベントを受け取ります。

IS-GlobalEvents イベントバス: ハブアカウントの IS-GlobalEvents イベントバスは、すべての IS-LocalEvents イベントバスに送信された各イベントのコピーを受け取り、すべてのアカウントとリージョンを一元的にモニタリングできます。

EBS EventBridge イベント

以下の EventBridge ルールを作成できます。

  • インフラストラクチャ全体のスケジューリングオペレーションをモニタリングする

  • インスタンスの起動または停止時に通知をトリガーする

  • 他の AWS サービスと統合してワークフローを自動化する

  • コンプライアンスのモニタリングとアラートの実装

イベントの構造

すべてのイベントは標準の EventBridge 形式を使用します。次の例は、各イベントタイプの構造を示しています。

スケジュールイベント:

{ "Source": "instance-scheduler", "DetailType": "Scheduling Action", "Resources": ["arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"], "Detail": { "account": "123456789012", "region": "us-east-1", "service": "ec2", "resource_id": "i-1234567890abcdef0", "requested_action": "Start", "action_taken": "Started", "schedule": "office-hours" } }

登録イベント:

{ "Source": "instance-scheduler", "DetailType": "Resource Registered", "Resources": ["arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"], "Detail": { "account": "123456789012", "region": "us-east-1", "service": "ec2", "resource_id": "i-1234567890abcdef0", "schedule": "office-hours" } }

各イベントには、次のキーフィールドが含まれます。

  • Source - イベントソースを「インスタンススケジューラ」として識別する

  • DetailType - イベントカテゴリを指定する。インスタンスオペレーションの場合は「スケジュールアクション」、イベントのタグ付けの場合は「リソース登録済み」

  • Resources – 影響を受けた AWS リソースの ARN を含む配列。

  • Detail - リクエストされたアクションと実際の結果の両方について、アカウント ID、リージョン、サービスタイプ (EC2/RDS)、リソース ID、スケジュール、およびイベントをスケジュールするためのイベントペイロードが含まれる

イベントをスケジュールするために指定できる requested_action 値:

  • Start: インスタンスを起動するスケジューラ

  • Stop: インスタンスを停止するスケジューラ

  • Configure: インスタンスを設定するスケジューラ

イベントをスケジュールするために指定できる action_taken 値:

  • Started: インスタンスが開始された

  • Stopped: インスタンスが停止した

  • Hibernated: インスタンスが休止した

  • Configured: インスタンス設定が変更された

  • Error: スケジューリングオペレーション中にエラーが発生した

EventBridge ルールの作成

Instance Scheduler イベントをモニタリングするには:

  1. ご利用の AWS アカウント で EventBridge コンソール に移動する

  2. IS-GlobalEvents イベントバス (集中モニタリング用) または IS-LocalEvents イベントバス (ローカルモニタリング用) をターゲットとする新しいルールを作成する

  3. Instance Scheduler イベントと一致するイベントパターンを定義する

  4. SNS トピック、Lambda 関数、CloudWatch Logs などのターゲットを設定する

Eventbridge の詳細については、「Amazon EventBridge ユーザーガイド」の「Amazon EventBridge とは」を参照してください。