Amazon CloudWatch ログを Sumo Logic に収集する方法として AWS Lambda 関数を使用する方法が好ましい場合でも、別の方法としてログ ストリームを Amazon Kinesis に公開するように Amazon Cloudwatch ログを設定できる場合には、Sumo Logic Kinesis コネクタを使用して Amazon Kinesis ストリームからログ データを読み取り、そのデータを Sumo Logic HTTP Source に POST してください。  

この方法は、Amazon が AWS Lambda を Amazon CloudWatch ログと統合する機能をリリースする前に開発されたもので、元々は AWS VPC フロー ログとの統合をサポートするために開発されました。この方法では、AWS Lambda ベースの方法よりも多くのインフラストラクチャが必要であり、より多くの AWS サービスと統合する必要もあります。  この方法のメリットの 1 つは、データがキューから同期的に取得され、配信エラーがあった場合には再試行されるため、配信の信頼性が高まることです。  現在の AWS Lambda ベースの統合では、データ配信エラーが発生するとデータが失われることがあります。Sumo Logic AWS Lambda 関数は、フォールト トレランス性を高めるために機能強化されています。

この統合を容易にするために、Sumo Logic では以下を用意しています。

  1. Sumo Logic Kinesis コネクタと呼ばれる JAVA ベースのアプリケーション。  
    このアプリケーションは、Amazon Kinesis ストリームからデータを取得し、Sumo Logic HTTP Source にそのデータを POST します。  このアプリケーションを使用して、CloudWatch Log 形式のデータだけでなく、Kinesis に公開する可能性があるさまざまな形式のカスタム ログ データを収集できます。
    このアプリケーションは Sumo Logic の Git Hub アカウントでホストされます。
  2. Amazon CloudFormation テンプレート
    Sumo Logic では、セットアップを容易にするために CloudFormation テンプレートを用意しています。このテンプレートにより、Kinesis ストリームが作成され、CloudWatch ログ グループにサブスクライブされて、Sumo Logic Kinesis コネクタを含む EC2 インスタンスが作成されます。

Sumo Logic の Hosted Collector と HTTP Source を作成する

  1. Sumo Logic で、「Hosted Collector をセットアップする」の手順に従って Hosted Collector を作成します。 
  2. 続いて、HTTP Source を設定します。

CloudFormation スタックを作成するときに HTTP URL を使用します。

CloudFormation テンプレートをダウンロードする

Sumo Logic では、セットアップを容易にするために CloudFormation テンプレートを用意しています。このテンプレートにより、Kinesis ストリームが作成され、CloudWatch ログ グループにサブスクライブされて、Sumo Logic Kinesis コネクタを含む EC2 インスタンスが作成されます。これにより、データが Kinesis ストリームから取得され、Sumo Logic に送信されます。

次の場所からテンプレートをダウンロードします。

https://raw.githubusercontent.com/duchatran/sumologic-kinesis-connector/master/configuration/cloudformation/cwl_kinesis.template)。

スタックを作成する

AWS CloudFormation を使用して、このテンプレートでスタックを作成します。手順については、http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.Walkthrough.html を参照してください。

セットアップ中に、次の情報を入力する必要があります。

  • AWS KeyName
  • LogGroup 名
  • Sumo Logic HTTP Source URL

CloudWatch ログへのこのプロセスのロギングを有効にできます。テンプレートによってこのセットアップの実行、その CloudWatch ログ グループのプロビジョニングなどが実行されます。

例については、次の図を参照してください。

省略可能: サブスクリプション フィルタ

このステップは省略可能です。サブスクリプション フィルタが適切に作成されたことを確認するため、次の手順を実行します。

1.EC2 インスタンスにログインし、次を実行します。

aws logs describe-subscription-filters --log-group-name <LogGroupName> --region <YourRegion>

2.スタックによって作成された Kinesis ストリームを反映したフィルタが表示されます。(スタックの出力でその ID を確認してください)。表示されない場合、次のように手動でサブスクリプション フィルタを作成する必要がある可能性があります。

aws logs put-subscription-filter --log-group-name "<YourLogGroupName>" --filter-name "cwl-cfn-es-<YourKinesisStreamPhysicalID>" --region <YourRegion> --destination-arn "<YourKinesisStreamArn>" --role-arn "<YourCWLtoKinesisRoleArn>" --filter-pattern ""

 

ここで、<YourKinesisStreamArn><YourCWLtoKinesisRoleArn> はスタックの出力から取得できます。

スクリプトを実行する

最後に、作成したばかりの EC2 インスタンスにログインして、SumoVPCKinesis.bash を実行します。

このラッパー スクリプトは、ローカル Source を使用する通常の Sumo Logic Collector と同じように、Sumo Logic Kinesis コネクタを呼び出してデータを連続的に取得します。

このコネクタのステータスを確認するには、nohup.out ファイルの内容を確認してください。

VPC フロー ログの統合をトラブルシューティングする

VPC のリージョンが複数ある場合はどうすればよいですか?

各スタックは固有の Kinesis ストリームに関連付けられているため、リージョンごとに個別のスタックを作成する必要があります。

同じリージョン内に複数の VPC があります。何をすればよいですか?

VPC が複数ある場合は、VPC ごとに個別の CloudWatch ログ グループを使用することをお勧めします。ただし、スタック テンプレートは 1 つのグループからの読み取りしかサポートしていません。ログ グループごとに個別のスタックを使用することはできますが、必ず「KinesisConnectorApp」パラメータに異なる値を使用してください。

または、同じスタックを再利用することもできますが、次のようにスタックによって作成された Kinesis ストリームにすべてのログ グループを手動でサブスクライブする必要があります。

  1. スタックによって作成された EC2 インスタンスにログインします (名前は「SumoLogic_Kinesis」)。
  2. シェルから、http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/Subscriptions.html の Amazon ドキュメントのステップ 7 に従ってスタックによって作成された Kinesis ストリームをこれらのログ グループにサブスクライブします。

 

aws logs put-subscription-filter --log-group-name <YourLogGroup> --filter-name "cwl-cfn-es-<NameThisFilter>" --filter-pattern ""
 --destination-arn <KinesisStreamArn>
--role-arn <CWLtoKinesisArn> --region <YourRegion>

 

スタック出力からの 2 つの arn があります。

スタックによって作成された VPC および EC2 インスタンスのセキュリティ設定はどのようになりますか?

すべてテンプレートで指定されています。デフォルトでは、セットアップ プロセス中に指定した IP 範囲のすべてのホストで SSH アクセスが可能です。これは、スタックを作成した後にいつでも変更できます。