GKEのワークロード指標からマネージドPrometheusに移行する

以前 ワークロード指標でpayaraメトリクスを取得したのですが、
ワークロード指標 はGKE1.24以降では使えないのでマネージドPrometheusに移行します。

移行手順は公式ドキュメント があるのでそちらを参考に進めます。

マネージドPrometheus有効化

ダッシュボードからGKEクラスタを選択して「ENABLE SELECTED」をクリックします。

gke_managed_prometheus_01.png

有効にします。

gke_managed_prometheus_02.png

こうなりました。

gke_managed_prometheus_03.png

PodMonitorを変換する

APIが変わるのでPodMonitorからPodMonitoringに変換する必要があります。

% kubectl get podmonitor.monitoring.gke.io
NAME             AGE
payara-monitor   3h17m
% kubectl delete podmonitor.monitoring.gke.io payara-monitor
podmonitor.monitoring.gke.io "payara-monitor" deleted
% cat payara-monitor.yaml 
apiVersion: monitoring.googleapis.com/v1 
kind: PodMonitoring
metadata:
  name: payara-monitor
  namespace: default
spec:
  selector:
    matchLabels:
      app: payara
  endpoints:
  - port: http
    path: /metrics 
    interval: 30s
% kubectl apply -f payara-monitor.yaml

describeはこんな感じ。

% kubectl describe podmonitoring payara-monitor   
Name:         payara-monitor
Namespace:    default
Labels:       <none>
Annotations:  <none>
API Version:  monitoring.googleapis.com/v1
Kind:         PodMonitoring
Metadata:
  Creation Timestamp:  2022-12-25T07:04:52Z
  Generation:          1
  Managed Fields:
    API Version:  monitoring.googleapis.com/v1
    Fields Type:  FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .:
          f:kubectl.kubernetes.io/last-applied-configuration:
      f:spec:
        .:
        f:endpoints:
        f:selector:
          .:
          f:matchLabels:
            .:
            f:app:
    Manager:      kubectl-client-side-apply
    Operation:    Update
    Time:         2022-12-25T07:04:52Z
    API Version:  monitoring.googleapis.com/v1
    Fields Type:  FieldsV1
    fieldsV1:
      f:status:
        .:
        f:conditions:
        f:observedGeneration:
    Manager:         operator
    Operation:       Update
    Subresource:     status
    Time:            2022-12-25T07:04:52Z
  Resource Version:  131673
  UID:               1d55368b-1c72-4d72-89e6-816fddd0b231
Spec:
  Endpoints:
    Interval:  30s
    Path:      /metrics
    Port:      http
  Selector:
    Match Labels:
      App:  payara
  Target Labels:
    Metadata:
      pod
      container
Status:
  Conditions:
    Last Transition Time:  2022-12-25T07:04:52Z
    Last Update Time:      2022-12-25T07:04:52Z
    Status:                True
    Type:                  ConfigurationCreateSuccess
  Observed Generation:     1
Events:                    <none>

Metrics Explorerでメトリクスを表示する

workloadからPrometheus Targetで取得できるように変わるみたいですね。

gke_managed_prometheus_04.png

ちゃんと3Podとも取得できています。

gke_managed_prometheus_05.png

Prometheus UIやGrafanaでメトリクスを表示する

こちら の手順そのままですね。

Cloud Monitoring

PromQLで表示する際、ワークロード指標の場合は マッピング してあげないといけませんが、マネージドPrometheusの場合例えばHeapサイズは「base_memory_usedHeap_bytes」だけで表示できました。

gke_managed_prometheus_06.png

ちなみにPromQLからアラートポリシーは作成できないようです。

Prometheus UI

UIをデプロイします。

% curl https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.5.0/examples/frontend.yaml |
sed 's/\$PROJECT_ID/[Project ID]/' |
kubectl apply -n default -f -
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  1514  100  1514    0     0   3429      0 --:--:-- --:--:-- --:--:--  3496
deployment.apps/frontend created
service/frontend created

ポート転送します。
ちなみにこの手順は手元のMacからgcloudでGKEにアクセスしています。

% kubectl -n default port-forward svc/frontend 9090
Forwarding from 127.0.0.1:9090 -> 9090
Forwarding from [::1]:9090 -> 9090

ブラウザでhttp://localhost:9090にアクセスします。

gke_managed_prometheus_07.png

良さそうですね。

Grafana

Grafanaも試します。
デプロイします。

% kubectl -n default apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.5.0/examples/grafana.yaml
deployment.apps/grafana created
service/grafana created
% kubectl -n default port-forward svc/grafana 3000
Forwarding from 127.0.0.1:3000 -> 3000
Forwarding from [::1]:3000 -> 3000

ドキュメントの通りにデータソースを設定します。

gke_managed_prometheus_08.png

ダッシュボードを設定してみます。

gke_managed_prometheus_09.png

良さそうですね。

何これお手軽楽しい。
可視化できるとなんかいいですね! アラートも試したいけど個人アカウントでやってるのでつらい。