

# ランタイムモニタリングのトラブルシューティング
<a name="ecs-guard-duty-troubleshooting"></a>

トラブルシューティングをして、タスクやコンテナでランタイムモニタリングが有効になっていて実行されていることを確認する必要がある場合があります。

**Topics**
+ [自分のアカウントでランタイムモニタリングがアクティブかどうかはどうすればわかりますか?](#verify-ecs-runtime-enabled)
+ [クラスターでランタイムモニタリングがアクティブかどうかはどうすればわかりますか?](#verify-ecs-runtime-enabled)
+ [GuardDuty セキュリティエージェントが Fargate タスクで実行されているかどうかはどうすればわかりますか?](#verify-ecs-runtime-fargate-run)
+ [GuardDuty セキュリティエージェントが EC2 コンテナインスタンスで実行されているかどうかはどうすればわかりますか?](#verify-ecs-runtime-ec2-run)
+ [クラスターで実行されているタスクにタスク実行ロールがない場合はどうなりますか?](#no-task-execution-role)
+ [ランタイムモニタリング対応のクラスターにタグを付けるための正しいアクセス許可を持っているかどうかはどうすればわかりますか?](#tag-permissions)
+ [Amazon ECR に接続されていない場合はどうなりますか?](#no-ecr-connection)
+ [ランタイムモニタリングを有効にした後、Fargate タスクのメモリ不足エラーに対処するにはどうすればよいですか?](#memory-error)

## 自分のアカウントでランタイムモニタリングがアクティブかどうかはどうすればわかりますか?
<a name="verify-ecs-runtime-enabled"></a>

その情報は、Amazon ECS コンソールの **[アカウント設定]** ページにあります。

`effective-settings` オプションを使用して `list-account-settings` を実行することもできます。

```
aws ecs list-account-settings --effective-settings
```

Output

**[name]** が `guardDutyActivate` に設定され、**[value]** が `on` に設定された設定は、アカウントが設定済みであることを示します。GuardDuty 管理者に問い合わせて、管理が自動か手動かを確認する必要があります。

```
{
    "setting": {
        "name": "guardDutyActivate",
        "value": "enabled",
        "principalArn": "arn:aws:iam::123456789012:root",
        "type": "aws-managed"
    }
}
```

## クラスターでランタイムモニタリングがアクティブかどうかはどうすればわかりますか?
<a name="verify-ecs-runtime-enabled"></a>

カバレッジ統計は GuardDuty コンソールで確認できます。これには、自分のアカウントまたはメンバーアカウントに関連付けられた Amazon ECS リソース情報が含まれています。カバレッジ統計は、選択した AWS リージョン 内のすべての ECS クラスターに対する正常な ECS クラスターの割合です。この統計には、Fargate および EC2 を使用するクラスターのカバレッジが含まれます。詳細については、「*Amazon GuardDuty ユーザーガイド*」の「[カバレッジ統計の確認](https://docs.aws.amazon.com/guardduty/latest/ug/gdu-assess-coverage-ecs.html#ecs-review-coverage-statistics-ecs-runtime-monitoring)」を参照してください。

## GuardDuty セキュリティエージェントが Fargate タスクで実行されているかどうかはどうすればわかりますか?
<a name="verify-ecs-runtime-fargate-run"></a>

Fargate タスクでは、GuardDuty セキュリティエージェントはサイドカーコンテナとして実行されます。

サイドカーは、Amazon ECS コンソールの **[タスクの詳細]** ページの **[コンテナ]** に表示されます。

`describe-tasks` を実行することで、**[name]** が `aws-gd-agent` に設定され、**[lastStatus]** が `RUNNING` に設定されているコンテナを探すことができます。

次の例は、タスク `aws:ecs:us-east-1:123456789012:task/0b69d5c0-d655-4695-98cd-5d2d5EXAMPLE` のデフォルトのクラスターの出力を示しています。

```
aws ecs describe-tasks --cluster default --tasks aws:ecs:us-east-1:123456789012:task/0b69d5c0-d655-4695-98cd-5d2d5EXAMPLE
```

Output

`gd-agent` という名前のコンテナは `RUNNING` 状態にあります。

```
"containers": [ 
      {
        "containerArn": "arn:aws:ecs:us-east-1:123456789012:container/4df26bb4-f057-467b-a079-96167EXAMPLE", 
        "taskArn": "arn:aws:ecs:us-east-1:123456789012:task/0b69d5c0-d655-4695-98cd-5d2d5EXAMPLE", 
        "lastStatus": "RUNNING",
        "healthStatus": "UNKNOWN",
        "memory": "string",
        "name": "aws-gd-agent" 
      }
    ]
```

## GuardDuty セキュリティエージェントが EC2 コンテナインスタンスで実行されているかどうかはどうすればわかりますか?
<a name="verify-ecs-runtime-ec2-run"></a>

以下のコマンドを実行して、ステータスを表示します。

```
sudo systemctl status amazon-guardduty-agent
```

ログファイルは次の場所にあります。

```
/var/log/amzn-guardduty-agent
```

## クラスターで実行されているタスクにタスク実行ロールがない場合はどうなりますか?
<a name="no-task-execution-role"></a>

Fargate タスクでは、タスクは GuardDuty セキュリティエージェントのサイドカーコンテナなしで開始されます。GuardDuty ダッシュボードには、カバレッジ統計ダッシュボードにタスクが保護されていないことが表示されます。

## ランタイムモニタリング対応のクラスターにタグを付けるための正しいアクセス許可を持っているかどうかはどうすればわかりますか?
<a name="tag-permissions"></a>

クラスターにタグを付けるには、`CreateCluster` と `UpdateCluster` の両方に対する `ecs:TagResource` アクションが必要です。

以下はポリシーの例の一部です。

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
         "ecs:TagResource"
      ],
      "Resource": "*",
      "Condition": {
         "StringEquals": {
             "ecs:CreateAction" : "CreateCluster",
             "ecs:CreateAction" : "UpdateCluster",
          }
       }
    }
  ]
}
```

## Amazon ECR に接続されていない場合はどうなりますか?
<a name="no-ecr-connection"></a>

Fargate タスクでは、タスクは GuardDuty セキュリティエージェントのサイドカーコンテナなしで開始されます。GuardDuty ダッシュボードには、カバレッジ統計ダッシュボードにタスクが保護されていないことが表示されます。

## ランタイムモニタリングを有効にした後、Fargate タスクのメモリ不足エラーに対処するにはどうすればよいですか?
<a name="memory-error"></a>

GuardDuty セキュリティエージェントは軽量なプロセスです。しかし、プロセスはそれでもワークロードのサイズに応じてリソースを消費します。クラスターに GuardDuty のデプロイをステージングするには、Amazon CloudWatch Container Insights などのコンテナリソーストラッキングツールを使用することをお勧めします。このようなツールは、アプリケーションの GuardDuty セキュリティエージェントの消費プロファイルを確認するのに役立ちます。そして、必要に応じて Fargate タスクのサイズを調整して、潜在的なメモリ不足状態を回避できます。