本文へスキップします。

【参】モーダルJS:読み込み
書籍DB:詳細

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

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

  • 著者Brian Brazil須田 一輝 監訳長尾 高弘
  • 定価3,888円 (本体3,600円+税)
  • 判型B5変
  • 392頁
  • ISBN978-4-87311-877-2
  • 発売日2019/05/18
  • 発行元オライリー・ジャパン

Kubernetesで作られたDockerホスト群など動的な監視を得意とするPrometheusを解説!

Prometheusの概要からアーキテクチャ、アプリケーションとインフラそれぞれでの利用方法、メトリクスからシステムの状態を知るためのPrometheusクエリ言語(PromQL)、Grafanaを利用した可視化、アラート、本番運用に向けてのアドバイスまで、Prometheus の一通りをマスターできます。
監訳者まえがき 
はじめに 

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

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 
アラートはオーナーを必要とする