kubernetes:stackgres:monitoring
Összehasonlítás
A kiválasztott és az jelenlegi változat között az alábbi különbségek fordulnak elő:
| Előző változat mindkét oldalonElőző változatKövetkező változat | Előző változat | ||
| kubernetes:stackgres:monitoring [2026/06/10 12:46] – riba.zoltan | kubernetes:stackgres:monitoring [2026/06/10 14:38] (aktuális) – riba.zoltan | ||
|---|---|---|---|
| Sor 1: | Sor 1: | ||
| - | ====== Kubernetes StackGres ====== | + | ====== Kubernetes StackGres/ |
| - | ===== Állapot ellenőrzés, monitorozás | + | ===== Állapot ellenőrzés ===== |
| ==== Kubernetes állapot ellenőrzés ==== | ==== Kubernetes állapot ellenőrzés ==== | ||
| Sor 325: | Sor 325: | ||
| +--------------+-------------+---------+-----------+----+-------------+-----+------------+-----+ | +--------------+-------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| </ | </ | ||
| - | |||
| - | ===== Tesztelés ===== | ||
| - | |||
| ==== PostgreSQL állapot ellenőrzés ==== | ==== PostgreSQL állapot ellenőrzés ==== | ||
| Sor 356: | Sor 353: | ||
| </ | </ | ||
| - | Részletesebb megjelenítés | + | == Részletesebb megjelenítés |
| < | < | ||
| Sor 414: | Sor 411: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| - | * '' | + | * '' |
| * '' | * '' | ||
| * '' | * '' | ||
| Sor 428: | Sor 425: | ||
| === Replika állapot ellenőrzés === | === Replika állapot ellenőrzés === | ||
| - | Az ellenőrzés elvégezhető valamelyik replikán. A '' | + | Az ellenőrzés elvégezhető valamelyik replikán. A '' |
| < | < | ||
| Sor 446: | Sor 443: | ||
| pg_is_in_recovery | f | pg_is_in_recovery | f | ||
| </ | </ | ||
| + | |||
| + | ===== Monitorozás ===== | ||
| + | |||
| + | ==== Monitor szkriptek ==== | ||
| + | |||
| + | === PostgreSQL replikáció állapot === | ||
| + | |||
| + | A PostgreSQL állapotának ellenőrzését végző szkriptek első sorában meg kell adni a használni kívánt névteret. | ||
| + | |||
| + | == POD-ok ellenőrzése == | ||
| + | |||
| + | <file bash 01-check-pods.sh> | ||
| + | # | ||
| + | |||
| + | NAMESPACE=" | ||
| + | |||
| + | NOT_READY=$(kubectl get pods -n " | ||
| + | { | ||
| + | split($2, ready, "/" | ||
| + | if (ready[1] != ready[2] || $3 != " | ||
| + | |||
| + | } | ||
| + | }') | ||
| + | |||
| + | if [ -n " | ||
| + | echo " | ||
| + | echo " | ||
| + | exit 2 | ||
| + | fi | ||
| + | |||
| + | echo "OK - Minden pod és konténer megfelelő állapotban van" | ||
| + | |||
| + | exit 0 | ||
| + | </ | ||
| + | |||
| + | Futtatás eredménye | ||
| + | |||
| + | < | ||
| + | $ ./ | ||
| + | OK - Minden pod és konténer megfelelő állapotban van | ||
| + | </ | ||
| + | |||
| + | == StackGres/ | ||
| + | |||
| + | <file bash 02-check-stackgres-postgresql-status.sh> | ||
| + | # | ||
| + | |||
| + | NAMESPACE=" | ||
| + | CLUSTER_PREFIX=" | ||
| + | EXPECTED_PODS=3 | ||
| + | |||
| + | PODS=$(kubectl get pods -n " | ||
| + | |||
| + | if [ -z " | ||
| + | echo " | ||
| + | exit 2 | ||
| + | fi | ||
| + | |||
| + | FIRST_POD=$(echo " | ||
| + | |||
| + | PATRONI_STATUS=" | ||
| + | |||
| + | if [ -z " | ||
| + | echo " | ||
| + | exit 2 | ||
| + | fi | ||
| + | |||
| + | READY_COUNT=0 | ||
| + | POD_COUNT=0 | ||
| + | LEADER_COUNT=0 | ||
| + | REPLICA_COUNT=0 | ||
| + | DETAILS="" | ||
| + | |||
| + | for POD in $PODS ; do | ||
| + | POD_COUNT=$((POD_COUNT + 1)) | ||
| + | |||
| + | NODE=$(kubectl get pod " | ||
| + | PHASE=$(kubectl get pod " | ||
| + | READY=" | ||
| + | RESTARTS=" | ||
| + | ROLE=" | ||
| + | |||
| + | [ -z " | ||
| + | |||
| + | if [ " | ||
| + | READY_COUNT=$((READY_COUNT + 1)) | ||
| + | fi | ||
| + | |||
| + | case " | ||
| + | leader) | ||
| + | LEADER_COUNT=$((LEADER_COUNT + 1)) | ||
| + | ;; | ||
| + | replica) | ||
| + | REPLICA_COUNT=$((REPLICA_COUNT + 1)) | ||
| + | ;; | ||
| + | esac | ||
| + | |||
| + | DETAILS=" | ||
| + | done | ||
| + | |||
| + | UNIQUE_NODES=$(for POD in $PODS ; do kubectl get pod " | ||
| + | |||
| + | if [ " | ||
| + | echo " | ||
| + | exit 2 | ||
| + | fi | ||
| + | |||
| + | if [ " | ||
| + | echo " | ||
| + | exit 2 | ||
| + | fi | ||
| + | |||
| + | if [ " | ||
| + | echo " | ||
| + | exit 2 | ||
| + | fi | ||
| + | |||
| + | if [ " | ||
| + | echo " | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | if [ " | ||
| + | echo " | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | echo "OK - StackGres PostgreSQL rendben. Pods=${READY_COUNT}/ | ||
| + | |||
| + | exit 0 | ||
| + | </ | ||
| + | |||
| + | Futtatás eredménye | ||
| + | |||
| + | < | ||
| + | $ ./ | ||
| + | OK - StackGres PostgreSQL rendben. Pods=3/3, Leader=1, Replicas=2, Nodes=3/3. pg-cluster-0 role=leader node=kube01 ready=5/5 phase=Running restarts=0; pg-cluster-1 role=replica node=kube03 ready=5/5 phase=Running restarts=13; | ||
| + | </ | ||
| + | |||
| + | ==== Riport szkriptek ==== | ||
| + | |||
| + | === StackGres riport === | ||
| + | |||
| + | <file bash 00-report-stackgres-postgresql-status.sh> | ||
| + | # | ||
| + | |||
| + | NAMESPACE=" | ||
| + | |||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | |||
| + | echo -e "\n=== Kubernetes node-ok ===\n" | ||
| + | kubectl get nodes -o wide | ||
| + | |||
| + | |||
| + | echo -e "\n=== PostgreSQL pod-ok ===\n" | ||
| + | kubectl get pods -n " | ||
| + | |||
| + | |||
| + | echo -e "\n=== Patroni klaszter állapot ===\n" | ||
| + | LEADER_POD=$(kubectl get pods -n " | ||
| + | kubectl exec -n " | ||
| + | |||
| + | |||
| + | echo -e "\n=== PostgreSQL pod-ok elhelyezkedése ===\n" | ||
| + | printf "%-20s %-10s %-15s %-8s %-8s\n" | ||
| + | for POD in $(kubectl get pods -n " | ||
| + | NODE=$(kubectl get pod " | ||
| + | READY=$(kubectl get pod " | ||
| + | RESTARTS=$(kubectl get pod " | ||
| + | ROLE=$(kubectl exec -n " | ||
| + | printf "%-20s %-10s %-15s %-8s %-8s\n" | ||
| + | done | ||
| + | |||
| + | |||
| + | echo -e "\n=== Leader(ek) ===\n" | ||
| + | LEADERS=$(kubectl exec -n " | ||
| + | echo " | ||
| + | |||
| + | echo -e " | ||
| + | </ | ||
| + | |||
| + | Futtatás eredménye | ||
| + | |||
| + | < | ||
| + | $ ./ | ||
| + | ===================================================== | ||
| + | StackGres PostgreSQL klaszter állapot | ||
| + | Dátum: 2026. jún. 10., szerda, 15:10:21 CEST | ||
| + | ===================================================== | ||
| + | |||
| + | === Kubernetes node-ok === | ||
| + | |||
| + | NAME | ||
| + | kube01 | ||
| + | kube02 | ||
| + | kube03 | ||
| + | |||
| + | === PostgreSQL pod-ok === | ||
| + | |||
| + | NAME | ||
| + | pg-cluster-0 | ||
| + | pg-cluster-1 | ||
| + | pg-cluster-2 | ||
| + | |||
| + | === Patroni klaszter állapot === | ||
| + | |||
| + | + Cluster: pg-cluster (7635689612010042939) -------+----+-------------+-----+------------+-----+ | ||
| + | | Member | ||
| + | +--------------+-------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | | pg-cluster-0 | 10.244.0.9 | ||
| + | | pg-cluster-1 | 10.244.2.16 | Replica | streaming | 6 | | ||
| + | | pg-cluster-2 | 10.244.1.15 | Replica | streaming | 6 | | ||
| + | +--------------+-------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | |||
| + | === PostgreSQL pod-ok elhelyezkedése === | ||
| + | |||
| + | POD ROLE | ||
| + | pg-cluster-0 | ||
| + | pg-cluster-1 | ||
| + | pg-cluster-2 | ||
| + | |||
| + | === Leader(ek) === | ||
| + | |||
| + | pg-cluster-0 | ||
| + | |||
| + | ===================================================== | ||
| + | </ | ||
| + | |||
| ===== Tesztelés ===== | ===== Tesztelés ===== | ||
| Sor 591: | Sor 819: | ||
| </ | </ | ||
| + | ===== Mentés, helyreállítás ===== | ||
| + | |||
| + | === Előkészítő műveletek === | ||
| + | |||
| + | == Felhasználó és adatbázis létrehozás == | ||
| + | |||
| + | A mentés teszteléséhez szükséges felhasználó és adatbázisok létrehozása. | ||
| + | |||
| + | < | ||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-0 -c postgres-util -- bash | ||
| + | bash-4.4$ createuser eesztuser | ||
| + | bash-4.4$ createdb -O eesztuser eesztdb | ||
| + | bash-4.4$ createdb -O eesztuser eesztdb_restore | ||
| + | bash-4.4$ exit | ||
| + | exit | ||
| + | </ | ||
| + | |||
| + | Teszt tábla létrehozása, | ||
| + | |||
| + | < | ||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-0 -c postgres-util -- psql -U eesztuser -d eesztdb | ||
| + | psql (18.3 (OnGres 18.3-build-6.49)) | ||
| + | Type " | ||
| + | |||
| + | eesztdb=> | ||
| + | eesztdb(> | ||
| + | eesztdb(> | ||
| + | eesztdb(> | ||
| + | eesztdb(> | ||
| + | eesztdb(> | ||
| + | eesztdb(> | ||
| + | eesztdb(> | ||
| + | eesztdb(> | ||
| + | CREATE TABLE | ||
| + | eesztdb=> | ||
| + | eesztdb-> | ||
| + | eesztdb-> | ||
| + | eesztdb-> | ||
| + | eesztdb-> | ||
| + | eesztdb-> | ||
| + | eesztdb-> | ||
| + | eesztdb-> | ||
| + | eesztdb-> | ||
| + | INSERT 0 10000 | ||
| + | eesztdb=> | ||
| + | | ||
| + | ------- | ||
| + | 10000 | ||
| + | (1 row) | ||
| + | |||
| + | eesztdb=> | ||
| + | </ | ||
| + | |||
| + | ==== Mentő szkript ==== | ||
| + | |||
| + | A szkript kiolvassa a használt névteret, és az elsődleges POD-ot. | ||
| + | |||
| + | <file bash 03-stackgres-postgresql-backup.sh> | ||
| + | # | ||
| + | |||
| + | DEBUG=1 | ||
| + | TIMESTAMP=$(date +%Y%m%d_%H%M%S) | ||
| + | |||
| + | PGDATABASE=eesztdb | ||
| + | PGUSER=eesztuser | ||
| + | |||
| + | NAMESPACE=$(kubectl get sgcluster --no-headers -A | awk '{ print $1 }') | ||
| + | PRIMARY=$(kubectl get pod -n $NAMESPACE -l app=StackGresCluster, | ||
| + | |||
| + | if [ $DEBUG -gt 0 ] ; then | ||
| + | echo " | ||
| + | echo " | ||
| + | fi | ||
| + | |||
| + | if [ -z " | ||
| + | echo "Nem található primary pod" | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | kubectl exec -n " | ||
| + | </ | ||
| + | |||
| + | Futtatás eredménye | ||
| + | |||
| + | < | ||
| + | $ ./ | ||
| + | NAMESPACE: lapodb-postgres | ||
| + | PRIMARY: pg-cluster-0 | ||
| + | |||
| + | $ ls -1 | ||
| + | eesztdb_20260610_162054.sql | ||
| + | </ | ||
| + | |||
| + | ==== Helyreállító szkript ==== | ||
| + | |||
| + | A helyreállítás az '' | ||
| + | |||
| + | <file bash 03-stackgres-postgresql-restore.sh> | ||
| + | # | ||
| + | |||
| + | DEBUG=1 | ||
| + | |||
| + | if [ $# -ne 1 ] ; then | ||
| + | echo " | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | BACKUP_FILE=" | ||
| + | |||
| + | if [ ! -f " | ||
| + | echo "Nem található a mentési fájl: $BACKUP_FILE" | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | PGDATABASE=eesztdb_restore | ||
| + | PGUSER=eesztuser | ||
| + | |||
| + | NAMESPACE=$(kubectl get sgcluster --no-headers -A | awk '{ print $1 }') | ||
| + | PRIMARY=$(kubectl get pod -n " | ||
| + | |||
| + | if [ $DEBUG -gt 0 ] ; then | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | fi | ||
| + | |||
| + | if [ -z " | ||
| + | echo "Nem található primary pod" | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | kubectl exec -i -n " | ||
| + | </ | ||
| + | |||
| + | Futtatás eredménye | ||
| + | |||
| + | < | ||
| + | $ ./ | ||
| + | NAMESPACE: lapodb-postgres | ||
| + | PRIMARY: pg-cluster-0 | ||
| + | BACKUP_FILE: | ||
| + | SET | ||
| + | SET | ||
| + | SET | ||
| + | SET | ||
| + | SET | ||
| + | SET | ||
| + | | ||
| + | ------------ | ||
| + | |||
| + | (1 row) | ||
| + | |||
| + | SET | ||
| + | SET | ||
| + | SET | ||
| + | SET | ||
| + | SET | ||
| + | SET | ||
| + | CREATE TABLE | ||
| + | CREATE SEQUENCE | ||
| + | ALTER SEQUENCE | ||
| + | ALTER TABLE | ||
| + | COPY 10000 | ||
| + | | ||
| + | -------- | ||
| + | 10000 | ||
| + | (1 row) | ||
| + | |||
| + | ALTER TABLE | ||
| + | </ | ||
| + | |||
| + | ==== Ellenőrzés ==== | ||
| + | |||
| + | < | ||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-0 -c postgres-util -- psql -U eesztuser -d eesztdb -c " | ||
| + | | ||
| + | ------- | ||
| + | 10000 | ||
| + | (1 row) | ||
| + | |||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-0 -c postgres-util -- psql -U eesztuser -d eesztdb_restore -c " | ||
| + | | ||
| + | ------- | ||
| + | 10000 | ||
| + | (1 row) | ||
| + | </ | ||
kubernetes/stackgres/monitoring.1781095594.txt.gz · legutóbbi módosítás: – Szerkesztő: riba.zoltan
