Umesh が、Amazon Kinesis Firehose を
使用して VPC フローログを
Sprunk にプッシュする方法を説明します

Umesh_SEA0818

Amazon Virtual Private Cloud (Amazon VPC) を分析するために Splunk heavy forwarder をインストールしています。AWS ソースから Splunk クラスターにデータをプッシュしていますが、複数の手順が必要です。AWS データと Splunk を滞りなく統合する方法を教えてください。

heavy forwarder を使用する代わりに、Splunk の HTTP Event Collector (HEC) と Amazon Kinesis Data Firehose を使って、Splunk クラスターにデータとアプリケーションイベントを送信できます。そのためには、次のように行います。

  1. Data Firehose 配信ストリームを作成します。
  2. レコード変換用に AWS Lambda を設定します。
  3. VPC フローログを設定します。
  4. お使いのストリームへの CloudWatch Logs サブスクリプションを作成する

開始する前に、必ず以下を行います。

Data Firehose 配信ストリームの作成を開始する

1.    配信ストリームを作成します。[ソース] で、[Direct PUT] または他のソースを選択します。

2.    [次へ] を選択します。

AWS Lambda を使用してレコード変換を設定する

1.    レコード変換を設定します
注意: [Transform source records with AWS Lambda (AWS Lambda を使用してソースレコードを変換)] の下にある [Record transformation (レコード変換)] で、必ず [Enabled (有効)] を選択してください。CloudWatch はログを圧縮 gzip ファイルとして送信するため、このオプションを有効にする必要があります。Amazon Kinesis では、これらのファイルを取り出して使用可能にしておく必要があります。

2.    [Lambda 関数] で、[新規作成] を選択します。

3.    表示された [Choose Lambda blueprint (Lambda 設計図を選択)] ポップアップウィンドウの [ Lambda blueprint (Lambda 設計図)] で、[Kinesis Firehose CloudWatch Logs Processor] を選択します。

4.    ブラウザで新しいタブを選択して、新しい Lambda 関数を作成します。
[名前] には、Lambda 関数の名前を入力します。
[ロール] で、[カスタムロールの作成] を選択します。

5.    ブラウザで新しいタブを選択して、新しい AWS Identity and Access Management (IAM) ロールを作成します。
ロール名で、名前が lambda_basic_execution になっていることを確認します。

6.    [許可] を選択してロールを作成し、Lambda 関数設定ページに戻ります。

7.    [関数の作成] を選択し、関数が作成されるまで待ちます。

8.    [タイムアウト] をデフォルトの 3 秒から 1 分 に増やし、関数のタイムアウトを防止します。

9.    [Save] を選択します。

Data Firehose 配信ストリームの作成を終了します。

1.    Amazon Kinesis コンソールにサインインします。

2.    ナビゲーションペインの [Data Firehose] を選択します。

3.     配信ストリームで [Lambda 関数] を選択します。
ドロップダウンメニューから新しい AWS Lambda 関数の名前を選択します。
[送信先] で、[Splunk] を選択します。
先ほど作成した Splunk HEC エンドポイントなど、Splunk HEC の詳細を入力します。Splunk HEC エンドポイントは、有効な SSL 証明書で終了する必要があります。一致する DNS ホスト名を使用して HEC エンドポイントに接続します。クラスターエンドポイントの形式は、https://YOUR-ENDPOINT.splunk.com:8088 です。
[Splunk endpoint type (Splunk エンドポイントタイプ)] で、[Raw endpoint (Raw エンドポイント)] を選択し、次に認証トークンを入力します。

4.    [次へ] を選択します。

5.    (オプション) 既存のバケットを選択するか新しいバケットを作成して、失敗したイベントまたはすべてのイベントの S3 バックアップを作成します。配信ストリームウィザードで、バッファ条件、圧縮、暗号化の設定などの S3 関連設定と、エラーログオプションを必ず設定してください。

6.    [IAM ロール] で [新規作成] を選択します。

7.    開いたタブでロール名を入力し、[許可] を選択します。

8.    [次へ] を選択します。

9.    [配信ストリームの作成] を選択します。

VPC フローログを設定する

使用する VPC フローログがすでにある場合は、次のセクションにスキップします。

1.    CloudWatch コンソールにサインインします。

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

3.    [アクション] で、[ロググループの作成] を選択します。

4.    [ロググループ名] を入力します。

5.    [ロググループの作成] を選択します。

6.    [Amazon VPC console] にサインインします。

7.    ナビゲーションペインで、[Virtual Private Cloud] の下にある [VPC] を選択します。

8.    コンテンツペインで [VPC] を選択します。

9.    [Flow logs (フローログ)] ビューを選択します。

10.   [Create flow log (フローログの作成)] を選択します。
[フィルター] には、[すべて] を選択します。
[Destination log group (送信先ロググループ)] で、作成したばかりのロググループを選択します。
[IAM ロール] で、VPC によって ログを CloudWatch に公開できる IAM ロールを選択します。
注意:
適切な IAM ロールがない場合は、[Set Up Permissions under IAM role (IAM role でアクセス許可を設定する)] を選択してください。[新しい IAM ロールの作成] を選択します。デフォルト設定は選択されたままにしておきます。[許可] を選択して、VPCFlowLogs ロールを作成し、そのロールを送信先ロググループに関連付けます。

11.   [作成] を選択して、VPC フローログを作成します。

12.   ロググループから配信ストリームへのリアルタイムフィードを確立します。
AWS Lambda での手順については、「AWS Lambda の Amazon CloudWatch Logs へのアクセス」を参照してください。
Amazon Elasticsearch Service (Amazon ES) での手順については、「CloudWatch Logs データを Amazon Elasticsearch Service にストリーミング」を参照してください。
Kinesis Data Firehose で、以下のようにして、AWS コマンドラインインターフェイス (AWS CLI) で CloudWatch Logs サブスクリプションを作成します。

CloudWatch Logs サブスクリプションを作成する

1.    CloudWatch に、正しいロールアクセス許可を持つ Kinesis Data Firehose ストリームを公開するためのアクセス権限を付与します。

2.    AWS CLI にサインインします。

3.    以下のサンプル JSON ファイルを使用して、信頼ポリシー (TrustPolicyforCWLToFireHose.json など) を作成します。必ず、YOUR-RESOURCE-REGION を、お使いのリソースの AWS リージョンに置き換えてください。

{
  "Statement": {
    "Effect": "Allow",
    "Principal": { "Service": "logs.region.amazonaws.com" },
    "Action": "sts:AssumeRole"
  }
}

4.    以下のコマンド例を使って、アクセス許可を持つのロールを信頼ポリシーから作成します。

$ aws iam create-role --role-name CWLtoKinesisFirehoseRole --assume-role-policy-document file://TrustPolicyForCWLToFireHose.json

5.    以下のサンプル JSON ファイルを使用して、IAM ポリシー (PermissionPolicyForCWLToFireHose.json など) を作成します。必ず以下のように置き換えてください。
YOUR-AWS-ACCT-NUM を AWS アカウント番号に置き換えます。
YOUR-RESOURCE-REGION をリソースのリージョンに置き換えます。
FirehoseSplunkDeliveryStream をストリーム名に置き換えます。

{
    "Statement":[
      {
        "Effect":"Allow",
        "Action":["firehose:*"],
        "Resource":["arn:aws:firehose:YOUR-RESOURCE-REGION:YOUR-AWS-ACCT-NUM:deliverystream/FirehoseSplunkDeliveryStream"]
      },
      {
        "Effect":"Allow",
        "Action":["iam:PassRole"],
        "Resource":["arn:aws:iam::YOUR-AWS-ACCT-NUM:role/CWLtoKinesisFirehoseRole"]
      }
    ]
}

6.    次のコマンド例を使用して、新しく作成されたロールを IAM ポリシーにアタッチします。

$ aws iam put-role-policy 
    --role-name CWLtoKinesisFirehoseRole 
    --policy-name Permissions-Policy-For-CWL 
    --policy-document file://PermissionPolicyForCWLToFireHose.json

7.    次のコマンド例を使用して、サブスクリプションフィルターを作成します。YOUR-AWS-ACCT-NUM を、お使いの AWS アカウント番号に、YOUR-RESOURCE-REGION を、お使いのリソースのリージョンに、FirehoseSplunkDeliveryStream を、お使いのストリーム名に置き換えてください。

$ aws logs put-subscription-filter 
   --log-group-name " /vpc/flowlog/FirehoseSplunk" 
   --filter-name "Destination" 
   --filter-pattern "" 
   --destination-arn "arn:aws:firehose:YOUR-RESOURCE-REGION:YOUR-AWS-ACCT-NUM:deliverystream/FirehoseSplunkDeliveryStream" 
   --role-arn "arn:aws:iam::YOUR-AWS-ACCT-NUM:role/CWLtoKinesisFirehoseRole"

このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2018 年 11 月 08 日