PushizoDocs
Operasyon

Status sayfası ve izleme

status.json ve herkese açık durum sayfası, olay (incident) yönetimi, sağlık probları, Prometheus metrikleri, alarmlar, Grafana panoları, Loki logları ve sentetik işlemsel izleme.

Durum sayfası

  • Herkese açık: https://status.pushizo.com (kendi kurulumunuzda status alt alan adı) bileşen durumlarını ve açık olayları gösterir; e-posta ile abone olunabilir.
  • Veri ucu: GET /status.json (kimlik doğrulama yok) →
{
  "status": "operational",
  "checked_at": "2026-10-17T09:00:00Z",
  "components": [
    { "name": "api", "status": "operational" },
    { "name": "dashboard", "status": "operational" },
    { "name": "worker", "status": "operational" },
    { "name": "delivery", "status": "operational" },
    { "name": "sdk", "status": "operational" }
  ],
  "incidents": [{ "id": "inc_…", "title": "…", "status": "investigating", "severity": "minor", "components": ["delivery"], "started_at": "…", "updates": [] }]
}

Bileşen durumu operational, degraded (açık olay etkiliyor) ya da major_outage (DB/Redis erişilemiyor, worker kalp atışı yok) olabilir; genel status en kötü bileşene göre belirlenir. Olaylar platform admin panelinden açılır/güncellenir/kapatılır ve platform_incidents tablosunda tutulur; akış incident runbook'u.

Sağlık probları

UçAmaç
GET /healthzLiveness: süreç ayakta
GET /readyzReadiness: DB + Redis (+ depolama) erişilebilir; dışarıya kapalıdır (nginx 404)
GET /Servis bilgisi, sürüm, belge bağlantıları

Worker'lar Redis'e kalp atışı yazar; status.json içindeki worker/delivery bileşenleri bu kayıtlardan türetilir.

Metrikler (Prometheus /metrics)

MetrikAçıklama
http_request_duration_seconds{route,status}API gecikmesi
queue_depth{queue}, queue_jobs_total{queue,state}Kuyruk birikimi (öncelikli işler dahil)
provider_send_total{provider,outcome}, provider_latency_seconds{provider}Sağlayıcı sonuç ve gecikmesi
deliveries_total{channel,status}Teslimat sonuçları
webhook_deliveries_total{status}, webhook_delivery_latency_seconds, webhook_request_duration_seconds{outcome}Giden webhook'lar
messaging_feedback_total{source,type}, suppression_entries_total{channel,reason}E-posta/SMS geri bildirimi
active_subscriptions{app}Saatlik gauge
db_pool_in_useBağlantı havuzu
dispatcher_go_requests_total{outcome}Go dispatcher kullanılıyorsa
pushizo_backup_last_success_timestamp_seconds{kind}Yedek tazeliği (node-exporter textfile)
analytics_store_mismatch_total{method,reason}ClickHouse dual modunda fark

Postgres exporter pushizo_* uygulama metriklerini (kanal durumu, bekleyen/başarısız teslimat) sorgularla üretir.

Alarmlar ve panolar

Compose yığını Prometheus + Alertmanager (e-posta öncelikli, Slack isteğe bağlı) + Grafana (API, kuyruklar, sağlayıcılar, DB panoları) + Loki/Promtail (pino JSON, gizli bilgi maskeleme) + blackbox exporter (HTTPS probları, sertifika bitişi; www, grafana, storage dahil) içerir. Başlıca alarmlar: WorkerDown, RedisDown, ApiTransactionalLatencyHigh, kuyruk birikimi, sağlayıcı hata oranı, PushizoBackupStale (> 26 saat), PushizoBackupMetricMissing, sertifika bitişi. Alarm e-postası için infra/compose/secrets/smtp_password doldurulur.

Sentetik işlemsel izleme

scripts/synthetic.ts 15 dakikada bir (GitHub Actions synthetic.yml ya da kendi zamanlayıcınız) uçtan uca kontrol yapar: GET /healthz + GET /status.json → POST /v1/notifications (Idempotency-Key ile tek sentetik aboneliğe) → kabul süresi bütçesi (varsayılan 1000 ms) → GET /v1/notifications/{id} ile sent + delivered ≥ 1 (varsayılan 60 s). Kurulum ve başarısızlıkta izlenecek runbook'lar: sentetik izleme. Go-live kabulü: 7 gün (672 koşu) hatasız.

Hata izleme

SENTRY_DSN tanımlıysa API/worker hataları Sentry'ye gider (beforeSend ile gövde temizliği); dashboard tarayıcı hataları aynı origin tüneli /monitoring/client-error üzerinden iletilir.

İlgili runbook'lar

Kuyruk birikmesi · Sağlayıcı kesintisi · Yük testi · Kaos tatbikatı · Gerçek cihaz testi

Bu sayfada