---
title: "kube-prometheus-stackのダッシュボードをGoogle Cloud Managed Service for Prometheusで使用する | grasys blog"
url: "https://blog.grasys.io/post/oshima/kube-prometheus-stack/"
description: "こんにちは、大島です。 prometheus-community/kube-prometheus-stackにはGrafanaダッシュボードやその他諸々がプレインストールされています。 今回はそのプレインストールされているGrafanaダッシュボードをGoogle Cloud Managed Service for…"
---

# kube-prometheus-stackのダッシュボードをGoogle Cloud Managed Service for Prometheusで使用する

-   ![](/_astro/noicon.CTHOhNiB_1HMs6A.webp)[Oshima](/authors/oshima/)
-   公開日：2023年11月2日
-   カテゴリー：[Tech](/categories/tech/)
-   タグ：[#GMP](/tags/gmp/)[#Grafana](/tags/grafana/)[#prometheus](/tags/prometheus/)

![kube-prometheus-stackのダッシュボードをGoogle Cloud Managed Service for Prometheusで使用する](/_astro/hero.BbC0t5KA_Z1a3JTk.webp)

こんにちは、大島です。

prometheus-community/kube-prometheus-stackにはGrafanaダッシュボードやその他諸々がプレインストールされています。  
今回はそのプレインストールされているGrafanaダッシュボードをGoogle Cloud Managed Service for Prometheus（以下GMP）で使用したいと思います。  
単純に持ってくるだけではメトリクスが表示されないので少し調整をします。

Plain textcontent\_copy

```
GKE: v1.27.6

HelmChart
kube-prometheus-stack-52.1.0
grafana-7.0.110.1.5
```

最終的に見れるダッシュボード

-   AlertManager / Overview
    
-   Grafana Overview
    
-   Kubernetes / Compute Resources / Multi-Cluster
    
-   Kubernetes / Compute Resourcees / Cluster
    
-   Kubernetes / Compute Resources / Namespace (Pods)
    
-   Kubernetes / Compute Resources / Namespace (Workloads)
    
-   Kubernetes / Compute Resources / Node (Pods)
    
-   Kubernetes / Compute Resources / Pod
    
-   Kubernetes / Compute Resources / Workload
    
-   Kubernetes / Kubelet
    
-   Kubernetes / Networking / Cluster
    
-   Kubernetes / Networking / Namespace (Pods)
    
-   Kubernetes / Networking / Namespace (Workloads)
    
-   Kubernetes / Networking / Pod
    
-   Kubernetes / Networking / Workload
    
-   Kubernetes / Persistent Volumes
    
-   Node Exporter / Nodes
    
-   Node Exporter / USE Method / Cluster
    
-   Node Exporter / USE Method / Node
    

見れないダッシュボード

-   CoreDNS
    
-   Kubernetes / API server
    
-   Kubernetes / Controller Manager
    
-   Kubernetes / Proxy
    
-   Kubernetes / Scheduler
    
-   Prometheus / Overview
    
-   etcd
    

未検証のダッシュボード

-   Node Exporter / MacOS

## 構築

GKEクラスターとノードを一つ作成しました。

Plain textcontent\_copy

```
$ k get node
NAME                                                  STATUS   ROLES    AGE   VERSION
gke-oshima-test-clust-oshima-test-app-dba68b7e-9x1b   Ready    <none>   19m   v1.27.6-gke.1506000
```

### GMPリソースを確認

GKE バージョン 1.27 以降を実行しているのでマネージド コレクションがデフォルトで有効になっています。  
参考：[マネージド コレクションを有効にする: GKE](https://cloud.google.com/stackdriver/docs/managed-prometheus/setup-managed?hl=ja#enable-mgdcoll-gke)

gmp-publicとgmp-system名前空間があります。

Plain textcontent\_copy

```
$ k get ns
NAME              STATUS   AGE
default           Active   24m
gmp-public        Active   23m
gmp-system        Active   23m
kube-node-lease   Active   24m
kube-public       Active   24m
kube-system       Active   24m
```

gmp-system名前空間にマネージドコレクターがデプロイされていることが確認できます。

Plain textcontent\_copy

```
$ kubectl get po -n gmp-system
NAME                              READY   STATUS    RESTARTS      AGE
alertmanager-0                    2/2     Running   0             14h
collector-lq2jh                   2/2     Running   0             14h
gmp-operator-7df56b4478-t9drd     1/1     Running   0             14h
rule-evaluator-5b47d58dc6-xxgvl   2/2     Running   3 (14h ago)   14h
```

OperatorConfigというCRDが作成されています。  
後ほどこのconfigの設定を変更します。

Plain textcontent\_copy

```
$ kubectl get operatorconfig -n gmp-public
NAME     AGE
config   14h
```

### GMPのフロントエンドUIをデプロイ

参考：[フロントエンド UI をデプロイする](https://cloud.google.com/stackdriver/docs/managed-prometheus/query?hl=ja#promui-deploy)

`gmp-monitoring`名前空間を作成しました。

Plain textcontent\_copy

```
kubectl create ns gmp-monitoring

curl https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.7.4/examples/frontend.yaml |
sed 's/\$PROJECT_ID/<ご自身のproject id>/' |
kubectl apply -n gmp-monitoring -f -
```

### kube-state-metricsとnode-exporterをデプロイ

kube-prometheus-stackではプレインストールされている、kube-state-metricsとnode-exporterをデプロイします。

参考：[Kube 状態指標をインストールする](https://cloud.google.com/stackdriver/docs/managed-prometheus/exporters/kube_state_metrics?hl=ja#install-exporter)

参考：[Node Exporter をインストールする](https://cloud.google.com/stackdriver/docs/managed-prometheus/exporters/node_exporter?hl=ja#install-exporter)

この時点でkube-state-metricsとnode-exporterのメトリクスが取れているか確認してみます。

Plain textcontent\_copy

```
NAMESPACE=gmp-monitoring

kubectl port-forward -n $NAMESPACE svc/frontend 9090
```

### Grafanaをデプロイ

Plain textcontent\_copy

```
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
```

Plain textcontent\_copy

```
$ helm repo list
NAME                    URL
grafana                 https://grafana.github.io/helm-charts
```

私はこちらのvalues.yamlを使用しました。  
`sidecar.dashboards.enabled=true`、`sidecar.datasources.enabled=true`にすることで、それぞれConfigMapでデプロイすることができます。

Plain textcontent\_copy

```
persistence:
  type: pvc
  enabled: false
sidecar:
  dashboards:
    enabled: true
  datasources:
    enabled: true
```

Plain textcontent\_copy

```
NAMESPACE=gmp-monitoring

helm install grafana -n $NAMESPACE grafana/grafana -f values.yaml
```

Plain textcontent\_copy

```
$ kubectl get cm -n gmp-monitoring
NAME                        DATA   AGE
grafana                     1      4m50s
grafana-config-dashboards   1      4m50s
kube-root-ca.crt            1      86m
```

### kube-prometheus-stackをデプロイ

目的はConfigMapを取得することなのでvalues.yamlはデフォルトのままでも問題ありません。

prometheus-communityのHelmリポジトリを追加します。

Plain textcontent\_copy

```
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
```

Plain textcontent\_copy

```
$ helm repo list
NAME                    URL
prometheus-community    https://prometheus-community.github.io/helm-charts
```

私はこちらのvalues.yamlファイルを使いました。

Plain textcontent\_copy

```
# Alertmanagerは今回使わないのでデプロイしない
alertmanager:
  enabled: false
```

pstack名前空間にkube-prometheus-stackをデプロイします。

Plain textcontent\_copy

```
NAMESPACE=pstack
RELEASE_NAME=pstack

helm install $RELEASE_NAME prometheus-community/kube-prometheus-stack -n $NAMESPACE --create-namespace -f values.yaml
```

先ほどvalues.yamlでAlertmanagerを除外したので、Alertmanager以外がデプロイされています

Plain textcontent\_copy

```
# kubectl get po -n pstack
NAME                                                   READY   STATUS    RESTARTS   AGE
prometheus-pstack-kube-prometheus-sta-prometheus-0     2/2     Running   0          2m1s
pstack-grafana-7d46677fb4-mhncm                        3/3     Running   0          2m7s
pstack-kube-prometheus-sta-operator-7d74458df8-7jhvx   1/1     Running   0          2m7s
pstack-kube-state-metrics-5d8d89f5dd-sxdt4             1/1     Running   0          2m7s
pstack-prometheus-node-exporter-hl7ks                  1/1     Running   0          2m7s
```

## kube-prometheus-stackからConfigMapsを持ってくる

ConfigMapを確認します。

Plain textcontent\_copy

```
$ kubectl get cm -n pstack
NAME                                                           DATA   AGE
kube-root-ca.crt                                               1      3m16s
prometheus-pstack-kube-prometheus-sta-prometheus-rulefiles-0   29     2m59s
pstack-grafana                                                 1      3m6s
pstack-grafana-config-dashboards                               1      3m6s
pstack-kube-prometheus-sta-alertmanager-overview               1      3m6s
pstack-kube-prometheus-sta-apiserver                           1      3m6s
pstack-kube-prometheus-sta-cluster-total                       1      3m6s
pstack-kube-prometheus-sta-controller-manager                  1      3m6s
pstack-kube-prometheus-sta-etcd                                1      3m6s
pstack-kube-prometheus-sta-grafana-datasource                  1      3m6s
pstack-kube-prometheus-sta-grafana-overview                    1      3m6s
pstack-kube-prometheus-sta-k8s-coredns                         1      3m6s
pstack-kube-prometheus-sta-k8s-resources-cluster               1      3m6s
pstack-kube-prometheus-sta-k8s-resources-multicluster          1      3m6s
pstack-kube-prometheus-sta-k8s-resources-namespace             1      3m6s
pstack-kube-prometheus-sta-k8s-resources-node                  1      3m6s
pstack-kube-prometheus-sta-k8s-resources-pod                   1      3m6s
pstack-kube-prometheus-sta-k8s-resources-workload              1      3m6s
pstack-kube-prometheus-sta-k8s-resources-workloads-namespace   1      3m6s
pstack-kube-prometheus-sta-kubelet                             1      3m6s
pstack-kube-prometheus-sta-namespace-by-pod                    1      3m6s
pstack-kube-prometheus-sta-namespace-by-workload               1      3m6s
pstack-kube-prometheus-sta-node-cluster-rsrc-use               1      3m6s
pstack-kube-prometheus-sta-node-rsrc-use                       1      3m6s
pstack-kube-prometheus-sta-nodes                               1      3m6s
pstack-kube-prometheus-sta-nodes-darwin                        1      3m6s
pstack-kube-prometheus-sta-persistentvolumesusage              1      3m6s
pstack-kube-prometheus-sta-pod-total                           1      3m6s
pstack-kube-prometheus-sta-prometheus                          1      3m6s
pstack-kube-prometheus-sta-proxy                               1      3m6s
pstack-kube-prometheus-sta-scheduler                           1      3m6s
pstack-kube-prometheus-sta-workload-total                      1      3m6s
```

次の4つは`gmp-monitoring`へのデプロイ時に使わないのでそれ以外をファイルに落とします。

-   kube-root-ca.crt
    
-   prometheus-pstack-kube-prometheus-sta-prometheus-rulefiles-0
    
-   pstack-grafana
    
-   pstack-grafana-config-dashboards
    

Plain textcontent\_copy

```
NAMESPACE=pstack
DIR=./pstack

for cm in `k get cm -n $NAMESPACE| awk 'NR>5{print $1}'`; do kubectl get cm $cm -n $NAMESPACE -oyaml>$DIR/$cm.yaml; done
```

Plain textcontent\_copy

```
$ ls pstack
pstack-kube-prometheus-sta-alertmanager-overview.yaml
pstack-kube-prometheus-sta-apiserver.yaml
pstack-kube-prometheus-sta-cluster-total.yaml
pstack-kube-prometheus-sta-controller-manager.yaml
pstack-kube-prometheus-sta-etcd.yaml
pstack-kube-prometheus-sta-grafana-datasource.yaml
pstack-kube-prometheus-sta-grafana-overview.yaml
pstack-kube-prometheus-sta-k8s-coredns.yaml
pstack-kube-prometheus-sta-k8s-resources-cluster.yaml
pstack-kube-prometheus-sta-k8s-resources-multicluster.yaml
pstack-kube-prometheus-sta-k8s-resources-namespace.yaml
pstack-kube-prometheus-sta-k8s-resources-node.yaml
pstack-kube-prometheus-sta-k8s-resources-pod.yaml
pstack-kube-prometheus-sta-k8s-resources-workloads-namespace.yaml
pstack-kube-prometheus-sta-k8s-resources-workload.yaml
pstack-kube-prometheus-sta-kubelet.yaml
pstack-kube-prometheus-sta-namespace-by-pod.yaml
pstack-kube-prometheus-sta-namespace-by-workload.yaml
pstack-kube-prometheus-sta-node-cluster-rsrc-use.yaml
pstack-kube-prometheus-sta-node-rsrc-use.yaml
pstack-kube-prometheus-sta-nodes-darwin.yaml
pstack-kube-prometheus-sta-nodes.yaml
pstack-kube-prometheus-sta-persistentvolumesusage.yaml
pstack-kube-prometheus-sta-pod-total.yaml
pstack-kube-prometheus-sta-prometheus.yaml
pstack-kube-prometheus-sta-proxy.yaml
pstack-kube-prometheus-sta-scheduler.yaml
pstack-kube-prometheus-sta-workload-total.yaml

$ ls pstack | wc -l
28
```

## kube-prometheus-stackからRecordingRulesを持ってくる

PrometheusRuleを確認します。

Plain textcontent\_copy

```
$ kubectl get prometheusrules -n pstack
NAME                                                              AGE
pstack-kube-prometheus-sta-alertmanager.rules                     14h
pstack-kube-prometheus-sta-config-reloaders                       14h
pstack-kube-prometheus-sta-etcd                                   14h
pstack-kube-prometheus-sta-general.rules                          14h
pstack-kube-prometheus-sta-k8s.rules                              14h
pstack-kube-prometheus-sta-kube-apiserver-availability.rules      14h
pstack-kube-prometheus-sta-kube-apiserver-burnrate.rules          14h
pstack-kube-prometheus-sta-kube-apiserver-histogram.rules         14h
pstack-kube-prometheus-sta-kube-apiserver-slos                    14h
pstack-kube-prometheus-sta-kube-prometheus-general.rules          14h
pstack-kube-prometheus-sta-kube-prometheus-node-recording.rules   14h
pstack-kube-prometheus-sta-kube-scheduler.rules                   14h
pstack-kube-prometheus-sta-kube-state-metrics                     14h
pstack-kube-prometheus-sta-kubelet.rules                          14h
pstack-kube-prometheus-sta-kubernetes-apps                        14h
pstack-kube-prometheus-sta-kubernetes-resources                   14h
pstack-kube-prometheus-sta-kubernetes-storage                     14h
pstack-kube-prometheus-sta-kubernetes-system                      14h
pstack-kube-prometheus-sta-kubernetes-system-apiserver            14h
pstack-kube-prometheus-sta-kubernetes-system-controller-manager   14h
pstack-kube-prometheus-sta-kubernetes-system-kube-proxy           14h
pstack-kube-prometheus-sta-kubernetes-system-kubelet              14h
pstack-kube-prometheus-sta-kubernetes-system-scheduler            14h
pstack-kube-prometheus-sta-node-exporter                          14h
pstack-kube-prometheus-sta-node-exporter.rules                    14h
pstack-kube-prometheus-sta-node-network                           14h
pstack-kube-prometheus-sta-node.rules                             14h
pstack-kube-prometheus-sta-prometheus                             14h
pstack-kube-prometheus-sta-prometheus-operator                    14h
```

欲しいものはRecordingRuleなので`.rules`のものだけで良いのですが、全てファイルに落としてしまいました。

Plain textcontent\_copy

```
NAMESPACE=pstack
DIR=prometheusrules

for pr in `k get prometheusrules -n $NAMESPACE| awk 'NR>1{print $1}'`; do kubectl get prometheusrules $pr -n $NAMESPACE -oyaml>$DIR/$pr.yaml; done
```

Plain textcontent\_copy

```
$ ls prometheusrules/
pstack-kube-prometheus-sta-alertmanager.rules.yaml
pstack-kube-prometheus-sta-config-reloaders.yaml
pstack-kube-prometheus-sta-etcd.yaml
pstack-kube-prometheus-sta-general.rules.yaml
pstack-kube-prometheus-sta-k8s.rules.yaml
pstack-kube-prometheus-sta-kube-apiserver-availability.rules.yaml
pstack-kube-prometheus-sta-kube-apiserver-burnrate.rules.yaml
pstack-kube-prometheus-sta-kube-apiserver-histogram.rules.yaml
pstack-kube-prometheus-sta-kube-apiserver-slos.yaml
pstack-kube-prometheus-sta-kubelet.rules.yaml
pstack-kube-prometheus-sta-kube-prometheus-general.rules.yaml
pstack-kube-prometheus-sta-kube-prometheus-node-recording.rules.yaml
pstack-kube-prometheus-sta-kubernetes-apps.yaml
pstack-kube-prometheus-sta-kubernetes-resources.yaml
pstack-kube-prometheus-sta-kubernetes-storage.yaml
pstack-kube-prometheus-sta-kubernetes-system-apiserver.yaml
pstack-kube-prometheus-sta-kubernetes-system-controller-manager.yaml
pstack-kube-prometheus-sta-kubernetes-system-kubelet.yaml
pstack-kube-prometheus-sta-kubernetes-system-kube-proxy.yaml
pstack-kube-prometheus-sta-kubernetes-system-scheduler.yaml
pstack-kube-prometheus-sta-kubernetes-system.yaml
pstack-kube-prometheus-sta-kube-scheduler.rules.yaml
pstack-kube-prometheus-sta-kube-state-metrics.yaml
pstack-kube-prometheus-sta-node-exporter.rules.yaml
pstack-kube-prometheus-sta-node-exporter.yaml
pstack-kube-prometheus-sta-node-network.yaml
pstack-kube-prometheus-sta-node.rules.yaml
pstack-kube-prometheus-sta-prometheus-operator.yaml
pstack-kube-prometheus-sta-prometheus.yaml

$ ls prometheusrules/ | wc -l
29
```

欲しいものは手に入ったので、pstackはuninstallしても大丈夫です。

Plain textcontent\_copy

```
NAMESPACE=pstack
RELEASE_NAME=pstack

helm uninstall $RELEASE_NAME -n $NAMESPACE
```

## gmpにインポートする

### dashboardを編集する

まずはインポートできている状態を目指します。  
落としてきたファイルのメタデータを編集します。

before

Plain textcontent\_copy

```
...
metadata:
  annotations:
    meta.helm.sh/release-name: pstack
    meta.helm.sh/release-namespace: pstack
  creationTimestamp: "2023-10-31T01:21:07Z"
  labels:
    app: kube-prometheus-stack-grafana
    app.kubernetes.io/instance: pstack
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/part-of: kube-prometheus-stack
    app.kubernetes.io/version: 52.1.0
    chart: kube-prometheus-stack-52.1.0
    grafana_dashboard: "1"
    heritage: Helm
    release: pstack
  name: pstack-kube-prometheus-sta-workload-total
  namespace: pstack
  resourceVersion: "395886"
  uid: 090f9713-8d30-4a55-bb34-8791f70bb391
```

after

Plain textcontent\_copy

```
...
metadata:
  labels:
    grafana_dashboard: '1'
  name: kube-prometheus-sta-workload-total
  namespace: gmp-monitoring
```

### datasourceを編集する

Plain textcontent\_copy

```
apiVersion: v1
data:
  datasource.yaml: |-
    apiVersion: 1
    datasources:
    - name: Prometheus
      type: prometheus
      uid: prometheus
      url: http://frontend:9090/
      access: proxy
      isDefault: true
      jsonData:
        httpMethod: POST
        timeInterval: 30s
kind: ConfigMap
metadata:
  labels:
    grafana_datasource: '1'
  name: kube-prometheus-sta-grafana-datasource.yaml
  namespace: gmp-monitoring
```

この時点でapplyするとgrafanaにアクセスするとダッシュボードおよびデータソースがインポートできていますが、No dataで表示されると思います。

Plain textcontent\_copy

```
NAMESPACE=gmp-monitoring

k port-forward -n $NAMESPACE svc/grafana 3000:80
```

### PrometheusRuleからClusterRulesを作成する

末尾に`.rules`がついているもののみデプロイします。

先ほど全部ファイルに落としてしまったので分けました。ダッシュボード表示のみでしたらrecordディレクトリ配下のファイル群のみで大丈夫です。

Plain textcontent\_copy

```
.
├── alert
│   ├── kube-prometheus-sta-config-reloaders.yaml
│   ├── kube-prometheus-sta-etcd.yaml
│   ├── kube-prometheus-sta-kube-apiserver-slos.yaml
│   ├── kube-prometheus-sta-kubernetes-apps.yaml
│   ├── kube-prometheus-sta-kubernetes-resources.yaml
│   ├── kube-prometheus-sta-kubernetes-storage.yaml
│   ├── kube-prometheus-sta-kubernetes-system-apiserver.yaml
│   ├── kube-prometheus-sta-kubernetes-system-controller-manager.yaml
│   ├── kube-prometheus-sta-kubernetes-system-kubelet.yaml
│   ├── kube-prometheus-sta-kubernetes-system-kube-proxy.yaml
│   ├── kube-prometheus-sta-kubernetes-system-scheduler.yaml
│   ├── kube-prometheus-sta-kubernetes-system.yaml
│   ├── kube-prometheus-sta-kube-state-metrics.yaml
│   ├── kube-prometheus-sta-node-exporter.yaml
│   ├── kube-prometheus-sta-node-network.yaml
│   ├── kube-prometheus-sta-prometheus-operator.yaml
│   └── kube-prometheus-sta-prometheus.yaml
└── record
    ├── kube-prometheus-sta-alertmanager.rules.yaml
    ├── kube-prometheus-sta-general.rules.yaml
    ├── kube-prometheus-sta-k8s.rules.yaml
    ├── kube-prometheus-sta-kube-apiserver-availability.rules.yaml
    ├── kube-prometheus-sta-kube-apiserver-burnrate.rules.yaml
    ├── kube-prometheus-sta-kube-apiserver-histogram.rules.yaml
    ├── kube-prometheus-sta-kubelet.rules.yaml
    ├── kube-prometheus-sta-kube-prometheus-general.rules.yaml
    ├── kube-prometheus-sta-kube-prometheus-node-recording.rules.yaml
    ├── kube-prometheus-sta-kube-scheduler.rules.yaml
    ├── kube-prometheus-sta-node-exporter.rules.yaml
    └── kube-prometheus-sta-node.rules.yaml
```

before

Plain textcontent\_copy

```
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  annotations:
    meta.helm.sh/release-name: pstack
    meta.helm.sh/release-namespace: pstack
  creationTimestamp: "2023-10-31T10:52:58Z"
  generation: 1
  labels:
    app: kube-prometheus-stack
    app.kubernetes.io/instance: pstack
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/part-of: kube-prometheus-stack
    app.kubernetes.io/version: 52.1.0
    chart: kube-prometheus-stack-52.1.0
    heritage: Helm
    release: pstack
  name: pstack-kube-prometheus-sta-alertmanager.rules
  namespace: pstack
  resourceVersion: "657348"
  uid: b40fe500-4923-475b-ad9c-7e88b0963487
spec:
  groups:
  - name: alertmanager.rules
    rules:
...
```

after

Plain textcontent\_copy

```
apiVersion: monitoring.googleapis.com/v1
kind: ClusterRules
metadata:
  name: kube-prometheus-sta-alertmanager.rules
spec:
  groups:
  - name: alertmanager.rules
    interval: 30s
    rules:
...
```

ClusterRulesは`spec.groups.interval`が必須なので注意です。

## 設定項目を調整する

kubeletのメトリクスが取得できるようにOperatorConfigに以下を追加します。

Plain textcontent\_copy

```
...
collection:
  kubeletScraping:
    interval: 30s
...
```

kube-prometheus-stackとの差分を修正します。

ダッシュボードについて、`metrics_path=\"/metrics/cadvisor\"`と`metrics_path=\\"/metrics\\"`を削除します。

Plain textcontent\_copy

```
DIR=gmp-monitoring

for i in `ls $DIR`; do sed -i -z -e 's@,[\n| ]*metrics_path=\\"/metrics/cadvisor\\"@@g' -e 's@,[\n| ]*metrics_path=\\"/metrics\\"@@g' $DIR/$i; done
```

ファイルを編集したらapplyしてください。

Plain textcontent\_copy

```
kubectl apply -f $DIR
```

同じように、ClusterRulesについて、`metrics_path="/metrics/cadvisor"`と`metrics_path="/metrics"`を削除します。

Plain textcontent\_copy

```
DIR=clusterrules/record

for i in `ls $DIR`; do sed -i -z -e 's@,[\n| ]*metrics_path="/metrics/cadvisor"@@g' -e 's@,[\n| ]*metrics_path="/metrics"@@g' $DIR/$i; done
```

ファイルを編集したらapplyしてください。

Plain textcontent\_copy

```
kubectl apply -f $DIR
```

この時点で見れるダッシュボード

-   Kubernetes / Compute Resources / Multi-Cluster
    
-   Kubernetes / Compute Resourcees / Cluster
    
-   Kubernetes / Compute Resources / Namespace (Pods)
    
-   Kubernetes / Compute Resources / Namespace (Workloads)
    
-   Kubernetes / Compute Resources / Node (Pods)
    
-   Kubernetes / Compute Resources / Pod
    
-   Kubernetes / Compute Resources / Workload
    
-   Kubernetes / Kubelet
    
-   Kubernetes / Networking / Cluster
    
-   Kubernetes / Networking / Namespace (Pods)
    
-   Kubernetes / Networking / Namespace (Workloads)
    
-   Kubernetes / Networking / Pod
    
-   Kubernetes / Networking / Workload
    
-   Kubernetes / Persistent Volumes
    
-   Node Exporter / Nodes
    
-   Node Exporter / USE Method / Cluster
    
-   Node Exporter / USE Method / Node
    

この時点で見れないダッシュボード

-   AlertManager / Overview
    
-   CoreDNS
    
-   Grafana Overview
    
-   Kubernetes / API server
    
-   Kubernetes / Controller Manager
    
-   Kubernetes / Proxy
    
-   Kubernetes / Scheduler
    
-   Prometheus / Overview
    
-   etcd
    

未検証のダッシュボード

-   Node Exporter / MacOS

## もう少しだけ見れるようにします

以下のダッシュボードのメトリクスが表示されるようになります。

-   AlertManager / Overview
    
-   Grafana Overview
    

### PodMonitoringを作成する

Alertmanagerは今回マネージド Alertmanager を使っていますがセルフデプロイされたものでも構いません。

Plain textcontent\_copy

```
apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
  namespace: gmp-system
  name: alertmanager
  labels:
    app.kubernetes.io/name: alertmanager
    app.kubernetes.io/part-of: google-cloud-managed-prometheus
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: alertmanager
  endpoints:
    - port: alertmanager
      interval: 30s
```

Grafana用のPodMonitoring

Plain textcontent\_copy

```
apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
  namespace: gmp-monitoring
  name: grafana
  labels:
    app.kubernetes.io/name: grafana
    app.kubernetes.io/part-of: google-cloud-managed-prometheus
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: grafana
  endpoints:
    - port: grafana
      interval: 30s
```

## まとめ

見れるダッシュボード

-   AlertManager / Overview
    
-   Grafana Overview
    
-   Kubernetes / Compute Resources / Multi-Cluster
    
-   Kubernetes / Compute Resourcees / Cluster
    
-   Kubernetes / Compute Resources / Namespace (Pods)
    
-   Kubernetes / Compute Resources / Namespace (Workloads)
    
-   Kubernetes / Compute Resources / Node (Pods)
    
-   Kubernetes / Compute Resources / Pod
    
-   Kubernetes / Compute Resources / Workload
    
-   Kubernetes / Kubelet
    
-   Kubernetes / Networking / Cluster
    
-   Kubernetes / Networking / Namespace (Pods)
    
-   Kubernetes / Networking / Namespace (Workloads)
    
-   Kubernetes / Networking / Pod
    
-   Kubernetes / Networking / Workload
    
-   Kubernetes / Persistent Volumes
    
-   Node Exporter / Nodes
    
-   Node Exporter / USE Method / Cluster
    
-   Node Exporter / USE Method / Node
    

見れないダッシュボード

-   CoreDNS
    
-   Kubernetes / API server
    
-   Kubernetes / Controller Manager
    
-   Kubernetes / Proxy
    
-   Kubernetes / Scheduler
    
-   Prometheus / Overview
    
-   etcd
    

未検証のダッシュボード

-   Node Exporter / MacOS

見れないダッシュボードのうち、api-server、 kube-proxy、kube-scheduler、controller-managerについては、GKEのCloudMonitoringを有効にしたらメトリクスが取れるんじゃないかと思い、試しました。

![見れないダッシュボードのうち、api-server、 kube-proxy、kube-scheduler](/_astro/01-e80a132b01d4a23bb5fcf9981d87e0b0-1024x526-ee3aab0f.BwnJ80zM_ZPktdX.webp)

メトリクスは取得できるようになるものの、詳細なメトリクスデータは排出されていなかったため、ダッシュボードにはほとんど表示されませんでした。

申し訳ございませんが、MacOSは使っていないので未検証です。

以上です。  
最初メトリクスが表示されず悩んだので誰かの助けになれば幸いです。

## この記事を書いた人

[![](/_astro/noicon.CTHOhNiB_Z24aAgM.webp)](/authors/oshima/)

### [Oshima](/authors/oshima/)

Oshimaのプロフィールと執筆記事をご覧いただけます。

[プロフィールと記事一覧](/authors/oshima/)