入門 監視 を読んだ

O’Reilly Japan - 入門 監視 を読み終えました。
今まで監視の設計をしたことがなかったのでどの部分も新鮮で面白かったです。
220ページくらいを1週間くらいかけて合計7時間ほどで読み切りました。

本を読む前の自分の状況

  • 監視について全く知らない。
    • OpenTelemetryってやつでよく分からんけど全部解決するのでは?
    • なんかCPUとかのダッシュボード的なものがある印象
    • アラートが飛んでくるとつらい
  • 仕事で監視周りの知識が必要になったが、全く知らないのでヤバくて、何も分からない状態ではまずいと思い手札を増やすために読んだ。
    • ちょうど自分の運用しているマストドンとhonkでも監視を入れたくなっていたので、仕事の時間もプライベートの時間も使って読むことにした。
  • 元々この本は知っていて良さそうと思っていたが、会社の人に勧められてやっぱここから開始するのが初手いいのかなと思い読むことにした。

本を読んだ後の自分の状況

  • 障害対応は仕事でいくつか経験していたので、自分の持っているコンテキストを付き合わせながら読めてすんなり理解できた
  • 監視に対する理解が深まった。具体的には以下の質問に自分なりに答えられる。
    • 監視する目的とは何か?
    • どんな監視が良くなくて、どんな監視が良いのか?
    • 監視の閾値を決定するのは誰がするべきか?
  • 自分の仕事で活かせそうな監視の知識や姿勢を見つけた
    • これから実践あるのみ
  • 自分のプライベートのマストドンとかの監視に役立ちそうな知識を得た

概要

前半1-4章で基礎的なことを学ぶ。これはどの監視にも共通するので抽象的なところもある。
後半5-11章で具体的なことを学ぶ。実際にネットワーク監視やフロントエンドのパフォーマンス監視などを扱うが、ここで前半の章で学んだ抽象的な項目を思い出すと納得しやすい。

僕がいいなと思ったところ

監視に銀の弾丸はない

なんだって銀の弾丸はないので一見無を主張しているようだけど、本書の文脈では「これさえあればオールオッケーな監視ツールは存在しない。したがって監視ツールは組み合わせると良い」という主張になっている。
個人的に監視を全く知らなかったので複数のツールを使うのはめんどくさそう…と思っていたので、汎用的なツールと専門的な特化ツールを組み合わせるといいよ、という話は納得した。

監視は質問に答えられるように作るとよい

監視は色々なデータが取れるので、多角的に分析して何か導けそうな雰囲気があるという点で本質的にデータ分析に通じている。僕は監視の設計をしたことがなく、監視に対して目的意識を持ったことがなかった。なので本当に意識の外にあったのだけどこの本を読んで「監視はユーザ目線での質問に答えられるようにまず設計すべき」という思いを持った。

例えば僕が自分用マストドンを運用しているのなら、外でスマホからアクセスできなくなったときに、「動いているのか?」というのが気になる。この質問に答えるには、マストドンに向けたHTTPリクエストが200を返すかどうかという監視がまず欲しい。(そしてそれがスマホから見られると良い)その先にメモリ使用率がいっぱいになっていないかどうかとか、攻撃を受けていないかどうかとか、その辺りの原因究明に役立つメトリクスやログがついてくる。

何を起点に監視の設計をしたらいいか分からなかったけど、ユーザ目線の質問を起点にすればいいということが分かった。

共通基盤チームとアプリチームの役割

仕事で所属しているチームの性質上、Observabilityチームのような共通基盤チームとアプリチームの役割のうまい分担に関する部分は考えさせられた。
Observabilityチームが監視を作るわけではない、というのは近年のPlatform Engineeringの話題にも通じている気がする。このあたりは他の資料も当たって自分なりの考えを持ちたい。

良いアラート、良い手順書

良いアラートと良い手順書についての説明は個人的に良かった。チェックリストとして使えそう。詳しくは本を読んで欲しいけど、特に手順書に求められるものは僕がぼんやり言語化できていないところだったのでこれこれ!これだよ!と思った。

その他

  • 外形監視から始めよう
  • アプリが動いている、とは何か?はプロダクトマネージャーなどたくさんの人と話して知ろう
  • フロントエンド監視は動いていることだけではなく、素早い読み込みができてゴールになる
  • DEBUG/ERRORなどのログレベルはログを設計する時に重要度を決めることになるので難しいことをしている
    • 明らかにDebugレベルのログ、とかはあるけれど運用して重要度が動的に変化する可能性がある
  • 分散トレーシングはマイクロサービス化することでユーザのリクエストがどのように処理されるかが分かりにくくなってきたことへの対処として登場した
  • 監視はユーザ目線から設定していく性質上、ビジネスロジックへの理解がある人が設定をする方がいいこともある
  • セキュリティとネットワーク監視については、継続的にどの地点でも保証が欲しいという点で継続的インテグレーションに近いことをしているように見える。構造としては、「正しさを常にチェックする必要性」みたいなところが似てる。

まとめ

入門 監視 は監視を何も知らない人が抽象的な原理原則を学びつつ具体的なトピックを読んで個別の知識を深められるいい本です。