AlloyDB Omni ๊ด€๋ฆฌ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง

๋ฌธ์„œ ๋ฒ„์ „์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€์—์„œ๋Š” AlloyDB Omni ์‚ฌ์šฉ์ž ์—ญํ• ์„ ๊ด€๋ฆฌํ•˜๊ณ , AlloyDB Omni ์„œ๋ฒ„์˜ ํ™œ๋™์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , AlloyDB Omni ์„ค์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์—ญํ•  ๊ด€๋ฆฌ

AlloyDB Omni๋Š” PostgreSQL์šฉ AlloyDB์— ํฌํ•จ๋œ ์‚ฌ์ „ ์ •์˜๋œ PostgreSQL ์‚ฌ์šฉ์ž ์—ญํ• ๊ณผ ๋™์ผํ•œ ์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • AlloyDB Omni์—๋Š” alloydbadmin๋ผ๋Š” ์ˆ˜ํผ์œ ์ € ์—ญํ• ๊ณผ alloydbmetadata๋ผ๋Š” ๋น„์ˆ˜ํผ์œ ์ € ์—ญํ• ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ postgres ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์ˆ˜ํผ์œ ์ € ์—ญํ• ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ์ „ ์ •์˜๋œ ์‚ฌ์šฉ์ž ์—ญํ• ์—๋Š” ๊ถŒํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฒ”์œ„๋Š” ํ–ฅํ›„ ์‚ฌ์šฉ์„ ์œ„ํ•ด ์˜ˆ์•ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

AlloyDB์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค์ •ํ•  ๋•Œ๋Š” ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  1. postgres ์‚ฌ์šฉ์ž ์—ญํ• ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ •์˜ํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ƒˆ ์„ค์น˜์—์„œ ์ด ์—ญํ• ์—๋Š” ์ˆ˜ํผ์œ ์ € ๊ถŒํ•œ์ด ์žˆ์œผ๋ฉฐ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  2. postgres ์‚ฌ์šฉ์ž ์—ญํ• ์„ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์˜ฌ๋ฐ”๋ฅธ ์•ก์„ธ์Šค ์ˆ˜์ค€์ด ์žˆ๋Š” ์ƒˆ ์‚ฌ์šฉ์ž ์—ญํ• ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  3. ์ด๋Ÿฌํ•œ ์ƒˆ๋กœ์šด ์ œํ•œ๋œ ์•ก์„ธ์Šค ์—ญํ• ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•˜๋„๋ก ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ๋งŒํผ ์ƒˆ ์‚ฌ์šฉ์ž ์—ญํ• ์„ ๋งŒ๋“ค์–ด ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AlloyDB Omni์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ์‚ฌ์šฉ์ž ์—ญํ• ์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜์ง€ ๋งˆ์„ธ์š”.

์ž์„ธํ•œ ๋‚ด์šฉ์€ AlloyDB Omni ์‚ฌ์šฉ์ž ๋ฐ ์—ญํ•  ๊ด€๋ฆฌ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

AlloyDB Omni ๋ชจ๋‹ˆํ„ฐ๋ง

AlloyDB Omni ์„ค์น˜ ๋ชจ๋‹ˆํ„ฐ๋ง์—๋Š” AlloyDB Omni ๋กœ๊ทธ ํŒŒ์ผ ์ฝ๊ธฐ ๋ฐ ๋ถ„์„์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

Kubernetes์—์„œ ์‹คํ–‰๋˜๋Š” AlloyDB Omni๋Š” Prometheus ์—”๋“œํฌ์ธํŠธ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ์ธก์ •ํ•ญ๋ชฉ ์ง‘ํ•ฉ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ธก์ •ํ•ญ๋ชฉ ๋ชฉ๋ก์€ AlloyDB Omni ์ธก์ •ํ•ญ๋ชฉ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๋˜ํ•œ Kubernetes์—์„œ ์‹คํ–‰๋˜๋Š” AlloyDB Omni๋Š” kube-state-metrics(KSM)๋ฅผ ํ™œ์šฉํ•˜๋Š” ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค์˜ ์ธก์ •ํ•ญ๋ชฉ์„ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค ์ธก์ •ํ•ญ๋ชฉ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด AlloyDB Omni Kubernetes ์—ฐ์‚ฐ์ž ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๋‹จ์ผ ์„œ๋ฒ„

๊ธฐ๋ณธ์ ์œผ๋กœ AlloyDB Omni ๋กœ๊ทธ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์„ธ์š”.

Docker

  docker logs CONTAINER_NAME

CONTAINER_NAME์„ AlloyDB Omni ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

AlloyDB Omni์˜ ๋กœ๊น… ๋™์ž‘์„ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด AlloyDB Omni ์„ค์น˜ ๋งž์ถค์„ค์ •์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

Podman

  podman logs CONTAINER_NAME

CONTAINER_NAME์„ AlloyDB Omni ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

AlloyDB Omni์˜ ๋กœ๊น… ๋™์ž‘์„ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด AlloyDB Omni ์„ค์น˜ ๋งž์ถค์„ค์ •์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

Kubernetes

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ ๋กœ๊ทธ ํŒŒ์ผ ์ฐพ๊ธฐ

postgresql.audit ๋ฐ postgresql.log ํŒŒ์ผ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํฌ๋“œ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์žˆ์Šต๋‹ˆ๋‹ค. postgresql.audit์€(๋Š”) pgaudit์„ ์‚ฌ์šฉ ์„ค์ •ํ•œ ๊ฒฝ์šฐ์—๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํŒŒ์ผ์— ์•ก์„ธ์Šคํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํฌ๋“œ ์ด๋ฆ„์ด ํฌํ•จ๋œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

    export DB_POD=`kubectl get pod -l alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME,alloydbomni.internal.dbadmin.goog/task-type=database -o jsonpath='{.items[0].metadata.name}'`

    DB_CLUSTER_NAME์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งŒ๋“ค ๋•Œ ์„ ์–ธํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ ์ด๋ฆ„๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

  2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํฌ๋“œ์—์„œ ๋ฃจํŠธ๋กœ ์…ธ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    kubectl exec ${DB_POD} -it -- /bin/bash
  3. /obs/diagnostic/ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ๋กœ๊ทธ ํŒŒ์ผ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

    • /obs/diagnostic/postgresql.audit
    • /obs/diagnostic/postgresql.log

๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋น„์Šค ๋‚˜์—ด

v1.0

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งŒ๋“ค๋ฉด AlloyDB Omni๋Š” ๋™์ผํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฐ ์ธ์Šคํ„ด์Šค CR์— ๋Œ€ํ•ด ๋‹ค์Œ ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

al-INSTANCE_NAME-monitoring-system

๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋น„์Šค๋ฅผ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

kubectl get svc -n NAMESPACE | grep monitoring

NAMESPACE์„ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์†ํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์‹œ ์‘๋‹ต์€ al-1060-dbc-monitoring-system, al-3de6-dbc-monitoring-system, al-4bc0-dbc-monitoring-system ์„œ๋น„์Šค๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๊ฐ ์„œ๋น„์Šค๋Š” ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

al-1060-dbc-monitoring-system   ClusterIP   10.0.15.227   <none>        9187/TCP   7d20h
al-3de6-dbc-monitoring-system   ClusterIP   10.0.5.205    <none>        9187/TCP   7d19h
al-4bc0-dbc-monitoring-system   ClusterIP   10.0.15.92    <none>        9187/TCP   7d19h

๋ฒ„์ „ < 1.0

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งŒ๋“ค๋ฉด AlloyDB Omni๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ์™€ ๋™์ผํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋‹ค์Œ ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  • DB_CLUSTER-monitoring-db

  • DB_CLUSTER-monitoring-system

๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋น„์Šค๋ฅผ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

kubectl get svc -n NAMESPACE | grep monitoring

NAMESPACE์„ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์†ํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์‹œ ์‘๋‹ต์€ al-2953-dbcluster-foo7-monitoring-system ๋ฐ al-2953-dbcluster-foo7-monitoring-db ์„œ๋น„์Šค๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

al-2953-dbcluster-foo7-monitoring-db           ClusterIP   10.36.3.243    <none>        9187/TCP   44m
al-2953-dbcluster-foo7-monitoring-system       ClusterIP   10.36.7.72     <none>        9187/TCP   44m

๋ช…๋ น์ค„์—์„œ Prometheus ์ธก์ •ํ•ญ๋ชฉ ๋ณด๊ธฐ

ํฌํŠธ 9187์€ ๋ชจ๋“  ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋น„์Šค์—์„œ metricsalloydbomni๋กœ ์ด๋ฆ„์ด ์ง€์ •๋ฉ๋‹ˆ๋‹ค.

  1. ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋น„์Šค๋กœ ํฌํŠธ ์ „๋‹ฌ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    kubectl port-forward service/MONITORING_SERVICE -n NAMESPACE MONITORING_METRICS_PORT:metricsalloydbomni
    

    ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • MONITORING_SERVICE: ์ „๋‹ฌํ•˜๋ ค๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋น„์Šค์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค(์˜ˆ: al-1060-dbc-monitoring-system).

    • NAMESPACE: ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์†ํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.

    • MONITORING_METRICS_PORT: ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋กœ์ปฌ TCP ํฌํŠธ์ž…๋‹ˆ๋‹ค.

    ๋‹ค์Œ ์‘๋‹ต์€ ์„œ๋น„์Šค๊ฐ€ ์ „๋‹ฌ๋˜๊ณ  ์žˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

    Forwarding from 127.0.0.1:9187 -> 9187
    Forwarding from [::1]:9187 -> 9187
    
  2. ์ด์ „ ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ์ง€์ •ํ•œ ํฌํŠธ์˜ HTTP๋ฅผ ํ†ตํ•ด ๋ชจ๋‹ˆํ„ฐ๋ง ์ธก์ •ํ•ญ๋ชฉ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด curl์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์ธก์ •ํ•ญ๋ชฉ์„ ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    curl http://localhost:MONITORING_METRICS_PORT/metrics
    

Prometheus API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธก์ •ํ•ญ๋ชฉ ๋ณด๊ธฐ

alloydbomni.internal.dbadmin.goog/task-type ๋ผ๋ฒจ ํ‚ค์™€ metricsalloydbomni ํฌํŠธ๋Š” AlloyDB Omni์˜ ๋ชจ๋“  ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋น„์Šค์— ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ serviceMonitor ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์žˆ๋Š” ๋ชจ๋“  ์„œ๋น„์Šค๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Prometheus API ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Prometheus Operator ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๋‹ค์Œ์€ alloydbomni.internal.dbadmin.gdc.goog/task-type ๋ผ๋ฒจ ํ‚ค์™€ metricsalloydbomni ํฌํŠธ๋ฅผ ํฌํ•จํ•˜๋Š” serviceMonitor ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค์˜ spec ํ•„๋“œ์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. serviceMonitor ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋Š” ๋ชจ๋“  ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ๋ชจ๋“  Kubernetes ์„œ๋น„์Šค๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค.

์ „์ฒด ServiceMonitor ์ •์˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ServiceMonitor ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค ์ •์˜ ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

v1.0

    spec:
      selector:
        matchLabels:
          alloydbomni.internal.dbadmin.goog/task-type: monitoring
      namespaceSelector:
        any: true
      endpoints:
        - port: metricsalloydbomni

๋ฒ„์ „ < 1.0

    spec:
      selector:
        matchExpressions:
        - key: alloydbomni.internal.dbadmin.gdc.goog/task-type
          operator: Exists
          values: []
      namespaceSelector:
        any: true
      endpoints:
      - port: metricsalloydbomni

Grafana๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธก์ •ํ•ญ๋ชฉ ๋ณด๊ธฐ

Kubernetes์˜ AlloyDB Omni์—์„œ ์ธก์ •ํ•ญ๋ชฉ์„ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ ค๋ฉด ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ๋Š” Prometheus์™€ Grafana๋กœ ๊ตฌ์„ฑ๋œ ๊ธฐ๋ณธ ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ์Šคํƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. AlloyDB Omni์—์„œ ์ธก์ •ํ•ญ๋ชฉ์„ ์ˆ˜์ง‘ํ•˜๋„๋ก ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Grafana ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๋ ค๋ฉด wget ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    wget https://raw.githubusercontent.com/GoogleCloudPlatform/alloydb-omni-samples/refs/heads/main/monitoring-dashboards/grafana/alloydbomni_dashboard.yaml
    
  2. Kubernetes์— Grafana๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์ „์— grafana-operator๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„ค์น˜๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

  3. ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์„ค์น˜ํ•  Grafana ์ธ์Šคํ„ด์Šค์— monitoring.dashboard/product=alloydb-omni ๋ผ๋ฒจ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    kubectl label grafana/GRAFANA_INSTANCE_NAME monitoring.dashboard/product=alloydb-omni -n NAMESPACE
    

    ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • GRAFANA_INSTANCE_NAME: ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๋ฐฐ์น˜ํ•  Grafana ์ธ์Šคํ„ด์Šค์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
    • NAMESPACE: Grafana ์šด์˜์ž๋ฅผ ๋ฐฐํฌํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.
  4. Kubernetes์˜ AlloyDB Omni ํด๋Ÿฌ์Šคํ„ฐ์— Grafana ๋Œ€์‹œ๋ณด๋“œ ๊ตฌ์„ฑ์„ ์ ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

    kubectl apply -f alloydbomni_dashboard.yaml -n NAMESPACE
    

    Grafana ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Grafana ์—ฐ์‚ฐ์ž ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

  5. Prometheus๋ฅผ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋กœ ์‚ฌ์šฉํ•˜๋„๋ก Grafana๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

  6. Grafana๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜ํ–‰ํ•˜์„ธ์š”.

    • AlloyDB Omni ๋Œ€์‹œ๋ณด๋“œ์—์„œ Grafana ํŒจ๋„ ๋ชจ์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    • Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์—์„œ Grafana ๋Œ€์‹œ๋ณด๋“œ์— ๊ด€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

      kubectl get grafanadashboard alloydb-omni-dashboard -n NAMESPACE -o jsonpath='{.status.conditions[?(@.type=="DashboardSynchronized")].status}'
      

      ๋ช…๋ น์–ด๊ฐ€ True๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด alloydb-omni-dashboard์ด Grafana ์ธ์Šคํ„ด์Šค์— ์„ฑ๊ณต์ ์œผ๋กœ ๋ฐฐํฌ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

AlloyDB Omni ์—…๊ทธ๋ ˆ์ด๋“œ

AlloyDB Omni 15.5.2 ์ดํ•˜์—์„œ 15.5.4๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๋ฉด ์ด์ „ ๋ฒ„์ „์˜ AlloyDB Omni์—์„œ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์ด์ „์˜ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

15.5.4 ์ด์ƒ์—์„œ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ์ƒˆ ์ด๋ฏธ์ง€ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์—ฌ AlloyDB Omni๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

  2. ์ด์ „ ๋ฒ„์ „์˜ AlloyDB Omni์—์„œ ์‚ฌ์šฉ๋œ ๊ฒฝ๋กœ์™€ ๋™์ผํ•œ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

AlloyDB Omni ์ œ๊ฑฐ

๋‹จ์ผ ์„œ๋ฒ„

AlloyDB Omni๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ AlloyDB Omni ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ค‘์ง€ํ•˜๊ณ  ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

Docker

 docker container stop CONTAINER_NAME
   docker container rm CONTAINER_NAME

CONTAINER_NAME์„ AlloyDB Omni ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

Podman

 podman container stop CONTAINER_NAME
   podman container rm CONTAINER_NAME

CONTAINER_NAME์„ AlloyDB Omni ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

Podman

 podman container stop CONTAINER_NAME
   podman container rm CONTAINER_NAME

CONTAINER_NAME์„ AlloyDB Omni ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

AlloyDB Omni๋ฅผ ์ œ๊ฑฐํ•œ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์กดํ• ์ง€ ์—ฌ๋ถ€์™€ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ด๋™, ๋ณด๊ด€ ๋˜๋Š” ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Kubernetes

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ ์‚ญ์ œ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋งค๋‹ˆํŽ˜์ŠคํŠธ์—์„œ isDeleted๋ฅผ true๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -p '{"spec":{"isDeleted":true}}' --type=merge

DB_CLUSTER_NAME์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งŒ๋“ค ๋•Œ ์„ ์–ธํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ ์ด๋ฆ„๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

AlloyDB Omni ์—ฐ์‚ฐ์ž ์ œ๊ฑฐ

Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์—์„œ AlloyDB Omni Kubernetes ์—ฐ์‚ฐ์ž๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

    for ns in $(kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces -o=jsonpath='{range .items[*]}{.metadata.namespace}{"\n"}{end}'); do
    for cr in $(kubectl get dbclusters.alloydbomni.dbadmin.goog -n $ns -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'); do
    kubectl patch dbclusters.alloydbomni.dbadmin.goog $cr -n $ns --type=merge -p '{"spec":{"isDeleted":true}}'
    done
    done
  2. AlloyDB Omni Kubernetes ์—ฐ์‚ฐ์ž๊ฐ€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ญ์ œํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฆฌ์†Œ์Šค๊ฐ€ ๋‚จ์•„ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces
  3. AlloyDB Omni Kubernetes ์—ฐ์‚ฐ์ž๊ฐ€ ๋งŒ๋“  ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

    kubectl delete failovers.alloydbomni.dbadmin.goog --all --all-namespaces
    kubectl delete restores.alloydbomni.dbadmin.goog --all --all-namespaces
    kubectl delete switchovers.alloydbomni.dbadmin.goog --all --all-namespaces
  4. AlloyDB Omni Kubernetes ์—ฐ์‚ฐ์ž๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

    helm uninstall alloydbomni-operator --namespace alloydb-omni-system
  5. AlloyDB Omni Kubernetes ์—ฐ์‚ฐ์ž์™€ ๊ด€๋ จ๋œ ๋ณด์•ˆ ๋น„๋ฐ€, ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค ์„ค๋ช…, ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

    kubectl delete certificate -n alloydb-omni-system --all
    kubectl get secrets --all-namespaces -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name,ANNOTATION:.metadata.annotations.cert-manager\.io/issuer-name | grep -E 'alloydbomni|dbs-al' | awk '{print $1 " " $2}' | xargs -n 2 kubectl delete secret -n
    kubectl delete crd -l alloydb-omni=true
    kubectl delete ns alloydb-omni-system

Kubernetes ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ ํฌ๊ธฐ ์กฐ์ ˆ

Kubernetes ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ์˜ CPU, ๋ฉ”๋ชจ๋ฆฌ ๋˜๋Š” ์Šคํ† ๋ฆฌ์ง€๋ฅผ ํฌ๊ธฐ ์กฐ์ ˆํ•˜๋ ค๋ฉด ํฌ๋“œ๋ฅผ ์ •์˜ํ•˜๋Š” ๋งค๋‹ˆํŽ˜์ŠคํŠธ์˜ resources ํ•„๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. AlloyDB Omni ์—ฐ์‚ฐ์ž๋Š” ์ƒˆ ์‚ฌ์–‘์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํฌ๋“œ์— ์ฆ‰์‹œ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

AlloyDB Omni ์—ฐ์‚ฐ์ž ๋งค๋‹ˆํŽ˜์ŠคํŠธ ๊ตฌ๋ฌธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ ๋งŒ๋“ค๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์‹คํ–‰ ์ค‘์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ฆฌ์†Œ์Šค ์ˆ˜์ •์—๋Š” ๋‹ค์Œ ์ œํ•œ์‚ฌํ•ญ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ์ง€์ •๋œ storageClass๊ฐ€ ๋ณผ๋ฅจ ํ™•์žฅ์„ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋””์Šคํฌ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋””์Šคํฌ ํฌ๊ธฐ๋ฅผ ์ค„์ผ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.