12.6.3. ServiceMonitor リソース
ServiceMonitor は、Prometheus Operator によって提供されるカスタマーリソース定義 (CRD) であり、サービスオブジェクトで Endpoints を検出し、Prometheus がこれらの Pod を監視するように設定します。
Operator SDK を使用して生成される Go ベースの Operator では、 GenerateServiceMonitor() ヘルパー関数がサービスオブジェクトを取り、これに基づいて ServiceMonitor カスタムリソース (CR) を生成することができます。
追加リソース
- ServiceMonitor CRD についての詳細は、Prometheus Operator のドキュメント を参照してください。
12.6.3.1. ServiceMonitor リソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
Operator の作成者は、新規に作成されるサービスを受け入れる metrics.CreateServiceMonitor() ヘルパー関数を使用して、作成されたモニタリングサービスのサービスターゲット検出を追加できます。
前提条件
- Operator SDK を使用して生成される Go ベースの Operator
- Prometheus Operator がデプロイされた Kubernetes ベースのクラスター
手順
metrics.CreateServiceMonitor()ヘルパー関数を Operator コードに追加します。import( "k8s.io/api/core/v1" "github.com/operator-framework/operator-sdk/pkg/metrics" "machine.openshift.io/controller-runtime/pkg/client/config" ) func main() { ... // Populate below with the Service(s) for which you want to create ServiceMonitors. services := []*v1.Service{} // Create one ServiceMonitor per application per namespace. // Change the below value to name of the Namespace you want the ServiceMonitor to be created in. ns := "default" // restConfig is used for talking to the Kubernetes apiserver restConfig := config.GetConfig() // Pass the Service(s) to the helper function, which in turn returns the array of ServiceMonitor objects. serviceMonitors, err := metrics.CreateServiceMonitors(restConfig, ns, services) if err != nil { // Handle errors here. } ... }