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

ECS ログおよびメトリクスの収集

このセクションでは、Amazon ECS 用の Sumo Logic アプリケーションでログとメトリクスを収集する手順を説明します。

Amazon ECS のメトリクスの収集

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

  1. Sumo Logic のアクセス権限を付与して、使用可能なメトリクスを一覧表示し、メトリクスのデータ ポイントを取得します。手順の詳細は、「AWS 製品へのアクセス権限の付与」を参照してください。
  2. ホスト型コレクタを設定します。
  3. Sumo Web アプリケーションで、[Manage Data (データの管理)] > [Collection (コレクション)] > [Collection (コレクション)] を選択します。
  4. 上記で設定したホスト型コレクタに移動して、[Add (追加)] > [Add Source (ソースの追加)] を選択します。
  5. [Amazon CloudWatch Source for Metrics (Amazon CloudWatch メトリクス ソース)] を選択します。
  6. Name (名前)。新しいソースに表示する名前を入力します。
  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 ソースをスキャンして新しいデータがないか確認する間隔として、デフォルトの 5 分を使用するか、または別の間隔を入力します。
  13. [Save (保存)] をクリックします。

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

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

  1. AWS アカウントで CloudTrail を設定します。選択内容に従って、S3 バケットが生成されます。
  2. 上記で作成または使用した Sumo Logic へのアクセス権限を Amazon S3 バケットへ付与します。手順の詳細は、「AWS 製品へのアクセス権限の付与」を参照してください。
  3. ログが、Amazon S3 バケットに配信されることを確認します。
  4. Sumo Web アプリケーションで、[Manage Data (データの管理)] > [Collection (コレクション)] > [Collection (コレクション)] を選択します。
  5. 上記で設定したホスト型コレクタに移動して、[Add (追加)] > [Add Source (ソースの追加)] を選択します。
  6. AWS CloudTrail ソースを選択します。
  7. Name (名前)。新しいソースに表示する名前を入力します。
  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 (タイムスタンプ パースの有効化): チェックボックスをオンにします。
    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

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