Prometheus Operator は、Prometheus および関連する監視コンポーネントの Kubernetes ネイティブ デプロイメントと管理を提供します。このプロジェクトの目的は、Kubernetes クラスター用の Prometheus ベースの監視スタックの構成を簡素化および自動化することです。
Prometheus オペレーターには、以下の機能が含まれますが、これらに限定されません。
Kubernetes カスタム リソース: Kubernetes カスタム リソースを使用して、Prometheus、Alertmanager、および関連コンポーネントをデプロイおよび管理します。
簡素化されたデプロイメント構成: バージョン、永続性、保持ポリシー、ネイティブ Kubernetes リソースからのレプリカなど、Prometheus の基本を構成します。
Prometheus ターゲット構成: 使い慣れた Kubernetes ラベル クエリに基づいて監視ターゲット構成を自動的に生成します。 Prometheus 固有の構成言語を学ぶ必要はありません。
Prometheus Operator の概要については、スタート ガイドを参照してください。
オペレーター自体は、本番環境に対応しているとみなされます。各 CRD のステータスについては、カスタム リソース定義 (CRD) のバージョンを参照してください。
monitoring.coreos.com/v1
:安定したCRD と API。変更は下位互換性のある方法で行われます。
monitoring.coreos.com/v1beta1
: CRD と API が不安定で、変更が発生する可能性がありますが、チームは変更を回避することに重点を置いています。破壊的な変更のリスクを受け入れるユーザーには、実稼働環境での使用をお勧めします。
monitoring.coreos.com/v1alpha1
: CRD と API が不安定で、変更が頻繁に発生する可能性があるため、ミッションクリティカルな環境での使用を避けることをお勧めします。
Prometheus Operator は、Kubernetes カスタム リソースを使用して、Prometheus、Alertmanager、および関連する監視コンポーネントのデプロイと構成を簡素化します。
kube-prometheus は、Prometheus および Prometheus Operator に基づく完全なクラスター監視スタックの構成例を提供します。これには、複数の Prometheus および Alertmanager インスタンスのデプロイメント、ノード メトリックを収集するための node_exporter などのメトリック エクスポーター、Prometheus をさまざまなメトリック エンドポイントにリンクするスクレイピング ターゲット構成、クラスター内の潜在的な問題を通知するためのアラート ルールの例が含まれます。
prometheus-community/kube-prometheus-stack Helm チャートは、kube-prometheus と同様の機能セットを提供します。このチャートは Prometheus コミュニティによって管理されています。詳細については、チャートの Readme を参照してください。
Prometheus Operator には、少なくとも Kubernetes バージョン1.16.0
が必要です。 Prometheus Operator を使い始めたばかりの場合は、最新の安定リリースを使用することを強くお勧めします。
Prometheus Operator の中核機能は、Kubernetes API サーバーを監視して特定のオブジェクトに対する変更を監視し、現在の Prometheus デプロイメントがこれらのオブジェクトと一致していることを確認することです。 Operator は、次のカスタム リソース定義 (CRD) に基づいて動作します。
Prometheus
: 必要な Prometheus デプロイメントを定義します。
PrometheusAgent
: 必要な Prometheus デプロイメントを定義しますが、エージェント モードで実行されます。
Alertmanager
: 必要な Alertmanager デプロイメントを定義します。
ThanosRuler
: 必要な Thanos Ruler デプロイメントを定義します。
ServiceMonitor
: Kubernetes サービスのグループを監視する方法を宣言的に指定します。 Operator は、API サーバー内のオブジェクトの現在の状態に基づいて Prometheus スクレイプ構成を自動的に生成します。
PodMonitor
: ポッドのグループを監視する方法を宣言的に指定します。 Operator は、API サーバー内のオブジェクトの現在の状態に基づいて Prometheus スクレイプ構成を自動的に生成します。
Probe
。イングレスまたは静的ターゲットのグループを監視する方法を宣言的に指定します。 Operator は、定義に基づいて Prometheus スクレイピング構成を自動的に生成します。
ScrapeConfig
: Prometheus に追加するスクレイピング構成を宣言的に指定します。この CustomResourceDefinition は、Kubernetes クラスターの外部のリソースをスクレイピングするのに役立ちます。
PrometheusRule
: Prometheus のアラートおよび/または記録ルールの必要なセットを定義します。 Operator は、Prometheus インスタンスで使用できるルール ファイルを生成します。
AlertmanagerConfig
: Alertmanager 構成のサブセクションを宣言的に指定し、カスタム受信者へのアラートのルーティングを許可し、禁止ルールを設定します。
Prometheus オペレーターは、Kubernetes API サーバー内の上記のオブジェクトに対する変更を自動的に検出し、一致するデプロイメントと構成が確実に同期されるようにします。
Prometheus Operator によって導入された CRD の詳細については、設計ページをご覧ください。
無効な Prometheus アラートおよび記録ルールがデプロイされた Prometheus インスタンスで障害を引き起こすことを防ぐために、最初の作成または更新時にPrometheusRule
リソースを検証するアドミッション Webhook が提供されています。
この機能の詳細については、ユーザー ガイドを参照してください。
注:このクイックスタートでは、監視スタック全体をプロビジョニングするわけではありません。それをお探しの場合は、kube-prometheus プロジェクトを参照してください。スタック全体が必要だが、すでにbundle.yaml
を適用している場合は、最初にバンドルを削除します ( kubectl delete -f bundle.yaml
)。
クラスター内で Prometheus Operatorだけをすぐに試してみるには、リリースを選択し、 default
名前空間に Operator をデプロイする次のコマンドを実行します。
kubectl create -f バンドル.yaml
Prometheus オペレーターを別の名前空間にデプロイする場合は、 kustomize
も必要です。
NAMESPACE=my_namespace kusTOMize edit set namespace $NAMESPACE && kubectl create -k 。
注: デフォルトの名前空間以外の名前空間にデプロイする場合は、ClusterRoleBinding の名前空間を必ず調整してください。
Operator をクラスター外で実行するには:
作る scripts/run-external.sh
オペレーターと Prometheus を削除するには、まず、各名前空間で作成したカスタム リソースをすべて削除します。オペレーターは自動的にシャットダウンし、Prometheus ポッドと Alertmanager ポッド、および関連する ConfigMap を削除します。
for n in $(kubectl get namespaces -o jsonpath={..metadata.name});する kubectl delete --all --namespace=$n prometheus、servicemonitor、podmonitor、alertmanagerdone
数分後、オペレーター自体を削除できます。
kubectl delete -f バンドル.yaml
オペレーターは、Prometheus または Alertmanager リソースを作成した各ネームスペースにサービスを自動的に作成し、3 つのカスタム リソース定義を定義します。これらを今すぐクリーンアップできます。
for n in $(kubectl get namespaces -o jsonpath={..metadata.name});する kubectl delete --ignore-not-found --namespace=$n サービス prometheus が操作するアラートマネージャーが操作する donekubectl delete --ignore-not-found カスタムリソース定義 prometheuses.monitoring.coreos.com servicemonitors.monitoring.coreos.com podmonitors.monitoring.coreos.com alertmanagers.monitoring.coreos.com prometheusrules.monitoring.coreos.com alertmanagerconfigs.monitoring.coreos.com Scrapeconfigs.monitoring.coreos.com
「テスト」を参照
「貢献」を参照してください。
Prometheus Operator に関連するセキュリティの脆弱性を見つけた場合は、GitHub の問題を開いて報告するのではなく、MAINTAINERS.md ファイルで見つかったプロジェクトの管理者に電子メールを送信してください。
一般的な問題とよくある質問 (FAQ) については、トラブルシューティングのドキュメントを確認してください。
プロメテウス オペレーター組織のロゴは、Bianca Cheng Costanzo によって作成および提供されました。