Prometheusの概要
Prometheus(プロメテウス)は、GO言語で書かれたオープンソースのモニタリングツールです。音声ファイル共有サービスを提供するSoundCloud社によって2012年から開発が始まり、2016年7月にバージョン1.0.0がリリースされています。
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
https://prometheus.io/docs/instrumenting/exporters/
Prometheus 2.0からはストレージとして時系列データに特化したローカルのTSDB(time series
database)が利用されるようになり、以前のバージョンに比べパフォーマンスが大幅に改善されました。PrometheusのTSDBでは、サンプルデータは2時間ごとのブロックにグループ化され、時間帯ごとに実際のサンプルを含むチャンクと、そのインデックス、およびメタデータで構成されます。クラッシュリカバリのためのログ先行書き込み(WAL)の機能もあります。ただ、これらストレージ機能はクラスタ化やレプリケーションには対応していません。そのため、複数サーバ構成でサーバをまたいでのクエリ実行はできませんが、Prometheusサーバ
を階層構造とすることでデータを集約することができます。
*1. PagerDutyやOpsgenieは、監視システムからのアラートを通報するためのプラットフォームです。
Prometheusの特徴
- 多次元データモデル(メトリクス名とキー/値のペアで識別される時系列データ)
- データ抽出のための柔軟なクエリ言語(PromQL)
- それぞれのサーバが自立的で分散ストレージに依存しない
- HTTP上でのPullモデルによる時系列データの収集
- 中間ゲートウェイを介しての時系列データのPush
- サービスディスカバリまたは静的な設定による監視対象の取得
他プロダクトとの対比
Prometheus | Pandora FMS | Zabbix | |
ライセンス | Apache 2.0 | GPLv2 | GPLv2 |
開発言語 | GO | Perl・PHP | C・PHP |
管理I/F | 基本的に設定ファイル Webコンソール(参照のみ) |
Webコンソール | Webコンソール |
サーバOS | OpenBSD/NetBSD/ FreeBSD/DragonFlyBSD/ Darwin/Linux/Windows |
FreeBSD/Solaris/HPUX/ AIX/macOS/Linux/ Windows |
Linux/UNIX |
データストレージ | LevelDB・ファイルシステム | MySQL | MySQL/Oracle/ PostgreSQL/SQLite/DB2 |
ネットワーク監視 | 〇 | 〇 | 〇 |
サーバ監視 | 〇 | 〇 | 〇 |
ログ監視 | × | △(Enterprise版のみ) | 〇 |
アラート通知 | メール・HipChat・ PagerDuty・Opsgenie・ PushOver・Slack・ WebHook |
メール・SMS・Syslog・ Sound・Jabber |
メール・SMS・Sound・ Ez Texting・Jabber |
クライアントOS | OpenBSD/NetBSD/ FreeBSD/DragonFlyBSD/ Darwin/Linux/Windows |
Linux/Unix/Windows | Linux/Unix/Windows |
Prometheusのユースケース
・監視対象サーバの数や種類が多い環境において、メトリクス収集やリソース監視を行いたい場合。
・クラウド環境やコンテナ環境などにおいて、サービスディスカバリを使用してリソース監視を行いたい場合。
・性能テスト、ボトルネックの調査など。
Prometheusの動作環境
OS: OpenBSD / NetBSD / FreeBSD / DragonFlyBSD / Darwin / Linux / Windows
Prometheusのライセンス
PrometheusはApache2.0ライセンスです。
Apache License(アパッチ・ライセンス)のコードが使用されていることの明記を条件に、ソースコードの自由な改変と公開が認められています。
Prometheusのダウンロード
https://prometheus.io/download
参考情報
Prometheus公式Webサイト
https://prometheus.io/
Prometheusドキュメント
https://prometheus.io/docs/introduction/overview/
Prometheus - GitHub
https://github.com/prometheus
Pandora FMS
https://pandorafms.com/community/
Zabbix
https://www.zabbix.com/
PagerDuty
https://www.pagerduty.com/
Opsgenie
https://www.atlassian.com/software/opsgenie
Prometheusのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。