GKEのワークロード指標からマネージドPrometheusに移行する
以前
ワークロード指標でpayaraメトリクスを取得したのですが、
ワークロード指標
はGKE1.24以降では使えないのでマネージドPrometheusに移行します。
移行手順は公式ドキュメント があるのでそちらを参考に進めます。
マネージドPrometheus有効化
ダッシュボードからGKEクラスタを選択して「ENABLE SELECTED」をクリックします。
有効にします。
こうなりました。
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で取得できるように変わるみたいですね。
ちゃんと3Podとも取得できています。
Prometheus UIやGrafanaでメトリクスを表示する
こちら の手順そのままですね。
Cloud Monitoring
PromQLで表示する際、ワークロード指標の場合は マッピング してあげないといけませんが、マネージドPrometheusの場合例えばHeapサイズは「base_memory_usedHeap_bytes」だけで表示できました。
ちなみに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にアクセスします。
良さそうですね。
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
ドキュメントの通りにデータソースを設定します。
ダッシュボードを設定してみます。
良さそうですね。
何これお手軽楽しい。
可視化できるとなんかいいですね!
アラートも試したいけど個人アカウントでやってるのでつらい。