よくある質問
一般
Prometheusとは何ですか?
Prometheusは、アクティブなエコシステムを持つオープンソースのシステム監視およびアラートツールキットです。Kubernetesによって直接サポートされている唯一のシステムであり、クラウドネイティブエコシステム全体で事実上の標準となっています。概要をご覧ください。
Prometheusは他の監視システムとどう違うのですか?
比較ページをご覧ください。
Prometheusにはどのような依存関係がありますか?
Prometheusのメインサーバーは単一のモノリシックバイナリとしてスタンドアロンで動作し、外部依存関係はありません。
これはクラウドネイティブですか?
はい。
クラウドネイティブは柔軟な運用モデルであり、古いサービス境界を分解して、より柔軟でスケーラブルなデプロイを可能にします。
Prometheusのサービスディスカバリは、ほとんどのツールやクラウドと統合されています。その次元データモデルと数千万のアクティブシリーズへの拡張性により、大規模なクラウドネイティブデプロイを監視できます。サービスを実行する際には常にトレードオフがありますが、Prometheusは何よりもアラートを確実に人間に届けることを重視しています。
Prometheusを高可用性にできますか?
はい、2台以上の異なるマシンで同じPrometheusサーバーを実行してください。同じアラートはAlertmanagerによって重複排除されます。
Alertmanagerは、複数のAlertmanagerインスタンスを相互接続してAlertmanagerクラスターを構築することで、高可用性をサポートしています。クラスターのインスタンスは、HashiCorpのMemberlistライブラリを介して管理されるゴシッププロトコルを使用して通信します。
Prometheusは「スケールしない」と言われました。
これはしばしば、マーケティング的な主張に過ぎません。
単一のPrometheusインスタンスは、Prometheusの長期保存ソリューションとして位置付けられている一部のシステムよりも高性能である場合があります。数千万のアクティブシリーズを持つPrometheusを信頼性高く実行できます。
それ以上のものが必要な場合は、いくつかの選択肢があります。Robust PerceptionブログのPrometheusのスケーリングとフェデレーションは良い出発点であり、統合ページに記載されている長期保存システムも同様です。
Prometheusは何語で書かれていますか?
PrometheusのほとんどのコンポーネントはGoで書かれています。一部はJava、Python、Rubyでも書かれています。
Prometheusの機能、ストレージ形式、APIはどれくらい安定していますか?
Prometheus GitHub組織内のバージョン1.0.0に達したすべてのリポジトリは、セマンティックバージョニングに広く従っています。互換性のない変更は、メジャーバージョンの増分によって示されます。実験的コンポーネントについては例外があり、発表でそのように明記されています。
バージョン1.0.0に達していないリポジトリでも、一般的にはかなり安定しています。私たちは、各リポジトリの適切なリリースプロセスと最終的な1.0.0リリースを目指しています。いずれの場合も、互換性のない変更はリリースノート([CHANGE]
でマーク)で指摘されるか、正式なリリースがないコンポーネントについては明確に伝えられます。
なぜプッシュではなくプルするのですか?
HTTP経由でのプルにはいくつかの利点があります。
- 変更を開発する際に、必要に応じて(ラップトップ上など)追加の監視インスタンスを起動できます。
- ターゲットがダウンしているかどうかをより簡単かつ確実に判断できます。
- 手動でターゲットにアクセスし、Webブラウザでその状態を検査できます。
全体として、プルはプッシュよりもわずかに優れていると考えていますが、監視システムを検討する際の主要なポイントと見なすべきではありません。
プッシュが必要な場合は、Pushgatewayを提供しています。
ログをPrometheusにフィードする方法は?
短い回答: しないでください!代わりにGrafana LokiやOpenSearchを使用してください。
長い回答: Prometheusはメトリックを収集・処理するシステムであり、イベントログシステムではありません。Grafanaのブログ記事Logs and Metrics and Graphs, Oh My!は、ログとメトリックの違いについてさらに詳しく説明しています。
アプリケーションログからPrometheusメトリックを抽出したい場合は、Grafana Lokiがまさにその目的のために設計されています。Lokiのメトリッククエリドキュメントを参照してください。
Prometheusは誰が書いたのですか?
Prometheusは当初、Matt T. ProudとJulius Volzによって個人的に開始されました。初期開発の大部分はSoundCloudが支援しました。
Prometheusはどのライセンスでリリースされていますか?
PrometheusはApache 2.0ライセンスでリリースされています。
Prometheusの複数形は何ですか?
綿密な調査の結果、「Prometheus」の正しい複数形は「Prometheis」であると決定されました。
これを覚えられない場合は、「Prometheusインスタンス」で代用できます。
Prometheusの設定を再読み込みできますか?
はい、PrometheusプロセスにSIGHUP
を送信するか、/-/reload
エンドポイントにHTTP POSTリクエストを送信すると、設定ファイルが再読み込みされて適用されます。各コンポーネントは、失敗した変更を適切に処理しようとします。
アラートを送信できますか?
はい、Alertmanagerで可能です。
メール、様々なネイティブ統合、そして誰もが統合を追加できるWebhookシステムを通じてアラートを送信することをサポートしています。
ダッシュボードを作成できますか?
はい、本番環境での使用にはGrafanaを推奨します。コンソールテンプレートもあります。
タイムゾーンを変更できますか?なぜすべてUTCなのですか?
特にいわゆる夏時間が絡むタイムゾーンの混乱を避けるため、Prometheusのすべてのコンポーネントでは、内部ではUnix時間を、表示目的ではUTCを排他的に使用することにしました。慎重にタイムゾーン選択をUIに導入することも可能です。貢献を歓迎します。この取り組みの現在の状況については、issue #500を参照してください。
インスツルメンテーション
どの言語にインスツルメンテーションライブラリがありますか?
Prometheusメトリクスでサービスを計測するためのクライアントライブラリは多数あります。クライアントライブラリのドキュメントで詳細を確認してください。
新しい言語用のクライアントライブラリの貢献に興味がある場合は、公開フォーマットを参照してください。
マシンを監視できますか?
はい、Node Exporterは、Linuxやその他のUnixシステムでCPU使用率、メモリ、ディスク使用率、ファイルシステムの容量、ネットワーク帯域幅など、広範なマシンレベルのメトリクスを公開しています。
ネットワークデバイスを監視できますか?
はい、SNMP Exporterを使用すると、SNMPをサポートするデバイスを監視できます。産業用ネットワーク向けには、Modbus exporterもあります。
バッチジョブを監視できますか?
はい、Pushgatewayを使用します。バッチジョブの監視に関するベストプラクティスも参照してください。
Prometheusがすぐに監視できるアプリケーションは何ですか?
エクスポーターと統合のリストを参照してください。
JMX経由でJVMアプリケーションを監視できますか?
はい、Javaクライアントで直接計測できないアプリケーションの場合は、JMX ExporterをスタンドアロンまたはJava Agentとして使用できます。
インストゥルメンテーションのパフォーマンスへの影響は何ですか?
クライアントライブラリと言語間でのパフォーマンスは異なる場合があります。Javaの場合、ベンチマークによると、Javaクライアントでカウンター/ゲージをインクリメントするには、競合状況にもよりますが12-17nsかかります。これは、最もレイテンシーが重要なコードを除けば無視できるレベルです。
実装
なぜすべてのサンプル値は64ビット浮動小数点数なのですか?
設計を簡素化するために、64ビット浮動小数点数に限定しました。IEEE 754倍精度浮動小数点フォーマットは、253までの値に対して整数精度をサポートしています。ネイティブ64ビット整数をサポートすることは、253を超え263未満の整数精度が必要な場合に(のみ)役立ちます。原則として、異なるサンプル値型(64ビットを超えるような大きな整数を含む)のサポートは実装可能ですが、現在は優先事項ではありません。カウンターは、毎秒100万回インクリメントされても、精度問題に遭遇するのは285年以上経ってからです。