魔法使いの卵

WEBエンジニアの卵の成長記録

Webエンジニアの教科書読んでみたメモ4(ログ)

ログのイメージ

  • 長い文字列が永遠に続いてる
  • 読みにくいしどーなってんのかわからん
  • これがわかるようになったらすげー捗りそう

ログを見るメリット

  • 問題が発生した時の原因特定のきっかけになる
  • アプリケーション改善のヒントがあったりする

ログの重要性

  • バグの調査ができる
    • どのURLへのリクエストでエラーだったのか
    • パラメータは適切に渡されていたのか
  • 不穏な兆候をしれる
    • CPUやメモリ、ディスク使用量といった値が不穏な兆候を監視する
    • 問題が起きる前に事前に解決策をとることができる
    • 普段から記録して問題になるまえに着付けるようにしておく
  • 仮設に対して検証ができる
    • 検証を行うにも過去の情報等がなければ仮説が立てにくい
  • 監査ログが手がかりになる
    • いつだれがなにをしたのかをログとしてのこしておくことが大切
    • リレーショナル・データベースでの操作もこれにあたる
    • ログを残しておかないと手がかりがない状態で問題を解決しなければならない

ログを管理するのは大変

  • 複数のサーバをまたいだログをすぐに見たいとき
    • 数が少なければなんとかみれるけど見難い
  • 複数のサーバでログの調査をするためにcronを使って特定のサーバに飛ばす
    • データ量が増えるにしたがって転送に時間がかかりスマートではない
  • ログをスマートに取り扱うことができれば色々な恩恵を受けることができる

Fluentdを使うメリット

  • ログの集約方法や書き込み先などを柔軟にカスタマイズできる
  • ログにタグをつけることができるので管理がしやすい
  • さまざまな言語向けのモジュールが提供されている

ログを可視化しよう

  • Elasticsearch
    • Apache Lucene(全文検索ライブラリ)をコアに利用している
    • スキーマーを指定せずにデータを登録することができる
    • 登録されたデータはほぼリアルタイムで検索可能
    • ただしjavaで実装されているためjavaを入れる必要がある

    • Kibana

      • Elasticsearch内のデータを可視化するオフィシャルなデータ可視化ツール
      • HTML/CSS/JSのみで構成されているためwebサーバがあれば利用可能
      • UIが洗礼されている

まとめ

  • Fluentdを使ってログを集約
  • ElasticsearchとKibanaを使ってデータを可視化(クエリやFilteringで条件検索可能)
  • これらの便利なツールを使ってログを有効活用できるようにしよう!

読んでいる本

Webエンジニアの教科書