入門 監視 ―モダンなモニタリングのためのデザインパターン

読書メモ


-nilog: 『入門 監視』をざっと読了。特に監視の基本原則的なところが参考になった。そのアラートは誰かを叩き起こしてアクションさせる必要があるかどうか。 「本書は、システムのどの部分をどのように監視すべきか、また監視をどのように改善していくべきかについて解説する書籍です。前半で監視のベストプラクティス、デザインパターン/アンチパターンを示して、監視の基本原則を詳しく説明し、後半でフロントエンド、アプリケーション、サーバ、ネットワーク、セキュリティの各テーマで強力な監視の基盤を設計して実装するための方法を示します。監視対象が変化し、システムアーキテクチャが進化する中で、従来から変わらない監視の基本を示しながら、時代に合った監視の実践を解説する本書は、監視についての理解を深めたいエンジニア必携の一冊です」 入門 監視 ―モダンなモニタリングのためのデザインパターン | Mike Julian, 松浦 隼人 (2024-03-10)
--http://www.nilab.info/nilog/?type=m01&id=112071527676540059
--

-「動いている」かどうかを監視する
--「動いている」とはどういう状態か

-できるだけユーザに近いところから監視を始める
--まず監視を追加すべきなのは、ユーザがアプリケーションとやり取りをするところ
--ユーザが気にするのは、アプリケーションが動いているかどうか
--Apacheのノードが何台動いているかなどの実装の詳細をユーザは気にしない

-「MySQLが継続的にCPU全部を使っていたとしても、レスポンスタイムが許容範囲に収まっていれば何も問題はありません。これこそが、CPUやメモリ使用率のような低レベルなメトリクスではなく、「動いているか」を基準にアラートを送ることが有益である理由です。」
-「パフォーマンスに影響を与える可能性のある負荷の急変化やトレンドを確認できるので、OSのメトリクスは診断やパフォーマンス分析にとって重要です。しかし99%の場合、これらのメトリクスは誰かを叩き起こすには値しません。OSのメトリクスをアラートに使う明確な理由がないなら、止めてしまいましょう。」

-「「この値がXを超えた」といったアラートに意味がない状況はたくさんあります。典型的な例としてはディスク使用量があります。「空き容量が10%以下」という固定された閾値を決めてしまうと、ディスク使用量が11%から80%まで急激に増えるというケースを見逃してしまうでしょう。ご存知のとおり、本当に知らせて欲しいのはこういった場合なのですが、固定された閾値を使うとこのようなケースではアラートは送られてきません。これを解決するためにはいくつも方法があります。例えば、「一晩でディスク使用量が50%増加」といった内容を知らせてくれるよう、変化量あるいはグラフの傾きを使うことで、ディスク使用量のアラートの問題をうまく扱えます。」

-手順書(runbook)を書く
--アラートが来た時に自分の進むべき方向をすばやく示すことができる
--環境が複雑になって来ると、チームの誰もが各システムのことを知っているわけではなくなる
---手順書が知識を広める方法になる

-フロントエンド監視
--リアルユーザ監視(realusermonitoring:RUM)
--シンセティック監視(syntheticmonitoring)

-監視設定は100%自動化すべき
--誰かが設定を追加するのではなく、勝手に登録されるようにする

-監視は全員がやるべき仕事
--チームや部署内での役割ではない

-アラート疲れ

-アラートを減らす
--すべてのアラートは誰かがアクションする必要がある状態か
--削除して良いアラートはないか
--閾値を変更できるぁ
--監視の内容をより正確にするように直せないか
--アラートを削除するために、自動化の仕組みが作れるか

-「ソフトウェアエンジニアもオンコールのローテーションに入れることを強くおすすめします。この背景には、ソフトウェアエンジニアリングにおける「丸投げ」を避けるという意図があります。オンコールの最中に発生する問題にソフトウェアエンジニアが気づき、かつ自身がローテーションに組み込まれていれば、よりよいソフトウェアを作ろうというインセンティブが生まれます。もう少し繊細な問題として、共感の気持ちが生まれるという点もあります。ソフトウェアエンジニアと運用エンジニアを一緒にすることで、お互いの共感が強まります。本当に理解し気が合う人を困らせるようなことはしにくいものです。」

書籍情報


-O'Reilly Japan - 入門 監視
--https://www.oreilly.co.jp/books/9784873118642/
-->あなたのシステムはきちんと動いていると言えますか? 本書は、システムのどの部分をどのように監視すべきか、また監視をどのように改善していくべきかについて解説する書籍です。
-->前半で監視のベストプラクティス、デザインパターン/アンチパターンを示して、監視の基本原則を詳しく説明し、後半でフロントエンド、アプリケーション、サーバ、ネットワーク、セキュリティの各テーマで強力な監視の基盤を設計して実装するための方法を示します。
-->監視対象が変化し、システムアーキテクチャが進化する中で、従来から変わらない監視の基本を示しながら、時代に合った監視の実践を解説する本書は、監視についての理解を深めたいエンジニア必携の一冊です。日本語版では、松木雅幸(@songmu)氏による監視SaaSの導入や活用方法を付録として収録しています。
--
-->目次
-->
-->はじめに
-->
-->第Ⅰ部 監視の原則
-->
-->1章 監視のアンチパターン
--> 1.1 アンチパターン1:ツール依存
--> 1.1.1 監視とは複雑な問題をひとくくりにしたもの
--> 1.1.2 カーゴ・カルトなツールを避ける
--> 1.1.3 自分でツールを作らなければならない時もある
--> 1.1.4 「一目で分かる」は迷信
--> 1.2 アンチパターン2:役割としての監視
--> 1.3 アンチパターン3:チェックボックス監視
--> 1.3.1 「動いている」とはどういう意味か。「動いている」かどうかを監視しよう
--> 1.3.2 アラートに関しては、OSのメトリクスはあまり意味がない
--> 1.3.3 メトリクスをもっと高頻度で取得しよう
--> 1.4 アンチパターン4:監視を支えにする
--> 1.5 アンチパターン5:手動設定
--> 1.6 まとめ
-->
-->2章 監視のデザインパターン
--> 2.1 デザインパターン1:組み合わせ可能な監視
--> 2.1.1 監視サービスのコンポーネント
--> 2.2 デザインパターン2:ユーザ視点での監視
--> 2.3 デザインパターン3:作るのではなく買う
--> 2.3.1 安いから
--> 2.3.2 あなたは(おそらく)監視ツールを設計する専門家ではないから
--> 2.3.3 SaaSを使うとプロダクトにフォーカスできるから
--> 2.3.4 実際のところSaaSの方がよいから
--> 2.4 デザインパターン4:継続的改善
--> 2.5 まとめ
-->
-->3章 アラート、オンコール、インシデント管理
--> 3.1 どうしたらアラートをよくできるか
--> 3.1.1 アラートにメールを使うのをやめよう
--> 3.1.2 手順書を書こう
--> 3.1.3 固定の閾値を決めることだけが方法ではない
--> 3.1.4 アラートを削除し、チューニングしよう
--> 3.1.5 メンテナンス期間を使おう
--> 3.1.6 まずは自動復旧を試そう
--> 3.2 オンコール
--> 3.2.1 誤報を修正する
--> 3.2.2 無用の場当たり的対応を減らす
--> 3.2.3 上手にオンコールローテーションを組む
--> 3.3 インシデント管理
--> 3.4 振り返り
--> 3.5 まとめ
-->
-->4章 統計入門
--> 4.1 システム運用における統計を学ぶ前に
--> 4.2 計算が救いの手を差し伸べる
--> 4.3 統計は魔法ではない
--> 4.4 meanとaverage
--> 4.5 中央値
--> 4.6 周期性
--> 4.7 分位数
--> 4.8 標準偏差
--> 4.9 まとめ
-->
-->第Ⅱ部 監視戦略
-->
-->5章 ビジネスを監視する
--> 5.1 ビジネスKPI
--> 5.2 2つの事例
--> 5.2.1 Yelp
--> 5.2.2 Reddit
--> 5.3 ビジネスKPIを技術指標に結び付ける
--> 5.4 自分のアプリケーションにそんなメトリクスはないという時は
--> 5.5 会社のビジネスKPIを見つける
--> 5.6 まとめ
-->
-->6章 フロントエンド監視
--> 6.1 遅いアプリケーションのコスト
--> 6.2 フロントエンド監視の2つのアプローチ
--> 6.3 DOM
--> 6.3.1 フロントエンドパフォーマンスのメトリクス
--> 6.3.2 素晴らしい! でもどうやったらいいの?
--> 6.4 ロギング
--> 6.5 シンセティック監視
--> 6.6 まとめ
-->
-->7章 アプリケーション監視
--> 7.1 メトリクスでアプリケーションを計測する
--> 7.1.1 内部ではどのように動いているのか
--> 7.2 ビルドとリリースのパイプラインの監視
--> 7.3 healthエンドポイントパターン
--> 7.4 アプリケーションロギング
--> 7.4.1 メトリクスにすべきか、ログにすべきか
--> 7.4.2 何のログを取るべきか
--> 7.4.3 ディスクに書くべきか、ネットワーク越しに送るべきか
--> 7.5 サーバレスまたはFunction-as-a-Service
--> 7.6 マイクロサービスアーキテクチャを監視する
--> 7.7 まとめ
-->
-->8章 サーバ監視
--> 8.1 OSの標準的なメトリクス
--> 8.1.1 CPU
--> 8.1.2 メモリ
--> 8.1.3 ネットワーク
--> 8.1.4 ディスク
--> 8.1.5 ロードアベレージ
--> 8.2 SSL証明書
--> 8.3 SNMP
--> 8.4 Webサーバ
--> 8.5 データベースサーバ
--> 8.6 ロードバランサ
--> 8.7 メッセージキュー
--> 8.8 キャッシュ
--> 8.9 DNS
--> 8.10 NTP
--> 8.11 それ以外の企業インフラにおける監視
--> 8.11.1 DHCP
--> 8.11.2 SMTP
--> 8.12 スケジュールジョブの監視
--> 8.13 ロギング
--> 8.13.1 収集
--> 8.13.2 保存
--> 8.13.3 分析
--> 8.14 まとめ
-->
-->9章 ネットワーク監視
--> 9.1 SNMPのつらさ
--> 9.1.1 SNMPとは
--> 9.1.2 SNMPの仕組み
--> 9.1.3 セキュリティについて
--> 9.1.4 SNMPの使い方
--> 9.1.5 インタフェイスのメトリクス
--> 9.1.6 インタフェイスとログ
--> 9.1.7 SNMPに関するまとめ
--> 9.2 構成管理
--> 9.3 音声と映像
--> 9.4 ルーティング
--> 9.5 スパニングツリープロトコル(STP)
--> 9.6 シャーシ
--> 9.6.1 CPUとメモリ
--> 9.6.2 ハードウェア
--> 9.7 フロー監視
--> 9.8 キャパシティプランニング
--> 9.8.1 逆算する
--> 9.8.2 予測する
--> 9.9 まとめ
-->
-->10章 セキュリティ監視
--> 10.1 監視とコンプライアンス
--> 10.2 ユーザ、コマンド、ファイルシステムの監査
--> 10.2.1 auditdのセットアップ
--> 10.2.2 auditdとリモートログ
--> 10.3 ホスト型侵入検知システム(HIDS)
--> 10.4 rkhunter
--> 10.5 ネットワーク侵入検知システム(NIDS)
--> 10.6 まとめ
-->
-->11章 監視アセスメントの実行
--> 11.1 ビジネスKPI
--> 11.2 フロントエンド監視
--> 11.3 アプリケーションとサーバの監視
--> 11.4 セキュリティ監視
--> 11.5 アラート
--> 11.6 まとめ
-->
-->付録A 手順書の例:Demo.App
--> A.1 Demo App
--> A.2 メタデータ
--> A.3 エスカレーション手順
--> A.4 外部依存
--> A.5 内部依存
--> A.6 技術スタック
--> A.7 メトリクスとログ
--> A.8 アラート
-->
-->付録B 可用性表
-->
-->付録C 実践.監視SaaS
--> C.1 筆者と監視SaaS
--> C.2 監視SaaSの利点
--> C.3 監視SaaSは信用できるのか
--> C.3.1 監視SaaSビジネスそのものに対する信頼性
--> C.3.2 事業の継続性について
--> C.3.3 サービス品質について
--> C.3.4 悪意はないか
--> C.4 監視SaaSの選定時に考えること
--> C.4.1 課題を見つける
--> C.4.2 機能要件を精査する
--> C.4.3 組み合わせて使う
--> C.4.4 運用をサービスに合わせる
--> C.4.5 ハッカビリティを備えているか
--> C.4.6 外部の力を活用できるか
--> C.5 監視SaaSを導入する
--> C.5.1 監視エージェントのインストール
--> C.5.2 監視エージェントが収集するメトリクス
--> C.5.3 シンセティック監視のすすめ
--> C.6 監視SaaSを活用する
--> C.6.1 テスト駆動開発と監視
--> C.6.2 自分で監視を作る
--> C.6.3 監視を育てる
--> C.6.4 自動復旧のためのアイデア
--> C.7 監視SaaSのこれから
--> C.7.1 監視パラダイムの変遷
--> C.7.2 機械学習と異常検知
--> C.8 まとめ
-->
-->訳者あとがき
-->索引

-入門 監視 ―モダンなモニタリングのためのデザインパターン | Mike Julian, 松浦 隼人 |本 | 通販 | Amazon
--https://www.amazon.co.jp/dp/4873118646?tag=nilabwiki-22&linkCode=osi&th=1&psc=1