Fargate の Amazon ECS タスクで Splunk ログドライバーを使用する方法はどすればよいですか。

所要時間3分
0

AWS Fargate の Amazon Elastic Container Service (Amazon ECS) タスクで Splunk ログドライバーを使用したい

簡単な説明

Fargate の Docker から Splunk ログドライバー (「ログドライバー」とも呼ばれています) を使用して、コンテナログを エンタープライズ Splunk ログコレクターまたは Splunk クラウドに送信できます。詳細については、Docker ウェブサイトの Splunk ログドライバーを参照してください。

解決方法

Fargate ログを受信するために Splunk Cloud 環境を設定する

1.    無料のSplunk オプションを使用して Splunk クラウドアカウントを作成します。Splunkクラウドアカウントをすでにお持ちの場合は、ステップ 2 に進みます。詳細については、Splunk ウェブサイトの 「無料Splunk」 を参照してください。

2.    Splunk Cloud アカウントにログインします。

3.    ナビゲーションペインで、[Settings] を選択します。

4.    [DATA] (データ)セクションで、[Data inputs] (データ入力)を選択します。

5.    [Local inputs] (ローカル入力)セクションの [Actions] (アクション)列で、[Add new] (新規追加)を選択します。

**注:**HTTP および Secure HTTP (HTTPS) プロトコルを介して Splunk デプロイにデータとアプリケーションイベントを送信できるように、HTTP イベントCollector (HEC) トークンを作成します。

6.    [Name] にトークンの名前を入力し、[Next] を選択します。

7.    セットアップウィザードの残りのページに進み、[Submit] を選択して HEC トークンを作成します。

注: デフォルト値のままにしておくことができます。

8.    curl または Docker を使用して、新しいトークンをテストします。

注: デフォルトでは、Splunk はポート 8088 をリッスンし、/services/collector(サービス/collector)パスでイベントを受け入れます。

curl を使用:

curl -k  https://prd-p-9l79p.splunkcloud.com:8088/services/collector -H "Authorization: Splunk splunk-token" -d '{"event": "Put this message in Splunk"}'

注: splunk-token (plunk-トークン)は、前に作成した HEC トークンに置き換えます。

Docker を使用:

docker run --publish 80:80 --log-driver=splunk --log-opt splunk-token=splunk token --log-opt splunk-url=https://prd-p-u7z1u.splunkcloud.com:8088 --log-opt splunk-insecureskipverify=true --log-opt splunk-sourcetype=docker-test --log-opt splunk-index=main  nginx

注: splunk-token (plunk-トークン)は、前に作成した HEC トークンに置き換えます。

HEC トークンを使用するために AWS Secrets Manager を設定する

注: AWS Command Line Interface (AWS CLI) コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

HEC トークンを Secrets Manager に保存して、Fargate がトークンを安全に使用できるようにするには、次のコマンドを実行します。

aws secretsmanager create-secret --name splunk-token --secret-string token-value

注: splunk-token(splunk-トークン) を HEC トークンに置き換えてください。token-value (トークン値)をトークン値に置き換えます。

シークレットにアクセスするためのアクセス許可を持つタスク実行ロールを設定する

1.    AWS Identity and Access Management (IAM) コンソールを開きます。

2.    ナビゲーションペインで、[ロール] を選択します。

3.    ロールのリストから、「ecsTaskExecutionRole」(ecs TaskExecutionロール)を検索して選択します。

4.    [Add inline policy] を選択します。

5.    エディタの [JSON] タブを選択してから、次のポリシーを入力します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue",
        "kms:Decrypt"
      ],
      "Resource": [
        "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:<secret_name>",
        "arn:aws:kms:<region>:<aws_account_id>:key/<key_id>"
      ]
    }
  ]
}

注: カスタム AWS Key Management Service (AWS KMS) キーを使用してシークレットを暗号化する場合は、KMS キーの KMS:Decrypt アクセス許可と Amazon リソースネーム (ARN) を指定する必要があります。

6.    [ポリシー確認] を選択します。

7.    名前にはポリシーの名前を入力します。

8.    [Create policy] を選択します。

Fargate で Amazon ECS タスクのタスク定義を設定する

1.    Amazon ECS コンソールを開きます。

2.    Amazon ECS コンソールから、ナビゲーションペインで、[タスク定義] を選択します。

3.    [新しいタスク定義の作成] を選択します。

4.    [Fargate] を選択してから、[次のステップ] をクリックします。

5.    [タスクとコンテナ定義の設定] セクションの [タスク定義名] に、タスク定義の名前を入力します。

6.    [タスクロール] で、前に設定したロールを選択します。

7.    [タスクサイズ] セクションの [タスクメモリ (GB)] と [タスク CPU (vCPU)] に、タスクの適切な値を入力します。

8.    [コンテナの定義] セクションで、[コンテナの追加] を選択します。

9.    コンテナのニーズに応じて適切なオプションを選択します。

10.    [STORAGE AND LOGGING] セクションで、[ログ設定] チェックボックスをオフにします。

11.    [ログドライバー] で、[splunk] を選択します。

12.    [ログオプション] のキーオプションと値オプションには、次のように入力します。

キー: splunk-url
値: splunk エンドポイント (例: https://prd-p-9l79p.splunkcloud.com:8088/)

キー: splunk-insecureskipverify
値: True

キー: splunk-トークン
valueFrom: 以前に作成したシークレットARN

13.    Add(追加)を選択します。

注: Splunk のコードと設定の詳細については、GitHub log driver code(ログドライバーコード)と Docker ウェブサイトの Splunk option(Splunkオプション)を参照してください。

14.    タスク定義を作成するには、[作成] を選択します。

15.    Amazon ECS サービスを作成するか、前に作成したタスク定義を使用するタスクを実行します。

Splunk Cloud でログを確認する

Splunk クラウドでログを確認する前に、タスクが実行されていることを確認してください。

注: デフォルトでは、ログ設定で splunk-index(splunk-インデックス) を設定しなかったため、main(メイン)インデックスの splunk-index(splunk-インデックス) に移動します。

1.    Splunk Cloud アカウントに接続します。

2.    ナビゲーションメニューで、[検索] を選択します。

3.    検索ボックスに「index="main"」(インデックス=“メイン”)と入力します。

これで、Splunk ログコレクターにログが表示されます。

注: 上記の手順に従って、Amazon Elastic Compute Cloud (Amazon EC2) 起動タイプのタスク定義を Amazon ECS で作成できます。その後、任意の ECS タスクの Splunk ログドライバーを使用して、Splunk ログコレクターにログを送信できます。


関連情報

Amazon ECS タスク実行 IAM ロール

AWS公式
AWS公式更新しました 2年前