5.9.2. メトリクスヘルパー
Operator SDK を使用して生成される Go ベース Operator では、以下の関数が実行中のプログラムについての一般的なメトリクスを公開します。
func ExposeMetricsPort(ctx context.Context, port int32) (*v1.Service, error)
これらのメトリクスは controller-runtime
ライブラリー API から継承されます。メトリクスはデフォルトで 0.0.0.0:8383/metrics
で提供されます。
Service
オブジェクトは、メトリクスポートが公開された状態で作成されます。これはその後 Prometheus によってアクセスされます。Service
オブジェクトは、リーダー Pod の root
オーナーが削除されるとガベージコレクションの対象になります。
以下のサンプルは、Operator SDK を使用して生成されるすべての Operator の cmd/manager/main.go
ファイルにあります。
import( "github.com/operator-framework/operator-sdk/pkg/metrics" "machine.openshift.io/controller-runtime/pkg/manager" ) var ( // Change the below variables to serve metrics on a different host or port. metricsHost = "0.0.0.0" 1 metricsPort int32 = 8383 2 ) ... func main() { ... // Pass metrics address to controller-runtime manager mgr, err := manager.New(cfg, manager.Options{ Namespace: namespace, MetricsBindAddress: fmt.Sprintf("%s:%d", metricsHost, metricsPort), }) ... // Create Service object to expose the metrics port. _, err = metrics.ExposeMetricsPort(ctx, metricsPort) if err != nil { // handle error log.Info(err.Error()) } ... }
5.9.2.1. メトリクスポートの変更
Operator の作成者は、メトリクスが公開されるポートを変更できます。
前提条件
- Operator SDK を使用して生成される Go ベースの Operator
- Prometheus Operator がデプロイされた Kubernetes ベースのクラスター
手順
生成された Operator の
cmd/manager/main.go
ファイルで、以下の行のmetricsPort
の値を変更します。var metricsPort int32 = 8383