---
title: "Sentry için telefon araması uyarıları: kritik hatalar"
description: "Sentry'de arama eylemi yok. Issue uyarılarını webhook ile yönlendirip yalnızca üretimi bozan hataların telefonunuzu çaldırmasını sağlayın: kurulum ve filtreler."
date: 2026-09-25
author: Nooc
authorAvatarLink: /images/avatars/nooc.webp
authorLink: https://nooc.me
tags:
  - Sentry
  - hata izleme
  - telefon uyarıları
  - webhook
  - uyarı yorgunluğu
  - nöbet
---

# Sentry telefon uyarıları: yalnızca üretim bozulduğunda çalsın

Sentry sizi arayamaz. E-posta gönderebilir, Slack'e yazabilir ya da uyarıyı PagerDuty'ye devredebilir — ama yerleşik bir sesli arama eylemi yoktur. Bir olay yönetimi platformu satın almadan bunu elde etmenin yolu, Sentry issue uyarısını çalan bir webhook'a göndermektir: bir dahili entegrasyon oluşturun, onu bir Echobell arama kanalına yöneltin ve önüne bir filtre koyun ki yalnızca üretimi gerçekten bozan hatalar geçsin.

Bu rehber yolun tamamını kapsıyor: entegrasyon, uyarı kuralı, Sentry'nin gerçekten gönderdiği veri, onu okuyan şablonlar ve insanları vazgeçiren iki tuzak.

## Sentry kendi başına telefonunuzu neden çaldıramaz

Sentry issue uyarılarının eylemleri bildirimleri (e-posta, Slack, Discord, Microsoft Teams), bilet oluşturmayı (Jira, GitHub, Azure DevOps) ve bir çağrı ürününe devretmeyi (PagerDuty, Opsgenie) kapsar. Hepsi ya bakıyor olmanız gereken bir ekranda ya da başka bir platformdaki ücretli bir koltukta biter.

Saat 14.00'te sorun yok. Saat 03.00'te bir Slack mesajı sessizlikten ayırt edilemez, anlık bildirim de Rahatsız Etmeyin'e yenilir. İki saatlik gecikmenin gerçek para ettiği küçük hata kümesi için — ödeme adımının 500 döndürmesi, kimlik doğrulamanın herkesi reddetmesi, bir worker'ın işleri sessizce düşürmesi — çalan bir cihaz istersiniz.

Webhook tam da bu ek yeridir. Sentry, uyarı kuralı eylemi olarak herhangi bir HTTPS uç noktasını çağırabilir; [Echobell](https://apps.apple.com/app/apple-store/id6743597198?pt=128151925&ct=blog-sentry-phone-call-alerts-tr&mt=8) ise bu HTTP isteğini iOS Odak modunu delip geçen arama tarzı bir uyarıya dönüştürür.

## Gerekenler

- **Settings → Developer Settings** bölümüne erişebildiğiniz bir Sentry organizasyonu (owner veya manager)
- Kurulu Echobell ([App Store](https://apps.apple.com/app/apple-store/id6743597198?pt=128151925&ct=blog-sentry-phone-call-alerts-tr&mt=8) / [Google Play](https://play.google.com/store/apps/details?id=one.echobell.echobellandroid))
- Beş dakika

Sizin tarafınızda internetten erişilebilir olması gereken hiçbir şey yok. Giden isteği Sentry yapar; siz yalnızca alırsınız.

## Adım 1 — Çalan bir kanal oluşturun

Echobell'de bir kanal oluşturun ve bildirim türünü **Arama** yapın. İşin bütün amacı bu: arama kanalı bir bildirim gibi değil, gelen çağrı gibi davranır, böylece Odak ve Rahatsız Etmeyin modlarını aşar.

Ona gece 3'te de anlam taşıyacak şablonlar verin. Sentry'nin verisi derin iç içe olduğundan değişken yolları alışıldığından uzundur:

```
Başlık: {{data.event.level}}: {{data.event.metadata.type}}
Gövde: {{data.event.title}} — {{data.event.culprit}}
```

Gelişmiş ayarlarda **bağlantı şablonunu** ayarlayın ki bildirime dokununca ilgili issue açılsın:

```
{{data.event.web_url}}
```

Webhook URL'sini kanal ayrıntı ekranından kopyalayın. Şöyle görünür:

```
https://hook.echobell.one/t/<channel-token>
```

## Adım 2 — Sentry dahili entegrasyonu oluşturun

Sentry, webhook'u uyarı kuralı eylemi olarak yalnızca bir *entegrasyon* üzerinden sunar, dolayısıyla bir tane oluşturmanız gerekir. Bu bir form, bir servis değil — tek satır kod yazmayacaksınız.

1. **Settings → Developer Settings → Custom Integrations** yolunu izleyin
2. **Create New Integration → Internal Integration**
3. **Name**: `Echobell` (kuralda seçeceğiniz ad budur)
4. **Webhook URL**: 1. adımdaki kanal URL'si
5. **Alert Rule Action** anahtarını **açın**
6. **Permissions**: `Issue & Event` → **Read** yeterli
7. **Webhooks** altındaki **tüm** kutuları **işaretsiz** bırakın — aşağıdaki tuzağa bakın
8. Kaydedin

Dahili entegrasyon yalnızca kendi organizasyonunuzda geçerlidir ve kendini kurar. Ürettiği belirteç bu kurulumda hiç gerekmez.

## Adım 3 — Entegrasyonu kural eylemi olarak ekleyin

**Alerts → Create Alert → Issue Alert** yoluna gidin ya da mevcut bir kuralı düzenleyin.

**Then perform these actions** altında **Send a notification via an integration** ekleyin ve **Echobell**'i seçin.

**Action interval** değerini — "bu uyarı birden fazla kez tetiklendiyse" kısıtlayıcısını — en az `30 minutes` yapın. Varsayılan her tetiklemede gönderir ve dakikada 400 kez patlayan bir hata, siz kapatana kadar numaranızı çevirir.

Kaydedin, sonra kuralın testini çalıştırıp gerçek bir veri paketinin geldiğini görün; güvenmeden önce.

## Adım 4 — Gerçekte ne geldiğini bilin

Çoğu kurulum burada kırılır, çünkü veri paketi tahmin ettiğiniz biçimde değildir. Sentry her şeyi sarmalar:

```json
{
  "action": "triggered",
  "actor": { "id": "sentry", "name": "Sentry", "type": "application" },
  "data": {
    "event": {
      "event_id": "e4874d664c3540c1a32eab185f12c5ab",
      "level": "error",
      "title": "ReferenceError: heck is not defined",
      "culprit": "?(<anonymous>)",
      "platform": "javascript",
      "project": 1,
      "release": null,
      "metadata": { "type": "ReferenceError", "value": "heck is not defined" },
      "tags": [["level", "error"], ["browser", "Chrome 75.0.3770"]],
      "issue_id": "1117540176",
      "issue_url": "https://sentry.io/api/0/issues/1117540176/",
      "web_url": "https://sentry.io/organizations/test-org/issues/1117540176/events/e4874.../"
    },
    "triggered_rule": "Very Important Alert!"
  },
  "installation": { "uuid": "a8e5d2..." }
}
```

Tek bir şablon yazmadan önce bilinmesi gereken dört şey:

- **İşe yarayan her şey `data.event` altında.** `{{title}}` hiçbir şey basmaz; hatayı `{{data.event.title}}` basar.
- **`data.event.project` sayısal bir kimliktir, slug değil.** Bildirimde okunaklı bir proje adı istiyorsanız onu başlık şablonuna düz metin yazın ve proje başına bir kanal kullanın.
- **`environment` alanı yok.** Ortam, `data.event.tags` içinde `["environment", "production"]` çifti olarak gelir ve dizideki konumu sabit değildir — bu yüzden indeksle erişmeyin. Ortamı Sentry kuralında filtreleyin (5. adım).
- **`data.triggered_rule`** kuralın adıdır. Bir kanal birkaç kurala hizmet ediyorsa gövdede işe yarar.

Issue uyarılarında `Sentry-Hook-Resource` başlığı `event_alert` değerini taşır. Bunu bir kanal koşulunda zorunlu kılarak başka hiçbir şeyin kanalı çaldıramamasını sağlayabilirsiniz:

```
header["sentry-hook-resource"] == "event_alert"
```

## Adım 5 — Aramayı hak edene kadar daraltın

Her yeni issue'da çalan bir arama kanalı, hiç kanal olmamasından daha kötüdür: bir hafta içinde sessize alırsınız ve o zaman önemli olan tek seferde de çalmaz. İki yerde filtreleyin.

**Sentry'de**, kuralın conditions ve filters alanlarıyla:

| Amaç | Kural yapılandırması |
| --- | --- |
| Yalnızca üretim | Kuralın **Environment** değerini `production` yapın |
| Yalnızca gerçek arızalar | Filtre: `The event's level equals fatal` (ya da `error`) |
| Anlık dalgalanmalar için değil | Koşul: `The issue is seen more than 25 times in 1 hour` |
| Yalnızca kritik bir yol | Filtre: `The event's tags match transaction contains /checkout` |
| Yalnızca geri dönüşler | Koşul: `A resolved issue changes state from resolved to unresolved` |

**Echobell'de**, Sentry'nin ifade edemediği şeyler ya da bugün geçiremeyeceğiniz değişiklikler için kanal koşulunu emniyet ağı olarak kullanın:

```
data.event.level == "fatal" || data.event.level == "error"
```

Önem derecesini Sentry kuralında filtrelemek genelde daha iyidir, çünkü hız kısıtlaması da oradadır. Echobell'de filtrelemek ise tek bir Sentry kuralından iki aciliyet seviyesi çıkarmak istediğinizde daha iyidir.

## Adım 6 — Uyarılara daha sessiz bir kapı açın

Katmanlamanın amacı, telefon aramasının anlamını korumasıdır. **Zamana Duyarlı (Time Sensitive)** türünde ikinci bir Echobell kanalı oluşturun, eşiği daha düşük ikinci bir Sentry kuralı ekleyin ve onu ikinci bir dahili entegrasyona yöneltin (bir entegrasyon tek bir webhook URL'si taşır, dolayısıyla ikinci kanal ikinci bir entegrasyon ister).

Gerçek bir haftayı atlatan kurulum kabaca şöyle görünür:

| Sentry kuralı | Seviye / eşik | Echobell kanalı | Davranış |
| --- | --- | --- | --- |
| `prod-fatal` | `fatal`, üretim | Arama | Odak modunu delip çalar |
| `prod-error-spike` | `error`, 1 saatte 100'den fazla | Zamana Duyarlı | Kilit ekranına düşer, çalmaz |
| `new-issue-digest` | herhangi bir yeni issue | Normal | Sıradan bildirim, vakit olunca okunur |

## Yalnızca mesai dışında çalsın

Gündüz zaten Sentry'ye bakıyorsunuz. Echobell, koşullara UTC sistem saati değişkenleri sunar; böylece bir kanal ikinci bir Sentry kuralına gerek kalmadan saate göre farklı davranabilir:

```
data.event.level == "fatal" && (hour >= 17 || hour < 9)
```

Hafta sonunuz gerçekten tatilse gün denetimi de ekleyin:

```
data.event.level == "fatal" && (hour >= 17 || hour < 9 || dayOfWeek == 0 || dayOfWeek == 6)
```

Bunların hepsi UTC'dir, dolayısıyla sayıları kesinleştirmeden önce kendi saat diliminizden çevirin. [Koşul referansı](/tr/docs/conditions) tam değişken listesini içerir.

## İki tuzak

**Tuzak 1: Webhooks kutularını işaretlemek.** Dahili entegrasyonun birbirinden bağımsız iki webhook yolu vardır. **Alert Rule Action** anahtarı entegrasyonu uyarı kurallarında seçilebilir kılar — istediğiniz budur. **Webhooks** kutuları (`issue`, `error`, `comment`) ise sizi o kaynağın *her* olayına abone eder: organizasyon genelinde oluşturulan, çözülen, atanan, arşivlenen ya da yoksayılan her issue. `issue` kutusunu işaretlerseniz bir ekip arkadaşınız bir şeyi çözdüğünde telefonunuz çalar. Hepsini boş bırakın; o zaman webhook'u yalnızca uyarı kurallarınız tetikler.

**Tuzak 2: eski Webhooks eklentisini kullanmak.** Proje başına çalışan eski **Legacy Integrations → WebHooks** eklentisi hâlâ duruyor ve hâlâ çalışıyor; entegrasyon oluşturmadan URL yapıştırabildiğiniz için kestirme gibi görünüyor. Ancak veri paketi farklı ve daha düz bir biçimde, istekleri imzalanmıyor ve Sentry yeni kurulumları oradan uzaklaştırıyor. Onu kullanırsanız şablonlarınız yukarıdakilerden farklı değişken yollarına ihtiyaç duyar. Dahili entegrasyonu kullanın.

## Veri boyutu, hata fırtınaları ve kırpma

Büyük ölçekte bir şey ters gitmeden önce bilinmesi gereken üç sınır:

- **1 MiB gövde.** Echobell, 1 MiB'ı aşan tetikleyici gövdelerini HTTP 413 ile reddeder. Sentry verisi tam yığın izini ve istek bağlamını taşır, bu genelde onlarca kilobayt eder — ama büyük bir istek gövdesi olan bir olay sınıra yaklaşabilir. Sentry tarafında `max_alerts` gibi bir ayar yok; çözüm, SDK'nızın `beforeSend` kancasında büyük istek gövdelerini temizlemek. Zaten gizlilik açısından da istediğiniz şey budur.
- **Belirteç başına dakikada 120 istek.** Bunun üstünde tetikleyici `429` ile `RATE_LIMIT_EXCEEDED` ve bir `Retry-After` döndürür. Sizi sınırın altında tutan şey Sentry'nin action interval'ıdır; `30 minutes` fazlasıyla yeter.
- **1500 bayt bildirim gövdesi.** Daha uzunu cihaza ulaşmadan kırpılır. `data.event.title` artı `culprit` rahatça sığar; `data.event.exception` dökmek sığmaz ve kilit ekranında zaten okunmaz. Ayrıntıyı bağlantı şablonunun arkasında bırakın.

## Ekiple paylaşmak

Bir Echobell kanalına birden çok kişi abone olabilir ve her abone kendi bildirim türünü seçer. Böylece aynı Sentry kuralı nöbetteki mühendisin telefonunu çaldırırken diğerlerine sıradan bir bildirim olarak ulaşabilir — koltuk başına ücret yok, nöbet dizilimi yapılandırması yok.

Ama bu bir yükseltme politikası değildir. "Beş dakikada kimse onaylamazsa bir sonrakini ara" diye bir şey yok. Ona ihtiyacınız varsa gerçek bir nöbet platformu gerekir; Echobell onun altındaki iletim katmanını kapsar.

## Bu kurulumun vermediği şeyler

Açıkça söylemekte fayda var:

- **Onay yok.** Aramayı açmanız Sentry'ye hiçbir şey söylemez ve diğer abonelerin telefonlarını susturmaz.
- **Nöbet dizilimi ya da yükseltme yok.** Ya abone olan herkes alır ya da hiç kimse.
- **Sentry'ninkinin ötesinde tekilleştirme yok.** Gruplama ve kısıtlama Sentry kuralında olur; Echobell geleni iletir.
- **Çift yönlü eşitleme yok.** Issue'yu Sentry'de çözmek telefonunuzda hiçbir şeyi temizlemez.

Bunlar sizin için kırmızı çizgiyse doğru araç değil. Ama asıl ihtiyacınız "ödeme bozulduğunda beni uyandır" ise, bunu elde etmenin aşağı yukarı en ucuz güvenilir yolu budur.

## Sorun giderme

**Kural tetikleniyor ama hiçbir şey gelmiyor.** Entegrasyonda **Alert Rule Action**'ın açık olduğunu doğrulayın. Kapalıysa entegrasyon kuralın eylem listesinde hiç görünmez — ve açmadan önce kaydettiğiniz bir kural eski eylemi saklamaya devam eder.

**Bildirim geliyor ama boş.** Şablonunuz üst düzey anahtarları okuyor. Sentry her şeyi `data.event` altına yerleştirir.

**Beklemediğiniz şeyler için çalıyor.** Önce entegrasyondaki Webhooks kutularına bakın (Tuzak 1), sonra kuralın ortamının "All Environments" olarak kalıp kalmadığına.

**Aynı hata için defalarca çalıyor.** Sentry kuralının action interval değerini yükseltin. Echobell'in yeniden denemesi ayrı bir şeydir: uygulama ayarlarındaki **Başarısız aramayı yeniden dene**, kaçırdığınız bir aramayı tekrar çevirir.

**Test bile dahil hiçbir şey gelmiyor.** Echobell tarafını elemek için önce kanalı `curl` ile tetikleyin:

```bash
curl -X POST https://hook.echobell.one/t/<channel-token> \
  -H 'Content-Type: application/json' \
  -d '{"data":{"event":{"level":"fatal","title":"Test error","culprit":"manual test","metadata":{"type":"TestError"}}}}'
```

Bu çalıyor ama Sentry çalmıyorsa sorun kanalda değil, entegrasyondadır.

## Sık sorulan sorular

### Sentry doğrudan telefon araması yapabilir mi?

Hayır. Sentry'nin issue uyarı eylemleri bildirimler, bilet oluşturma ve çağrı ürünleriyle entegrasyonlardan ibarettir. Sesli arama harici bir servis gerektirir — ya PagerDuty gibi bir çağrı platformu ya da Echobell gibi çalan bir webhook alıcısı.

### Sentry uyarısı Rahatsız Etmeyin'i aşar mı?

Yalnızca arama tarzı bir uyarı olarak geldiğinde. Arama türündeki bir Echobell kanalı gelen çağrı gibi davranır ve iOS Odak ile Rahatsız Etmeyin bunu geçirir. Herhangi bir uygulamanın sıradan bildirimi geçmez.

### Webhook için ücretli bir Sentry planı gerekir mi?

Dahili entegrasyonlar ve uyarı kuralı eylemleri Sentry'nin Developer planından itibaren kullanılabilir. Webhook'un kendisi ek ücret getirmez.

### Şablon değişkenim neden boş?

Neredeyse her zaman yol çok kısa olduğu için. Uyarı verisi olayı `data.event` altına yerleştirir, dolayısıyla `{{title}}` değil `{{data.event.title}}` olmalı. Kanalı bir kez tetikleyin ve uygulamada kaydedilen istek gövdesine bakıp aldığınız tam biçimi görün.

### Yalnızca tek bir ortam için nasıl uyarı alırım?

Sentry uyarı kuralındaki **Environment** alanını ayarlayın. Bunu `data.event.tags` üzerinden okumaya çalışmayın — sırası garanti edilmeyen `[anahtar, değer]` çiftlerinden oluşan bir dizidir.

### Aynı hata için iki kişi aranabilir mi?

Evet. Kanalı paylaşın ve herkes istediği bildirim türüyle abone olsun. Onay mekanizması olmadığı için "arama"yı seçen herkes aranır.

### Filtrelemeyi Sentry'de mi Echobell'de mi yapmalı?

Mümkün olduğunda Sentry'de — kısıtlama ve ortam kapsamı da kuralda yaşar. Tek bir kuraldan iki aciliyet seviyesi istediğinizde, saat penceresine ihtiyacınız olduğunda ya da kuralı bugün değiştiremediğinizde Echobell'de.

## Özet

Kurulum dört parçadan oluşuyor: bir arama kanalı, **Alert Rule Action** açık ve Webhooks kutuları boş bir dahili entegrasyon, telefon aramasını hak edecek kadar dar bir uyarı kuralı ve `data.event`'i okuyan şablonlar. Bu sayfadaki geri kalan her şey, bir ay sonra o zilin hâlâ bir anlam taşıması için kurulumu yeterince dar tutmakla ilgili.

[Echobell'i iPhone için indirin](https://apps.apple.com/app/apple-store/id6743597198?pt=128151925&ct=blog-sentry-phone-call-alerts-tr&mt=8) ya da [Google Play'den edinin](https://play.google.com/store/apps/details?id=one.echobell.echobellandroid); gerçekten önemli bir şeyi bu yola emanet etmeden önce yukarıdaki `curl`'ü gönderin.

## İlgili yazılar

- [Kanal koşulları referansı](/tr/docs/conditions)
- [Webhook entegrasyonu rehberi](/tr/docs/webhook)
- [Geliştiriciler için uyarı yorgunluğu rehberi](/tr/blog/fix-alert-fatigue-developer-guide)
- [Prometheus Alertmanager telefon uyarıları](/tr/blog/alertmanager-phone-call-alerts)
- [Kritik uyarılar için iOS Odak modunu aşmak](/tr/blog/how-to-bypass-ios-focus-mode-for-critical-alerts)
