Book description
本書はPrometheusモニタリングシステムを使って、インフラストラクチャとアプリケーションのパフォーマンスをモニタリングしてグラフ化したり、アラートを送る方法を解説する書籍です。簡単な構成のPrometheusを実行して概要を理解した後、インストルメンテーションの追加や利用方法、Grafanaによるダッシュボード作成などアプリケーションの監視について学びます。Node exporterなどの各種exporter、他のモニタリングシステムとの連携やコンテナとKubernetesなどインフラストラクチャのモニタリングを解説し、さらにクエリ言語のPromQLやアラートについて詳述。最後に本番システムにPrometheusをデプロイする方法を学びます。
Table of contents
- 大扉
- 原書大扉
- クレジット
- 監訳者まえがき
- 企業事例
- 最後に
- はじめに
- 既知を広げる
- 凡例
- コード例の利用について
- 問い合わせ先
- 謝辞
- 第Ⅰ部 イントロダクション
- 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 exporter
- 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 困ったときの助けの求め方
- 著者紹介
- 奥付
Product information
- Title: 入門 Prometheus ―インフラとアプリケーションのパフォーマンスモニタリング
- Author(s):
- Release date: May 2019
- Publisher(s): O'Reilly Japan, Inc.
- ISBN: 9784873118772
You might also like
book
実践 bashによるサイバーセキュリティ対策 ―セキュリティ技術者のためのシェルスクリプト活用術
bashとLinuxの標準コマンドを活用したセキュリティ対策手法についての解説書。サイバーセキュリティの現場では、常にGUIの最新ツールを使えるとは限りません。CUIによるセキュリティ対策はセキュリティ技術者にとって必須の知識です。本書では、Linux/Mac/Windows環境でbashを含む標準的なLinuxのコマンドラインツール群を用いて、各種情報収集や収集した情報の解析、監視、侵入テスト(ペネトレーションテスト)など、サイバーセキュリティの具体的な手法を実践形式で説明します。
book
マッピングエクスペリエンス ―カスタマージャーニー、サービスブループリント、その他ダイアグラムから価値を創る
顧客は様々な体験を判断材料として製品やサービスを選びますが、一貫性がなく、場当たり的な対応は顧客体験を損う恐れがあります。それを避けるには組織内の部門間で連携が取れている必要があり、マップなどのダイアグラムが役に立ちます。本書はマップを作ることで顧客体験上の課題を可視化し、部門間の連携を促進させる方法を解説します。タッチポイントを通じてユーザ体験とビジネスプロセスを結びつけるマッピングについて解説する本書は、製品やサービスのプランニング、デザイン、開発に関わるすべての人に必携の一冊です。
book
マスタリング・イーサリアム ―スマートコントラクトとDAppの構築
イーサリアムとは、分散型アプリケーションやスマートコントラクトのアプリケーション構築を可能にするオープンソースプロジェクトです。送金、決済などの金銭取引を行う機能に加えて、ゲーム、不動産取引、身分証明など、さまざまなサービスがイーサリアムから生まれています。本書は、ビットコインの定番書『Mastering Bitcoin』の著者と、イーサリアム共同設立者でありスマートコントラクト開発言語Solidityの開発者により執筆された、イーサリアムの技術解説書。イーサリアムについて詳しく知りたいすべての人必携の一冊です。
book
行動を変えるデザイン ―心理学と行動経済学をプロダクトデザインに活用する
深津貴之氏推薦!「行動経済学、データ分析、サービス設計のエッセンスが高度に統合された行動変容デザインの良書です」 本書は、行動経済学と心理学をもとに、人々の行動、日常習慣を変える“行動変容”を促すプロダクトをデザインするための書籍です。主にヘルスケア(健康管理)、金融(資産管理)など、これまでITプロダクト(サービス、アプリなど)がなかなか使われてこなかった分野を対象に、ユーザーがやりたいと思っていたものの実行できなかった行動の実現を助けるプロダクトを作り出すための、実践的な視点や知識を提供します。