Python, sistem yönetiminden DevOps'a, web uygulamalarından veri işlemeye kadar geniş bir yelpazede kullanılıyor. Bu ortamlarda kritik bir olay gerçekleştiğinde — bir servis çöktüğünde, bir hata eşiği aşıldığında, bir işlem başarısız olduğunda — bildirim genellikle e-posta veya Slack'e gidiyor. Gece kimse bakmıyorsa bu yeterli değil.
Python'dan Alertalk webhook'unu çağırmak birkaç satır kod meselesi. requests kütüphanesi yüklüyse hemen başlanabilir.
Temel Webhook Çağrısı
import requests
WEBHOOK_URL = "https://tr.alertalk.net/webhook/receive"
WEBHOOK_KEY = "buraya-alertalk-key-giriniz"
def sesli_alarm_gonder(telefon, mesaj):
headers = {
"X-Webhook-Key": WEBHOOK_KEY,
"Content-Type": "application/json"
}
payload = {
"phone_number": telefon,
"error_message": mesaj
}
response = requests.post(WEBHOOK_URL, json=payload, headers=headers)
return response.status_code
Bu fonksiyon projenizin herhangi bir yerine eklenebilir. Kritik bir koşul gerçekleştiğinde çağırmanız yeterli.
Sunucu Erişilebilirlik Kontrolü
Belirli bir sunucuya veya servise erişilip erişilemediğini kontrol eden ve erişilemezse telefon çağrısı başlatan script:
import requests
import socket
WEBHOOK_URL = "https://tr.alertalk.net/webhook/receive"
WEBHOOK_KEY = "buraya-alertalk-key-giriniz"
PHONE = "5XXXXXXXXX"
def sesli_alarm_gonder(mesaj):
headers = {
"X-Webhook-Key": WEBHOOK_KEY,
"Content-Type": "application/json"
}
payload = {
"phone_number": PHONE,
"error_message": mesaj
}
requests.post(WEBHOOK_URL, json=payload, headers=headers)
def sunucu_kontrol(host, port=80, timeout=5):
try:
sock = socket.create_connection((host, port), timeout=timeout)
sock.close()
return True
except (socket.timeout, ConnectionRefusedError, OSError):
return False
sunucular = [
{"host": "192.168.1.10", "port": 80, "ad": "Web Sunucusu"},
{"host": "192.168.1.20", "port": 3306, "ad": "Veritabani Sunucusu"},
{"host": "192.168.1.30", "port": 443, "ad": "API Sunucusu"},
]
for sunucu in sunucular:
if not sunucu_kontrol(sunucu["host"], sunucu["port"]):
sesli_alarm_gonder(
f"{sunucu['ad']} erisilemez durumda. "
f"IP: {sunucu['host']}, Port: {sunucu['port']}"
)
Web Uygulamasında Hata Yakalama
Flask veya Django gibi web uygulamalarında kritik hataları sesli alarma bağlamak:
import requests
import traceback
WEBHOOK_URL = "https://tr.alertalk.net/webhook/receive"
WEBHOOK_KEY = "buraya-alertalk-key-giriniz"
PHONE = "5XXXXXXXXX"
def sesli_alarm_gonder(mesaj):
headers = {
"X-Webhook-Key": WEBHOOK_KEY,
"Content-Type": "application/json"
}
payload = {
"phone_number": PHONE,
"error_message": mesaj
}
try:
requests.post(WEBHOOK_URL, json=payload, headers=headers, timeout=10)
except Exception:
pass
def kritik_islem():
try:
# Kritik işleminiz buraya
raise ValueError("Veritabani baglantisi kesildi")
except Exception as e:
hata_mesaji = f"Kritik hata: {str(e)}"
sesli_alarm_gonder(hata_mesaji)
raise
kritik_islem()
CPU ve Bellek İzleme
psutil kütüphanesi ile sistem kaynaklarını izleyip eşik aşıldığında alarm gönderme:
import requests
import psutil
import socket
WEBHOOK_URL = "https://tr.alertalk.net/webhook/receive"
WEBHOOK_KEY = "buraya-alertalk-key-giriniz"
PHONE = "5XXXXXXXXX"
CPU_ESIK = 90
BELLEK_ESIK = 85
HOSTNAME = socket.gethostname()
def sesli_alarm_gonder(mesaj):
headers = {
"X-Webhook-Key": WEBHOOK_KEY,
"Content-Type": "application/json"
}
payload = {
"phone_number": PHONE,
"error_message": mesaj
}
requests.post(WEBHOOK_URL, json=payload, headers=headers)
cpu = psutil.cpu_percent(interval=1)
bellek = psutil.virtual_memory().percent
if cpu >= CPU_ESIK:
sesli_alarm_gonder(
f"CPU alarmi: {HOSTNAME} sunucusunda CPU kullanimi yuzde {cpu}."
)
if bellek >= BELLEK_ESIK:
sesli_alarm_gonder(
f"Bellek alarmi: {HOSTNAME} sunucusunda bellek kullanimi yuzde {bellek}."
)
Cron ile Periyodik Çalıştırma
Script her 5 dakikada bir çalışacak şekilde cron'a eklenir:
*/5 * * * * /usr/bin/python3 /opt/scripts/sistem_alarm.py >> /var/log/sistem_alarm.log 2>&1
Python Alarm Senaryoları
| Senaryo | Kütüphane | Zorluk |
|---|---|---|
| HTTP servis kontrolü | requests | Kolay |
| Port erişilebilirlik | socket | Kolay |
| CPU / bellek izleme | psutil | Kolay |
| Veritabanı bağlantısı | psycopg2 / pymysql | Orta |
| Log dosyası izleme | watchdog | Orta |
| Uygulama hatası yakalama | try/except | Kolay |
Kimler için Uygundur?
Python kullanan geliştiriciler, DevOps mühendisleri ve sistem yöneticileri için idealdir. Mevcut Python script'lerine birkaç satır kod ekleyerek sesli alarm altyapısı kurulabilir. Özellikle özel izleme senaryoları veya uygulama seviyesi alarmlar için hazır monitoring araçlarına gerek duymadan hızlı bir çözüm sunar.
Adım Adım Kurulum
Alertalk hesabı oluşturma ve webhook anahtarı alma için: