

# ソリューションのモニタリング
<a name="monitor-the-solution"></a>

## ロギングと通知
<a name="logging-and-notifications"></a>

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

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

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

 `{stackName}-{namespace}-scheduling-logs`   
オーケストレーションやリクエストハンドラーの実行などのスケジューリングオペレーションのログ。

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

## 情報タグ
<a name="informational-tags"></a>

情報タグ付けが有効になっている場合 (デフォルト)、Instance Scheduler はマネージドリソースに直接タグを書き込み、ソリューションのスケジューリングアクティビティを一目で把握できるようにします。これらのタグは AWS Resource Groups タグ付け API を使用して適用され、スケジューラがリソースを処理するたびに更新されます。

この機能は、ハブスタックの**情報タグ付けを有効にする**パラメータを使用して有効または無効にできます。詳細については、「[グローバル構成設定の更新](update-global-configuration-settings.md)」を参照してください。

### 情報タグキー
<a name="informational-tag-keys"></a>

マネージドリソースには、次のタグが書き込まれます。


| タグキー | 説明 | 
| --- | --- | 
|  `IS-ManagedBy`  | このリソースを管理する Instance Scheduler ハブスタックの ARN。リソースがスケジューリングのために最初に登録され、その後のスケジューリングアクションごとに適用されます。 | 
|  `IS-LastAction`  | リソースに対して最後に実行されたスケジューリングアクションと UTC タイムスタンプ。例えば、`Started 2025-06-15 09:00:00 UTC` や `Stopped 2025-06-15 17:00:00 UTC` などです。このタグは、スケジューラがリソースをアクティブに開始または停止する場合にのみ更新されます (リソースを評価し、アクションが必要ではないと判断した場合は更新されません)。 | 
|  `IS-Error`  | リソースの処理中にスケジューラでエラーが発生した場合、このタグにはエラーコードと UTC タイムスタンプが含まれます。例: `StartFailed 2025-06-15 09:00:05 UTC`。このタグは、次に成功したスケジューリングアクションで自動的にクリアされます。 | 
|  `IS-ErrorMessage`  | 人が読み取り可能なエラーの説明。このタグは、`IS-Error` が存在する場合にのみ付与され、それと同時に削除されます。 | 

### エラーコード
<a name="informational-tag-error-codes"></a>

`IS-Error` タグには、次のエラーコードが表示される場合があります。


| エラーコード | 説明 | 
| --- | --- | 
|  `UnknownSchedule`  | リソースのスケジュールタグで指定されたスケジュール名が、設定テーブルに定義されているいずれのスケジュールとも一致しません。 | 
|  `UnsupportedResource`  | リソースタイプがスケジューリングに対応していません (別の RDS インスタンスのリードレプリカなど)。 | 
|  `IncompatibleSchedule`  | リソースに割り当てられたスケジュールは、リソースタイプと互換性がありません (サポートされていない cron 式を使用する ASG スケジュールなど)。 | 
|  `StartFailed`  | スケジューラはリソースの起動を試みましたが、オペレーションは失敗しました。 | 
|  `StopFailed`  | スケジューラはリソースの停止を試みましたが、オペレーションは失敗しました。 | 
|  `ConfigurationFailed`  | スケジューラは Auto Scaling グループでスケジュールされたスケーリングルールを設定しようとしましたが、オペレーションは失敗しました。 | 
|  `UnknownError`  | リソースの処理中に予期しないエラーが発生しました。 | 

### タグの動作
<a name="informational-tag-behavior"></a>
+ リソースがスケジューリングのために最初に登録されると、`IS-ManagedBy` タグはすぐに適用されます。
+ リソースの登録が解除されると (スケジュールタグが削除されると)、すべての情報タグ (`IS-ManagedBy`、`IS-LastAction`、`IS-Error`、`IS-ErrorMessage`) がリソースから削除されます。
+ 同じエラーが持続し、リソースに既存のタグがまだ存在する場合、エラータグはスケジューリング間隔ごとに書き換えられません。エラーコードが変更された場合にのみ更新されます。
+ すべてのタグ値は、AWS のタグ付け制限に準拠するために 256 文字に切り捨てられます。

### タグガバナンスに関する考慮事項
<a name="informational-tag-conflict-with-tag-policies"></a>

**重要**  
Instance Scheduler は、通常のオペレーションの一環として、マネージドリソースで上記のタグを作成および更新します。組織が AWS Config ルール、タグポリシー、サービスコントロールポリシー、または自動修復を通じてタグガバナンスを強制する場合は、変更管理コントロールが次のタグキーを許可するように設定されていることを確認します。  
 `IS-ManagedBy` 
 `IS-LastAction` 
 `IS-Error` 
 `IS-ErrorMessage` 
 `IS-PreferredInstanceTypes` (代替インスタンスタイプを使用する場合)
 `IS-MinDesiredMax` (Auto Scaling グループをスケジュールする場合)
ガバナンスポリシーでこれらのタグに対応できない場合は、ハブスタックの**情報タグ付けを有効にする**パラメータを `No` に設定して、情報タグ付けを無効にします。これにより、リソース登録の確認に使用される `IS-ManagedBy` タグも無効になることに注意してください。

### コントロールタグ
<a name="informational-tag-control-tags"></a>

Instance Scheduler は、情報タグに加えて、特定の機能に次のコントロールタグを使用します。


| タグキー | 説明 | 
| --- | --- | 
|  `IS-PreferredInstanceTypes`  | 容量不足が原因でインスタンスの起動が失敗した場合に試行する代替 EC2 インスタンスタイプのカンマ区切りリスト。詳細については、「[EC2 容量不足エラーの処理](specifying-alternate-instance-types-for-ec2.md)」を参照してください。 | 
|  `IS-MinDesiredMax`  | `min,desired,max` 形式の Auto Scaling グループの最小容量値、希望容量値、最大容量値。詳細については、「[EC2 Auto Scaling グループのスケジューリング](ec2-auto-scaling-group-scheduling.md)」を参照してください。 | 

### タグ容量
<a name="informational-tag-capacity"></a>

**重要**  
AWS リソースには通常、リソースあたり 50 個のタグの制限があります。Instance Scheduler は、リソースに対して最大 6 つのタグ (4 つの情報タグと最大 2 つのコントロールタグ) を使用できます。リソースに、Instance Scheduler タグおよび既存のタグ付け戦略に対応するのに十分なタグ容量があることを確認します。  
リソースが 50 タグの制限またはそれに近い場合、情報タグの書き込みが失敗する可能性があります。スケジューラはこれらの失敗をログに記録しますが、引き続きオペレーションをスケジュールします。タグ付けの問題が疑われる場合は、CloudWatch Logs を確認してください。

## CloudWatch Logs Insights クエリの例
<a name="cloudwatch-logs-insights-queries"></a>

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

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

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

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

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

CloudWatch Logs Insights の詳細については、「*Amazon CloudWatch Logs ユーザーガイド*」の「[CloudWatch Logs Insights でログデータを分析する](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html)」を参照してください。

## Operational Insights ダッシュボード
<a name="operational-insights-dashboard"></a>

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

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

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

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

![OpsDashboardOverview](http://docs.aws.amazon.com/ja_jp/solutions/latest/instance-scheduler-on-aws/images/OpsDashboardOverview.png)


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

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

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

![OpsDashboardLambdaMetrics](http://docs.aws.amazon.com/ja_jp/solutions/latest/instance-scheduler-on-aws/images/OpsDashboardLambdaMetrics.png)


### この機能に関連する追加コスト
<a name="additional-costs-associated-with-this-feature"></a>

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


| カスタム CloudWatch ダッシュボード | 3 USD | 
| --- | --- | 
| インスタンスタイプごとのメトリックス | 0.90 USD / インスタンスタイプ\* | 
| API の使用 | [アクティブなターゲット](cost.md#calculating-scheduling-targets)あたり最大 0.10 USD\*\* | 

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

 ** **\*** 

## EventBridge イベントのモニタリング
<a name="monitoring-eventbridge-events"></a>

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

### イベントタイプ
<a name="event-types"></a>

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

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

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

### イベントの送信先
<a name="event-destinations"></a>

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

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

### EBS EventBridge イベント
<a name="using-eventbridge-events"></a>

以下の EventBridge ルールを作成できます。
+ インフラストラクチャ全体のスケジューリングオペレーションをモニタリングする
+ インスタンスの起動または停止時に通知をトリガーする
+ 他の AWS サービスと統合してワークフローを自動化する
+ コンプライアンスのモニタリングとアラートの実装

### イベントの構造
<a name="event-structure"></a>

すべてのイベントは標準の 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 ルールの作成
<a name="creating-eventbridge-rules"></a>

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

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

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

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

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

Eventbridge の詳細については、「*Amazon EventBridge ユーザーガイド*」の「[Amazon EventBridge とは](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)」を参照してください。