Yüzlerce Gürültü Cezası Arasında Boğulan Disk Alarmı

https://www.youtube.com/watch?v=fz-KSMZP1Dw

Yaz başlarında bir Pazartesi günü. İkimiz de bir türlü boşalmayan bir destek talebi kuyruğuyla boğuşurken, meslektaşım üretim veritabanı sunucusunda disk alanı ile ilgili bir destek talebini bellek alarmı olarak algılayıp kapatıyor. Bu işlem yaklaşık iki saniye sürüyor, ki bu da her destek talebi için ayrılan süreye kabaca denk geliyor.

Dikkatsiz değildi. Sistem tarafından aylarca ikimize de öğretilen şeyi aynen yapıyordu. İşte alarm yorgunluğunun içeriden görünümü bu.

O zamanlar, Türkiye'deki bir otomobil üreticisinin fabrikası adına küresel bir BT hizmetleri sağlayıcısı için çalışıyordum. Yaklaşık 300 Windows sunucusu vardı. Herkesin küresel standart dediği bir sistemle, başka bir ekip tarafından yönetilen bir izleme platformu da mevcuttu.

Kendi hava durumunu yaratan standart

Kural, bir slayta sığacak kadar basitti: Otomatik başlatmaya ayarlanmış her Windows hizmetini izleyin ve bunlardan biri çalışmadığında alarm verin.

Google Chrome bir güncelleme servisi kurar. Bu servis otomatik başlatmaya ayarlanır ve Chrome istediği zaman bu servisi başlatıp durdurur. 300 sunucunun 100'den fazlasında Chrome yüklüydü. Bu sistemdeki tarayıcı güncellemeleri zaten SCCM'den geliyordu, bu nedenle güncelleme programının nefes alıp vermekten başka yapacak faydalı bir işi yoktu.

İzleme sistemimiz, bu nefes alışverişlerinin her birini cezai işlem gerektiren bir olay olarak değerlendirdi.

Günde yüzlerce "hizmet durduruldu" talebi. İkimiz bunları kapatıyoruz, toplantılar sırasında bile, bir gözümüz telefonda, diğer elimiz kuyrukta. Bir ritim öğreniyorsunuz. Talebin içeriğini okumayı bırakıp şeklini okumaya başlıyorsunuz: konu satırı, sunucu adı, kapatma.

İkinci gürültü kaynağı

Aynı dönem, aynı hesap. Müşteri, SQL Server'da maksimum bellek sınırı belirlememize izin vermedi. Durum açıkça şöyle ifade edildi: "Parasını ödedim, hepsini kullanacağım."“

Bu nedenle, her gece raporlar oluşturulurken, veritabanı sunucuları yaklaşık on dakika boyunca 100% RAM ve CPU kullanımıyla çalışıyordu. Alarm gece yarısı çaldı. Vardiya ekibimiz yoktu. Sabahleyin birileri baktığında, her şey çoktan normale dönmüştü ve SLA saati, geç yanıt verdiğimiz için bize çoktan ceza kesmişti.

Biz daha mütevazı bir şey istedik. Sadece CPU veya RAM kullanımı en az bir saat boyunca 100% seviyesinde kalırsa kaynak alarmı verilmesini ve mesai saatleri dışındaki durumun farklı şekilde ele alınmasını rica ettik. İzleme ekibinden gelen cevap ise şuydu: "Özel bir ayar yapamam. Bunu herkes için yaparsam, her bölge kendi standardını belirler ve ben bunu yönetemem."“

Bu cevabı itiraf etmek istediğimden daha iyi anlıyorum. Her yerde uygulayabileceğiniz bir standardı yönetmek kolaydır. Kimsenin ayarlayamadığı bir standart ise standart değildir, bir hava sistemidir ve onunla tartışmak yerine ona göre giyinirsiniz.

Giydiğimiz kıyafet, toplu kapatmaydı. Aynı sunucuda aynı sorun için üç veya dört bilet normaldi. Bilet kapatmak bir eylem olmaktan çıkıp bir refleks haline gelmişti.

Var olan sinyal

Beni hâlâ rahatsız eden kısım bu. Disk alarmı kayıp değildi. Disk alanı izleme sistemi kurulmuştu, eşik değer tetiklenmişti, platform görevini yerine getirmişti.

Görevini tam olarak bir kez yerine getirdi. Alarm bir bilet haline dönüştürüldü ve o andan itibaren platform konuyu halledilmiş olarak kabul etti. Diskin boyutu hiç artmadığı için alarmın kendisi asla silinmedi. Ancak bir insan bileti kapattı ve her iki taraf da diğer tarafın aynı fikirde olup olmadığını asla kontrol etmedi.

24 saat sonra hiçbir hatırlatma yok. Bir hafta boyunca açık kalan bir alarm için hiçbir işlem yapılmıyor. Alarm temizlendiğinde bileti kapatan ve alarm hala aktifken kapatmayı reddeden bir kural yok. Açık bir alarm üç ay boyunca konsolda sessizce bekledi, zaten konuştuğuna emin bir şekilde.

Üç ay sonra

Üretim veritabanı sunucusundaki disk doldu. SQL hizmetleri durdu. Bununla birlikte fabrikadaki üretim de durdu. Zararın binlerce doları bulduğu bildirildi; bize böyle söylendi ve yanına koyabileceğim bir faturam yok.

Hemen diski uzattık, bu faydalı gibi görünse de aslında değildi. Hat zaten kesilmişti.

Kimse meslektaşımı suçlamadı ve şunu açıkça belirtmek istiyorum ki bu, yöneticilerin cömertliği değildi. Yöneticiler gürültüden haberdardı. Her ay aynı hizmet değerlendirmelerini okuyorlardı; bu değerlendirmelerde "neden geç yanıt verdiniz?" sorusu her ay soruluyor ve aynı kopyala-yapıştır cevabı veriliyordu: "Talep mesai saatleri dışında geldi, vardiya ekibimiz yok."“

Mutsuz bir müşteri, mutsuz bir personel ve kaybedilen para. Küresel standart işte bunu getirdi.

Neden kimse görmedi: iş yerinde alarm yorgunluğu

Teknik sebep şu ki, platform ilgili yazılım için normal davranış olan durum değişiklikleri konusunda uyarı verdi, kaynak alarmlarına süre eşiği uygulamadı, biletleri "ateşle ve unut" tarzında oluşturdu ve bilet durumu ile alarm durumu arasında hiçbir zaman uyum sağlamadı.

İnsan mantığı daha kısadır. İki kişi günde yüzlerce fişi okuyamaz, bu yüzden okumayı bırakırlar. Okumayı bıraktığınızda, her fiş bir öncekine benzer ve diskteki fiş hafızadaki fişe benzer. Gürültü, sinyali izleme sisteminden gizlemedi. Sinyali bizden gizledi.

İzlenmesi gerekmeyen şeyleri izlemek ek bir güvenlik sağlamaz. Aksine, izlemenin kendisini öldürür.

Onu ne yakalamış olabilirdi?

  • Bir gürültü bütçesi. Her alarm sınıfı için haftalık bilet sayısı tavanı belirleyin. Bu tavanı aşan her sınıf ya devre dışı bırakılır ya da eşiği yeniden yazılır ve bu kararın bir sorumlusu ve tarihi vardır.
  • Kaynak alarm süreleri için eşik değerler. Gece çalıştırılan bir toplu işlem sırasında on dakika boyunca CPU veya RAM'in 100% seviyesinde kullanılması bir rapor çalışması anlamına gelir. Bir saat boyunca kullanılması ise bir olay olarak değerlendirilir. Bu farkı kodlayın, SLA cezaları ödemekten kaçının.
  • Mesai saatleri dışında yapılacak işlerle ilgili açık bir politika belirlenmeli. Eğer vardiya ekibi yoksa, bu durum sözleşmede ve uyarı yönlendirmesinde belirtilmeli ve gece alarmına müdahale edecek birinin olduğu yanılsaması bırakılmalı.
  • Açık kalan alarmlar için yeniden bildirim ve üst kademeye bildirim. İlk bildirimden 24 saat sonra durum hala geçerliyse, sistem daha yüksek sesle başka birine tekrar uyarıda bulunur. "Zaten bir bildirim oluşturdum" durumu, kimsenin rahat edebileceği bir durum olmamalıdır.
  • Alarm durumuna bağlı otomatik kapanma. Bilet, yorgun bir insanın tıklamasıyla değil, alarm ortadan kalktığında kapanır. Alarm hala aktifse, bilet yeniden açılır.
  • Standart için belgelenmiş bir istisna yolu. Sohbet penceresinde istenen bir iyilik değil, kendi formu, onaylayıcısı ve SLA'sı olan bir talep; böylece "İstisnaları yönetemem" bir ret değil, bir süreç haline geliyor.

Sonuncusu siyasi bir madde ve diğer beşinin gerçekleşip gerçekleşmeyeceğine karar veren de aslında o.

Pazartesi günü, geçen haftanın alarm seslerini alarm sınıfına göre sayın, en gürültülü sınıfı bulun ve başka bir şeye ayar yapmadan önce onu devre dışı bırakın.

Kaynaklar

  • Yazarın birinci elden anlatımı. Herhangi bir dış kaynak kullanılmamıştır; şirket, müşteri, sunucu adları ve kesin tarihler bilerek belirtilmemiştir.