Kubernetes用のカスタムメトリクスエクスポーターの構... ノート

Kubernetes用のカスタムメトリクスエクスポーターの構築

KubernetesはCPUとメモリに基づいてスケーリングしますが、実際の需要ではキューの深さやアクティブな接続数のようなカスタムメトリクスが必要になることがよくあります。Prometheusメトリクスエクスポーターは、アプリケーションの状態をプレーンテキストでHTTPの/metricsエンドポイントに公開することで、Prometheusがスクレイピングできるようにし、このギャップを埋めます。エクスポーターは、データソースとアプリケーションコードに対する制御に応じて、スタンドアロンサービスとして、またはアプリケーションに直接組み込むことができます。Prometheusは特定のフォーマットでメトリクスを期待します。常に増加する値にはカウンター、変動する値にはゲージ、分布にはヒストグラムを使用します。メトリクス名は明確な__スネークケースの規約に従う必要があります。Goでエクスポーターを構築するには、モジュールの初期化、Prometheusクライアントライブラリの設定、カウンター、ゲージ、ヒストグラムなどのメトリクスの登録を行います。これらのメトリクスは、アプリケーションのデータソースから読み取るポーリングループによって更新されます。HTTPサーバーは、ライブネスプローブ用の/healthzエンドポイントとともに/metricsエンドポイントを公開します。エクスポーターは、マルチステージDockerビルドを使用して最小限のコンテナイメージにパッケージ化され、フットプリントを小さく保ちます。Kubernetesクラスターへのデプロイには、Pod管理のためのDeploymentと、Prometheusに安定したアドレスを提供するServiceが含まれます。Prometheusは、Prometheus Operatorを使用している場合はServiceMonitorを介して、またはPodテンプレートのアノテーションベースのディスカバリを介して、これらのメトリクスをディスカバリします。検証には、Prometheusのターゲットページを確認してエクスポーターが「UP」であることを確認し、式ブラウザでメトリクスをクエリすることが含まれます。この基盤により、HorizontalPodAutoscalerを使用したオートスケーリングが可能になります。これは、Prometheus Adapterのようなメトリクスアダプターを使用して、カスタムメトリクスをKubernetes Custom Metrics APIと統合します。これにより、ワークロードは基本的なリソース使用率だけでなく、ビジネスに関連するシグナルに基づいてスケーリングできるようになります。