Felhasználói eszközök

Eszközök a webhelyen


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ő:

Összehasonlító nézet hivatkozása

Előző változat mindkét oldalonElőző változat
Következő változat
Előző változat
kubernetes:stackgres:monitoring [2026/06/10 13:04] – riba.zoltankubernetes:stackgres:monitoring [2026/06/10 14:38] (aktuális) – riba.zoltan
Sor 1: Sor 1:
-====== Kubernetes StackGres ======+====== Kubernetes StackGres/PostgreSQL ======
  
 ===== Állapot ellenőrzés ===== ===== Állapot ellenőrzés =====
Sor 477: Sor 477:
 exit 0 exit 0
 </file> </file>
 +
 +Futtatás eredménye
 +
 +<code>
 +$ ./01-check-pods.sh 
 +OK - Minden pod és konténer megfelelő állapotban van
 +</code>
  
 == StackGres/PostgreSQL replikáció == == StackGres/PostgreSQL replikáció ==
Sor 567: Sor 574:
 exit 0 exit 0
 </file> </file>
 +
 +Futtatás eredménye
 +
 +<code>
 +$ ./02-check-stackgres-postgresql-status.sh 
 +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; pg-cluster-2 role=replica node=kube02 ready=5/5 phase=Running restarts=0;
 +</code>
 +
 +==== Riport szkriptek ====
 +
 +=== StackGres riport ===
 +
 +<file bash 00-report-stackgres-postgresql-status.sh>
 +#!/usr/bin/env bash
 +
 +NAMESPACE="lapodb-postgres"
 +
 +echo "====================================================="
 +echo "StackGres PostgreSQL klaszter állapot"
 +echo "Dátum: $(date)"
 +echo "====================================================="
 +
 +echo -e "\n=== Kubernetes node-ok ===\n"
 +kubectl get nodes -o wide
 +
 +
 +echo -e "\n=== PostgreSQL pod-ok ===\n"
 +kubectl get pods -n "$NAMESPACE" -o wide
 +
 +
 +echo -e "\n=== Patroni klaszter állapot ===\n"
 +LEADER_POD=$(kubectl get pods -n "$NAMESPACE" -o name | grep pg-cluster | head -1 | sed 's#pod/##')
 +kubectl exec -n "$NAMESPACE" "$LEADER_POD" -c patroni -- patronictl list 2>/dev/null || "ERROR: patronictl nem található"
 +
 +
 +echo -e "\n=== PostgreSQL pod-ok elhelyezkedése ===\n"
 +printf "%-20s %-10s %-15s %-8s %-8s\n" "POD" "ROLE" "NODE" "READY" "RESTARTS"
 +for POD in $(kubectl get pods -n "$NAMESPACE" -o name | grep pg-cluster | sed 's#pod/##') ; do
 +    NODE=$(kubectl get pod "$POD" -n "$NAMESPACE" -o jsonpath='{.spec.nodeName}')
 +    READY=$(kubectl get pod "$POD" -n "$NAMESPACE" -o jsonpath='{.status.containerStatuses[*].ready}' | awk '{c=0;for(i=1;i<=NF;i++) if($i=="true") c++; print c"/"NF}')
 +    RESTARTS=$(kubectl get pod "$POD" -n "$NAMESPACE" -o jsonpath='{.status.containerStatuses[*].restartCount}' | awk '{s=0;for(i=1;i<=NF;i++) s+=$i; print s}')
 +    ROLE=$(kubectl exec -n "$NAMESPACE" "$LEADER_POD" -c patroni -- patronictl list 2>/dev/null | awk -F'|' -v pod="$POD" '$2 ~ pod { gsub(/^[ \t]+|[ \t]+$/, "", $4) ; print tolower($4) }')
 +    printf "%-20s %-10s %-15s %-8s %-8s\n" "$POD" "${ROLE:-unknown}" "$NODE" "$READY" "$RESTARTS"
 +done
 +
 +
 +echo -e "\n=== Leader(ek) ===\n"
 +LEADERS=$(kubectl exec -n "$NAMESPACE" "$LEADER_POD" -c patroni -- patronictl list 2>/dev/null | awk -F'|' 'tolower($4) ~ /leader/ { gsub(/^[ \t]+|[ \t]+$/, "", $2) ; print $2 }')
 +echo "$LEADERS"
 +
 +echo -e "\n====================================================="
 +</file>
 +
 +Futtatás eredménye
 +
 +<code>
 +$ ./00-report-stackgres-postgresql-status.sh 
 +=====================================================
 +StackGres PostgreSQL klaszter állapot
 +Dátum: 2026. jún. 10., szerda, 15:10:21 CEST
 +=====================================================
 +
 +=== Kubernetes node-ok ===
 +
 +NAME     STATUS   ROLES                    AGE   VERSION   INTERNAL-IP       EXTERNAL-IP   OS-IMAGE                           KERNEL-VERSION                          CONTAINER-RUNTIME
 +kube01   Ready    control-plane,postgres   38d   v1.36.0   192.168.110.161   <none>        AlmaLinux 10.1 (Heliotrope Lion)   6.12.0-124.52.3.el10_1.x86_64 (amd64)   containerd://2.2.3
 +kube02   Ready    control-plane,postgres   38d   v1.36.0   192.168.110.162   <none>        AlmaLinux 10.1 (Heliotrope Lion)   6.12.0-124.52.3.el10_1.x86_64 (amd64)   containerd://2.2.3
 +kube03   Ready    control-plane,postgres   38d   v1.36.0   192.168.110.163   <none>        AlmaLinux 10.1 (Heliotrope Lion)   6.12.0-124.52.3.el10_1.x86_64 (amd64)   containerd://2.2.3
 +
 +=== PostgreSQL pod-ok ===
 +
 +NAME           READY   STATUS    RESTARTS        AGE    IP            NODE     NOMINATED NODE   READINESS GATES
 +pg-cluster-0   5/5     Running   0               128m   10.244.0.9    kube01   <none>           <none>
 +pg-cluster-1   5/5     Running   13 (118m ago)   37d    10.244.2.16   kube03   <none>           <none>
 +pg-cluster-2   5/5     Running   0               39m    10.244.1.15   kube02   <none>           <none>
 +
 +=== Patroni klaszter állapot ===
 +
 ++ Cluster: pg-cluster (7635689612010042939) -------+----+-------------+-----+------------+-----+
 +| Member       | Host        | Role    | State     | TL | Receive LSN | Lag | Replay LSN | Lag |
 ++--------------+-------------+---------+-----------+----+-------------+-----+------------+-----+
 +| pg-cluster-0 | 10.244.0.9  | Leader  | running   |  6 |             |     |            |     |
 +| pg-cluster-1 | 10.244.2.16 | Replica | streaming |  6 |   0/60002B0 |   0 |  0/60002B0 |   0 |
 +| pg-cluster-2 | 10.244.1.15 | Replica | streaming |  6 |   0/60002B0 |   0 |  0/60002B0 |   0 |
 ++--------------+-------------+---------+-----------+----+-------------+-----+------------+-----+
 +
 +=== PostgreSQL pod-ok elhelyezkedése ===
 +
 +POD                  ROLE       NODE            READY    RESTARTS
 +pg-cluster-0         leader     kube01          5/5      0       
 +pg-cluster-1         replica    kube03          5/5      13      
 +pg-cluster-2         replica    kube02          5/5      0       
 +
 +=== Leader(ek) ===
 +
 +pg-cluster-0
 +
 +=====================================================
 +</code>
  
  
Sor 713: Sor 819:
 </code> </code>
  
 +===== 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.
 +
 +<code>
 +$ 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
 +</code>
 +
 +Teszt tábla létrehozása, adatok feltöltése
 +
 +<code>
 +$ 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 "help" for help.
 +
 +eesztdb=> CREATE TABLE backup_test (
 +eesztdb(>     id           BIGSERIAL PRIMARY KEY,
 +eesztdb(>     created_at   TIMESTAMPTZ NOT NULL DEFAULT now(),
 +eesztdb(>     username     VARCHAR(50) NOT NULL,
 +eesztdb(>     email        VARCHAR(100),
 +eesztdb(>     amount       NUMERIC(12,2),
 +eesztdb(>     active       BOOLEAN DEFAULT true,
 +eesztdb(>     note         TEXT
 +eesztdb(> );
 +CREATE TABLE
 +eesztdb=> INSERT INTO backup_test
 +eesztdb-> (username,email,amount,active,note)
 +eesztdb-> SELECT
 +eesztdb->     'user' || g,
 +eesztdb->     'user' || g || '@example.com',
 +eesztdb->     round((random()*10000)::numeric,2),
 +eesztdb->     random() > 0.2,
 +eesztdb->     md5(random()::text)
 +eesztdb-> FROM generate_series(1,10000) g;
 +INSERT 0 10000
 +eesztdb=> SELECT count(*) FROM backup_test;
 + count 
 +-------
 + 10000
 +(1 row)
 +
 +eesztdb=> \q
 +</code>
 +
 +==== Mentő szkript ====
 +
 +A szkript kiolvassa a használt névteret, és az elsődleges POD-ot.
 +
 +<file bash 03-stackgres-postgresql-backup.sh>
 +#!/usr/bin/env bash
 +
 +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,role=primary -o jsonpath='{.items[0].metadata.name}')
 +
 +if [ $DEBUG -gt 0 ] ; then
 +    echo "NAMESPACE: $NAMESPACE"
 +    echo "PRIMARY: $PRIMARY"
 +fi
 +
 +if [ -z "$PRIMARY" ] ; then
 +    echo "Nem található primary pod"
 +    exit 1
 +fi
 +
 +kubectl exec -n "$NAMESPACE" "$PRIMARY" -c postgres-util -- pg_dump -U "$PGUSER" -d "$PGDATABASE" --no-owner --no-privileges > "$PGDATABASE"_"$TIMESTAMP".sql
 +</file>
 +
 +Futtatás eredménye
 +
 +<code>
 +$ ./03-stackgres-postgresql-backup.sh 
 +NAMESPACE: lapodb-postgres
 +PRIMARY: pg-cluster-0
 +
 +$ ls -1
 +eesztdb_20260610_162054.sql
 +</code>
 +
 +==== Helyreállító szkript ====
 +
 +A helyreállítás az ''eesztdb_restore'' adatbázist használja.
 +
 +<file bash 03-stackgres-postgresql-restore.sh>
 +#!/usr/bin/env bash
 +
 +DEBUG=1
 +
 +if [ $# -ne 1 ] ; then
 +    echo "Használat: $0 backupfile.sql"
 +    exit 1
 +fi
 +
 +BACKUP_FILE="$1"
 +
 +if [ ! -f "$BACKUP_FILE" ] ; then
 +    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 "$NAMESPACE" -l app=StackGresCluster,role=primary -o jsonpath='{.items[0].metadata.name}')
 +
 +if [ $DEBUG -gt 0 ] ; then
 +    echo "NAMESPACE: $NAMESPACE"
 +    echo "PRIMARY: $PRIMARY"
 +    echo "BACKUP_FILE: $BACKUP_FILE"
 +fi
 +
 +if [ -z "$PRIMARY" ] ; then
 +    echo "Nem található primary pod"
 +    exit 1
 +fi
 +
 +kubectl exec -i -n "$NAMESPACE" "$PRIMARY" -c postgres-util -- psql -U "$PGUSER" -d "$PGDATABASE" < "$BACKUP_FILE"
 +</file>
 +
 +Futtatás eredménye
 +
 +<code>
 +$ ./03-stackgres-postgresql-restore.sh eesztdb_20260610_162054.sql 
 +NAMESPACE: lapodb-postgres
 +PRIMARY: pg-cluster-0
 +BACKUP_FILE: eesztdb_20260610_162054.sql
 +SET
 +SET
 +SET
 +SET
 +SET
 +SET
 + set_config 
 +------------
 + 
 +(1 row)
 +
 +SET
 +SET
 +SET
 +SET
 +SET
 +SET
 +CREATE TABLE
 +CREATE SEQUENCE
 +ALTER SEQUENCE
 +ALTER TABLE
 +COPY 10000
 + setval 
 +--------
 +  10000
 +(1 row)
 +
 +ALTER TABLE
 +</code>
 +
 +==== Ellenőrzés ====
 +
 +<code>
 +$ kubectl exec -n $NAMESPACE -it pg-cluster-0 -c postgres-util -- psql -U eesztuser -d eesztdb -c "SELECT count(*) FROM backup_test"
 + count 
 +-------
 + 10000
 +(1 row)
 +
 +$ kubectl exec -n $NAMESPACE -it pg-cluster-0 -c postgres-util -- psql -U eesztuser -d eesztdb_restore -c "SELECT count(*) FROM backup_test"
 + count 
 +-------
 + 10000
 +(1 row)
 +</code>
kubernetes/stackgres/monitoring.1781096642.txt.gz · legutóbbi módosítás: – Szerkesztő: riba.zoltan