Quantcast
Channel: Amazon Web Services ブログ
Viewing all articles
Browse latest Browse all 446

CloudWatch Logs Subscription Consumer + Elasticsearch + Kibana Dashboards

$
0
0

最近、2つ以上のAWSサービスを組み合わせたポストが増えているように思えますが、本日のポストもそのうちの1つになります。詳細をお話する前に、後ほどで登場するすべてのサービスについて簡単にご紹介したいと思います。振り返りになるかもしれませんが、AWSに詳しくない方にもブログをご理解頂くためです。

  • Amazon Kinesisはリアルタイム データ ストリームを処理するためのマネージドサービスです。詳細に関しましてはこちらをご参照ください。 Amazon Kinesis – Real-Time Processing of Streaming Big Data
  • Kinesis Connector Library を使用すると、他のAWSサービスまたはAWS以外のサービスからKinesisに接続するのに役立ちます。
  • AWS CloudFormationはテンプレートを使用し、関連するAWSリソースのセットを、定義、作成、および管理するのに役立ちます。
  • CloudWatch Logs を使うと、オペレーティングシステム、アプリケーション、およびカスタムログファイルを保存し、監視することができます。詳細はこちらをご参照ください。Store and Monitor OS & Application Log Files with Amazon CloudWatch
  • AWS Lambdaは、イベントに応答しコード(現在のNode.jsやJava)を実行します。コンピューティングリソースが管理されるため、コードに集中できます。詳細はこちらをご参照ください。AWS Lambda – Run Code in the Cloud 多くの開発者はAWS  Lambdaを(多くの場合、新しい Amazon API Gatewayと一緒に)利用することで、1秒間に何度も呼び出されるスケーラビリティに富んだマイクロサービスを構築することが可能です。
  • VPC Flow Log を使用することで、VPC、VPCサブネット、または Elastic Network Interface に関連するネットワークトラフィックにアクセスできます。
  • 最後に、AWS CloudTrai はアカウントのAWS API コールを記録し、ログファイルとして保存します。もちろんAWS CloudTrail のポストもあります:AWS CloudTrail – Capture AWS API Activity

下記3つに関しては大切な属性があり、それぞれが効率的に格納され、インデックス化され、価値あるものへと可視化されるために、イベントデータの膨大なストリームを作成します。

イベントデータの可視化

本日は Kinesis、新しいCloudWatch Logs Subscription Consumer の利用方法についてご紹介します。CloudWatch Logs Subscription Consumer は、特定のKinesis Stream リーダーになります。Elasticsearch と S3 のための組み込みのコネクタが付属しており、他の拡張も可能です。

私たちは、EC2 (テンプレートにより作成されたVPCの中) の上にElasticsearchクラスタを構築し、イベントデータが Elasticsearch に流れるようログサブスクリプションを設定、Kibana と可視化ツールを使った優れたダッシュボードまで構築するCloudFormation Template を作成しました。VPC Flow Log、Lambda、CloudTrailに対応したデフォルトのダッシュボードも設定します。必要に応じてカスタマイズしたり、独自のCloudWatch Logs ロググループ用に新たに作成するも可能です。

スタックは必要なすべてのリソースを作成するのに約10分かかります。準備完了すると、CloudFormationコンソールの [出力] タブにダッシュボードと管理ツールのURLが表示されます:

 1_lsc_cf_urls_1

スタックでは、古いバージョンのサンプルダッシュボードと一緒に、Kibanaのバージョン3とバージョン4が構築されます(Kibana4を使用する場合は、少し手動で設定をを行う必要があります)。最初のサンプルダッシュボードには、VPC Flow Log が表示されます。ご覧のとおり、かなりの量の情報が含まれています。

2_lsc_vpc_flow_dash_mega_1

次のサンプルは、関数自体により生成されたデータによって増大するLambda Function の実行情報が表示されています。

3_lsc_lambda_2

 最後の3つの列は、Lambda Functionに次のコードで作成されました。FunctionではKinesisストリームを処理後各呼び出しに関する情報をログに記録されます。

javascript

exports.handler = function(event, context) {
    var start = new Date().getTime();
    var bytesRead = 0;

    event.Records.forEach(function(record) {
        // Kinesis data is base64 encoded so decode here
        payload = new Buffer(record.kinesis.data, 'base64').toString('ascii');
        bytesRead += payload.length;

        // log each record
        console.log(JSON.stringify(record, null, 2));
    });

    // collect statistics on the function's activity and performance
    console.log(JSON.stringify({ "recordsProcessed": event.Records.length,"processTime": new Date().getTime() - start,"bytesRead": bytesRead,
    }, null, 2));

    context.succeed("Successfully processed " + event.Records.length + " records.");
};

ここでは、ちょっとしたトリックがあります。サブスクリプションの消費者は、ログエントリが有効なJSONオブジェクトであることを判断し、それぞれの値にインデックスをはります。
非常に便利で簡単で、とても強力です。是非このデザインパターンについて研究する時間を少しとり、皆さんのシステムに活かせないか検討してみて下さい。
このテンプレートの構成詳細はこちらをご覧ください-CloudWatch Logs Subscription Consumer-

Consume the Consumer
独自のアプリケーションで、CloudWatch Logs サブスクリプションの消費者を使用することができます。
また他のコネクタを追加することで、他リソースのサポートを追加し拡張することができます。

— Jeff;(翻譯が酒徳が担当しました。原文:CloudWatch Logs Subscription Consumer + Elasticsearch + Kibana Dashboards


Viewing all articles
Browse latest Browse all 446

Trending Articles