やーまんぶろぐ

気が向いた時にだけ書くブログ

AWS Black Belt Online Seminar AWS上でのログ管理 Confirmation 参加ログ

AWS上でのログ管理 Confirmationをオンラインで参加したので、参加ログを残しておきます。

ログ処理の全体像

  1. データ処理と保存(S3, Kinesis, DynamoDB, RDS)
  2. イベント処理(Lambda, KCL apps)
  3. データ処理(EMR)
  4. データ分析(Redshift)

BIツールが公式で出たのでチェックしましょう。
AWSのBIツール Amazon QuickSight がついにリリースされました! – サーバーワークスエンジニアブログ

今回は「データ処理と保存」の部分がメインでした。

AWSのサービスから出力されるログ

CloudWatch Logs

  • 各OS環境にLogAgentを入れることでログを取れる
  • VPC Flow, CloudTrailなどのAWSサービスのログを取れる
  • 通知, エクスポート, 可視化する

CloudTrail

  • API操作を記録するサービス
  • S3にロギングデータを保存

VPCフローログ

  • VPC内のネットワークのログが取得可能
  • NACL, SGでの許可と禁止のトラフィックを見れる

S3バケットログ

CFのアクセスログ

  • AccessLog。利用傾向分析、データ可視化と詳細な障害分析

OSやアプリケーションなどの各環境の固有のログ

  • リアルタイムに処理しなくてもいいならバッチ取得
  • リアルタイムな処理を行う必要があるのであればストリーム取得

ログ転送

ログファイル転送

  • scpで送信
  • スケールを考えたり、SPOFになったり、リトライしたりするので非推奨

syslogエージェント

  • pull型からpush型にすることが可能
  • ログ収集サーバのスケールは難しい

ミドルウェア(fluentd)推奨

  • ログ収集管理ツール
  • rubyを使用した柔軟性の高い入出力プラグイン
  • バッファリング機能
  • ログのルーティングが非常にわかりやすい

マネージドサービスの利用

Kinesis Streams
  • 生成されるデータをリアルタイムに近い状況でデータ処理部に伝送
  • AWSサービスとの簡単インテグレーション
  • 並列処理することが可能
Kinesis firehose
  • 管理不要。アプリ、インフラの管理がない(Firehoseを使えばLambdaが不要になる(東京リージョンにない))
  • データストアとダイレクトに統合
  • シームレスにスケール
Fluent plugin for Amazon Kinesis
  • fluentdからKinesisにログを直接送信するためのプラグイン
  • Aggregateサーバが不要になる
Cloud Watch Logs
  • agentによって単純にログを送信できる
  • 複雑なことをしないのであれば運用コストは低い
Amazon Mobile Analytics
  • モバイルの行動ログを取得可能

クックパッドの資料。秒間数万のログを処理する。
speakerdeck.com

ログの保存

  • 全てのログはS3へ貯め続ける

ログの活用

  • Elasticsearch + Kibana Dashboardによる可視化
  • Kinesis Analytics(東京リージョンにきていない)。SQLをストリームに適用
    • 簡単にデータストリームへ接続し標準的なSQLを適用可能
    • リアルタイムアプリケーションを構築
    • 秒以下のレイテンシーでストリーミングデータを得る
    • 弾力的にスクール
    • Gloabalにエンドポイントを持っていて、S3リージョン間レプリケーションを持っているので、ログ基盤をバージニアに作るのもあり
    • gunosy ログデータを拡充する。Analytics, firehoseを使っている。

data.gunosy.io

最後に

ログ基盤をバージニアで作ることで、東京リージョンにまだないサービスをフルで活用できるというのは面白そうでした。
ログまわりはまだ手になじんでないので、少し触って見たいと思います。