Slide 1

Slide 1 text

を用いた アクセスログ調査と解析 勉強会

Slide 2

Slide 2 text

あるぴこら ● 株式会社はてな ● アプリケーションエンジニア ● はてなブックマークチーム 最近

Slide 3

Slide 3 text

サービスの稼働状況・アプリケーションの状態 をどうやって把握するか

Slide 4

Slide 4 text

はてなのサーバー監視 ● ○ 自社サービス

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

● 状態の記録・監視 ○ ホストの稼働状態 ■ やミドルウェアのメトリック ○ サービスの稼働状態 ■ サービス全体のアクセス状況 レイテンシ ● 障害対応など が起点

Slide 7

Slide 7 text

アクセスログのユースケース ● リクエストにフォーカスしたいとき ○ エンドポイント ユーザー 応答時間 ● 例 ○ 障害の原因となるエンドポイントの特定 ○ アプリケーションのパフォーマンス分析

Slide 8

Slide 8 text

アクセスログの形式 ● ベース ○ 時刻 time リクエスト uri 応答時間 reqtime ステータ スコード status ユーザーエージェント ua ● その他 ○ エンドポイントの識別子 dispatch ○ ログが生成されたホスト名 hostname

Slide 9

Slide 9 text

アクセスログの配送 ● で へ送る ● 流量は数億 くらい ○ リクエスト数とは異なる サンプリングもしてる

Slide 10

Slide 10 text

のマッピング ● で定義 ○ ログの形式は不定 ● 基本的に しない

Slide 11

Slide 11 text

ケーススタディ

Slide 12

Slide 12 text

障害対応時 ● のアラートで異常に気づく ● で細かい状況把握と原因調査 ○ で異常を示したメトリクスが手がかり

Slide 13

Slide 13 text

急なアクセス増加 ● 誰が どこに いつから アクセスしている ○ 典型的には ● で可視化 ● は次を指定 ○ date_histgram いつ ua 誰 ○ date_histgram いつ dispatch どこ

Slide 14

Slide 14 text

型サーバーの 枯渇 ● どこで の時間をたくさん使っている ● ○ dispatch どこ ● ○ reqtime 時間

Slide 15

Slide 15 text

レスポンスの増加 ● タブで status: [500 TO inf] ● で値の偏りがないか見る ○ エンドポイント dispatch uri ○ クライアント ua client_ip ○ ホスト hostname ● 怪しい要素でフィルタして原因特定まで絞り込む

Slide 16

Slide 16 text

リリース・デプロイ時 ● ダッシュボードを作っておく ● 主要なエンドポイントの健全性を確認 ○ dispatchでフィルタ ○ statusの ○ reqtimeの

Slide 17

Slide 17 text

パフォーマンス振り返り ● エンドポイント dispatch ごとに表にする ○ reqtime ○ reqtime の時間の利用 ○ size 帯域の利用

Slide 18

Slide 18 text

課題/今後の展望

Slide 19

Slide 19 text

「クソクエリ」問題 ● 実行に長時間かかる ● 大量のリソースを消費 ● クラスタ全体の応答時間が悪化 ○ ログの投入も遅延

Slide 20

Slide 20 text

先頭のワイルドカード ● ua:*GoogleBot* ● あらゆる を考慮することになるので遅い ● 対策 allow_leading_wildcardをfalse にする

Slide 21

Slide 21 text

な の集計 ● の生成で に比例した計算量 ● な の集計を行う意義は少ない ● ダッシュボードを作った後で が高くなることも

Slide 22

Slide 22 text

分散トレーシング ● トレースの中でのボトルネックはどこか ● ログにトレース を含めても活用が難しい

Slide 23

Slide 23 text

モニタリング ● エンドポイントごとのモニタリングがしたい ○ 異常があれば自動でアラートをあげたい ● ダッシュボードだけではモニタリングではない

Slide 24

Slide 24 text

アイデア ● の を使う ○ クエリの実行結果を外部に通知できる機能 ○ 任意のトリガ・整形方法 ● のサービスメトリックを投稿

Slide 25

Slide 25 text

を使ってみて ● サービスの運用に役立っている ○ 探索的なログ調査 ○ ダッシュボードによる観測 ● のモニタリングと組み合わせる