本書はPrometheusモニタリングシステムを使って、インフラストラクチャとアプリケーションのパフォーマンスをモニタリングしてグラフ化したり、アラートを送る方法を解説する書籍です。 メトリクスを収集し、クエリを評価し、アラート通知を送る簡単な構成のPrometheusを実行して概要を理解した後、インストルメンテーションの追加や利用方法、Grafanaによるダッシュボード作成などアプリケーションの監視について学びます。Node exporterなどの各種exporter、他のモニタリングシステムとの連携やコンテナとKubernetesなどインフラストラクチャのモニタリングを解説し、さらにクエリ言語のPromQLやアラートについて詳述。最後に本番システムにPrometheusをデプロイする方法を学びます。 Prometheusについての基礎と実践的な使い方を学べる本書はシステムおよびアプリケーションエンジニア必携の一冊です。
入門 Prometheus
―インフラとアプリケーションのパフォーマンスモニタリング
Brian Brazil 著、須田 一輝 監訳、長尾 高弘 訳
- TOPICS
- System/Network
- 発行年月日
- 2019年05月
- PRINT LENGTH
- 392
- ISBN
- 978-4-87311-877-2
- 原書
- Prometheus: Up & Running
- FORMAT
- Print PDF EPUB
関連ファイル
目次
監訳者まえがき はじめに 第Ⅰ部 イントロダクション 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 アラートはオーナーを必要とする