はじめに
SSMを使ったサービスを利用する機会があり、SSMエージェントの死活監視をしたいと考えました。
SSMエージェントを監視する標準のメトリクスは用意されていないため※2026年3月時点
今回は、EC2のCloudWatch Agentを利用し、特定のプロセス数(procstat)を監視する方法でSSMエージェントの死活監視をする方法について記載します。
前提
・EC2のOSはwindwosを想定
・対象のEC2にSSMAgent/CloudWatchAgentがインストールされており既に稼働していること
・CloudwatchにCloudWatchAgentのログが転送できていること
・EC2にRDPできること
設定
CloudWatchAgentの設定ファイルの変更作業
EC2にRDPしてCloudWatchAgentの設定ファイルを編集します。
変更していなければ、通常は以下のフォルダに設定ファイルがあるかと思います。
C:\Program Files\Amazon\AmazonCloudWatchAgent
設定ファイルをエディターなどで開きます。
metricsのprocstat セクションに以下を記述します。
{
"exe": "amazon-ssm-agent",
"measurement": [
"pid_count"
],
"metrics_collection_interval": 60
}
※チェックの間隔は1分としています。
その後以下のコマンドなどでCloudWatchAgentを再起動します。
※設定ファイルを読み込ませるために再起動が必要になります。
※ここでは設定ファイル名を推奨のamazon-cloudwatch-agent.jsonとします。
& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" `
-a fetch-config `
-m ec2 `
-c "file:C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent.json" `
-s
すぐに起動(再起動)するので、以下のコマンドで状態を確認します。
Get-Service -Name 'AmazonCloudWatchAgent'
Get-Service -Name 'AmazonCloudWatchAgent'
Status Name DisplayName
------ ---- -----------
Running AmazonCloudWatc... Amazon CloudWatch Agent
StatusがRunningになっていれば起動しています。
数分待つと、CloudWatch上のAgentのメトリクスにもSSMのプロセス監視のメトリクスが表示されます。

アラームの作成
メトリクスが作成できたら、そのメトリクスを利用したアラームを作成します。
本記事では以下のような条件としています。
| 項目 | 設定値 | 挙動 |
|---|---|---|
| 統計 | 最小 | 1分間の集計期間中に、一度でもプロセス数が 0 になれば、その数値(0)を評価対象にする |
| 期間 | 1分 | 1分ごとに判定を行う |
| しきい値の種類 | 静的 | 以下の値をしきい値として利用 |
| アラーム条件 | しきい値:1より低い | 1(正常)を下回った場合、0(停止)になった時に異常とみなす |
| データポイント | 1/1 | 1回(1分間)でも異常を検知したら、アラーム状態とする |
| 欠損データの処理 | 欠損データを不正(しきい値を超えている)として処理 | 何らかの理由でデータが届かない場合も「異常(停止)」とみなしてアラートを出す |
この設定では「SSMエージェントが少しでも停止している疑いがあれば、即座に(最大1分以内に)アラートを飛ばす」とういう挙動のアラームになります。
アラームの設定手順は以下になります。
CloudWatch>アラーム>アラームの作成をクリックします。

「メトリクスの作成」では先程作成したメトリクスを選択します。
「メトリクスと条件の指定」では以下の様に設定するとします。
「アクションの設定」ではアラーム状態トリガーの指定や通知の送信先を設定します。

「アラームの詳細の追加」では任意の「アラーム名」を記載します。

「プレビューと作成」画面で設定内容を確認し、問題なければ「アラームの作成」をクリックします。
以上でアラームの作成は完了です。
作成したアラームの状態が「OK」となれば監視できている状態になります。
アラームの動作確認
アラームの動作を確認するには、インスタンスにRDPして以下のコマンドを実行することで
確認ができます。
PowerShellなどを立ち上げ以下のコマンドを実行します。
まずはSSMエージェントが動いていることを確認します。
Get-Service -Name "AmazonSSMAgent"
Get-Service -Name "AmazonSSMAgent"
>>
Status Name DisplayName
------ ---- -----------
Running AmazonSSMAgent Amazon SSM Agent
次にSSMエージェントを停止します。
Stop-Service -Name "AmazonSSMAgent"
Stop-Service -Name "AmazonSSMAgent"
> Stop-Service -Name "AmazonSSMAgent"
WARNING: Waiting for service 'Amazon SSM Agent (AmazonSSMAgent)' to stop...
WARNING: Waiting for service 'Amazon SSM Agent (AmazonSSMAgent)' to stop...
WARNING: Waiting for service 'Amazon SSM Agent (AmazonSSMAgent)' to stop...
次に、以下のコマンドを入力してSSMエージェントが停止されていることを確認します。
Get-Service -Name "AmazonSSMAgent"
Get-Service -Name "AmazonSSMAgent"
>>
Status Name DisplayName
------ ---- -----------
Stopped AmazonSSMAgent Amazon SSM Agent
ステータスが「Stopped」であることを確認します。
この状態で数分待つとCloudWatchでアラームとして検知されるはずです。
※注意※
FleetManagerなどを使ってRDPしている場合、SSMエージェントを止め続けていると、RDPのセッションが切れてインスタンスにログインできなくなります。
ログインするにもSSMエージェントを起動させる必要があるので、もしそのような場合には、インスタンスを再起動するか、SGなどで3389のプロトコルを有効化してRDPしてください。
アラームが確認できたら、SSMエージェントを起動させます。
以下のコマンドでSSMエージェントを起動します。
Start-Service -Name "AmazonSSMAgent"
以下のコマンドを入力してSSMエージェントが起動されていることを確認します。
Get-Service -Name "AmazonSSMAgent"
>>
Status Name DisplayName
------ ---- -----------
Running AmazonSSMAgent Amazon SSM Agent
ステータスが「Running」であることを確認できれば作業完了です。
まとめ
今回は、SSMエージェントのプロセス監視(procstat)の設定から、アラームの発報テストまでを実践しました。
本記事が、参考にななれば幸いです。
