Dil / Lang:
← Ana Sayfa Entegrasyon Kılavuzları Kullanım Kılavuzu Blog Ücretsiz Başla →
🐧 Tüm scriptler standart bash ile çalışır. Bağımlılık yok — sadece curl gerekli. Ubuntu, Debian, RHEL, CentOS ve türevleri desteklenir.

Temel Fonksiyon

Tüm senaryolarda kullanılan temel fonksiyon. Kendi scriptlerinizin başına kopyalayın.

bash — temel fonksiyon
#!/bin/bash

ALERTALK_KEY="YOUR_WEBHOOK_KEY"
ALERTALK_URL="https://tr.alertalk.net/webhook/receive"

send_alert() {
    local phone="$1"
    local message="$2"

    curl -s -X POST "${ALERTALK_URL}" \
        -H "Content-Type: application/json" \
        -H "X-Webhook-Key: ${ALERTALK_KEY}" \
        -d "{\"phone_number\":\"${phone}\",\"error_message\":\"${message}\"}" \
        --max-time 10 \
        --silent
}

# Kullanim
send_alert "5XXXXXXXXX" "Test alarmi: entegrasyon basarili"

Hata Yönetimi

bash — retry ve hata kontrolü
send_alert() {
    local phone="$1"
    local message="$2"
    local retries=3
    local attempt=0

    while [ $attempt -lt $retries ]; do
        http_code=$(curl -s -o /dev/null -w "%{http_code}" \
            -X POST "${ALERTALK_URL}" \
            -H "Content-Type: application/json" \
            -H "X-Webhook-Key: ${ALERTALK_KEY}" \
            -d "{\"phone_number\":\"${phone}\",\"error_message\":\"${message}\"}" \
            --max-time 10)

        if [ "${http_code}" = "200" ]; then
            return 0
        fi

        attempt=$((attempt + 1))
        sleep 5
    done

    # 3 deneme basarisiz — loga yaz
    echo "$(date): Alertalk webhook basarisiz (HTTP ${http_code})" >> /var/log/alertalk.log
}

Gerçek Senaryolar

⚙️

Systemd Servis İzleme

Servis durduğunda otomatik sesli alarm — ExecStopPost ile

Systemd'nin ExecStopPost direktifi servisi durduğunda çalışacak komutu belirtir. Cron gerekmez — servis düşer düşmez alarm tetiklenir.

/etc/systemd/system/myapp.service
systemd service — ExecStopPost
[Unit]
Description=My Application
After=network.target

[Service]
Type=simple
User=www-data
ExecStart=/usr/bin/python3 /opt/myapp/app.py
Restart=on-failure
RestartSec=5

# Servis durduğunda Alertalk'a webhook gönder
ExecStopPost=/bin/bash -c \
    'curl -s -X POST "https://tr.alertalk.net/webhook/receive" \
    -H "Content-Type: application/json" \
    -H "X-Webhook-Key: YOUR_WEBHOOK_KEY" \
    -d "{\"phone_number\":\"5XXXXXXXXX\",\"error_message\":\"$(hostname) - myapp servisi durdu\"}" \
    --max-time 10'

[Install]
WantedBy=multi-user.target
bash — değişiklik sonrası uygula
systemctl daemon-reload
systemctl restart myapp
💡 Restart=on-failure ile systemd servisi otomatik yeniden başlatır. ExecStopPost her durumda çalışır.

Cron Job Başarısız Kontrol

Exit code kontrolü ile cron job başarısız olunca ara

bash — exit code kontrolü
#!/bin/bash
# /opt/scripts/backup.sh — cron'dan cagrilir

ALERTALK_KEY="YOUR_WEBHOOK_KEY"
PHONE="5XXXXXXXXX"
HOSTNAME=$(hostname)

# Asil islemi calistir
/usr/bin/rsync -az /data/ [email protected]:/backup/
EXIT_CODE=$?

if [ $EXIT_CODE -ne 0 ]; then
    curl -s -X POST "https://tr.alertalk.net/webhook/receive" \
        -H "Content-Type: application/json" \
        -H "X-Webhook-Key: ${ALERTALK_KEY}" \
        -d "{\"phone_number\":\"${PHONE}\",\"error_message\":\"${HOSTNAME} - Yedekleme basarisiz oldu (hata kodu: ${EXIT_CODE})\"}" \
        --max-time 10
fi

exit $EXIT_CODE
crontab -e
# Her gece 02:00'da calistir
0 2 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1
📊

Disk / CPU / RAM İzleme

Sistem kaynakları eşik değerini aşınca sesli alarm

bash — sistem kaynak izleme scripti
#!/bin/bash
# /opt/scripts/resource_check.sh

ALERTALK_KEY="YOUR_WEBHOOK_KEY"
PHONE="5XXXXXXXXX"
HOSTNAME=$(hostname)

# Esik degerleri (%)
DISK_THRESHOLD=85
CPU_THRESHOLD=90
RAM_THRESHOLD=90

send_alert() {
    curl -s -X POST "https://tr.alertalk.net/webhook/receive" \
        -H "Content-Type: application/json" \
        -H "X-Webhook-Key: ${ALERTALK_KEY}" \
        -d "{\"phone_number\":\"${PHONE}\",\"error_message\":\"$1\"}" \
        --max-time 10 --silent
}

# --- DİSK KONTROLU ---
while IFS= read -r line; do
    usage=$(echo "$line" | awk '{print $5}' | tr -d '%')
    mount=$(echo "$line" | awk '{print $6}')
    if [ "$usage" -ge $DISK_THRESHOLD ] 2>/dev/null; then
        send_alert "${HOSTNAME} - Disk dolu: ${mount} %${usage} kullanimda"
    fi
done < <(df -h | tail -n +2)

# --- CPU KONTROLU ---
cpu_idle=$(top -bn1 | grep "Cpu(s)" | awk '{print $8}' | tr -d '%id,')
cpu_usage=$(echo "100 - ${cpu_idle}" | bc | cut -d'.' -f1)
if [ "${cpu_usage}" -ge $CPU_THRESHOLD ] 2>/dev/null; then
    send_alert "${HOSTNAME} - CPU kullanimi kritik: %${cpu_usage}"
fi

# --- RAM KONTROLU ---
ram_total=$(free | grep Mem | awk '{print $2}')
ram_used=$(free | grep Mem | awk '{print $3}')
ram_usage=$(( ram_used * 100 / ram_total ))
if [ "${ram_usage}" -ge $RAM_THRESHOLD ]; then
    ram_free_mb=$(( (ram_total - ram_used) / 1024 ))
    send_alert "${HOSTNAME} - RAM kullanimi kritik: %${ram_usage}, kalan: ${ram_free_mb}MB"
fi
crontab -e — her 5 dakika
*/5 * * * * /bin/bash /opt/scripts/resource_check.sh
📄

Log Dosyası İzleme

tail + grep ile log dosyasında belirli pattern gelince ara

bash — gerçek zamanlı log izleme (daemon)
#!/bin/bash
# /opt/scripts/logwatch.sh — systemd service olarak calistir

ALERTALK_KEY="YOUR_WEBHOOK_KEY"
PHONE="5XXXXXXXXX"
HOSTNAME=$(hostname)
LOG_FILE="/var/log/myapp/app.log"

# Izlenecek kritik patternlar
PATTERNS=("CRITICAL" "FATAL" "OutOfMemoryError" "Connection refused")

# Log dosyasini gercek zamanli izle
tail -F "${LOG_FILE}" | while IFS= read -r line; do
    for pattern in "${PATTERNS[@]}"; do
        if echo "${line}" | grep -q "${pattern}"; then
            msg="${HOSTNAME} - Log alarmı [${pattern}]: $(echo ${line} | cut -c1-120)"
            curl -s -X POST "https://tr.alertalk.net/webhook/receive" \
                -H "Content-Type: application/json" \
                -H "X-Webhook-Key: ${ALERTALK_KEY}" \
                -d "{\"phone_number\":\"${PHONE}\",\"error_message\":\"${msg}\"}" \
                --max-time 10 --silent
            sleep 60   # 60 sn cooldown — spam onleme
            break
        fi
    done
done
/etc/systemd/system/alertalk-logwatch.service
systemd — log izleyiciyi servis olarak çalıştır
[Unit]
Description=Alertalk Log Watcher
After=network.target

[Service]
Type=simple
ExecStart=/bin/bash /opt/scripts/logwatch.sh
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
bash
systemctl daemon-reload
systemctl enable --now alertalk-logwatch
🔒

SSL Sertifika Bitiş Kontrolü

Sertifika sona ermeden 30/14/7 gün önce sesli uyarı

bash — ssl_check.sh
#!/bin/bash
# /opt/scripts/ssl_check.sh

ALERTALK_KEY="YOUR_WEBHOOK_KEY"
PHONE="5XXXXXXXXX"
HOSTNAME=$(hostname)
WARNING_DAYS=30   # kac gun kala uyari verilsin

# Kontrol edilecek domainler
DOMAINS=("alertalk.net" "example.com" "api.myapp.com")

for domain in "${DOMAINS[@]}"; do
    # SSL sertifika bitis tarihini al
    expiry=$(echo | openssl s_client -servername "${domain}" \
        -connect "${domain}:443" 2>/dev/null \
        | openssl x509 -noout -enddate 2>/dev/null \
        | cut -d= -f2)

    if [ -z "${expiry}" ]; then
        # Sertifikaya ulasilamiyor
        curl -s -X POST "https://tr.alertalk.net/webhook/receive" \
            -H "Content-Type: application/json" \
            -H "X-Webhook-Key: ${ALERTALK_KEY}" \
            -d "{\"phone_number\":\"${PHONE}\",\"error_message\":\"${domain} SSL sertifikasina ulasilamiyor\"}" \
            --max-time 10 --silent
        continue
    fi

    # Kalan gun hesapla
    expiry_epoch=$(date -d "${expiry}" +%s 2>/dev/null || date -j -f "%b %d %T %Y %Z" "${expiry}" +%s)
    now_epoch=$(date +%s)
    days_left=$(( (expiry_epoch - now_epoch) / 86400 ))

    if [ "${days_left}" -le $WARNING_DAYS ]; then
        curl -s -X POST "https://tr.alertalk.net/webhook/receive" \
            -H "Content-Type: application/json" \
            -H "X-Webhook-Key: ${ALERTALK_KEY}" \
            -d "{\"phone_number\":\"${PHONE}\",\"error_message\":\"${domain} SSL sertifikasi ${days_left} gun icinde sona eriyor\"}" \
            --max-time 10 --silent
    fi
done
crontab -e — her gün sabah 09:00
0 9 * * * /bin/bash /opt/scripts/ssl_check.sh
🌐

Website Uptime İzleme

curl ile HTTP durum kodu kontrolü, erişilemeyen sitede sesli alarm

bash — uptime_check.sh
#!/bin/bash
# /opt/scripts/uptime_check.sh

ALERTALK_KEY="YOUR_WEBHOOK_KEY"
PHONE="5XXXXXXXXX"
HOSTNAME=$(hostname)

# Izlenecek siteler
SITES=("https://alertalk.net" "https://api.myapp.com/health")

for site in "${SITES[@]}"; do
    http_code=$(curl -s -o /dev/null -w "%{http_code}" \
        --max-time 10 \
        --retry 2 \
        "${site}")

    if [ "${http_code}" != "200" ]; then
        # 200 degil — alarm
        msg="${site} erisemiyor (HTTP ${http_code}) - ${HOSTNAME}"

        curl -s -X POST "https://tr.alertalk.net/webhook/receive" \
            -H "Content-Type: application/json" \
            -H "X-Webhook-Key: ${ALERTALK_KEY}" \
            -d "{\"phone_number\":\"${PHONE}\",\"error_message\":\"${msg}\"}" \
            --max-time 10 --silent
    fi
done
crontab -e — her 3 dakika
*/3 * * * * /bin/bash /opt/scripts/uptime_check.sh
💡 Alertalk'ın kendi website izleme modülü Ankara ve Gebze'den çift probe ile kontrol yapar. Manuel script yerine panelden website ekleyebilirsiniz.

Diğer Entegrasyonlar