dataiotech Labs
Runbook #57
mongodb
AvailabilitySEV2 · CİDDİ BOZULMA15-30 dakika / 15-30 minsclusterAdmin / dbAdminAnyDatabase / root

MongoDB Assert Sayıları Artıyor: Sunucu Hatası mı İstemci Hatası mı?

Artan regular, msg, warning ve user assert sayaçlarını log ve uygulama hatalarıyla ilişkilendirip üretim etkisini ve güvenli müdahale adımlarını belirler.

İlişkili Metrik:M60
#asserts#serverStatus#mongod-log#errors

Operasyonel Güvenlik ve Risk Uyarısı

Bu runbook müdahale adımları içerir; birçok adım yazma etkilidir (KILL, terminate, DROP, RESIZE). Önce test ortamında deneyin, üretimde adımları sırayla ve doğrulayarak uygulayın.

🟢 Salt Okunur (Read-Only)·🟡 Geri Alınabilir (Reversible)·🔴 Yüksek Etkili / Geri Alınamaz (High Impact)

1. Belirti / Symptom

M60 regular/msg assert sayacında artış; logda tekrarlayan hata satırları veya uygulamada artan sorgu başarısızlıkları. `user` assert her zaman sunucu bozulması değildir, geçersiz uygulama komutu da olabilir.

2. Etki / Impact

Etkilenen işlemler başarısız olabilir; sürekli regular/msg artışı altında servisin sağlığı belirsizdir. Tek seferlik geçmiş sayaç değeri aktif olay kanıtı değildir.

3. Teşhis / Diagnosis

🟢 Salt Okunur1. Kümülatif sayaçların zaman içindeki **farkını** alın:
javascript
const s = db.serverStatus();
({ host: s.host, version: s.version, uptime: s.uptime, asserts: s.asserts });

Restart sonrası sıfırlanmayı hesaba katın; üye bazında değerlendirin.

🟢 Salt Okunur2. Aynı zaman aralığındaki `mongod` loglarını inceleyin. 4.4'ten itibaren yapılandırılmış JSON log biçimi yaygındır; 5.0/6.0/7.0 için hata kodu/mesajını logdan kontrol edin, sadece metne göre eşleme yapmayın.
🟢 Salt Okunur3. Sorunlu namespace ve sorgu kalıbını APM, slow logs veya profiler açık ise S85 ile eşleştirin; aktif uzun işlemler için S81'i kullanın. Profiler yoksa açmak ek yük yaratır, sırf assert için ilk müdahale olarak açmayın.
🟢 Salt Okunur4. `user` baskınsa istemci doğrulama/şema/izin hatalarına, `regular`/`msg` artışı loglarda internal veya kaynak sorununa, `warning` artışı bağlamına bakın. Sayaç tipi tanı değil, **sınıflandırma ipucudur**.

4. Müdahale / Response

🟡 Geri Alınabilir1. Kök hata belirli bir uygulama sürümüne bağlıysa onu geri alın; geçici olarak hata üreten batch'i durdurun. Hata kodu ve sunucu sürümüyle destek kaydı açın; hassas veri içeren logları paylaşmadan önce redakte edin.
🟡 Geri Alınabilir2. Disk/bellek/küme sağlığı bozuksa ilgili `mongo-disk-full`, `mongo-wiredtiger-cache-pressure` veya `mongo-election-instability` runbook'una geçin.
🔴 YÜKSEK RİSK / GERİ ALINAMAZ3. `mongod`'u yalnızca sayaçları sıfırlamak için yeniden başlatmayın; sorunu gizler. `--repair` çalıştırmayın, dbPath dosyası silmeyin; veri kaybı riski vardır.
🔴 YÜKSEK RİSK / GERİ ALINAMAZ4. Sürücü hatasını maskelemek için tüm assert sınıflarına genel retry eklemeyin; sadece geçici hata etiketlerinde kontrollü retry kullanın.

5. Doğrulama / Verification

M60 regular/msg **rate** baz çizgiye indi, logda aynı hata tekrarlanmıyor; uygulama hata oranı düştü, oplog/replika ve disk durumu sağlıklı.

6. Geri Alma / Rollback

Uygulama/batch değişikliğini önceki sürüme dönün. Önceden başarısız işlemler otomatik başarıya dönüşmez; idempotent yeniden işleme veya veri uzlaştırması gerekir.

Mühendislik Triadı: Doğrudan Teşhis Scriptleri

Bu runbook kriz müdahalesinde darboğazı tespit etmek için önerilen hazır SQL / Shell scriptleri:

Tüm Scriptler (100)
#81 · JAVASCRIPTPerformance

MongoDB'de Uzun Süren İşlemleri Bulma (currentOp)

5 saniyeden uzun süren aktif işlemleri plan özeti ve kilit bekleme bilgisiyle listeler. Yavaşlama anında sonlandırılacak işlemi bulmanıza yardımcı olur.

#85 · JAVASCRIPTPerformance

MongoDB Yavaş Sorguları Profiler ile Analiz Etme

system.profile verisini gruplayarak en yavaş sorgu kalıplarını ve COLLSCAN durumlarını ortaya çıkarır. İndeks eksikliklerini tespit etmek için idealdir.

Tetikleyen Alarmlar ve Metrikler
M60MongoDB Assert SayılarıMongoDB

Diğer MONGODB Runbook'ları