İçeriğe geç

Sistem Sağlığı

Yönetim → Sistem Sağlığı → Genel Bakış, kurulumun kendisi hakkında bildiklerini tek sayfada gösterir: sağlık denetimleri, sürüm ve çalışma süresi, inSCADA süreci ve üzerinde çalıştığı makine, son 24 saatin kaynak geçmişi, sertifika ve lisansın kalan günleri, küme, bağlı olmayan bağlantılar, script’ler, işler, en sık tekrarlanan hatalar ve destek için tanılama dosyaları.

Bir durum ekranıdır, ayar değil: hiçbir şeyi değiştirmez. Sayfa kendiliğinden yenilenmez; her okuma sunucuda tüm sağlık denetimlerini çalıştırdığı için yalnızca açıldığında ve Yeniden Yükle ile okunur. Sağ üstte Son denetim zamanı yazar.

YetkiNe sağlar
VIEW_SYSTEM_HEALTHSayfanın kendisi. Bildirim e-postaları da bu yetkiyi taşıyan hesaplara gider.
VIEW_SYSTEM_DIAGNOSTICSTanılama kartı: sunucu logu, thread dump, destek paketi.

İkisi de kurulum genelindedir ve varsayılan alanın yönetici rolünde bulunur; tek süreç, tek JVM, tek sertifika ve tek lisans her alan için cevap verdiğinden bu, kurulumun görünümüdür. Bir kiracı alanının yöneticisi bu yetkileri taşımaz; kendi alanının durumunu zaten gördüğü yerlerde görür (İş İzleyici, bağlantı durum ekranları).

Tanılama ayrı bir yetkidir, çünkü sunucu logu her alanın satırlarını, hesap adlarını, cihaz adreslerini taşır; VIEW_SYSTEM_HEALTH tek başına onu açmaz.

Durum ve “Çalışır durumda olmayan denetimler”

Section titled “Durum ve “Çalışır durumda olmayan denetimler””

Sayfanın üstünde kurulumun genel durumu ve, iyi değilse, Çalışır durumda olmayan denetimler: listesi durur. Durumlar en kötüden iyiye:

DurumAnlamı
ÇalışmıyorBir denetim başarısız: bir veri deposu yanıt vermiyor, disk fiilen dolu, lisans geçersiz… Dış izlemede HTTP 503.
Hizmet dışıBir denetim kendini hizmet dışı bildiriyor. Dış izlemede HTTP 503.
UyarıBir şey bozulmaya gidiyor, ama sistem çalışıyor. Dış izlemede yine HTTP 200.
ÇalışıyorHer şey yolunda.
BilinmiyorDenetimin okuyacağı bir değer yok (henüz ölçülmedi, bu platformda raporlanmıyor, yapılandırılmamış). Genel durumu değiştirmez ve e-posta göndermez.

Genel durum, denetimlerin en kötüsüdür. Bağlantılar, İşler, Script’ler, kaynak geçmişi ve en sık hatalar genel durumu değiştirmez: onlar gösterilir, yargılanmaz.

Durumun altındaki satır, sağlık değişikliklerinin e-postayla gidip gidemeyeceğini söyler:

  • “Sağlık değişiklikleri N adrese e-postayla gönderiliyor.”
  • “Bildirimler gönderilemiyor: uygulama e-postası yapılandırılmamış.” — Uygulama E-postası ayarlarını aç bağlantısıyla.
  • “Bildirimler gönderilemiyor: Sistem Sağlığı erişimi olan hiç kimsenin e-posta adresi yok.”
  • E-posta adresi olmayan hesaplar sayılır: “Sistem Sağlığı erişimi olan N hesabın e-posta adresi yok; bu hesaplara bildirim gitmiyor.”

Ne zaman ve neyin gönderildiği aşağıda: E-posta bildirimleri.

Denetimler, neyi izlediklerine göre gruplanmış kutucuklar olarak gösterilir; her biri durumunu ve en çok şey söyleyen tek ayrıntısını taşır, Ayrıntıları göster gerisini açar.

GrupDenetimUyarıÇalışmıyor
AltyapıVeritabanı (konfigürasyon) — PostgreSQL, bu düğümün kullandığı haliyle—3 saniyede yanıt yok, bağlantı hatası, bağlantı havuzu tükendi ya da 60 saniyedir hiç denetlenemedi
Redis (canlı değerler) — canlı değerler, oturumlar, alarm durumu; kümede liderlik kaydı—Aynı kural
InfluxDB (kayıtlı değerler) — kaydedilen değerler—Aynı kural. Yanlış bir parola ya da eksik veritabanı burada değil, InfluxDB yazma kaybında görünür.
MakineDisk alanı—Boş alan Disk dolu eşiğinin (varsayılan 5 GB) altında: PostgreSQL, InfluxDB ve log yazamamak üzere
Boş disk alanıBoş alan diskin %10’unun altındaHiçbir zaman
Makinede kullanılan bellek15 dakika boyunca her ölçümde %90’ın üstündeHiçbir zaman
Makine CPU’su15 dakika boyunca her ölçümde %90’ın üstündeHiçbir zaman
GüvenlikTLS sertifikaları—Sunulan sertifika geçersiz (süresi dolmuş ya da henüz geçerli değil)
Proxy güvenliği—Ters vekil kipinde, ama sunucu iletilen başlıkları okumuyor
LDAP bağlantısı (LDAP açıkken)—Dizin yanıt vermiyor; yapılandırılmamışsa Bilinmiyor
Lisans—Lisans geçersiz ya da süresi dolmuş
Küme (kümede)KümeBir Sentinel ya da hakem yanıt vermiyorLider yok
Küme replikasyonuHiçbir şey gönderilmiyor ya da yedek uzun süredir yokBir kayıt kalıcı olarak gönderilemedi
İş parçacığı havuzlarıİşlerin iş parçacığı havuzu, Script’lerin iş parçacığı havuzuHavuz %80 doluHavuz %95 dolu ya da kapanıyor
VeriInfluxDB yazma kaybıKayıtlı değerler InfluxDB’ye ulaşmadan düşürüldü—
Web sunucusuHTTP portları — uygulamanın kendi portları, 30 saniyede bir içeriden denenir. Cihaz bağlantılarına bakmaz.Ana port dışındaki bir port (örneğin sandbox) yanıt vermiyorAna port yanıt vermiyor

Bu listede adı geçmeyen bir denetim — bir kurulumun eklediği — Diğer altında görünür.

Bu düğüm kartı: Düğüm, Sürüm, Derleme zamanı, Başlama zamanı, Çalışma süresi.

JVM (inSCADA süreci) kartı yalnızca inSCADA sürecini gösterir: Heap (kullanılan / en çok), Ayrılan heap, Heap dışı kullanım, İş parçacıkları (canlı · en yüksek · daemon), İşlemciler, Yük ortalaması (1 dk) (Windows’ta yok) ve Java sürümü. Tek bir anlık okumadır; zaman içindeki değişimi Kaynak geçmişi gösterir.

Makine kartı, düğümün çalıştığı bilgisayarın tamamıdır — üzerindeki her programla, veritabanları da dahil. PostgreSQL, InfluxDB ve Redis çoğunlukla aynı makinededir ve onların tükettiği bellek ya da CPU JVM kartında görünmez.

AlanAçıklama
Makine CPU’suMakinenin tüm işlemcileri üzerinden yük, son bir dakikalık ölçüm aralığında.
Makinede kullanılan bellekToplamdan kullanılabilir belleğin düşülmesi. Linux’ta çekirdeğin kendi “kullanılabilir” tahmini okunur, sayfa önbelleği dahil — bu yüzden sağlıklı bir sunucu “boş belleği sıfıra yakın” görünmez.
Kullanılan swapSwap’i olmayan makinede “Bu makinede swap yok”. Windows’ta raporlanmaz.
Disk (veri ve log’lar)Disk alanı denetiminin izlediği diskin boş alanı.

Okunamayan bir değer sıfır olarak değil, nedeniyle gösterilir (“Bu platformda raporlanmıyor.”, “Henüz ölçülmedi: ilk okuma açılıştan yaklaşık iki dakika sonra gelir.”). Konteyner içinde değerler konteynerin limitleridir, sunucunun değil; veritabanları kendi konteynerlerindeyse onların tüketimi buradan görünmez.

Anlık bir okuma bir sızıntıyı gösteremez. Bu yüzden her düğüm kendini dakikada bir ölçer ve son 24 saati belleğinde tutar; sayfa her seriyi eğrisiyle ve Son 1 saat ile Son 24 saat’teki saatlik değişimiyle (/sa) gösterir.

GrupSeriSürekli artış ne demek
inSCADA süreci (JVM)GC sonrası heapBellek sızıntısı: her toplamadan sonra tutulu kalan bellek büyüyor
Metaspace, Yüklü sınıflarSınıf sızıntısı
Kod önbelleğiDerlenmiş (JIT) kod alanı doluyor
İş parçacığı sayısıİş parçacığı sızıntısı
inSCADA süreci CPU’suYüksek kalıyorsa işlemcileri inSCADA meşgul ediyor
GC’de geçen süreBellek baskısı
Veritabanı / Redis / InfluxDB yanıt süresiVeri deposu yavaşlıyor
MakineMakine CPU’suYüksek kalıyorsa makine meşgul — inSCADA ya da bir veritabanı
Makinede kullanılan bellekMakinedeki bir şey giderek daha fazla bellek alıyor
Kullanılan swapBellek yetmiyor, diske taşınıyor
Boş disk alanı (veri ve log’lar)Düşüş: log ya da veri diski dolduruyor

Değişim, penceredeki tüm ölçümlere uydurulan eğimdir; tek bir ölçüm sonucu belirlemez. Pencerenin en az yarısını kapsayacak kadar veri yoksa “Henüz yeterli veri yok” yazar. Eğriler gösterilir, yargılanmaz: makine belleği ve CPU uyarıları dışında hiçbir seri uyarı ya da e-posta üretmez.

Sertifika kartı sunucunun sunduğu sertifikanın adını, Geçerlilik sonu’nu ve kalan günleri gösterir; 30 günden az kalınca turuncu, süresi dolunca kırmızıdır. Sunucu kendi TLS’ini sunmuyorsa (bir proxy’nin arkasında) bunu söyler; o durumda proxy’nin sertifikası Sunucu Ayarları’ndaki Sertifika kartındadır (Sunucu Ayarları’nı aç).

Lisans kartı Tip, Geçerlilik sonu ve kalan günleri gösterir; 30 günden az kalınca turuncu, 7 günden az kalınca kırmızıdır. Süresiz bir lisans Süresiz yazar.

Tek sunucuda “Bu düğüm tek başına çalışıyor.” Kümede: bu düğümün rolü (Lider / Yedek), Aktif sunucu, Düğümler ve görünmeyen beklenen düğümler (”… süredir yok”), Replikasyon gecikmesi, Başarısız kayıtlar, Çakışmalar. Replikasyonun ayrıntısı Sistem Sağlığı → Replikasyon Tutarlılığı’ndadır (Replikasyon Tutarlılığı’nı aç).

Bir operatörün başlattığı ve durdurmadığı bağlantılar — tüm alanlarda: Başlatılmış, Bağlı, Bağlı değil. Bağlı olmayanlar alan, proje ve adla listelenir; Durum sütunu:

DurumAnlamı
BaşlatılamadıBaşlatma başarısız oldu; artan aralıklarla, en sık dakikada bir yeniden denenir.
BağlanıyorBaşlatma sürüyor ya da cihaza ilk erişim denemesi henüz bitmedi.
Bağlantı kopukBağlantı çalışıyor ama cihazla bağı kopuk.

“Ne zamandan beri” bilgisi yoktur; ürün bir bağın ne zaman koptuğunu tutmaz.

Başlatılmış bağlantıların son yeniden başlatılması, servis açıldığında (ya da kümede liderlik alındığında) başlatılmış bağlantıların yeniden başlatılmasının sonucunu gösterir: Tetikleyen (Açılışta / Liderlik alınınca), Bitiş zamanı ve Sonuç (kaç tanesi yeniden başlatıldı, başarısız oldu, atlandı, çözülemedi). Bu hâlâ sürüyorsa sayfa, bazı bağlantıların henüz başlatılmamış olabileceğini söyler.

Bu düğümde script çalışmalarının nasıl bittiği: Çalıştırma, Başarısız çalıştırma — içinde Zaman aşımı (Script süre sınırı durdurdu), Reddedilen (havuz dolu) ve Komut sınırı aşıldı —, Başarısız olan script’ler ve En çok başarısız olan script’ler (en çok 5, Son başarısızlık ile). Kaydedilmiş script’ler, ekranlardan gelen callApi çağrıları, veri bloğu ifadeleri, rapor veri kaynakları hepsi sayılır; hata ayıklama oturumları sayılmaz.

Şu an hata veren bölümü, bağlantılarda şu anda başarısız olan ifadeleri adıyla listeler: Değer ifadeleri, Log ifadeleri ve bütün olarak başarısız olan Veri bloğu script’leri — Bağlantı, Mesaj ve Hata başlangıcı ile. Bir veri bloğu script’i çalıştığı halde içindeki tek bir değişkenin ifadesi başarısız oluyorsa, bunun göründüğü tek yer burasıdır: değişken son değerini korur ve alarm oluşmaz.

Sayılar bu düğümün belleğindedir; yeniden başlatma sayımı baştan başlatır. Kümede script’lerin neredeyse tamamı liderde çalışır.

Bu düğümde planlanmış işlerin tazeliği, her projede birden. Üç sekme — bir iş birden fazlasında olabilir:

SekmeNe zaman
Hata veriyorSon çalışan çalıştırması başarısız oldu ve o zamandan beri başarılı olmadı.
AtlayanSon 24 saatte bir tetiklemeyi atladı: önceki çalıştırma hâlâ sürüyordu ya da iş havuzu doluydu. Atlama bir hata değildir — yavaş bir iş bozuk bir iş değildir. Atlanan ve Atlanan % iş bu düğümde planlandığından beri sayılır.
BayatPeriyodik ya da sabit gecikmeli bir iş 10 periyottan (en az 5 dakika) uzun süredir başarılı çalışmadı. Asılı kalan ve hiç bitmeyen bir çalıştırma ne başarı ne hata yazar; bu etiket tam olarak onu yakalar. Günlük, aylık ve tek seferlik işler için bayat kararı verilmez.

Sütunlar İş İzleyici ile aynı sayıları kullanır (Son başarı, Son hata, Bayat olduğu an…).

Olay günlüğünde — Günlük ekranının gösterdiği — son 24 saatte en çok tekrarlanan on hata, tüm alanlarda. Mesajları yalnızca sayılarda, tırnak içindeki değerlerde ya da kimliklerde farklı olan satırlar birlikte sayılır (Desen); her grup Sayı (en az), İlk görülme, Son görülme, kaç alanda göründüğü ve en yeni örnek satırıyla gösterilir. Sayılar alt sınırdır. Sonuç bir dakika boyunca saklanır.

Bir arızanın kanıtını, sorun hâlâ sürerken uygulamadan almak için (VIEW_SYSTEM_DIAGNOSTICS gerekir):

  • Sunucu logu — sunucunun kendi log dosyasının (inscada.log) son satırları (Satır sayısı seçilir). Bu, Log ekranındaki proje olay günlüğü değildir.
  • Log dosyaları — güncel dosya ve döndürülmüş parçalar, boyut ve son değişiklik zamanıyla; her biri İndir ile.
  • Thread dump indir — JVM’deki her iş parçacığının o anki durumu.
  • Destek paketini indir — destek ekibine gönderilecek tek bir zip: Sistem Sağlığı raporu, kaynak geçmişi, en sık hatalar, düğümün etkin yapılandırması (gizli değerler maskelenmiş), bir thread dump ve son 24 saatin sunucu logları (en çok 100 MB). Daha eski log dosyaları listeden tek tek indirilir.

Kümede her düğümün logları ve thread dump’ı o düğümün kendi adresinden alınır. Her indirme sunucu loguna kimin neyi indirdiğini yazan bir satır bırakır.

Kimse ekranı bütün gün izlemez. Bu yüzden her düğüm kendini dakikada bir değerlendirir ve bir şey değiştiğinde yöneticilere e-posta gönderir.

Kime ve neyle:

  • Yalnızca e-postayla, kurulumun Uygulama E-postası hesabı üzerinden (Ayarlar → Giriş → Uygulama E-postası). Bir alanın kendi e-posta ayarları ya da SMS kullanılmaz.
  • VIEW_SYSTEM_HEALTH yetkisini taşıyan etkin hesaplara — pratikte varsayılan alanın yöneticileri ve rolleri bu yetkiyi veren herkes. E-posta adresi olmayan hesap sayılır ama yazılmaz; aynı adresi paylaşan iki hesap tek e-posta alır.
  • Uygulama e-postası yapılandırılmamışsa ya da kimsenin adresi yoksa hiçbir şey gönderilmez ve hiçbir şey kuyruğa alınmaz; o arada olan bir değişiklik sonradan gönderilmez. Sayfanın üstündeki bildirim satırı bunu söyler.

Ne gönderilir:

OlayKural
Çalışır durumda olmayan denetimler değişir — bir denetim Uyarı, Çalışmıyor ya da Hizmet dışı olur, bunlar arasında geçer ya da düzelirYeni durum 5 dakika sürdükten sonra, her denetim kendi saatiyle. 5 dakika içinde geri dönen bir değişiklik hiçbir şey göndermez. Genel durum zaten Çalışmıyor’ken ikinci bir denetimin düşmesi de, birinin düzelmesi de ayrıca gönderilir; hiçbir sorun kalmayınca “her şey düzeldi” e-postası gider.
Sunulan sertifikanın kalan günü 30, 7 ve 1’e inerHer eşik için bir kez; yeniden başlatma aynısını tekrar göndermez, yenilenen sertifika baştan başlar.
Bir küme düğümü görünmez olur ve geri gelir5 dakika sürünce; yalnızca lider gönderir, böylece üç düğümlü bir küme bir kaybı iki kez bildirmez.
İşler bayatlar ve düzelirTek e-postada, en çok 20’şer iş ve gerçek sayıyla — 200 cihaz sorgusunu bayatlatan bir kesinti tek e-posta gönderir.

Bilinmiyor gönderilmez. Her tür e-postadan 10 dakikada en çok bir gider; bekletilen bir değişiklik kaybolmaz, bir sonraki değerlendirme o anki durumu son gönderilenle karşılaştırır. Sürekli bir yük, başladıktan yaklaşık 20 dakika sonra bildirilir (uyarı için 15, oturması için 5).

E-postanın konusu genel durumu ve düğümü taşır; gövdesi neyin ne zamandan beri değiştiğini (tesis saat diliminde) listeler. Uygulama adresi dışarıdan erişilebilir bir adres olarak ayarlıysa e-posta kurulumu ve Sistem Sağlığı’na bir bağlantıyı da içerir. Dil kurulumun dilidir, yoksa İngilizce. Ayrıntı, yığın izi ya da gizli değer içermez.

Bu sayfa ve e-postalar, raporladığı sürecin içinde çalışır. Üç arızayı raporlayamaz, çünkü raporlayan da onlarla birlikte gider:

  • Ölüm — kapanan bir süreç e-posta göndermez. Windows servis yöneticisi onu yeniden başlatır, ama her açılışta çöken bir düğüm döngüye girer ve bunu kimse söylemez.
  • Donma — yanıt vermeyen ama kapanmamış bir JVM’i servis yöneticisi yeniden başlatmaz; bildirim iş parçacığı da diğerleri kadar takılıdır.
  • Ağ kaybı — sağlıklı ama operatörlerin bulunduğu yerden ya da e-posta sunucusuna ulaşılamayan bir düğüm her iki durumda da sessizdir.

Bu yüzden ürünün dışındaki bir izleme aracının (PRTG, Zabbix, Uptime Kuma, herhangi bir HTTP izleyici) düğümü düzenli olarak sorması gerekir. Her düğümü doğrudan yoklayın (varsayılan https://<düğüm>:8082), kullanıcıların proxy üzerinden ulaştığı adresi değil: kümede proxy her şeyi tek düğüme gönderir, haberini alamayacağınız diğeridir.

/actuator/health/readiness — erişilebilirlik

Section titled “/actuator/health/readiness — erişilebilirlik”

Asıl yoklama budur; HTTP durum kodu kararın kendisidir:

DurumHTTPGövde (kimlik bilgisi olmadan)
Sağlıklı200{"status":"UP"}
Bozulmuş: bir denetim Uyarı’da, hiçbiri çalışmıyor değil200{"status":"WARNING"}
Bir denetim Çalışmıyor ya da Hizmet dışı503{"status":"DOWN"} (ya da OUT_OF_SERVICE)
Ölü, donmuş, ulaşılamıyoryok — bağlantı reddedilir ya da zaman aşımı—

Uyarı bilinçli olarak 200 döner: yalnızca durum koduna bakan bir izleyici bozulmuş bir düğümü ayakta sayar. PostgreSQL, Redis ve InfluxDB’nin her biri kritiktir: biri Çalışmıyor olunca readiness 503 döner.

/actuator/health — ikinci, daha yumuşak izleyici

Section titled “/actuator/health — ikinci, daha yumuşak izleyici”

Ham sağlık, readiness’ın bilinçli olarak geçirdiğini de yakalar: herhangi bir Uyarı ve kümede replikasyon kaybı. Gövdesi "status":"UP" değilse daha düşük bir önem derecesiyle alarm verin. Kümede erişilebilirlik ya da yük dengeleme için ham sağlığı kullanmayın: Küme replikasyonu tek bir kayıt yüzünden Çalışmıyor olduğunda ham sağlık 503 döner, oysa düğüm tesise sorunsuz hizmet vermektedir; readiness bu denetimi içermez.

Kümede /actuator/leader aktif düğümü söyler (liderde 200, yedekte 503). Alarm gerektiren, hiçbir düğümün 200 vermemesidir; proxy önündeyse tesisin adresini üçüncü bir izleyiciyle de yoklayın.

/actuator/health, /actuator/health/readiness ve /actuator/leader kimlik bilgisi olmadan okunur ve yalnızca durum satırını döner. İzleme kullanıcısı ve İzleme parolası (Sunucu Ayarları → Genel) ile her denetimin durumu ve ayrıntısı da gelir — alarm metnine başarısız denetimin adını koymak için. Bedeli: yanlış parola taşıyan bir istek sağlık yoklamasında bile reddedilir (401); düğümde değiştirilip izleyicide değiştirilmeyen bir parola kesinti gibi okunur. Bir izleyicinin kimlik bilgisine ihtiyacı yoktur.

Erişilebilirlik (readiness)Bozulma (ham sağlık)Proxy üzerinden (küme)
Aralık60 sn5 dk60 sn
Zaman aşımı30 sn30 sn30 sn
AlarmArt arda 3 başarısızlıkArt arda 3 başarısızlıkArt arda 3 başarısızlık
BeklenenHTTP 200HTTP 200 ve gövdede "status":"UP"HTTP 200

Üç dakika bir yeniden başlatmayı ve uzun bir duraklamayı kimseyi uyandırmadan atlatır, ama bir operatör donmuş bir ekranı fark etmeden çok önce “çalışmıyor” der. Zaman aşımı bilinçli olarak geniştir: eşi ya da dizini sessizleşen bir düğüm geç ama kararıyla yanıt verir, 10 saniyelik bir zaman aşımı bunu yanlış bir “ulaşılamıyor”a çevirirdi.

Düğümün sertifikası çoğunlukla kurulumun kendi sertifikasıdır (kendinden imzalı ya da özel bir CA’dan). İzleyiciye o CA’yı verin ya da bu izleyicilerde sertifika doğrulamasını kapatın; sertifikanın süresi ürün tarafından e-postayla bildirilir.