入門 Prometheus ―インフラとアプリケーションのパフォーマンスモニタリング

Book description

本書はPrometheusモニタリングシステムを使って、インフラストラクチャとアプリケーションのパフォーマンスをモニタリングしてグラフ化したり、アラートを送る方法を解説する書籍です。簡単な構成のPrometheusを実行して概要を理解した後、インストルメンテーションの追加や利用方法、Grafanaによるダッシュボード作成などアプリケーションの監視について学びます。Node exporterなどの各種exporter、他のモニタリングシステムとの連携やコンテナとKubernetesなどインフラストラクチャのモニタリングを解説し、さらにクエリ言語のPromQLやアラートについて詳述。最後に本番システムにPrometheusをデプロイする方法を学びます。

Table of contents

  1.  大扉
  2.  原書大扉
  3.  クレジット
  4.  監訳者まえがき
  5.   企業事例
  6.   最後に
  7.  はじめに
  8.   既知を広げる
  9.   凡例
  10.   コード例の利用について
  11.   問い合わせ先
  12.   謝辞
  13. 第Ⅰ部 イントロダクション
  14.  1章 Prometheusとは何か
  15.   1.1 モニタリングとは何か
  16.    1.1.1 簡単で不完全なモニタリング小史
  17.    1.1.2 モニタリングのカテゴリ
  18.   1.2 Prometheusのアーキテクチャ
  19.    1.2.1 クライアントライブラリ
  20.    1.2.2 exporter
  21.    1.2.3 サービスディスカバリ
  22.    1.2.4 スクレイピング
  23.    1.2.5 ストレージ
  24.    1.2.6 ダッシュボード
  25.    1.2.7 レコーディングルールとアラート
  26.    1.2.8 アラート管理
  27.    1.2.9 長期記憶ストレージ
  28.   1.3 Prometheusは何ではないか
  29.  2章 初めてのPrometheus
  30.   2.1 Prometheusの実行
  31.   2.2 式ブラウザの使い方
  32.   2.3 Node exporterの実行
  33.   2.4 アラート
  34. 第Ⅱ部 アプリケーションのモニタリング
  35.  3章 インストルメンテーション
  36.   3.1 単純なプログラム
  37.   3.2 カウンタ
  38.    3.2.1 例外のカウント
  39.    3.2.2 サイズのカウント
  40.   3.3 ゲージ
  41.    3.3.1 ゲージの使い方
  42.    3.3.2 コールバック
  43.   3.4 サマリ
  44.   3.5 ヒストグラム
  45.    3.5.1 バケット
  46.   3.6 インストルメンテーションのユニットテスト
  47.   3.7 インストルメンテーションへのアプローチ
  48.    3.7.1 何をインストルメントすべきか
  49.    3.7.2 どの程度の量のインストルメンテーションをすべきか
  50.    3.7.3 メトリクスにはどのような名前を付けるべきか
  51.  4章 開示
  52.   4.1 Python
  53.    4.1.1 WSGI
  54.    4.1.2 Twisted
  55.    4.1.3 Gunicornによるマルチプロセス
  56.   4.2 Go
  57.   4.3 Java
  58.    4.3.1 HTTPServer
  59.    4.3.2 Servlet
  60.   4.4 Pushgateway
  61.   4.5 ブリッジ
  62.   4.6 パーサ
  63.   4.7 メトリクスの開示形式
  64.    4.7.1 メトリクスタイプ
  65.    4.7.2 ラベル
  66.    4.7.3 エスケープ
  67.    4.7.4 タイムスタンプ
  68.    4.7.5 メトリクスのチェック
  69.  5章 ラベル
  70.   5.1 ラベルとは何か
  71.   5.2 インストルメンテーションラベルとターゲットラベル
  72.   5.3 インストルメンテーション
  73.    5.3.1 メトリクス
  74.    5.3.2 複数のラベル
  75.    5.3.3 子
  76.   5.4 集計
  77.   5.5 ラベルのパターン
  78.    5.5.1 列挙
  79.    5.5.2 info
  80.   5.6 ラベルを使うべきとき
  81.    5.6.1 カーディナリティ
  82.  6章 Grafanaによるダッシュボードの作成
  83.   6.1 インストール
  84.   6.2 データソース
  85.   6.3 ダッシュボードとパネル
  86.    6.3.1 グラフの壁を避けよう
  87.   6.4 グラフパネル
  88.    6.4.1 時間の設定
  89.   6.5 シングルスタットパネル
  90.   6.6 テーブルパネル
  91.   6.7 テンプレート変数
  92. 第Ⅲ部 インフラストラクチャのモニタリング
  93.  7章 Node exporter
  94.   7.1 cpuコレクタ
  95.   7.2 filesystemコレクタ
  96.   7.3 diskstatsコレクタ
  97.   7.4 netdevコレクタ
  98.   7.5 meminfoコレクタ
  99.   7.6 hwmonコレクタ
  100.   7.7 statコレクタ
  101.   7.8 unameコレクタ
  102.   7.9 loadavgコレクタ
  103.   7.10 textfileコレクタ
  104.    7.10.1 textfileコレクタの使い方
  105.    7.10.2 タイムスタンプ
  106.  8章 サービスディスカバリ
  107.   8.1 サービスディスカバリのメカニズム
  108.    8.1.1 静的設定
  109.    8.1.2 ファイル
  110.    8.1.3 Consul
  111.    8.1.4 EC2
  112.   8.2 リラベル
  113.    8.2.1 スクレイプするものの選択
  114.    8.2.2 ターゲットラベル
  115.   8.3 スクレイプの方法
  116.    8.3.1 metric_relabel_configs
  117.    8.3.2 ラベルの衝突とhonor_labels
  118.  9章 コンテナとKubernetes
  119.   9.1 cAdvisor
  120.    9.1.1 CPU
  121.    9.1.2 メモリ
  122.    9.1.3 ラベル
  123.   9.2 Kubernetes
  124.    9.2.1 Kubernetes内でのPrometheusの実行
  125.    9.2.2 サービスディスカバリ
  126.    9.2.3 kube-state-metrics
  127.  10章 よく使われるexporter
  128.   10.1 Consul exporter
  129.   10.2 HAProxy exporter
  130.   10.3 Grok exporter
  131.   10.4 Blackbox exporter
  132.    10.4.1 ICMP
  133.    10.4.2 TCP
  134.    10.4.3 HTTP
  135.    10.4.4 DNS
  136.    10.4.5 Prometheusの設定
  137.  11章 ほかのモニタリングシステムとの連携
  138.   11.1 その他のモニタリングシステム
  139.   11.2 InfluxDB
  140.   11.3 StatsD
  141.  12章 exporterの書き方
  142.   12.1 Consulのtelemetry
  143.   12.2 カスタムコレクタ
  144.    12.2.1 ラベル
  145.   12.3 ガイドライン
  146. 第Ⅳ部 PromQL
  147.  13章 PromQL入門
  148.   13.1 集計の基礎
  149.    13.1.1 ゲージ
  150.    13.1.2 カウンタ
  151.    13.1.3 サマリ
  152.    13.1.4 ヒストグラム
  153.   13.2 セレクタ
  154.    13.2.1 マッチャ
  155.    13.2.2 インスタントベクトル
  156.    13.2.3 範囲ベクトル
  157.    13.2.4 オフセット
  158.   13.3 HTTP API
  159.    13.3.1 query
  160.    13.3.2 query_range
  161.  14章 集計演算子
  162.   14.1 グルーピング
  163.    14.1.1 without
  164.    14.1.2 by
  165.   14.2 演算子
  166.    14.2.1 sum
  167.    14.2.2 count
  168.    14.2.3 avg
  169.    14.2.4 stddevとstdvar
  170.    14.2.5 minとmax
  171.    14.2.6 topkとbottomk
  172.    14.2.7 quantile
  173.    14.2.8 count_values
  174.  15章 二項演算子
  175.   15.1 スカラの操作
  176.    15.1.1 算術演算子
  177.    15.1.2 比較演算子
  178.   15.2 ベクトルマッチング
  179.    15.2.1 一対一対応
  180.    15.2.2 多対一対応とgroup_left
  181.    15.2.3 多対多対応と論理演算子
  182.   15.3 演算子の優先順位
  183.  16章 関数
  184.   16.1 型変換
  185.    16.1.1 vector
  186.    16.1.2 scalar
  187.   16.2 数学関数
  188.    16.2.1 abs
  189.    16.2.2 ln、log2、log10
  190.    16.2.3 exp
  191.    16.2.4 sqrt
  192.    16.2.5 ceilとfloor
  193.    16.2.6 round
  194.    16.2.7 clamp_maxとclamp_min
  195.   16.3 日時
  196.    16.3.1 time
  197.    16.3.2 minute、hour、day_of_week、day_of_month、days_in_month、month、year
  198.    16.3.3 timestamp
  199.   16.4 ラベル
  200.    16.4.1 label_replace
  201.    16.4.2 label_join
  202.   16.5 欠損値とabsent
  203.   16.6 sortとsort_descによるソート
  204.   16.7 histogram_quantileによるヒストグラム作成
  205.   16.8 カウンタ
  206.    16.8.1 rate
  207.    16.8.2 increase
  208.    16.8.3 irate
  209.    16.8.4 resets
  210.   16.9 変化するゲージ
  211.    16.9.1 changes
  212.    16.9.2 deriv
  213.    16.9.3 predict_linear
  214.    16.9.4 delta
  215.    16.9.5 idelta
  216.    16.9.6 holt_winters
  217.   16.10 経時的集計
  218.  17章 レコーディングルール
  219.   17.1 レコーディングルールの使い方
  220.   17.2 レコーディングルールはいつ使うべきか
  221.    17.2.1 カーディナリティの削減
  222.    17.2.2 範囲ベクトル関数の作成
  223.    17.2.3 APIのためのルール
  224.    17.2.4 ルールの禁じ手
  225.   17.3 レコーディングルールの名前の付け方
  226. 第V部 アラート
  227.  18章 アラート
  228.   18.1 アラートルール
  229.    18.1.1 for
  230.    18.1.2 アラートのlabels
  231.    18.1.3 アノテーションとテンプレート
  232.    18.1.4 優れたアラートとは何か
  233.   18.2 Alertmanagerの設定
  234.    18.2.1 外部ラベル
  235.  19章 Alertmanager
  236.   19.1 通知パイプライン
  237.   19.2 設定ファイル
  238.    19.2.1 ルーティングツリー
  239.    19.2.2 レシーバ
  240.    19.2.3 抑止
  241.   19.3 Alertmanagerのウェブインタフェイス
  242. 第Ⅵ部 デプロイ
  243.  20章 本番システムへのデプロイ
  244.   20.1 ロールアウトのプランの立て方
  245.    20.1.1 Prometheusの成長
  246.   20.2 フェデレーションでグローバルへ
  247.   20.3 長期記憶ストレージ
  248.   20.4 Prometheusの実行
  249.    20.4.1 ハードウェア
  250.    20.4.2 構成管理
  251.    20.4.3 ネットワークと認証
  252.   20.5 障害対策
  253.    20.5.1 Alertmanagerのクラスタリング
  254.    20.5.2 メタモニタリングとクロスモニタリング
  255.   20.6 パフォーマンスの管理
  256.    20.6.1 問題の発見
  257.    20.6.2 コストが高いメトリクスとターゲットの発見
  258.    20.6.3 負荷の軽減
  259.    20.6.4 水平シャーディング
  260.   20.7 変更管理
  261.   20.8 困ったときの助けの求め方
  262.  著者紹介
  263.  奥付

Product information

  • Title: 入門 Prometheus ―インフラとアプリケーションのパフォーマンスモニタリング
  • Author(s): Brian Brazil, 須田 一輝, 長尾 高弘
  • Release date: May 2019
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873118772

You might also like

book

エンジニアリングマネージャーのしごと ―チームが必要とするマネージャーになる方法

by James Stanier, 吉羽 龍太郎, 永瀬 美穂, 原田 騎郎, 竹葉 美沙

本書は、エンジニアリングチームのマネジメントの仕事全般を紹介し、エンジニアリングマネージャーに必要な考え方やスキルを解説します。はじめに、自分の役割と組織のさまざまな部分がどう関係するかを理解し、習慣を整えることで自分自身を管理することを学びます。そして、日々のマネジメント業務で必要なツールとプロセスを紹介し、スタッフとの関係性の構築、モチベーションの理解、評価や採用などを解説します。さらに社内政治や難しい状況での判断、その後のキャリアについて説明します。 マネジメントのさまざまな段階に沿って、日々の仕事に取り入れられる実践的なアドバイスを紹介する本書は、エンジニアリングチームのマネージャーに必携の一冊です。

book

システム運用アンチパターン ―エンジニアがDevOpsで解決する組織・自動化・コミュニケーション

by Jeffery D. Smith, 田中 裕一

上層部がDevOpsに理解のない組織で働き、組織構造を変える権限を持っていない開発者であっても、チームにDevOpsを導入するための現実的な方法を紹介します。 重厚な承認プロセス、可視化されていない運用、プロセスの最後でのみ行われるソフトウェアテスト、ノイズだらけのアラート、インシデントから学習しない習慣、時間外のデプロイ、情報のため込みなどを取り上げ、ソフトウェアシステムの開発運用が滞るチームや組織に共通してみられる陥りがちな状況や犯しがちな間違いをアンチパターンとして紹介します。そして管理職やマネージャでなく、エンジニアが実行し、繰り返すことで改善できる具体的な行動を解説します。 組織で必要とされる変化を、エンジニアが行動することで実現する本書は、ソフトウェアシステムをよりよく開発運用したいエンジニア必携の一冊です。 追加コンテンツとして、翻訳者である田中裕一氏が、本書で言及されるアンチパターンの概要について解説する動画を こちらからご視聴いただけます。併せてご覧ください。

book

SLO サービスレベル目標 ―SLI、SLO、エラーバジェット導入の実践ガイド

by Alex Hidalgo, 山口 能迪, 成田 昇司

サービスレベル目標(SLO)とは、ユーザーの満足度に強い相関があるメトリクスを用いた、開発と運用の目安となるものです。SLOに基づいた運用は、ユーザー視点で高い信頼性を持つサービスを提供する上で最も重要なプラクティスであるとともに、ビジネス指標に紐づく運用方法でもあります。本書は、SLOを導入する際に必要となる基礎概念、実装、文化を解説します。 はじめに、SLOの概要、サービスレベル指標(SLI)の設定、エラーバジェットの使い方などSLOの基本について説明します。そしてSLIとSLOの計測、確率と統計を使ったSLOの活用法、SLOを組み込むアーキテクチャやシステムについて解説します。さらに、組織内での同意の獲得やSLOの提唱など、SLOに基づくアプローチをチームや会社全体に根付かせる効果的な方法を紹介します。

book

マスタリング・イーサリアム ―スマートコントラクトとDAppの構築

by Andreas M. Antonopoulos, Gavin Wood, 宇野 雅晴, 鳩貝 淳一郎, 中城 元臣, 落合 渉悟, 落合 庸介, 小林 泰男, 土屋 春樹, 祢津 誠晃, 平山 翔, 三津澤 サルバドール将司, 山口 和輝

イーサリアムとは、分散型アプリケーションやスマートコントラクトのアプリケーション構築を可能にするオープンソースプロジェクトです。送金、決済などの金銭取引を行う機能に加えて、ゲーム、不動産取引、身分証明など、さまざまなサービスがイーサリアムから生まれています。本書は、ビットコインの定番書『Mastering Bitcoin』の著者と、イーサリアム共同設立者でありスマートコントラクト開発言語Solidityの開発者により執筆された、イーサリアムの技術解説書。イーサリアムについて詳しく知りたいすべての人必携の一冊です。