4.7.3. サービスモニター
ServiceMonitor は、Prometheus Operator によって提供されるカスタマーリソースであり、 Service オブジェクトで Endpoints を検出し、Prometheus がこれらの Pod を監視するように設定します。
Operator SDK を使用して生成される Go ベースの Operator では、GenerateServiceMonitor() ヘルパー関数は Service オブジェクトを取り、これに基づいて ServiceMonitor オブジェクトを生成することができます。
関連情報
-
ServiceMonitorカスタムリソース定義 (CRD) についての詳細は、 Prometheus Operator ドキュメント を参照してください。
4.7.3.1. サービスモニターの作成
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. } ... }