Fili parçalar halinde yeriz. Örneklerle uygulama durumunu izleme stratejisi

Herkese Merhaba!

Firmamız yazılım geliştirme ve sonrasında teknik destek konusunda faaliyet göstermektedir. Teknik destek yalnızca hataların düzeltilmesini değil aynı zamanda uygulamalarımızın performansının izlenmesini de gerektirir.

Örneğin, hizmetlerden biri çökerse, bu sorunu otomatik olarak kaydetmeniz ve çözmeye başlamanız ve memnun olmayan kullanıcıların teknik desteğe başvurmasını beklememeniz gerekir.

Küçük bir şirketimiz var, uygulamaları izlemeye yönelik herhangi bir karmaşık çözümü inceleyecek ve sürdürecek kaynaklarımız yok; basit ve etkili bir çözüm bulmamız gerekiyordu.

Fili parçalar halinde yeriz. Örneklerle uygulama durumunu izleme stratejisi

İzleme stratejisi

Bir uygulamanın işlevselliğini kontrol etmek kolay değildir; bu görev önemsiz değildir, hatta yaratıcı bile söylenebilir. Karmaşık bir çoklu bağlantı sistemini doğrulamak özellikle zordur.

Bir fili nasıl yiyebilirsin? Sadece parçalar halinde! Uygulamaları izlemek için bu yaklaşımı kullanıyoruz.

İzleme stratejimizin özü:

Uygulamanızı bileşenlere ayırın.
Her bileşen için kontrol kontrolleri oluşturun.

Bir bileşenin tüm kontrol kontrolleri hatasız olarak gerçekleştirilirse çalışır durumda olduğu kabul edilir. Bir uygulamanın tüm bileşenleri işlevselse sağlıklı olduğu kabul edilir.

Böylece herhangi bir sistem bir bileşenler ağacı olarak temsil edilebilir. Karmaşık bileşenler daha basit parçalara bölünür. Basit bileşenlerin kontrolleri vardır.

Fili parçalar halinde yeriz. Örneklerle uygulama durumunu izleme stratejisi

Karşılaştırmalar işlevsel testler gerçekleştirmeyi amaçlamaz, birim testler değildir. Kontrol kontrolleri, bileşenin mevcut anda nasıl hissettiğini, çalışması için gerekli tüm kaynakların mevcut olup olmadığını ve herhangi bir sorun olup olmadığını kontrol etmelidir.

Mucize diye bir şey yok; çoğu kontrolün bağımsız olarak geliştirilmesi gerekecek. Ancak korkmayın, çünkü çoğu durumda bir kontrol 5-10 satır kod gerektirir, ancak herhangi bir mantığı uygulayabilirsiniz ve kontrolün nasıl çalıştığını net bir şekilde anlayacaksınız.

İzleme sistemi

Diyelim ki uygulamayı bileşenlere ayırdık, her bileşen için kontroller hazırladık ve uyguladık, peki bu kontrollerin sonuçlarıyla ne yapmalı? Bazı kontrollerin başarısız olup olmadığını nasıl bileceğiz?

Bir izleme sistemine ihtiyacımız olacak. Aşağıdaki görevleri yerine getirecek:

  • Test sonuçlarını alın ve bunları bileşenlerin durumunu belirlemek için kullanın.
    Görsel olarak bu, bileşen ağacının vurgulanmasına benziyor. Fonksiyonel bileşenler yeşile, sorunlu olanlar ise kırmızıya döner.
  • Kutudan çıktığı anda genel kontroller gerçekleştirin.
    İzleme sistemi bazı kontrolleri kendisi gerçekleştirebilir. Neden tekerleği yeniden icat edelim, hadi kullanalım. Örneğin, bir web sitesi sayfasının açılıp açılmadığını veya sunucunun ping yapıp yapmadığını kontrol edebilirsiniz.
  • İlgili taraflara sorun bildirimleri gönderin.
  • İzleme verilerinin görselleştirilmesi, raporların, grafiklerin ve istatistiklerin sağlanması.

ASMO sisteminin kısa açıklaması

Bir örnekle açıklamak en doğrusu. ASMO sisteminin performansının izlenmesinin nasıl organize edildiğine bakalım.

ASMO otomatik bir meteorolojik destek sistemidir. Sistem, yol hizmeti uzmanlarının yolun buz çözücü malzemelerle nerede ve ne zaman işlenmesi gerektiğini anlamalarına yardımcı oluyor. Sistem yol kontrol noktalarından veri topluyor. Yol kontrol noktası, yol üzerinde ekipmanın kurulduğu yerdir: meteoroloji istasyonu, video kamera vb. Tehlikeli durumları tahmin etmek için sistem, dış kaynaklardan hava durumu tahminleri alır.

Fili parçalar halinde yeriz. Örneklerle uygulama durumunu izleme stratejisi

Dolayısıyla sistemin bileşimi oldukça tipiktir: web sitesi, temsilci, ekipman. İzlemeye başlayalım.

Sistemi bileşenlerine ayırma

ASMO sisteminde aşağıdaki bileşenler ayırt edilebilir:

1. Kişisel hesap
Bu bir web uygulamasıdır. En azından uygulamanın internette mevcut olup olmadığını kontrol etmeniz gerekir.

2. Veritabanı
Veritabanı, raporlama için önemli olan verileri depolar ve veritabanı yedeklerinin başarıyla oluşturulduğundan emin olmalısınız.

3. Sunucu
Sunucu derken, uygulamaların üzerinde çalıştığı donanımı kastediyoruz. HDD, RAM, CPU'nun durumunu kontrol etmek gerekir.

4. Temsilci
Bu, bir zamanlamaya göre birçok farklı görevi gerçekleştiren bir Windows hizmetidir. En azından hizmetin çalışıp çalışmadığını kontrol etmeniz gerekir.

5. Temsilci görevi
Bir temsilcinin çalıştığını bilmek yeterli değildir. Bir temsilci çalışabilir ancak kendisine verilen görevleri yerine getiremeyebilir. Ajan bileşenini görevlere ayıralım ve her bir ajan görevinin başarıyla çalışıp çalışmadığını kontrol edelim.

6. Yol kontrol noktaları (tüm MPC'lerin kapsayıcısı)
Çok sayıda yol kontrol noktası var, bu nedenle tüm MPC'leri tek bir bileşende birleştirelim. Bu, izleme verilerini okumayı daha kolay hale getirecektir. “ASMO sistemi” bileşeninin durumunu görüntülerken sorunların nerede olduğu hemen anlaşılacaktır: uygulamalarda, donanımda veya maksimum kontrol sisteminde.

7. Yol kontrol noktası (bir maksimum limit)
Bu MPC'deki tüm cihazların servis verilebilir olması durumunda, bu bileşenin servis verilebilir olduğunu kabul edeceğiz.

8. Cihaz
Bu, maksimum konsantrasyon sınırında kurulmuş bir video kamera veya hava durumu istasyonudur. Cihazın düzgün çalışıp çalışmadığını kontrol etmek gerekir.

İzleme sisteminde bileşen ağacı şu şekilde görünecektir:

Fili parçalar halinde yeriz. Örneklerle uygulama durumunu izleme stratejisi

Web Uygulama İzleme

Yani sistemi bileşenlere ayırdık, şimdi her bileşen için kontroller yapmamız gerekiyor.

Bir web uygulamasını izlemek için aşağıdaki kontrolleri kullanırız:

1. Ana sayfanın açılışını kontrol etme
Bu kontrol izleme sistemi tarafından gerçekleştirilir. Bunu yürütmek için sayfa adresini, beklenen yanıt parçasını ve maksimum istek yürütme süresini belirtiriz.

2. Alan adı ödeme son tarihini kontrol etme
Çok önemli bir çek. Bir alan adının ödemesi yapılmadığında kullanıcılar siteyi açamaz. Sorunun çözülmesi birkaç gün sürebilir, çünkü... DNS değişiklikleri hemen uygulanmaz.

3. SSL sertifikasını kontrol etme
Günümüzde hemen hemen tüm web siteleri erişim için https protokolünü kullanmaktadır. Protokolün doğru çalışması için geçerli bir SSL sertifikasına ihtiyacınız vardır.

İzleme sistemindeki “Kişisel Hesap” bileşeni aşağıdadır:

Fili parçalar halinde yeriz. Örneklerle uygulama durumunu izleme stratejisi

Yukarıdaki kontrollerin tümü çoğu uygulamada işe yarayacaktır ve kodlama gerektirmez. Bu çok güzel çünkü herhangi bir web uygulamasını 5 dakika içinde izlemeye başlayabilirsiniz. Aşağıda bir web uygulaması için gerçekleştirilebilecek ek kontroller verilmiştir ancak bunların uygulanması daha karmaşık ve uygulamaya özel olduğundan bu makalede bunları ele almayacağız.

Başka neleri kontrol edebilirsiniz?

Web uygulamanızı daha kapsamlı bir şekilde izlemek için aşağıdaki kontrolleri gerçekleştirebilirsiniz:

  • Dönem başına JavaScript hatalarının sayısı
  • Döneme ait web uygulaması tarafındaki (arka uç) hata sayısı
  • Başarısız web uygulaması yanıtlarının sayısı (yanıt kodu 404, 500 vb.)
  • Ortalama sorgu yürütme süresi

Bir Windows hizmetini izleme (aracı)

ASMO sisteminde aracı, arka planda zamanlanmış görevleri yürüten bir görev zamanlayıcı rolünü oynar.

Tüm aracı görevleri başarıyla tamamlanırsa aracı düzgün çalışıyor demektir. Bir aracıyı izlemek için onun görevlerini izlemeniz gerektiği ortaya çıktı. Bu nedenle “Agent” bileşenini görevlere ayırıyoruz. Her görev için izleme sisteminde ayrı bir bileşen oluşturacağız, burada "Ajan" bileşeni "ana" olacaktır.

Agent bileşenini alt bileşenlere (görevlere) ayırdık:

Fili parçalar halinde yeriz. Örneklerle uygulama durumunu izleme stratejisi

Böylece karmaşık bir bileşeni birkaç basit bileşene ayırdık. Şimdi her basit bileşen için kontroller yapmamız gerekiyor. İzleme sistemi, alt bileşenlerinin durumuna göre kendi durumunu bağımsız olarak hesaplayacağı için ana bileşen "Ajan"ın herhangi bir kontrolü olmayacağını lütfen unutmayın. Başka bir deyişle, tüm görevler başarıyla tamamlandıysa aracı başarıyla çalışıyor demektir.

ASMO sisteminde yüzden fazla görev var, her görev için benzersiz kontroller bulmak gerçekten gerekli mi? Elbette, her aracı görevi için kendi özel kontrollerimizi geliştirip uygularsak kontrol daha iyi olacaktır, ancak çoğu durumda evrensel kontrolleri kullanmak yeterlidir.

ASMO sistemi görevler için yalnızca evrensel kontroller kullanır ve bu, sistemin performansını izlemek için yeterlidir.

İlerleme durumu kontrol ediliyor
En basit ve en etkili kontrol yürütme kontrolüdür. Kontrol, görevin hatasız tamamlandığını doğrular. Tüm görevlerde bu kontrol bulunur.

Doğrulama algoritması

Her görev yürütme sonrasında, görev yürütme başarılıysa BAŞARI kontrolünün sonucunu izleme sistemine göndermeniz veya yürütme bir hatayla tamamlandıysa HATA'yı göndermeniz gerekir.

Bu kontrol aşağıdaki sorunları tespit edebilir:

  1. Görev çalışıyor ancak bir hata vererek başarısız oluyor.
  2. Görev çalışmayı durdurdu, örneğin dondu.

Bu sorunların nasıl çözüldüğüne daha ayrıntılı olarak bakalım.

Sorun 1 – Görev çalışıyor ancak bir hatayla başarısız oluyor
Aşağıda görevin 14:00 ile 16:00 arasında çalıştığı ancak başarısız olduğu bir durum görülmektedir.

Fili parçalar halinde yeriz. Örneklerle uygulama durumunu izleme stratejisi

Şekil, bir görev başarısız olduğunda izleme sistemine hemen bir sinyal gönderildiğini ve izleme sistemindeki ilgili kontrolün durumunun alarm haline geldiğini göstermektedir.

İzleme sisteminde bileşenin durumunun doğrulama durumuna bağlı olduğunu lütfen unutmayın. Kontrolün alarm durumu, tüm yüksek seviyeli bileşenleri alarm olarak değiştirecektir; aşağıdaki şekle bakın.

Fili parçalar halinde yeriz. Örneklerle uygulama durumunu izleme stratejisi

Sorun 2 - Görevin yürütülmesi durduruldu (dondu)
İzleme sistemi bir görevin takılıp kaldığını nasıl anlayacak?

Kontrol sonucunun geçerlilik süresi (örneğin 1 saat) vardır. Bir saat geçerse ve yeni bir test sonucu yoksa izleme sistemi test durumunu alarm olarak ayarlayacaktır.

Fili parçalar halinde yeriz. Örneklerle uygulama durumunu izleme stratejisi

Yukarıdaki resimde ışıklar saat 14'te kapatılmıştı. Saat 00:15'te izleme sistemi test sonucunun (00:14'ten itibaren) çürük olduğunu tespit edecektir, çünkü İlgililik süresi doldu (bir saat), ancak yeni bir sonuç yok ve kontrolü alarm durumuna geçirecek.

Saat 16:00'da ışıklar tekrar açıldı, program görevi tamamlayacak ve yürütme sonucunu izleme sistemine gönderecek, test durumu tekrar başarılı olacaktır.

Hangi kontrol alaka süresini kullanmalıyım?

İlgililik süresi, görev yürütme süresinden daha büyük olmalıdır. İlgililik süresini görev yürütme süresinden 2-3 kat daha uzun ayarlamanızı öneririm. Bu, örneğin bir görevin normalden uzun sürmesi veya birisinin programı yeniden yüklemesi durumunda yanlış bildirim almayı önlemek için gereklidir.

İlerleme durumu kontrol ediliyor

ASMO sistemi, saatte bir harici kaynaktan yeni bir tahmin indirmeye çalışan bir "Tahmini Yükle" görevine sahiptir. Yeni bir tahminin dış sistemde ne zaman ortaya çıktığı kesin olarak bilinmiyor ancak bunun günde 2 kez gerçekleştiği biliniyor. Birkaç saat boyunca yeni bir tahmin yoksa, bu normaldir, ancak bir günden fazla bir süredir yeni bir tahmin yoksa, bir yerlerde bir şeyler bozuldu demektir. Örneğin, harici bir tahmin sistemindeki veri formatı değişebilir, bu nedenle ASMO yeni bir tahmin yayını görmeyecektir.

Doğrulama algoritması

Görev, ilerleme kaydetmeyi başardığında (yeni bir hava durumu tahmininin indirilmesi) BAŞARI kontrolünün sonucunu izleme sistemine gönderir. Herhangi bir ilerleme olmazsa veya hata oluşursa izleme sistemine hiçbir şey gönderilmez.

Kontrolün, bu süre zarfında yeni ilerleme kaydedilmesinin garanti edileceği bir ilgi aralığı olmalıdır.

Fili parçalar halinde yeriz. Örneklerle uygulama durumunu izleme stratejisi

İzleme sistemi son tarama sonucunun geçerlilik süresi dolana kadar beklediği için sorunu gecikmeli olarak öğreneceğimizi lütfen unutmayın. Bu nedenle çekin geçerlilik süresinin çok uzun yapılmasına gerek yoktur.

Veritabanı izleme

ASMO sistemindeki veritabanını kontrol etmek için aşağıdaki kontrolleri gerçekleştiriyoruz:

  1. Yedekleme oluşturmanın doğrulanması
  2. Boş disk alanı kontrol ediliyor

Yedekleme oluşturmanın doğrulanması
Çoğu uygulamada, sunucunun arızalanması durumunda programı yeni bir sunucuya dağıtabilmeniz için güncel veritabanı yedeklerine sahip olmak önemlidir.

ASMO haftada bir yedek kopya oluşturur ve bunu depoya gönderir. Bu işlem başarıyla tamamlandığında başarı kontrolünün sonucu izleme sistemine gönderilir. Doğrulama sonucu 9 gün boyunca geçerlidir. Onlar. Yedeklemelerin oluşturulmasını kontrol etmek için yukarıda tartıştığımız “ilerleme kontrolü” mekanizması kullanılır.

Boş disk alanı kontrol ediliyor
Diskte yeterli boş alan yoksa veritabanı düzgün çalışamayacaktır, bu nedenle boş alan miktarını kontrol etmek önemlidir.

Sayısal parametreleri kontrol etmek için metriklerin kullanılması uygundur.

Metrikler değeri izleme sistemine iletilen sayısal bir değişkendir. İzleme sistemi eşik değerlerini kontrol ederek metrik durumunu hesaplar.

Aşağıda "Veritabanı" bileşeninin izleme sisteminde nasıl göründüğünün bir resmi bulunmaktadır:

Fili parçalar halinde yeriz. Örneklerle uygulama durumunu izleme stratejisi

Sunucu izleme

Sunucuyu izlemek için aşağıdaki kontrolleri ve ölçümleri kullanıyoruz:

1. Boş disk alanı
Disk alanı biterse uygulama çalışmayacaktır. 2 eşik değeri kullanıyoruz: ilk düzey UYARI, ikinci düzey ALARM'dır.

2. Saat başına yüzde cinsinden ortalama RAM değeri
Saatlik ortalamayı kullanıyoruz çünkü... nadir ırklarla ilgilenmiyoruz.

3. Saat başına ortalama CPU yüzdesi
Saatlik ortalamayı kullanıyoruz çünkü... nadir ırklarla ilgilenmiyoruz.

4.Ping kontrolü
Sunucunun çevrimiçi olup olmadığını kontrol eder. İzleme sistemi bu kontrolü yapabilir; kod yazmaya gerek yoktur.

Aşağıda “Sunucu” bileşeninin izleme sisteminde nasıl göründüğünün bir resmi bulunmaktadır:

Fili parçalar halinde yeriz. Örneklerle uygulama durumunu izleme stratejisi

Ekipman izleme

Verilerin nasıl elde edildiğini size anlatacağım. Her yol kontrol noktası (MPC) için görev planlayıcıda bir görev vardır, örneğin “Survey MPC M2 km 200”. Görev, her 30 dakikada bir tüm MPC cihazlarından veri alır.

İletişim kanalı sorunu
Ekipmanın çoğu şehir dışında bulunuyor, veri iletimi için istikrarlı bir şekilde çalışmayan bir GSM ağı kullanılıyor (bir ağ var veya yok).

Sık ağ arızaları nedeniyle, ilk başta izleme sırasında MPC anketini kontrol etmek şöyle görünüyordu:

Fili parçalar halinde yeriz. Örneklerle uygulama durumunu izleme stratejisi

Sorunlarla ilgili birçok yanlış bildirim olduğundan bunun işe yarayan bir seçenek olmadığı ortaya çıktı. Daha sonra her cihaz için bir "ilerleme kontrolü" kullanılmasına karar verildi; Cihaz hatasız olarak yoklandığında izleme sistemine yalnızca başarı sinyali gönderilir. İlgililik süresi 5 saat olarak ayarlandı.

Fili parçalar halinde yeriz. Örneklerle uygulama durumunu izleme stratejisi

Artık izleme, yalnızca cihaz 5 saatten fazla süreyle yoklanamadığında sorunlar hakkında bildirim gönderiyor. Yüksek olasılıkla bunlar yanlış alarmlar değil, gerçek sorunlardır.

Aşağıda ekipmanın izleme sisteminde nasıl göründüğünün bir resmi bulunmaktadır:

Fili parçalar halinde yeriz. Örneklerle uygulama durumunu izleme stratejisi

Önemli!
GSM ağı çalışmayı durdurduğunda tüm MDC cihazları yoklanmaz. İzleme sisteminden gelen e-posta sayısını azaltmak için mühendislerimiz, bileşen sorunlarıyla ilgili bildirimlere "Cihaz" yerine "MPC" türüyle abone olurlar. Bu, her cihaz için ayrı bir bildirim almak yerine her MPC için bir bildirim almanızı sağlar.

ASMO için nihai izleme şeması

Her şeyi bir araya getirelim ve nasıl bir izleme planımız olduğunu görelim.

Fili parçalar halinde yeriz. Örneklerle uygulama durumunu izleme stratejisi

Sonuç

Özetleyelim.
ASMO'nun performansını izlemek bize ne kazandırdı?

1. Kusur giderme süresi kısaldı
Daha önce kullanıcılardan kusurlar geldiğini duymuştuk ancak tüm kullanıcılar kusur bildirmiyor. Bir sistem bileşenindeki arızayı ortaya çıktıktan bir hafta sonra öğrendik. Artık izleme sistemi, bir sorun tespit edildiği anda bize sorunları bildiriyor.

2. Sistem kararlılığı arttı
Kusurlar daha erken giderilmeye başlandığı için sistem bir bütün olarak çok daha stabil çalışmaya başladı.

3. Teknik desteğe yapılan çağrıların sayısının azaltılması
Artık pek çok sorun, kullanıcılar daha farkına bile varmadan çözülüyor. Kullanıcılar teknik destekle daha az iletişime geçmeye başladı. Bütün bunların itibarımız üzerinde iyi bir etkisi var.

4. Artan müşteri ve kullanıcı sadakati
Müşteri sistemin kararlılığında olumlu değişiklikler fark etti. Kullanıcılar sistemi kullanırken daha az sorunla karşılaşırlar.

5. Teknik destek maliyetlerini azaltın
Herhangi bir manuel kontrol yapmayı durdurduk. Artık tüm kontroller otomatiktir. Daha önce sorunları kullanıcılardan öğreniyorduk; kullanıcının hangi sorundan bahsettiğini anlamak çoğu zaman zor oluyordu. Artık sorunların çoğu izleme sistemi tarafından bildiriliyor; bildirimler teknik verileri içeriyor ve bu da neyin nerede yanlış gittiğini her zaman açıkça ortaya koyuyor.

Önemli!
İzleme sistemini uygulamalarınızın çalıştığı sunucuya kuramazsınız. Sunucunun çökmesi durumunda uygulamalar çalışmayı durduracak ve bu konuda bilgi verecek kimse olmayacaktır.

İzleme sisteminin başka bir veri merkezinde ayrı bir sunucuda çalışması gerekir.

Yeni bir veri merkezinde özel bir sunucu kullanmak istemiyorsanız bulut izleme sistemini kullanabilirsiniz. Şirketimiz Zidium bulut izleme sistemini kullanıyor ancak siz başka herhangi bir izleme sistemini de kullanabilirsiniz. Bulut izleme sisteminin maliyeti, yeni bir sunucu kiralamaktan daha düşüktür.

Öneriler:

  1. Uygulamaları ve sistemleri bir bileşen ağacı biçiminde mümkün olduğunca ayrıntılı bir şekilde parçalayın, böylece nerede ve neyin kırıldığını anlamak uygun olacak ve kontrol daha eksiksiz olacaktır.
  2. Bir bileşenin işlevselliğini kontrol etmek için testleri kullanın. Tek bir karmaşık kontrol yerine birçok basit kontrolü kullanmak daha iyidir.
  3. Metrik eşikleri kodla yazmak yerine izleme sistemi tarafında yapılandırın. Bu sizi uygulamayı yeniden derlemek, yeniden yapılandırmak veya yeniden başlatmak zorunda kalmaktan kurtaracaktır.
  4. Özel kontroller için, bazı kontrollerin tamamlanması normalden biraz daha uzun sürdüğünden yanlış bildirim almayı önlemek amacıyla bir alaka süresi marjı kullanın.
  5. İzleme sistemindeki bileşenlerin yalnızca kesin bir sorun olduğunda kırmızıya dönmesini sağlamaya çalışın. Boş yere kırmızıya dönerlerse, izleme sisteminin bildirimlerine dikkat etmeyi bırakacaksınız, anlamı kaybolacaktır.

Henüz bir izleme sistemi kullanmıyorsanız başlayın! Göründüğü kadar zor değil. Kendi yetiştirdiğiniz yeşil malzemeler ağacına bakmanın tadını çıkarın.

İyi şanslar.

Kaynak: habr.com

Yorum ekle