『入門 監視―モダンなモニタリングのためのデザインパターン』を読んで

こんにちは、エンジニアの田中です。BIチームで主にデータパイプラインの構築やBIダッシュボードの作成を行っており、気づけば配属されて丸2年経ちました。

先日『入門 監視―モダンなモニタリングのためのデザインパターン』(Mike Julian著,  松浦 隼人訳, オライリー・ジャパン)を読みましたのでまとめます。

本記事はFLINTERS BASEブログ祭りの一環として書いたものです。テーマは #技術書 #監視 #読書メモ です。

この本を読んだ理由

思い返すと技術書は配属当初に何冊か読んだだけでした。よろしくない状況ですね。何か読みたい、けどあまり難しいものは時間的にも精神的にも読む余裕がない。

そこでChatGPTに「エンジニア向けの読みやすい本を教えて」と聞いてみたところ、何冊かおすすめを教えてくれました。その中で、タイトルが一番印象的だったのがこの本です。

はじめ「監視」という言葉は耳慣れないと感じましたが、考えてみると過去にオンコール担当になったこともありますし、現在はチームで作成したシステムのエラーを検知したりしています。自分の業務にも活かせることがあるのではと思い、読むことに決めました。

本の構成

本書は二部構成になっています。

はじめに

第Ⅰ部 監視の原則

1章 監視のアンチパターン

2章 監視のデザインパターン

3章 アラート、オンコール、インシデント管理

4章 統計入門

 

第Ⅱ部 監視戦略

5章 ビジネスを監視する

6章 フロントエンド監視

7章 アプリケーション監視

8章 サーバ監視

9章 ネットワーク監視

10章 セキュリティ監視

11章 監視アセスメントの実行

各章の終わりに内容のまとめがあるという親切設計でした。

章ごとの概要

はじめに

監視とは、あるシステムやそのシステムのコンポーネントの振る舞いや出力を観察しチェックし続ける行為である。

監視の定義、この本を読むべき人等が書いてあります。監視は素早く進化するトピックですが(監視だけでなくIT技術全体に言えますね)、この本で紹介する基本原則は時代を超えて使えるものだそうです。

1章 監視のアンチパターン

この章で紹介されているアンチパターンは以下の通りでした。

  • ツール依存
    • ツール駆動だとツールによってミッションが決まってしまう。ミッションを決めてからそれを満たすツールを探すべき
  • 役割としての監視
    • 監視専門の役割を設けてはいけない。チーム全員が本番環境に責任を持つべき
  • チェックボックス監視
    • 「これを監視してます」と言うための監視システムは非効率的
  • 監視を支えにする
    • 問題のあるシステムを直さずに、監視でなんとかしようとしない
  • 手動設定
    • 監視設定は100%自動化すべき

一言メモ

ところどころ訳文っぽい言い回しがあってピンとこない部分もありますが、ちゃんと全体を読むと理解できました。特にツール依存ですが、「この監視ツールいいらしい!」という情報に躍らされてとりあえず導入する、なんてやってしまいがちな気がします。

2章 監視のデザインパターン

アンチパターンを学んだところで、実際にはどんな監視システムを作っていけば良いのか学べます。

  • デザインパターン1:組み合わせ可能な監視
    • 専門化されたツールを複数使う
  • デザインパターン2:ユーザ視点での監視
    • ユーザにとって一番大事なのは実装の詳細ではなく「動いているかどうか」
  • デザインパターン3:作るのではなく買う
    • 監視SaaSを使うとすぐ立ち上げられ、プロダクト作成に注力できる
  • デザインパターン4:継続的改善
    • 監視システムは作って終わりでなく、常に改善し続ける必要がある

一言メモ

複雑なシステムやアプリケーションを運用しているとどこから監視すれば良いか迷いそうですが、そういう時に「ユーザ視点での監視」が重要になりそうだと感じました。

3章 アラート、オンコール、インシデント管理

監視の目的を達成するための方法であるアラートと、それに付随するオンコール、インシデント管理をどのようにより良くしていけば良いかが書いてある章です。

  • アラート
    • アラートをメールで送らない
    • 手順書を書く
    • 固定の閾値を決めることだけが方法ではない
    • 不要なアラートは削除し、チューニングする
    • メンテナンス期間を有効に使う
    • まずは自動復旧を試す
  • オンコール
    • 誤報を修正する
    • 無用の場当たり的対応を減らす
    • 上手にオンコールローテーションを組む
  • インシデント管理
    • 自社に合ったシンプルな管理プロセスを作る

一言メモ

「アラートをメールで送ると無視される」は完全に同意です。ただアラートを飛ばすのではなく、送信先や質が大事ですね。

4章 統計入門

運用やエンジニアリングにおいてインパクトの大きい統計指標について簡単に説明されています。データの種類(偏りがある・外れ値がある・上限あるいは下限がある等)によって以下の統計的手法を使い分けます。

  • 平均(meanとaverage)
  • 周期性
  • パーセンタイル
  • 標準偏差

一言メモ

統計は難しいというイメージがあったのですが、本書の説明はかなりあっさりで読みやすかったです。

5章 ビジネスを監視する

2章で学んだ「ユーザ視点での監視」にも繋がってくる、ビジネス面での監視の重要性について説明されています。

  • ビジネスKPIは非常に重要なアプリケーションやインフラのパフォーマンスを示す先行指標になる
  • 会社ごとのビジネスKPIを特定する
  • ビジネスKPIを技術指標に結びつける

一言メモ

YelpとRedditというサービスについてそれぞれのビジネスKPIが紹介されていて参考になったのですが、実際の事例と思いきや著者が考えたものだそうです。ビジネスモデルからKPIの考察が可能ということですね。

6章 フロントエンド監視

本書では、「ブラウザあるいはネイティブなモバイルアプリケーションによってパースされて実行されるすべて」がフロントエンドと定義されています。

  • 実際のユーザが見ているページのロード時間を監視する
  • JavaScriptの例外を監視する
  • ページのロード時間をCIシステムから計測し続け、ロード時間が許容時間内に収まるようにする

一言メモ

Amazonではロード時間が100ms改善するごとに売上が1%増加することがわかったそうです。フロントエンド監視と改善によるビジネスへのインパクトが大きいことがわかります。

7章 アプリケーション監視

アプリケーションについて、どうしたら高い可視性が得られるのか学べます。

  • アプリケーションをメトリクスとログで計測するのが最も重要である
  • アプリケーションやインフラのリリースやパフォーマンスに関係することを追跡する
  • /healthエンドポイントパターンはなかなか良い方法である

一言メモ

アプリケーション開発に携わった経験がないこともあり、この章の内容は頭に入ってきづらかったです。携わる折にはもっと真剣に読みたいと思います。

8章 サーバ監視

サーバ上で遭遇する一般的なサービスの種類、提供されるメトリクスやログの種類、それらを理解する方法が書かれています。

  • 標準的なOSメトリクスはアラートを送るのに適さない場合がある
  • Webサーバ、データベースサーバ、ロードバランサなどといったサービスを使って監視する
  • サーバの観点からのロギング

一言メモ

ボリュームたっぷりの章ですが、相反して著者が書いているまとめは薄いです。そう簡単にまとめられない内容ということですかね。自分の理解も薄めなので、携わる折には以下略。

9章 ネットワーク監視

著者いわく多くの人が考えているよりもはるかに複雑だという、ネットワーク監視の正しい方法が学べます。

  • SNMPは難解で古めかしいプロトコルだが、これを使うしかない
  • 設定変更を追跡することでたくさんの情報が得られ、作業時間も頭痛の種も減らせる
  • インタフェイス、ルーティングプロトコル、スイッチ、シャーシのコンポーネントを監視する
  • 音声や映像ストリーミングのパフォーマンスを監視する
  • NetFlow、J-Flow、sFlow、IPFIXを使ってフロー全体を監視することで、ネットワーク内で何が起こっているかに対する深い理解が得られる
  • ネットワークエンジニアリングにおけるキャパシティプランニング

一言メモ

む、難しい……というか知らないことがありすぎる。ネットワーク監視は著者の好きなジャンルらしく、一層熱が入っているように感じました。

10章 セキュリティ監視

セキュリティ監視はアプリケーションやインフラとは全く異なるものですが、難しいと決めつけず、注意深く決断を下す必要があります。

  • 監視でコンプライアンスを実現する
  • auditdを使ってユーザ、コマンド、ファイルシステムを監査する
  • ルートキットやその他のホストレベルの侵入の検知にはホスト型侵入検知システム(HIDS)を使う
  • ファイアウォールは十分ではないため、ネットワーク侵入検知システム(NIDS)を使いたくさんの情報を取得する

一言メモ

この章も知識が足りず理解が難しかったですが、セキュリティに関しては問題が起きてからではまずいのでもっと勉強せねば。

11章 監視アセスメントの実行

最後の章は、著者が自身のコンサルティングクライアントと行う作業をもとに、本書で学んだことをすべてまとめて適用するための例題が載っています。

一言メモ

本書の総復習ができます。途中難しく感じる章がいくつかありましたが、具体例を見るとそこもなんとなく理解できた気になります。具体例って大事ですね。

まとめ

現時点では自分の業務に活かせる具体的な方法は少なかったです。というのも、本書で多く紹介されていたアプリケーション、サーバ、ネットワークについてBIチームの業務の中で触れることがほとんどないためです。ただ、アンチパターンやデザインパターンから学んだ監視の原則は、どのような業務においても重要な考え方だと感じました。

また、読み進める中でたくさんの知らない単語や理解できない内容に出会し、自分がいかに勉強不足か痛感したので、その点でも有意義でした。

「久々に技術書を読み切ったぞ!」という達成感をモチベーションに変えて、今後は積極的に技術書を読んでいきたいと思います。