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

[cover photo]
  • 2019年05月 発行
  • 392ページ
  • ISBN978-4-87311-877-2
  • 原書: Prometheus: Up & Running
  • フォーマット 本 PDF EPUB

オライリー・ジャパンで書籍を購入:
定価3,888円

Ebook Storeで電子版を購入:
価格3,110円

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

関連書籍

Docker
入門 Kubernetes
入門 監視

監訳者まえがき 
はじめに 

第Ⅰ部 イントロダクション 

1章 Prometheusとは何か 
    1.1 モニタリングとは何か 
        1.1.1 簡単で不完全なモニタリング小史 
        1.1.2 モニタリングのカテゴリ 
    1.2 Prometheusのアーキテクチャ 
        1.2.1 クライアントライブラリ 
        1.2.2 exporter 
        1.2.3 サービスディスカバリ 
        1.2.4 スクレイピング 
        1.2.5 ストレージ 
        1.2.6 ダッシュボード 
        1.2.7 レコーディングルールとアラート 
        1.2.8 アラート管理 
        1.2.9 長期記憶ストレージ 
    1.3 Prometheusは何ではないか 

2章 初めてのPrometheus 
    2.1 Prometheusの実行 
    2.2 式ブラウザの使い方 
    2.3 Node exporterの実行 
    2.4 アラート 

第Ⅱ部 アプリケーションのモニタリング 

3章 インストルメンテーション 
    3.1 単純なプログラム 
    3.2 カウンタ 
        3.2.1 例外のカウント 
        3.2.2 サイズのカウント 
    3.3 ゲージ 
        3.3.1 ゲージの使い方 
        3.3.2 コールバック 
    3.4 サマリ 
    3.5 ヒストグラム 
        3.5.1 バケット 
    3.6 インストルメンテーションのユニットテスト 
    3.7 インストルメンテーションへのアプローチ 
        3.7.1 何をインストルメントすべきか 
        3.7.2 どの程度の量のインストルメンテーションをすべきか 
        3.7.3 メトリクスにはどのような名前を付けるべきか 

4章 開示 
    4.1 Python 
        4.1.1 WSGI 
        4.1.2 Twisted 
        4.1.3 Gunicornによるマルチプロセス 
    4.2 Go 
    4.3 Java 
        4.3.1 HTTPServer 
        4.3.2 Servlet 
    4.4 Pushgateway 
    4.5 ブリッジ 
    4.6 パーサ 
    4.7 メトリクスの開示形式 
        4.7.1 メトリクスタイプ 
        4.7.2 ラベル 
        4.7.3 エスケープ 
        4.7.4 タイムスタンプ 
        4.7.5 メトリクスのチェック 

5章 ラベル 
    5.1 ラベルとは何か 
    5.2 インストルメンテーションラベルとターゲットラベル 
    5.3 インストルメンテーション 
        5.3.1 メトリクス 
        5.3.2 複数のラベル 
        5.3.3 子 
    5.4 集計 
    5.5 ラベルのパターン 
        5.5.1 列挙 
        5.5.2 info 
    5.6 ラベルを使うべきとき 
        5.6.1 カーディナリティ 

6章 Grafanaによるダッシュボードの作成 
    6.1 インストール 
    6.2 データソース 
    6.3 ダッシュボードとパネル 
        6.3.1 グラフの壁を避けよう 
    6.4 グラフパネル 
        6.4.1 時間の設定 
    6.5 シングルスタットパネル 
    6.6 テーブルパネル 
    6.7 テンプレート変数 

第Ⅲ部 インフラストラクチャのモニタリング 

7章 Node exporter 
    7.1 cpuコレクタ 
    7.2 filesystemコレクタ 
    7.3 diskstatsコレクタ 
    7.4 netdevコレクタ 
    7.5 meminfoコレクタ 
    7.6 hwmonコレクタ 
    7.7 statコレクタ 
    7.8 unameコレクタ 
    7.9 loadavgコレクタ 
    7.10 textfileコレクタ 
        7.10.1 textfileコレクタの使い方 
        7.10.2 タイムスタンプ 

8章 サービスディスカバリ 
    8.1 サービスディスカバリのメカニズム 
        8.1.1 静的設定 
        8.1.2 ファイル 
        8.1.3 Consul 
        8.1.4 EC2 
    8.2 リラベル 
        8.2.1 スクレイプするものの選択 
        8.2.2 ターゲットラベル 
    8.3 スクレイプの方法 
        8.3.1 metric_relabel_configs 
        8.3.2 ラベルの衝突とhonor_labels 

9章 コンテナとKubernetes 
    9.1 cAdvisor 
        9.1.1 CPU 
        9.1.2 メモリ 
        9.1.3 ラベル 
    9.2 Kubernetes 
        9.2.1 Kubernetes内でのPrometheusの実行 
        9.2.2 サービスディスカバリ 
        9.2.3 kube-state-metrics 

10章 よく使われるexporter 
    10.1 Consul exporter 
    10.2 HAProxy exporter 
    10.3 Grok exprter 
    10.4 Blackbox exporter 
        10.4.1 ICMP 
        10.4.2 TCP 
        10.4.3 HTTP 
        10.4.4 DNS 
        10.4.5 Prometheusの設定 

11章 ほかのモニタリングシステムとの連携 
    11.1 その他のモニタリングシステム 
    11.2 InfluxDB 
    11.3 StatsD 

12章 exporterの書き方 
    12.1 Consulのtelemetry 
    12.2 カスタムコレクタ 
        12.2.1 ラベル 
    12.3 ガイドライン 

第Ⅳ部 PromQL 

13章 PromQL入門 
    13.1 集計の基礎 
        13.1.1 ゲージ 
        13.1.2 カウンタ 
        13.1.3 サマリ 
        13.1.4 ヒストグラム 
    13.2 セレクタ 
        13.2.1 マッチャ 
        13.2.2 インスタントベクトル 
        13.2.3 範囲ベクトル 
        13.2.4 オフセット 
    13.3 HTTP API 
        13.3.1 query 
        13.3.2 query_range 

14章 集計演算子 
    14.1 グルーピング 
        14.1.1 without 
        14.1.2 by 
    14.2 演算子 
        14.2.1 sum 
        14.2.2 count 
        14.2.3 avg 
        14.2.4 stddevとstdvar 
        14.2.5 minとmax 
        14.2.6 topkとbottomk 
        14.2.7 quantile 
        14.2.8 count_values 

15章 二項演算子 
    15.1 スカラの操作 
        15.1.1 算術演算子 
        15.1.2 比較演算子 
    15.2 ベクトルマッチング 
        15.2.1 一対一対応 
        15.2.2 多対一対応とgroup_left 
        15.2.3 多対多対応と論理演算子 
    15.3 演算子の優先順位 

16章 関数 
    16.1 型変換 
        16.1.1 vector 
        16.1.2 scalar 
    16.2 数学関数 
        16.2.1 abs 
        16.2.2 ln、log2、log10 
        16.2.3 exp 
        16.2.4 sqrt 
        16.2.5 ceilとfloor 
        16.2.6 round 
        16.2.7 clamp_maxとclamp_min 
    16.3 日時 
        16.3.1 time 
        16.3.2 minute、hour、day_of_week、day_of_month、days_in_month、month、year 
        16.3.3 timestamp 
    16.4 ラベル 
        16.4.1 label_replace 
        16.4.2 label_join 
    16.5 欠損値とabsent 
    16.6 sortとsort_descによるソート 
    16.7 histogram_quantileによるヒストグラム作成 
    16.8 カウンタ 
        16.8.1 rate 
        16.8.2 increase 
        16.8.3 irate 
        16.8.4 resets 
    16.9 変化するゲージ 
        16.9.1 changes 
        16.9.2 deriv 
        16.9.3 predict_linear 
        16.9.4 delta 
        16.9.5 idelta 
        16.9.6 holt_winters 
    16.10 経時的集計 

17章 レコーディングルール 
    17.1 レコーディングルールの使い方 
    17.2 レコーディングルールはいつ使うべきか 
        17.2.1 カーディナリティの削減 
        17.2.2 範囲ベクトル関数の作成 
        17.2.3 APIのためのルール 
        17.2.4 ルールの禁じ手 
    17.3 レコーディングルールの名前の付け方 

第V部 アラート 

18章 アラート 
    18.1 アラートルール 
        18.1.1 for 
        18.1.2 アラートのlabels 
        18.1.3 アノテーションとテンプレート 
        18.1.4 優れたアラートとは何か 
    18.2 Alertmanagerの設定 
        18.2.1 外部ラベル 

19章 Alertmanager 
    19.1 通知パイプライン 
    19.2 設定ファイル 
        19.2.1 ルーティングツリー 
        19.2.2 レシーバ 
        19.2.3 抑止 
    19.3 Alertmanagerのウェブインタフェイス 

第Ⅵ部 デプロイ 

20章 本番システムへのデプロイ 
    20.1 ロールアウトのプランの立て方 
        20.1.1 Prometheusの成長 
    20.2 フェデレーションでグローバルへ 
    20.3 長期記憶ストレージ 
    20.4 Prometheusの実行 
        20.4.1 ハードウェア 
        20.4.2 構成管理 
        20.4.3 ネットワークと認証 
    20.5 障害対策 
        20.5.1 Alertmanagerのクラスタリング 
        20.5.2 メタモニタリングとクロスモニタリング 
    20.6 パフォーマンスの管理 
        20.6.1 問題の発見 
        20.6.2 コストが高いメトリクスとターゲットの発見 
        20.6.3 負荷の軽減 
        20.6.4 水平シャーディング 
    20.7 変更管理 
    20.8 困ったときの助けの求め方 

索引 

コラム目次
    公式ライブラリと非公式ライブラリ 
    プルとプッシュ 
    メトリクスのサフィックス 
    累積ヒストグラム 
    SLAと分位数 
    バッチジョブのべき等性 
    /metricsでなければならないのか 
    マルチプロセスモードの舞台裏 
    予約済みラベルと
    __name__ 
    互換性を失わせる変更とラベル 
    テーブル例外 
    Promdashとコンソールテンプレート 
    エイリアシング 
    トップダウンとボトムアップ 
    正規表現 
    重複するジョブ 
    exporterのデフォルトポート 
    Blackboxのタイムアウト 
    期間の単位 
    quantile、histogram_quantile、quantile_over_time 
    アラートはオーナーを必要とする 

Feedback

皆さんのご意見をお聞かせください。ご購入いただいた書籍やオライリー・ジャパンへのご感想やご意見、ご提案などをお聞かせください。より良い書籍づくりやサービス改良のための参考にさせていただきます。
[feedbackページへ]