入門 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

実践 bashによるサイバーセキュリティ対策 ―セキュリティ技術者のためのシェルスクリプト活用術

by Paul Troncone, Carl Albing, 髙橋 基信

bashとLinuxの標準コマンドを活用したセキュリティ対策手法についての解説書。サイバーセキュリティの現場では、常にGUIの最新ツールを使えるとは限りません。CUIによるセキュリティ対策はセキュリティ技術者にとって必須の知識です。本書では、Linux/Mac/Windows環境でbashを含む標準的なLinuxのコマンドラインツール群を用いて、各種情報収集や収集した情報の解析、監視、侵入テスト(ペネトレーションテスト)など、サイバーセキュリティの具体的な手法を実践形式で説明します。

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の開発者により執筆された、イーサリアムの技術解説書。イーサリアムについて詳しく知りたいすべての人必携の一冊です。

book

入門 モダンLinux ―オンプレミスからクラウドまで、幅広い知識を会得する

by Michael Hausenblas, 武内 覚, 大岩 尚宏

Linuxはサーバ、組み込み機器、スーパーコンピュータなどにおいて存在感を示してきました。近年では、オンプレミスのシステムだけではなく、クラウドサービスでも広く使われています。本書は、前半でLinuxを使いこなす上で必要な基本知識を、後半で最新情報をまとめています。Linuxの知識を体系的に整理したい、最新動向が知りたい、運用を改善したい、効率的に開発を行いたい、といった要望をかなえる内容となっています。時代の変化に柔軟に対応できるLinux技術者を目指すなら必読の一冊です。