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

所要時間2分
0

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

簡単な説明

Fargate の Docker の Splunk ログドライバー (「ロギングドライバー」とも呼ばれる) を使用して、コンテナログを Enterprise Splunk ログコレクターまたは Splunk Cloud に送信できます。

解決策

Fargate ログを受信するように Splunk Cloud 環境をセットアップする

  1. Splunk Cloud アカウントを作成するには、無料の Splunk オプションを使用してください。Splunk Cloud アカウントをすでにお持ちの場合は、ステップ 2 に進んでください。詳細については、Splunk ウェブサイトの「無料 Splunk」を参照してください。
  2. Splunk Cloud アカウントにサインインします。
    **注:**アカウントを作成したら、Splunk Cloud のURL、ユーザー名、パスワードを使用してサインインします。
  3. ナビゲーションメニューで [設定] を選択します。
  4. データセクションで、[データ入力] を選択します。
  5. ローカル入力セクションの「アクション」列で、[新規追加] を選択します。
    **注:**HTTP イベントコレクター (HEC) トークンを作成すると、データイベントとアプリケーションイベントを HTTP および Secure HTTP (HTTPS) プロトコルで Splunk デプロイに送信できます。
  6. 名前にトークンの名前を入力し、[次へ] を選択します。
  7. セットアップウィザードの残りのページに進み、[送信] を選択して HEC トークンを作成します。
    **注:**デフォルト値はそのままにしておくことができます。
  8. curl または Docker を使用して新しいトークンをテストします。
    注:デフォルトでは、Splunk はポート 8088 でリッスンし、/services/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 は、以前に作成した 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 は、以前に作成した HEC トークンに置き換えてください。

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

**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

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

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

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

シークレットにアクセスする権限を持つタスク実行ロールの設定

  1. AWS Identity and Access Management (IAM) コンソールを開きます。
  2. ナビゲーションペインで、**[ロール]**を選択します。
  3. ロールのリストから、ecsTaskExecutionRole を検索して選択します。
  4. [インラインポリシーの追加] を選択します。
  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. [ポリシーを作成] を選択します。

Fargate で Amazon ECS タスク用のタスク定義を設定します。

  1. Amazon ECS コンソールを開きます。
  2. ナビゲーションペインの Amazon ECS セクションで、[タスク定義] を選択します。
  3. [新しいタスク定義の作成] を選択します。
  4. [Fargate] を選択し、[次のステップ] を選択します。
  5. [タスクとコンテナ定義の設定]セクションの、[タスク定義の名前] に、タスク定義の名前を入力します。
  6. [タスクロール] で、前に設定したロールを選択します。
  7. [タスクサイズ] セクションの [タスクメモリ (GB)][タスク CPU (vCPU)] に、タスクに適した値を入力します。
  8. コンテナ定義」セクションで、[コンテナを追加] を選択します。
  9. コンテナのニーズに合った適切なオプションを選択してください。
  10. ドロップダウンメニューの 「ログ」セクションで、[ログを Splunk にエクスポート] を選択します。
  11. ログオプションのキーと値のオプションには、次のように入力します。
    **キー: **splunk-url
    **値:**お使いの Splunk エンドポイント (例:)
    **キー: ** splunk-insecureskipverify
    値: True
    **キー: ** splunk-token
    **valueFrom:**前に作成したシークレット ARN
  12. [追加] を選択します。
    **注:**Splunk のコードと構成の詳細については、GitHub の splunk.go と Docker ウェブサイトの Splunk オプションを参照してください。
  13. タスク定義を作成するには、[作成] を選択します。
  14. Amazon ECS サービスを作成するか、前に作成したタスク定義を使用するタスクを実行します。

Splunk Cloud でログを確認する

Splunk Cloud でログを確認する前に、タスクが実行中であることを確認してください。

注:ログ設定で splunk-index を指定していないため、ログはデフォルトでメインインデックスの splunk-index に送信されます。

  1. Splunk Cloud アカウントに接続します。
  2. ナビゲーションメニューで [検索] を選択します。
  3. 検索ボックスに **index="main」**と入力します。

**注:**前のステップに従って、Amazon ElasticCompute クラウド (Amazon EC2) 起動タイプの Amazon ECS のタスク定義を作成できます。その後、任意の ECS タスクから Splunk ログドライバーを使用して、Splunk ログコレクターにログを送信できます。

関連情報

Amazon ECS タスク実行 IAM ロール

AWS公式
AWS公式更新しました 9ヶ月前
コメントはありません