PostgreSQL Patroni HEALTCHECK SCRIPT

İbrahim Yıldız
2 min readMay 8, 2024

PostgreSQL Patroni HEALTCHECK SCRIPT, yüksek erişilebilirlik sağlamak için kullanılan bir araçtır. Bu script, PostgreSQL yüksek erişilebilirlik kümelerinde (high availability clusters) çalışan sunucuların sağlığını düzenli olarak kontrol eder. Böylece sunucuların durumunu izler ve gerektiğinde otomatik olarak müdahale ederek sistemdeki hataları önler. Bu, PostgreSQL tabanlı uygulamaların kesintisiz çalışmasını sağlamak için önemli bir bileşendir.

#!/bin/bash

# Tüm komutları ve başlıklarını bir diziye yerleştir
commands=(
"Cluster Durumu: patronictl list --format=json"
"Aktif Node Sayısı: patronictl list --format=json | jq '.[].state' | grep -c 'running'"
"Standby Node Durumu: patronictl list --format=json | jq '.[].state' | grep -c 'running' -c 'stopped'"
"Cluster Sağlığı: patronictl list --format=json | jq '.[].health'"
"Replikasyon Durumu: patronictl list --format=json | jq '.[].state'"
"Standby Sunucuların Durumu: patronictl list --format=json | jq '.[].state'"
"Replication Slot Durumu: patronictl list --format=json | jq '.[].replication_slots'"
"Replikasyon Gecikmesi: patronictl list --format=json | jq '.[].lag'"
"WAL Arşivleme Durumu: patronictl list --format=json | jq '.[].state'"
"WAL Segment Sayısı: patronictl list --format=json | jq '.[].wal_segment'"
"Checkpoint Durumu: patronictl list --format=json | jq '.[].state'"
"Sistem Zamanı Senkronizasyonu: ntpstat"
"Arka Plan İşlemleri: ps -ef | grep postgres"
"Patroni Servis Durumu: systemctl status patroni"
"PostgreSQL Sürümü: psql --version"
"Sistem Kaynakları: cat /proc/cpuinfo && cat /proc/meminfo"
"Disk Kullanımı: df -h"
"Ağ Trafik Durumu: iftop"
"Bağlantı Sayısı: netstat -an | grep ESTABLISHED | wc -l"
"Uygulama İstatistikleri: patronictl list --format=json"
"Güvenlik Ayarları: cat /etc/postgresql/pg_hba.conf"
"Kimlik Doğrulama Ayarları: cat /etc/postgresql/pg_hba.conf"
"Parola Politikaları: cat /etc/security/pwquality.conf"
"Güvenlik Sertifikaları: ls -l /etc/ssl/certs"
"Güvenlik Duvarı Ayarları: iptables -L"
"SSL/TLS Konfigürasyonu: cat /etc/postgresql/postgresql.conf"
"Audit Logları: ls -l /var/log/postgresql"
"Log Dosyaları: ls -l /var/log/postgresql"
"Veri Yedekleme Durumu: patronictl list --format=json"
"Yedekleme Dosya Boyutları: du -sh /path/to/backup/directory"
"Yedekleme Frekansı: patronictl list --format=json"
"Yedekleme Saatleri: crontab -l"
"Yedekleme Depolama Alanı: df -h"
"Yedekleme Restorasyon Testleri: /path/to/test/script.sh"
"Geri Yükleme İşlemleri: /path/to/restore/script.sh"
"Veri Bütünlüğü Kontrolleri: pg_verify_checksums"
"Veritabanı İzleme Sistemleri: pg_stat_activity"
"Performans Metrikleri: pg_stat_statements"
"Uyarı ve Alarm Sistemleri: pg_stat_activity"
"Olay Günlükleri İzleme: ls -l /var/log/postgresql"
"Düzeltici Eylemler: /path/to/fix/script.sh"
"Otomatik Kurtarma Durumu: patronictl list --format=json"
"Servis Kesintileri: patronictl list --format=json"
"Yükseltme İşlemleri: /path/to/upgrade/script.sh"
"Uygulama Güncellemeleri: apt list --upgradable"
"Yama Uygulamaları: apt list --upgradable"
"Test Ortamları: ls -l /path/to/test/directory"
"Yedek Sunucu Durumu: /path/to/backup/server/status/script.sh"
)

# HTML dosyasına çıktıları yaz
cat <<EOF > server_status.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Server Status</title>
</head>
<body>
<h1>Server Status</h1>
EOF

# Tüm komutları çalıştır ve çıktıları HTML dosyasına yaz
for command in "${commands[@]}"; do
title=$(echo "$command" | cut -d ':' -f 1)
cmd=$(echo "$command" | cut -d ':' -f 2-)
output=$(eval "$cmd")
cat <<EOF >> server_status.html
<h2>$title</h2>
<pre>$output</pre>
EOF
done

# HTML dosyasının kapatılması
cat <<EOF >> server_status.html
</body>
</html>
EOF

echo "HTML dosyası oluşturuldu: server_status.html"

Umarım Faydalı Olmuştur

--

--

Responses (1)