Prometheus情報
Prometheusとは
Prometheus(プロメテウス)は、GO言語で書かれたオープンソースのモニタリングツールです。音声ファイル共有サービスを提供するSoundCloud社によって2012年から開発が始まり、2016年5月にKubernetesに次ぐ2番目のホストプロジェクトとしてCNCFに参加。2016年7月にバージョン1.0.0がリリースされ、2018年8月にはCNCF卒業プロジェクトに移行しています。
Prometheusのシステムは、図1に示すようにPrometheusサーバを中心とした複数のコンポーネントで構成されます。これらのコンポーネントのほとんどは任意で、必要に応じて導入します。
図 1 Prometheusのアーキテクチャ
(https://prometheus.io/docs/introduction/overview/より)
AlertManager(アラートマネージャ)はPrometheusサーバのアラートを管理するためのモジュールです。
アラートメール送信やPagerDuty・Opsgenie(*1)への連携、重複除外、グルーピングなどの機能があります。
サーバへ時系列データをPushするためにはPushgateway(プッシュゲートウェイ)を使用する必要があります。バッチやスクリプトは、処理の結果をPushgatewayへPushし、Pushgatewayが結果を保持することで、PrometheusサーバはPushgatewayから結果データをPullするという仕組みとなっています。
監視対象のサーバにインストールし、Prometheusサーバからのリクエストに応じて、収集したメトリック情報を返すサーバをExporter(エクスポータ:図の左下部分)と呼びます。
Exporterには、サーバのリソース情報を収集するnode_exporterや、固有のサービス情報を収集する以下の公式のExporterが存在します。
- blackbox_exporter:HTTP/HTTPS/DNS/TCP/ICMP経由のエンドポイントをブラックボックス的に計測するExporter
- consul_exporter:Consulのサービスの稼働状況をエクスポートするExporter
- graphite_exporter:Graphiteのプレーンテキストプロトコルでエクスポートされた統計情報用のExporter
- haproxy_exporter:HAProxyサーバーの統計情報を取得し、HTTP経由でエクスポートするシンプルなExporter
- memcached_exporter:memcachedサーバーから統計情報をエクスポートするExporter
- mysqld_exporter:MySQLサーバーから統計情報をエクスポートするExporter
- statsd_exporter:StatsD形式のメトリクスを受け取ってPrometheusメトリクスを出力するExporter
また上記以外にも、サードパ―ティが提供しているExporterも多数存在します。使いたいExporterが見つからない場合は、以下のサイトから探してみるとよいでしょう。
Exporters and integrations
Prometheus 2.0からはストレージとして時系列データに特化したローカルのTSDB(time series database)が利用されるようになり、以前のバージョンに比べパフォーマンスが大幅に改善されました。PrometheusのTSDBでは、サンプルデータは2時間ごとのブロックにグループ化され、時間帯ごとに実際のサンプルを含むチャンクと、そのインデックス、およびメタデータで構成されます。クラッシュリカバリのためのログ先行書き込み(WAL)の機能もあります。ただ、これらストレージ機能はクラスタ化やレプリケーションには対応していません。そのため、複数サーバ構成でサーバをまたいでのクエリ実行はできませんが、Prometheusサーバ を階層構造とすることでデータを集約することができます。
*1. PagerDutyやOpsgenieは、監視システムからのアラートを通報するためのプラットフォームです。
主な特徴
- 多次元データモデル(メトリクス名とキー/値のペアで識別される時系列データ)
- データ抽出のための柔軟なクエリ言語(PromQL)
- それぞれのサーバが自立的で分散ストレージに依存しない
- HTTP上でのPullモデルによる時系列データの収集
- 中間ゲートウェイを介しての時系列データのPush
- サービスディスカバリまたは静的な設定による監視対象の取得
商用製品との機能比較
Prometheus |
Pandora FMS |
Zabbix |
|
---|---|---|---|
ライセンス |
Apache 2.0 |
GPLv2 |
GPLv2 |
開発言語 |
GO |
Perl・PHP |
C・PHP |
管理I/F |
基本的に設定ファイル |
Webコンソール |
Webコンソール |
サーバOS |
OpenBSD/NetBSD/ |
FreeBSD/Solaris/HPUX/ |
Linux/UNIX |
データストレージ |
オリジナルのTSDB |
MySQL |
MySQL/Oracle/ |
ネットワーク監視 |
〇 |
〇 |
〇 |
サーバ監視 |
〇 |
〇 |
〇 |
ログ監視 |
× |
△(Enterprise版のみ) |
〇 |
アラート通知 |
メール・HipChat・ |
メール・SMS・Syslog・ |
メール・SMS・Sound・ |
クライアントOS |
OpenBSD/NetBSD/ |
Linux/Unix/Windows |
Linux/Unix/Windows |
ユースケース
- 監視対象サーバの数や種類が多い環境において、メトリクス収集やリソース監視を行いたい場合。
- クラウド環境やコンテナ環境などにおいて、サービスディスカバリを使用してリソース監視を行いたい場合。
- 性能テスト、ボトルネックの調査など。
動作環境
OS: OpenBSD / NetBSD / FreeBSD / DragonFlyBSD / Darwin / Linux / Windows
その他: Dockerイメージも利用することができます。
Prometheusのライセンス
PrometheusはApache2.0ライセンスです。
Apache License(アパッチ・ライセンス)のコードが使用されていることの明記を条件に、ソースコードの自由な改変と公開が認められています。
製品ダウンロード
参考情報
Prometheus公式Webサイト
Prometheusドキュメント
Prometheus - GitHub
Pandora FMS
Zabbix
PagerDuty
Opsgenie
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。