n8n ile Site Kesintisi İzleme ve AI'lı Uyarı Gönderme
Bir sabah uyandığınızda web sitenizin 6 saattir çevrimdışı olduğunu müşteri şikayetinden öğrenmek — geliştiricilerin en kaçındığı senaryolardan biri. Basit bir uptime monitörü bu riski dakikalara indirir. Bu rehberde n8n ile her 5 dakikada bir endpoint yoklayan, hata aldığında AI'ın olası nedeni özetlediği ve size Telegram'a aksiyon önerisiyle uyarı düşen bir akış kuracağız.
Neden n8n ile İzleme?
Pingdom, UptimeRobot gibi araçlar temel HTTP kontrolü yapar; ama alarm mesajı genellikle yalnızca "siteniz down" der. n8n'in farkı şu: hata yanıtını bir AI düğümüne sokarak "502 Bad Gateway — büyük olasılıkla uygulama sunucusu yanıt vermiyordur, container'ı yeniden başlatmayı deneyin" gibi yorumlanmış, aksiyona dönüştürülebilir mesajlar alabilirsiniz.
Üstelik n8n aynı akış içinde yüzlerce farklı entegrasyonu tetikleyebilir: bir GitHub Issue açmak, PagerDuty'ye olay bildirmek, Slack kanalına mesaj atmak veya bir cron scripti çalıştırmak gibi.
Akışın Genel Mimarisi
Schedule Trigger (her 5 dk)
└─▶ HTTP Request (endpoint'i yokla)
├─ [200 OK] → Hiçbir şey yapma (ya da opsiyonel "sağlıklı" logu)
└─ [hata / timeout] → AI/LLM Düğümü (nedeni özetle)
└─▶ Telegram (uyarı gönder)
Toplam 4 düğüm. Şimdi her birini kuralım.
Adım Adım Akış Kurulumu
1. Schedule Trigger — Her 5 Dakikada Bir Çalıştır
n8n canvas'ında "Add first step" butonuna tıklayın, Schedule Trigger düğümünü seçin.
- Trigger Interval:
Minutes - Minutes Between Triggers:
5
Daha sık izleme istiyorsanız 1 dakikaya kadar inebilirsiniz; kritik olmayan ortamlar için 10-15 dakika yeterlidir.
2. HTTP Request — Endpoint'i Yokla
Schedule Trigger'ın çıkışına HTTP Request düğümü ekleyin.
| Alan | Değer |
|---|---|
| Method | GET |
| URL | https://sizin-siteniz.com/health (veya ana sayfa) |
| Timeout | 10000 ms (10 saniye) |
| Response Format | JSON veya Text |
| Continue On Fail | Açık |
"Continue On Fail" etkin olmazsa akış 5xx'te durur ve IF dalınız çalışmaz. Muhakkak açık tutun.
Eğer sitenizin bir /health endpoint'i varsa oraya istek atmak daha temiz sonuç verir; yoksa / veya /api/status de işe yarar.
3. IF Düğümü — Başarılı mı Hatalı mı?
HTTP Request'in çıkışına IF düğümü ekleyin:
Koşul: {{ $json.statusCode }} is not equal to 200
Birden fazla "başarılı" kod tanımlamak istiyorsanız (örn. 200 ve 204):
{{ $json.statusCode >= 200 && $json.statusCode < 300 }} → false (hata dalı)
- True çıkışı → hata var, AI düğümüne git
- False çıkışı → her şey yolunda, akış burada biter (opsiyonel: bir "OK" logu yazabilirsiniz)
Timeout ve ağ hatalarında $json.statusCode tanımsız kalır; bu durumu da yakalamak için IF koşuluna şunu ekleyebilirsiniz:
{{ $json.statusCode === undefined || $json.statusCode >= 400 }}
4. AI/LLM Düğümü — Nedeni Özetle
IF'in True çıkışına AI Agent veya Basic LLM Chain düğümünü ekleyin.
System Prompt:
Sen bir site güvenilirlik mühendisisin. Verilen HTTP hata kodunu ve yanıt gövdesini analiz et.
Olası nedenleri kısaca Türkçe olarak listele ve geliştirici için bir sonraki adımı öner.
Yanıtını 3-5 cümleyle sınırla.
User Message (Expression olarak):
Endpoint: {{ $('HTTP Request').item.json.url }}
HTTP Durum Kodu: {{ $('HTTP Request').item.json.statusCode ?? 'Zaman aşımı / Ağ hatası' }}
Yanıt Gövdesi (ilk 500 karakter): {{ ($('HTTP Request').item.json.body ?? '').substring(0, 500) }}
Hata oluşma zamanı: {{ $now.toISO() }}
Model seçimi: GPT-4o Mini veya Claude Haiku gibi hızlı ve ekonomik bir model bu iş için idealdir; özet kısa olduğundan büyük modele gerek yoktur.
5. Telegram Düğümü — Uyarıyı Gönder
AI düğümünün çıkışına Telegram düğümü ekleyin.
- Credential: Telegram Bot API token'ınızı bağlayın (BotFather üzerinden alınır)
- Chat ID: Uyarıların düşeceği kişisel veya grup ID'si
- Text (Expression):
🚨 *Site Kesintisi Uyarısı*
🔗 Endpoint: {{ $('HTTP Request').item.json.url }}
❌ Durum: {{ $('HTTP Request').item.json.statusCode ?? 'Zaman aşımı' }}
🕐 Zaman: {{ $now.setZone('Europe/Istanbul').toFormat('dd.MM.yyyy HH:mm') }}
🤖 *AI Analizi:*
{{ $json.output }}
Parse Mode alanını Markdown olarak ayarlarsanız mesaj güzel biçimlenmiş gelir.
6. İyileştirme: Birden Fazla Endpoint İzleme
Birkaç URL'yi izlemek için akışın başına bir Code düğümü ekleyip URL listesini döndürün, ardından Split In Batches ile her URL'yi sırayla HTTP Request'e besleyin:
// Code düğümü — URL listesi
return [
{ json: { url: 'https://sizin-siteniz.com/health' } },
{ json: { url: 'https://api.sizin-siteniz.com/v1/status' } },
{ json: { url: 'https://dashboard.sizin-siteniz.com' } },
];
Split In Batches düğümünde Batch Size: 1 seçin; böylece her URL için HTTP Request ayrı ayrı çalışır ve sonuçlar birbirine karışmaz.
İpuçları ve Yaygın Hatalar
- Yanlış alarm (false positive) sorunları: Tek bir başarısız istek hemen alarm üretiyorsa gereksiz bildirim gürültüsü olabilir. IF koşulunu art arda 2 hata geldikten sonra tetiklenecek şekilde yapmak için n8n'in Wait düğümü + ikinci bir HTTP Request kombinasyonu kullanabilirsiniz.
- Timeout değerini abartmayın: 30 saniyelik timeout, 5 dakikalık aralıkta sorun yaratmaz ama 1 dakikalık aralıkta akışlar üst üste binebilir. Genel kural: timeout < aralık / 2.
- Kimlik doğrulamalı endpoint'ler: HTTP Request düğümünde Authentication sekmesinden Bearer token veya Basic Auth ekleyebilirsiniz; token'ı n8n Credentials'da saklayın, akış JSON'una gömmek yerine.
- Başarılı yanıtı da loglayın: Bir Set düğümüyle
{ "url": ..., "status": "ok", "timestamp": ... }verisini bir Google Sheet'e ya da PostgreSQL tablosuna yazarsanız uptime geçmişinizi kendiniz tutabilirsiniz.
AgentRoost'ta Bu Akışı 7/24 Çalıştırın
Yukarıdaki akışı lokal n8n veya VPS'te çalıştırmak isterseniz karşınıza şu sorunlar çıkar: sunucu bakımı, SSL sertifikası, uyku moduna geçen process, API anahtarı yönetimi. AgentRoost bu adımların tamamını ortadan kaldırır.
Nasıl başlarsınız:
- AgentRoost'a kaydolun — e-posta/şifre veya Google/Microsoft/Discord ile
- n8n framework'ünü seçin, instance'ınıza bir isim verin
- Yaklaşık 2 dakika içinde kendi n8n editörünüz
https://<id>.agentroost.appadresinde açılır — bu instance tamamen size ait - Yukarıdaki akışı kurun; AI/LLM düğümünü seçtiğinizde kimlik bilgisi alanı zaten bağlı gelir — herhangi bir API anahtarı girmenize gerek yok
- Activate düğmesine basın; akış bundan böyle 7/24 çalışır
Ne dahil: AI/LLM krediniz aboneliğe dahil. Sunucu yönetimi, SSL, Docker, uptime sorumluluğu — hepsi AgentRoost tarafında. Siz sadece akışı kurarsınız.
Fiyat: ayda $19.99'dan başlıyor, aylık, istediğiniz zaman iptal, 14 günlük iade garantisi.
Uptime izleme, n8n'in güçlü yönlerini öğrenmek için mükemmel bir başlangıç noktası: zamanlama, koşullu dallanma, harici API çağrısı ve bildirim — bunların hepsini tek bir akışta bir araya getiriyorsunuz. Akışınız bir kez kurulduğunda siz uyurken de çalışmaya devam eder.
Sıkça sorulan sorular
n8n'de HTTP Request düğümü hata kodunu nasıl algılar?
HTTP Request düğümünde 'Response Code' seçeneğini açıp 'Continue On Fail' etkin bırakırsanız, 4xx/5xx yanıtları bir hata nesnesi olarak akışa taşır. Ardından IF düğümüyle {{ $json.response.statusCode }} değerini kontrol ederek hata dalına yönlendirebilirsiniz.
AgentRoost'ta AI düğümü için ayrı bir API anahtarı almam gerekiyor mu?
Hayır. AgentRoost'ta AI/LLM düğümleri aboneliğe dahil kredilerle çalışır; OpenAI, Anthropic vb. için ayrıca hesap açmanıza gerek yok. Sadece n8n instance'ınızı açın ve AI düğümünü ekleyin — kimlik bilgisi alanı zaten bağlı gelir.
Aynı akışla birden fazla URL'yi izleyebilir miyim?
Evet. Birkaç yöntem var: (1) bir JSON dizisini Split In Batches düğümüyle döngüye alıp her URL için HTTP Request çalıştırabilirsiniz; (2) ya da her endpoint için ayrı bir Schedule Trigger + HTTP Request dalı kurabilirsiniz. İlk yöntem, izlenecek URL sayısı büyüdükçe daha yönetilebilir kalır.
AgentRoost'tan dilediğimde çıkabilir miyim? Verilerimi taşıyabilir miyim?
Evet. Abonelik aylık olup istediğiniz zaman iptal edilebilir; 14 günlük iade garantisi de var. n8n akışlarınızı Settings → Export menüsünden JSON olarak indirip başka bir n8n instance'ına (self-hosted veya başka bir bulut) kolayca aktarabilirsiniz.
Telegram yerine e-posta veya Slack'e uyarı gönderebilir miyim?
Kesinlikle. n8n'in Slack, Gmail, SMTP ve daha birçok entegrasyonu mevcut. Telegram düğümünü çıkarıp yerine Slack düğümü ekleyin ya da E-posta (SMTP) düğümüyle aynı AI özetini mail olarak gönderin. Akış yapısı değişmez, sadece son düğümü değiştirirsiniz.