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:

Webhook Entegrasyon Dokümantasyonu

Alertalk'ı Ücretsiz Deneyin