ELBのログをログ監視SaaS Logentriesに登録する

Logentries アイキャッチ

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

今日はLogentriesでELBのログを監視するために必要な方法を紹介します。

Logentriesとは

Logentriesはログ監視のためのSaaSです。

AWSにはCloudWatch Logsというログの監視サービスがあります。ログを監視して、特定の文字列を検知したら通知する、という一般的なログ監視はCloudWatch Logsでも十分行えます。

一方で、ログの集計を実施したりダッシュボードを作成したりする機能はAWSからは提供されていません。そのため自前でElasticsearch + Kibanaと連携させる等の作りこみが必要になります。

Logentriesでは以下の機能を提供しています。 *1そのため、ノンコーディングで簡単にログのモニタリングを実施することが可能です。

  • ダッシュボード
  • Live tail(tailコマンドのような感覚でリアルタイムに送られてくるログをチェックする)
  • アラート機能
  • Slack連携

AWSから出力されるELBのログをLogentriesで監視するための方法が、公式のドキュメントで記載されていましたのでそれを実践してみます。

実践

Logentriesのアカウント取得手順は割愛します。

概要

ELBのログはS3に出力されます。そこからS3 Event NotificationでLambda Functionを起動し、Lambda Function内でログのパースを行った後、TCP通信でLogentriesにログを流し込みます。

Logentriesの設定

Logentriesにログを送信するためには、TCP Tokenを取得することが必要です。これはLogentriesの新しいLogを作成した際に取得できます。

Log_Sets___Logentries

画面左上部から、新しいログの登録を行います。

Add_a_Log___Logentries

「Manual」を選択します。その後に、Logsetの登録があるので、Logの表示名を入力したらfinishボタンを押します。

Add_a_Log___Logentries

UUIDが画面の下部に表示されます。このUUIDが、TCP経由でログを送り込むためのアクセスキーとなります。あとで使うので控えておきましょう。

ELBのログ出力設定

ELBのログはS3に吐かれるように設定しておきましょう。ELBのManagement Consoleから変更が可能です。

EC2_Management_Console

Lambdaの設定

Logentriesが、Lambda用のgitリポジトリを公開しています。それをcloneしてきましょう. git cloneした後、le_config.pylog_tokenにLogentriesから出力されたものを記載しておきましょう。

$ git clone git@github.com:logentries/le_lambda.git
$ cd le_lambda
$ cp le_config.py le_config.py.org

# log_tokenにLogentries Tokenを記載する
$ vim le_config.py

# zipで固める
$ zip le_lambda.zip le_lambda.py le_config.py le_certs.pem

zipを作成したら、Lambda Functionを作成します。Management ConsoleからFunctionを作成していきます。Blueprintはs3-get-object-pythonを選択します。

Lambda_Management_Console

次の画面ではS3との連携設定を行います。BucketにはELBのログが出力先バケットを、prefixもELBの設定とあわせておきましょう。

Lambda_Management_Console

次の画面ではFunctionの実行設定を行います。 まず、先ほど作成したzipをアップロードしましょう。

その次にHandlerにはle_lambda.lambda_handlerと記載します。Roleの部分には、S3 Getができる権限を持ったIAM Roleを設定しましょう。未作成の場合は、ドロップダウンリストの中からS3 Execution Roleを選択することで作成することが可能です。

メモリとタイムアウトは、最初は多めに設定しておきましょう。その後、実行結果を見ながら徐々に適切な値に設定しておくのがベストです。

Lambda_Management_Console

長かったですが、以上で準備完了です。設定が適切にできていれば、ELBのログがLogentries側から確認できるようになっているはずです!

補足

  • ELBのログは5分おき、または60分おきに出力されるため、リアルタイムにアクセスを取得することはできません。
  • このブログではELBに限定して書きましたが、CloudFrontやCloudTrailなど、S3にログが吐かれる系のサービスは全て同じ方法でLogentriesに流しこむことが可能です。

まとめ

Logentriesを使い始めてまだ時間は短いですが、とても手軽にログを扱うことができます。TCP経由でのログ登録が可能ですので、エージェントがインストール出来ない環境でも利用することが可能です。今回のような自動的に出力されるタイプの情報も扱うことができるので、汎用性は非常に高いと思います。

今後も引き続きLogentriesの機能を紹介していきます。

脚注

  1. 一部の機能は利用プランによっては利用できないことがあります

AWS Cloud Roadshow 2017 福岡