Prometheus

Prometheusの問題のトラブルシューティング

Kubernetesクラスタ・モニターがDOWN状態

Prometheusコンソールでターゲットを表示するとき、一部のKubernetesクラスタ・モニターが停止している可能性があります(kube-etcdkube-proxyなど)。これは、Kubernetesクラスタ自体の構成が原因と考えられます。クラスタのタイプによっては、特定のメトリックがデフォルトで無効になっている場合があります。メトリックの有効化はクラスタによって異なります。詳細は、クラスタ・タイプのドキュメントを参照してください。

たとえば、Kindクラスタのkube-proxyメトリックを有効にするには、kube-proxy ConfigMapを編集します。

$ kubectl edit cm/kube-proxy -n kube-system

metricsBindAddress値を次の値で置き換えて、ConfigMapを保存します。

metricsBindAddress: 0.0.0.0:10249

次に、kube-proxyポッドを再起動します。

$ kubectl delete pod -l k8s-app=kube-proxy -n kube-system

詳細は、GitHubのこの問題を参照してください。

メトリック・トレイトのサービス・モニターが検出されない

メトリック・トレイトで使用するサービス・モニターにはメトリックを収集するためのサービスが必要です。OAMワークロードがイングレス・トレイトではなくメトリック・トレイトを含むように作成されている場合、ワークロードのためにサービスが生成されないことがあります。その場合は手動で作成する必要があります。

このトラブルシューティングの例では、hello-helidonアプリケーションを使用します。

アプリケーション・ワークロードに対してサービス・モニターが存在することを確認します。

$ kubectl get servicemonitors -n hello-helidon

アプリケーション・ワークロードに対してサービスが存在することを確認します。

$ kubectl get services -n hello-helidon

サービスが存在しない場合は、手動で作成します。この例では、デフォルトのPrometheusポートを使用します。

apiVersion: v1
kind: Service
metadata:
  name: hello-helidon-service
  namespace: hello-helidon
spec:
  selector:
    app: hello-helidon
  ports:
    - name: tcp-hello-helidon
      port: 8080
      protocol: TCP
      targetPort: 8080

これらのステップを完了した後で、メトリック収集が成功したことを確認できます。