メインコンテンツまでスキップ
Sumo Logic Japanese

Amazon ECS アプリケーションのログとメトリクスの収集

このページでは Amazon ECS アプリケーションでログとメトリクスを収集する方法について説明します。

Amazon ECS のメトリクスの収集

この手順では、Amazon CloudWatch メトリクス Source をセットアップします。

  1. Sumo Logic のアクセス権限を付与して、使用可能なメトリクスを一覧表示し、メトリクスのデータ ポイントを取得します。手順の詳細は、「AWS 製品へのアクセス権限の付与」を参照してください。
  2. Hosted Collector を設定します。
  3. Sumo Web アプリケーションで、[Manage Data (データの管理)] > [Collection (コレクション)] > [Collection (コレクション)] を選択します。
  4. 上記で設定した Hosted Collector に移動して、[Add (追加)] > [Add Source (Source の追加)] を選択します。
  5. [Amazon CloudWatch Source for Metrics (Amazon CloudWatch メトリクス Source)] を選択します。
  6. Name (名前): 新しい Source に表示する名前を入力します。
  7. Description (説明): 説明 (省略可能) を入力します。
  8. Regions (リージョン)。ECS の Amazon リージョンを選択します。
  9. Namespaces (名前空間)。[Select AWS/ECS] を選択します。
  10. Source Category。ecs_metrics と入力します。
  11. AWS Access (AWS アクセス)。AWS アクセスには 2 つのオプションがあります。 
    • Role-based access (ロールベース アクセス)。推奨される方法です。「AWS 製品へのアクセス権限の付与」の説明に従って Amazon ECS にアクセス権を付与した場合は、このオプションを使用できます。  ロール ベースのアクセスの場合、ロールを作成した後に AWS によって提供されるロール ARN を入力します。 
    • Key access (キー アクセス)。アクセス キー ID とシークレット アクセス キーを入力します。詳細については、AWS ヘルプの「IAM ユーザのアクセス キーの管理」を参照してください。

  12. Scan Interval (スキャン間隔)。Sumo Logic が CloudWatch Source をスキャンして新しいデータがないか確認する間隔として、デフォルトの 5 分を使用するか、または別の間隔を入力します。
  13. [Save (保存)] をクリックします。

CloudTrail を使用した ECS イベントの収集

この手順では、ECS イベントを収集するように AWS CloudTrail Source をセットアップします。

  1. AWS アカウントで CloudTrail を設定します。選択内容に従って、S3 バケットが生成されます。
  2. 上記で作成または使用した Sumo Logic へのアクセス権限を Amazon S3 バケットへ付与します。手順の詳細は、「AWS 製品へのアクセス権限の付与」を参照してください。
  3. ログが、Amazon S3 バケットに配信されることを確認します。
  4. Sumo Web アプリケーションで、[Manage Data (データの管理)] > [Collection (コレクション)] > [Collection (コレクション)] を選択します。
  5. 上記で設定した Hosted Collector に移動して、[Add (追加)] > [Add Source (Source の追加)] を選択します。
  6. AWS CloudTrail Source を選択します。
  7. Name (名前): 新しい Source に表示する名前を入力します。
  8. Description (説明): 説明 (省略可能) を入力します。
  9. S3 Region (S3 リージョン)。ECS S3 バケットの Amazon リージョンを選択します。
  10. Bucket Name (バケット名)。ECS S3 バケットの名前を正確に入力します。
  11. Path Expression (パス式): 収集する S3 オブジェクトに一致する文字列を入力します。この文字列では、ワイルドカードを 1 つ使用できます。(先頭にスラッシュを付けないでください。「Amazon のパス式」参照。) 
    1. Source Category。ecs_event と入力します。
    2. AWS Access (AWS アクセス)。AWS アクセスには 2 つのオプションがあります。 
      • Role-based access (ロール ベース アクセス)。推奨される方法です。「AWS 製品へのアクセス権限の付与」の説明に従って Amazon ECS にアクセス権を付与した場合は、このオプションを使用できます。  ロール ベースのアクセスの場合、ロールを作成した後に AWS によって提供されるロール ARN を入力します。 
      • キー アクセスの場合、アクセス キー ID と、シークレット アクセス キーを入力します。詳細については、AWS ヘルプの「IAM ユーザのアクセス キーの管理」を参照してください。

    3. Scan Interval (スキャン間隔)。デフォルトの 5 分を使用します。または、Sumo Logic が S3 バケットをスキャンして新しいデータがないか確認する間隔を入力します。
    4. Enable Timestamp Parsing (タイムスタンプ parse の有効化): チェックボックスをオンにします。
    5. Time Zone (タイム ゾーン): [Ignore time zone from log file and instead use (ログ ファイルのタイムゾーンを無視して、次を使用します)] を選択して、[UTC] を選択します。
    6. Timestamp Format (タイムスタンプ形式)。[Automatically detect the format (自動的に形式を検出)] を選択します。
    7. Enable Multiline Processing (複数行の処理の有効化)。チェックボックスをオンにして [Infer Boundaries (境界を推測する)] を選択します。
  12. [Save (保存)] をクリックします。

ログ メッセージのサンプル

{
   "eventVersion":"1.04",
   "userIdentity":{
      "type":"AssumedRole",
      "principalId":"ADFDDDFF7FDF7GFFF2DF0:i-76vfa923",
      "arn":"arn:aws:sts::435456556566:assumed-role/ecsInstanceRole/i-76vfa923",
      "accountId":"435456556566",
      "accessKeyId":"AOFGPJFIJFFOIJFIOJHF",
      "sessionContext":{
         "attributes":{
            "mfaAuthenticated":"false",
            "creationDate":"2017-10-02T20:08:54.107Z"
         },
         "sessionIssuer":{
            "type":"Role",
            "principalId":"ADFDDDFF7FDF7GFFF2DF0",
            "arn":"arn:aws:iam::435456556566:role/ecsInstanceRole",
            "accountId":"435456556566",
            "userName":"kevin"
         }
      }
   },
   "eventTime":"2017-10-02T20:08:54.107Z",
   "eventSource":"ecs.amazonaws.com",
   "eventName":"RegisterTaskDefinition",
   "awsRegion":"us-west-1",
   "sourceIPAddress":"73.168.34.72",
   "userAgent":"Amazon ECS Agent - v1.12.2 (ecda8a6) (+http://aws.amazon.com/ecs/)",
   "requestParameters":{
      "attributes":[
         {
            "name":"com.amazonaws.ecs.capability.privileged-container"
         },
         {
            "name":"com.amazonaws.ecs.capability.docker-remote-api.1.17"
         },
         {
            "name":"com.amazonaws.ecs.capability.docker-remote-api.1.18"
         },
         {
            "name":"com.amazonaws.ecs.capability.docker-remote-api.1.19"
         },
         {
            "name":"com.amazonaws.ecs.capability.docker-remote-api.1.20"
         },
         {
            "name":"com.amazonaws.ecs.capability.docker-remote-api.1.21"
         },
         {
            "name":"com.amazonaws.ecs.capability.docker-remote-api.1.22"
         },
         {
            "name":"com.amazonaws.ecs.capability.logging-driver.json-file"
         },
         {
            "name":"com.amazonaws.ecs.capability.logging-driver.syslog"
         },
         {
            "name":"com.amazonaws.ecs.capability.logging-driver.awslogs"
         },
         {
            "name":"com.amazonaws.ecs.capability.ecr-auth"
         },
         {
            "name":"com.amazonaws.ecs.capability.task-iam-role"
         },
         {
            "name":"com.amazonaws.ecs.capability.task-iam-role-network-host"
         }
      ],
      "totalResources":[
         {
            "type":"INTEGER",
            "doubleValue":0.0,
            "integerValue":1024,
            "longValue":0,
            "name":"CPU"
         },
         {
            "type":"INTEGER",
            "doubleValue":0.0,
            "integerValue":995,
            "longValue":0,
            "name":"MEMORY"
         },
         {
            "type":"STRINGSET",
            "stringSetValue":[
               "22",
               "2375",
               "2376",
               "51678",
               "51679"
            ],
            "doubleValue":0.0,
            "integerValue":0,
            "longValue":0,
            "name":"PORTS"
         },
         {
            "type":"STRINGSET",
            "stringSetValue":[ ],
            "doubleValue":0.0,
            "integerValue":0,
            "longValue":0,
            "name":"PORTS_UDP"
         }
      ],
      "instanceIdentityDocumentSignature":"pqWe1trtreertermhC6vz\nZ0e/ZyOVVKXOb0fiiouyuyturtyreuFaoghqQ0wWurXzcHb6CrtreyteV6hPM=",
      "cluster":"graphite",
      "instanceIdentityDocument":"{\n  \"privateIp\" : \"10.0.1.83\",\n  \"devpayProductCodes\" : null,\n  \"availabilityZone\" : \"us-west-1c\",\n  \"accountId\" : \"435456556566\",\n  \"version\" : \"2010-08-31\",\n  \"instanceId\" : \"i-76vfa923\",\n  \"billingProducts\" : null,\n  \"instanceType\" : \"t2.micro\",\n  \"imageId\" : \"ami-444d0224\",\n  \"pendingTime\" : \"2016-11-15T21:07:08Z\",\n  \"architecture\" : \"x86_64\",\n  \"kernelId\" : null,\n  \"ramdiskId\" : null,\n  \"region\" : \"us-west-1\"\n}"
   },
   "responseElements":{
      "containerInstance":{
         "versionInfo":{ },
         "runningTasksCount":0,
         "ec2InstanceId":"i-13dcar4566",
         "remainingResources":[
            {
               "type":"INTEGER",
               "doubleValue":0.0,
               "integerValue":1024,
               "longValue":0,
               "name":"CPU"
            },
            {
               "type":"INTEGER",
               "doubleValue":0.0,
               "integerValue":995,
               "longValue":0,
               "name":"MEMORY"
            },
            {
               "type":"STRINGSET",
               "stringSetValue":[
                  "22",
                  "2376",
                  "2375",
                  "51678",
                  "51679"
               ],
               "doubleValue":0.0,
               "integerValue":0,
               "longValue":0,
               "name":"PORTS"
            },
            {
               "type":"STRINGSET",
               "stringSetValue":[ ],
               "doubleValue":0.0,
               "integerValue":0,
               "longValue":0,
               "name":"PORTS_UDP"
            }
         ],
         "agentConnected":true,
         "pendingTasksCount":0,
         "registeredResources":[
            {
               "type":"INTEGER",
               "doubleValue":0.0,
               "integerValue":1024,
               "longValue":0,
               "name":"CPU"
            },
            {
               "type":"INTEGER",
               "doubleValue":0.0,
               "integerValue":995,
               "longValue":0,
               "name":"MEMORY"
            },
            {
               "type":"STRINGSET",
               "stringSetValue":[
                  "22",
                  "2376",
                  "2375",
                  "51678",
                  "51679"
               ],
               "doubleValue":0.0,
               "integerValue":0,
               "longValue":0,
               "name":"PORTS"
            },
            {
               "type":"STRINGSET",
               "stringSetValue":[ ],
               "doubleValue":0.0,
               "integerValue":0,
               "longValue":0,
               "name":"PORTS_UDP"
            }
         ],
         "containerInstanceArn":"arn:aws:ecs:us-west-1:435456556566:container-instance/3f28c319-u9n2-1476-3d2n-b7c254fv411",
         "attributes":[
            {
               "name":"com.amazonaws.ecs.capability.privileged-container"
            },
            {
               "name":"com.amazonaws.ecs.capability.docker-remote-api.1.17"
            },
            {
               "name":"com.amazonaws.ecs.capability.docker-remote-api.1.18"
            },
            {
               "name":"com.amazonaws.ecs.capability.docker-remote-api.1.19"
            },
            {
               "name":"com.amazonaws.ecs.capability.docker-remote-api.1.20"
            },
            {
               "name":"com.amazonaws.ecs.capability.docker-remote-api.1.21"
            },
            {
               "name":"com.amazonaws.ecs.capability.docker-remote-api.1.22"
            },
            {
               "name":"com.amazonaws.ecs.capability.logging-driver.json-file"
            },
            {
               "name":"com.amazonaws.ecs.capability.logging-driver.syslog"
            },
            {
               "name":"com.amazonaws.ecs.capability.logging-driver.awslogs"
            },
            {
               "name":"com.amazonaws.ecs.capability.ecr-auth"
            },
            {
               "name":"com.amazonaws.ecs.capability.task-iam-role"
            },
            {
               "name":"com.amazonaws.ecs.capability.task-iam-role-network-host"
            }
         ],
         "status":"ACTIVE",
         "version":1
      }
   },
   "requestID":"ae86b372-ab77-11e6-824c-c7c4220f0423",
   "eventID":"ff9fc985-1fbe-4717-965b-607dda32f620",
   "eventType":"AwsApiCall",
   "recipientAccountId":"435456556566"
}

クエリのサンプル

過去に削除されたリソース

_sourceCategory=ecs* (DeleteCluster or DeleteService or DeregisterContainerInstance or DeregisterTaskDefinition or StopTask) and !(InternalFailure)
| json "eventName" as event_name
| parse "\"userName\":\"*\"" as user 
| parse "\"awsRegion\":\"*\"" as region 
| parse "\"cluster\":\"*\"" as cluster
| timeslice 1h
| parse regex field=event_name "^(?:Delete|Deregister|Stop)(?<resource_type>[A-Z][A-Za-z]+)"
| count by resource_type, _timeslice
| transpose row _timeslice column resource_type

  • この記事は役に立ちましたか?