勘と経験と読経

略すとKKD。ソフトウェア開発やITプロジェクトマネジメントに関するあれこれ。

技術書「The Art of Monitoring」ナナメ読み

The DevOps Handbookで紹介されていた「The Art of Monitoring」が面白そうだったのでナナメ読みしたメモ。

The Art of Monitoring (English Edition)

The Art of Monitoring (English Edition)

Web-Scale企業(たとえば、GoogleAmazonFacebook)の運用エンジニアたちが開発し、使っている新しいモニタリングアーキテクチャについては、James Turnbullが著書The Art of Monitoringのなかで説明している。
The DevOps ハンドブック 理論・原則・実践のすべて (14.1 一元的な遠隔測定インフラストラクチャの作り方、より)

The DevOps ハンドブック 理論・原則・実践のすべて

The DevOps ハンドブック 理論・原則・実践のすべて

「The Art of Monitoring」読んだ感想。

当初期待していたのはアプリケーションのモニタリングについての抽象度の高い方法論だったのだけれども 、本書はむしろRiemannを中心とした具体的なHowToである。よってこれから構築するシステム、もしくは構築済だがモニタリング機能は手付かずのシステムで、本書で紹介されているプロダクトセット(Riemann,ELK,collectd etc)を用いた監視基盤を構築するのであれば有用だろう。
一方で抽象的な方法論について読みたければ、The DevOps Handbookに本書をベースとした考え方は十分紹介されているのであえて本書を読む必要はないと思う。The DevOps ハンドブック 理論・原則・実践のすべてを読めば十分な印象がある。

なお本書はSafaribooksonlineに登録されているので、下記の方法を取れば購入しなくても読むことができる(できた)。

「The Art of Monitoring」の目次と各章ナナメ読み読書メモ

  • 1 Introduction
    • 興味深い。モニタリングの昨今のトレンドや類別などについて。
    • 「Manual, user-initiated, or no monitoring」>「Reactive(Monitoring)」>「Proactive(Monitoring)」という流れ。
  • 2 A Monitoring and Measurement Framework
    • モニタリングフレームワークについての抽象度の高い話で、こちらもいろいろ参考になる印象。
  • 3 Managing events and metrics with Riemann
    • Riemannの導入方法など。
  • 4 Introducing Graphite and Grafana
    • GraphiteとGrafanaの導入方法について。
  • 5 Host monitoring
    • サーバのデータ収集をcollectdとRiemannで実施し、Graphiteに送信するところまで。
  • 6 Using collectd events in Riemann
    • 5章の収集データを用いた監視の実装と、Grafanaによるモニタリング。
  • 7 Containers: another kind of host
    • Docker固有のコンテナ監視について。Dockerから取れるメトリック+Docker collectdの構成。
  • 8 Logs and logging
    • ログ監視(syslog)を行う。
    • Elasticsearch - Logstash - Kibanaの構成。
    • Rsyslogを使ってsyslog取得。
    • LogstashからRiemann、Graphiteへのメトリクスとイベントの送信。
  • 9 Building Monitored Applications
    • アプリケーションの監視を行うのに、ログだけじゃなくてモニタリングエンドポイントを追加する方法について。
    • アプリにエンドポイントを追加してStatsDで情報収集。
  • 10 Notifications
    • 通知処理のレベルアップについて。コンテキストの追加、メンテナンスとダウンタイムの考慮、クリティカルではない参考情報の追加。
    • GrafanaのScripted Dashboardの活用。
    • Slack/PagerDutyへの出力。
    • Riemannでのメンテナンスイベントのハンドリング。
  • 11 Monitoring Tornado: a capstone
    • 応用編。アプリケーションスタック全体を管理、測定、通知する方法について。
    • Part1として、仮想アプリケーション「Tornado」のWeb層のモニタリングを設定する。
    • HttroxyやNginxの情報を取り扱う方法。
  • 12 Monitoring Tornado: Application Tier
    • 応用編の続き。仮想アプリケーション「Tornado」のAP層のモニタリングを設定する。
    • JVM監視、ログ収集、アプリ自体のヘルスチェック(APIに仕込む)など。
  • 13 Monitoring Tornado: Data tier
    • 応用編の続き。仮想アプリケーション「Tornado」のDB層のモニタリングを設定する。そして統合ダッシュボードを組む。
    • collectdでmysqlとredisからデータを収集する。
    • Grafanaで「Tornado」ダッシュボードを構築する。
  • 14 An Introduction to Clojure and Functional Programming
    • Riemannのカスタマイズに用いるClojureの説明。