Prometheusの問題のトラブルシューティング
Kubernetesクラスタ・モニターがDOWN状態である
Prometheusコンソールでターゲットを表示するとき、一部のKubernetesクラスタ・モニターが停止している可能性があります(kube-etcd
やkube-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
これらのステップを完了した後で、メトリック収集が成功したことを確認できます。
メトリック問合せでメトリックが返されなくなった
Prometheusストレージが容量に達すると、メトリック問合せで結果が返されなくなります。Prometheusログを確認してください。
$ kubectl logs -l app.kubernetes.io/instance=prometheus-operator-kube-p-prometheus -n verrazzano-monitoring
ディスクに空きがないことを示すメッセージがある場合は、ストレージを拡張するかディスク領域を解放する必要があります。デフォルトのストレージ・クラスでボリューム拡張がサポートされている場合は、ボリュームの拡張を試行できます。
デフォルトのストレージ・クラスでボリューム拡張が許可されているかどうかを確認します。
$ kubectl get storageclass
デフォルトのストレージ・クラスで拡張が許可されている場合は、より大きなサイズを使用するように永続ボリューム要求とPrometheusリソース・ストレージ・リクエストを変更します。
たとえば、ストレージを100Giに増やすには:
$ kubectl patch pvc prometheus-prometheus-operator-kube-p-prometheus-db-prometheus-prometheus-operator-kube-p-prometheus-0 -n verrazzano-monitoring \
--type=merge -p '{"spec":{"resources":{"requests":{"storage":"100Gi"}}}}'
$ kubectl patch prometheus prometheus-operator-kube-p-prometheus -n verrazzano-monitoring \
--type=merge -p '{"spec":{"storage":{"volumeClaimTemplate":{"spec":{"resources":{"requests":{"storage":"100Gi"}}}}}}}'
または、Prometheusポッドの既存のメトリック・データを削除して領域を解放します。
$ kubectl exec statefulset.apps/prometheus-prometheus-operator-kube-p-prometheus -n verrazzano-monitoring -- rm -fr /prometheus/wal
$ kubectl rollout restart statefulset.apps/prometheus-prometheus-operator-kube-p-prometheus -n verrazzano-monitoring
Prometheusポッドの永続ストレージの空きがなくならないようにPrometheusデータ保持設定を構成する方法の詳細は、「データ保持設定の構成」を参照してください。