created: 2019-05-19T06:19:54.000Z

入門監視の読書メモ

後から見返したり、おぼえておきたいことをメモ


OSのメトリクスだけを対象にしたアラートは意味が薄い

  • メトリクスが悪くなってもサービスに影響を与えているとは限らない
  • サービスを監視したい場合は、OSのメトリクスではなくてサービスを監視する
    • もちろんOSのメトリクスが原因であることもあるが、サービスを監視するほうが直接的でシンプル

メトリクスは高頻度で取得して良い

  • 最低でも1分に1回取得する
    • 0.02 QPS (1分に1回) で負荷が上がるシステムはきょうびないはず
  • とったメトリクスの保管期限/情報の圧縮方法は検討する必要がある

たとえば AWS EC2の可用性は99.95%

  • AWS EC2 はインフラのインフラと呼べる部分
    • それでも年間4時間のダウンタイムは許容している
  • これ以上の可用性を普通のサービスに求めるのは不合理と言える

ユーザ側のコンポーネントから監視する

  • サービスはユーザのためのものなので、ユーザに近いところが監視の優先順位は高い
  • たとえば、DBのIOPSではなくHTTPのステータスコードから監視する

障害対応時の役割には名前がある

  • 現場指揮官
    • リスクとトレードオフを鑑みて決断をするのが仕事
    • システムの設計を理解しているエンジニアが担当する
  • スクライブ (書記)
    • 起こったことを記録する
      • 誰が何をしたのか
      • 誰が何を決断したのか
  • コミュニケーション調整役
    • ステークホルダーに説明をする
    • マネージャが担当する
  • SME (subject matter expert)
    • 実際に障害対応をする人
    • 当該コンポーネントに詳しいエンジニアが行う

ビジネスKPIを監視する

たとえば

  • ログイン成否の比率
  • 購入失敗 / 購入のレイテンシ
  • サイトに滞在しているユーザ数

ユーザのサイト内での行動の成否とそのレイテンシはビジネスKPIとなりうる

フロントエンドのNavigationTimingAPI

いくつかあるが重要なもの

  • navigationStart
    • サイトへのリクエストを開始したタイミング
      • URLを入れてエンターを押したタイミング
    • 途中のリダイレクトよりも前
    • DNS, TCPコネクションよりも前
  • domLoading
    • html、DOMのレスポンスが返ってき終わったところ
    • ブラウザが最初に受け取った HTML ドキュメントのバイトの解析を開始する時点
  • domInteractive
    • 受け取ったhtmlをもとにブラウザがDOMを生成できた時点
  • domContentLoaded
    • DOMが構築できて、かつjsの実行ができるようになった時点
      • CSSの描画/計算が残ってるとjsは実行できない
  • domComplete
    • 画像などのページ内のリソースがすべて表示できたタイミング
    • ブラウザの読み込み中のマークの回転が止まった状態
参考

データベースサーバの基本的な監視

  • コネクション数 (MySQLだとスレッド数)
  • 秒間クエリ数 (QPS)
  • IOPS
    • DBにとってディスクが健全なのかは基本的な監視

セキュリティ監視

ふたつのツールが紹介されていた

  • auditd
    • sudoの記録、ファイルの変更などを監視
  • rkhunter
    • rootkitが何かしてたら検知するソフトウェア

healthエンドポイント

Efficient Linuxコマンドライン ―開発と自分に磨きをかけるLinuxのテクノロジー
[ad] Efficient Linuxコマンドライン ―開発と自分に磨きをかけるLinuxのテクノロジー
Daniel J. Barrett, 大嶋 真一 (単行本(ソフトカバー))