Skip to main content
CID222 Docs

Tanılama anlık görüntüsü ve destek paketi

Cihazın kendisi hakkında bildirdikleri anahtar anahtar, hangi bölümlerin ana makine ajanına ihtiyaç duyduğu ve destek paketinin nasıl gönderileceği.

  • Sürüm: 0.4
  • Rol: admin_user, viewer
  • Tür: başvuru

Tanılama anlık görüntüsü, bu cihazı tarif eden tek bir tipli JSON belgesidir: üzerinde çalıştığı makine, her kapsayıcının durumu, çağırdığı her servisin sağlığı, veri depoları, lisans, sertifika, ağın dışarı neye izin verdiği, güvenlik duruşu ve tüm bunlar üzerinde değerlendirilmiş bir bulgu listesi. Çalışma kitaplarının diagnostics türündeki her denetimi bu belgeden bir anahtar okur.

Uç noktalar

ÇağrıNe döndürür
GET /admin/diagnostics/snapshotAnlık görüntü. 60 saniyeden yeniyken önbellekten sunulur.
POST /admin/diagnostics/refreshÖnbelleği düşürür, ana makine ajanından yeni bir tarama ister ve yeniden toplar.
GET /admin/diagnostics/bundleAnlık görüntü, gizli değerleri gizlenmiş etkin yapılandırma ve ana makine ajanının son durum belgeleri.

Her iki GET çağrısı da admin_user rolünü gerektirir. viewer rolü bunları okuyabilir; yenileme çağrısı ise her mutasyon çağrısı gibi READ_ONLY_ROLE ile reddedilir.

Warning

Yenileme çağrısı, ana makine ajanının bir sonraki taraması tamamlanmadan geri döner. Ajan birkaç saniyede bir yoklama yapar ve tam taramayı beş dakikada bir çalıştırır; bu nedenle geri aldığınız anlık görüntü genellikle hâlâ önceki ana makine değerlerini taşır. Yenilerin geldiğini görmek için toplama zaman damgasını karşılaştırın.

Anlık görüntü neleri içerir

Üst düzey

AnahtarAnlamı
versionAnlık görüntü belgesinin şema sürümü; ürün sürümünden bağımsızdır.
generatedAtAnlık görüntünün toplandığı an. Önbellekten gelen bir anlık görüntü de geçerlidir; eski olup olmadığına siz karar verirsiniz.
hostMakineye ilişkin veriler; ana makine ajanı hiç bildirim yapmadıysa null.
containersKurulumdaki her kapsayıcı için bir kayıt — çalışsın ya da çalışmasın.
servicesAğ geçidinin çağırdığı her servisin uygulama düzeyindeki sağlığı.
datastoresPostgreSQL ve Redis.
applianceSürüm, kurulum durumu, lisans, güncellemeler, TLS, vekil sunucu, DNS ve dışarı çıkış.
postureGüvenlikle ilgili ayarlar; onları uygulayan kodun okuduğu biçimde okunur.
findingsTetiklenen kurallar; her biri bir çalışma kitabının adını verir.

host

Ana makine ajanı hiç çalışmadıysa ya da çıktısı okunamıyorsa null olur. Ağ geçidi kapsayıcısı makineyi kendi başına göremez; bu nedenle bu bölüm, ajanın yazdığı ve ağ geçidinin okuduğu bir dosyadır.

AnahtarAnlamı
hypervisorNormalleştirilmiş platform: vmware, proxmox, kvm, hyperv, none veya unknown. none, fiziksel donanımın olumlu biçimde saptandığı anlamına gelir; unknown ise saptamanın başarısız olduğunu ve hiçbir sonuç çıkarılamayacağını söyler.
hypervisorRawSaptayıcının ve donanımın ham dizeleri; hatalı bir normalleştirmenin tanılanabilmesi için saklanır.
cpuCount, cpuModelMantıksal CPU sayısı ve model dizesi.
memTotalMbToplam RAM. Boyutlandırma kuralı bunu lisanslı paketin alt sınırıyla karşılaştırır.
memFreeMbKullanılabilir RAM — bir sonraki bellek yetersizliği sonlandırmasını haber veren sayı budur, boştaki RAM değil.
swapTotalMbToplam takas alanı. Sıfır olması normaldir ve tek başına bir bulgu değildir.
disksÖnemli her dosya sistemi için bir kayıt; her birinde bağlama noktası, toplam ve boş alan.
kernel, dockerVersionÇekirdek sürümü ve Docker Engine sürümü.
timeSyncedSaatin senkron olup olmadığı. False bir bulgudur: kayan bir saatte lisans doğrulama, sertifika doğrulama ve güncelleme kanalı hep kafa karıştırıcı biçimde başarısız olur.
gpuBir ekran kartının bulunup bulunmadığı ve adı. GPU, belge ve görsel işleri için önerilir; hiçbir zaman zorunlu değildir.

Note

Varsayılan bir Proxmox konuk makinesi başka herhangi bir QEMU konuğundan ayırt edilemez; bu nedenle bir operatör sanal makinenin kendi donanım kimlik dizelerini doldurmadıkça kvm olarak bildirilir. hypervisorRaw her zaman gerçekte okunanı taşır.

containers

Çalışsın ya da çalışmasın her kapsayıcı için bir kayıt. Sürümün bildirdiği ancak burada bulunmayan bir servis, bulgunun kendisidir.

AnahtarAnlamı
name, serviceKapsayıcı adı ve çalışma kitaplarıyla bulguların kullandığı servis adı.
staterunning, restarting, exited, created, paused, dead, removing veya unknown.
restartsOluşturulmasından bu yana yeniden başlatma sayısı. Sürekli artış, tek bir kötü açılıştan toparlanma değil, bir çökme döngüsüdür.
oomKilledSon sonlandırmanın bellek yetersizliği nedeniyle olup olmadığı. Yetersiz boyutlandırılmış bir makinede en işe yarar tek bilgi budur.
memUsageMb, memLimitMbAnlık kullanım ve bildirilen sınır; servis bir sınır bildirmiyorsa null.
imageDigestÇözümlenen imaj özeti; yarım uygulanmış bir güncellemeyi saptamak için sürüm bildirimiyle karşılaştırılır. Yerelde derlenmiş bir imaj için null.
healthKapsayıcı sağlık denetiminin sonucu. none, servisin bir sağlık denetimi bildirmediği anlamına gelir ve bir arıza değildir.

services

Servis adına göre anahtarlanır. Bu, kapsayıcı sağlık denetimi değil, her servisin kendi sağlık uç noktasıdır — bir kapsayıcı çalışırken modeli yüklenememiş olabilir.

AnahtarAnlamı
reachableSağlık uç noktasının yanıt verip vermediği. False, model sorunu değil, ağ ya da kapsayıcı sorunudur.
healthyServisin kendini sağlıklı bildirip bildirmediği. İlginç olan durum erişilebilir ama sağlıksız olmasıdır ve genellikle yüklenememiş bir model anlamına gelir.
latencyMsSağlık çağrısının gidiş-dönüş süresi; zaman aşımı durumunda zaman aşımı değeri. Her satır aynı üç saniyelik sınırla ölçülür, dolayısıyla sayılar karşılaştırılabilir.
versionServisin bildirdiği sürüm — bildiriyorsa.
errorHata ayrıntısı: bağlantı hatası, HTTP durumu ya da gövdenin kendi iletisi.

Dağıtılmamış bir servis, sağlıksız olarak bildirilmek yerine bu haritada hiç bulunmaz — isteğe bağlı servisler yapılandırılmadıklarında yalnızca orada değildirler. Her birinin ne yaptığı ve kapalıyken nelerin bozulduğu için sağlık tablosuna bakın.

datastores

AnahtarAnlamı
postgres.reachableAğ geçidinin veritabanına erişip erişemediği.
postgres.migrationsPendingDerlenmiş zincirde bulunan ve veritabanında bulunmayan geçiş adları. Boş olması şemanın güncel olduğu anlamına gelir; açılmış bir cihazda dolu olması, açılıştaki çalıştırmanın başarısız olduğunu gösterir.
postgres.dbSizeMbCID veritabanının diskteki boyutu.
redis.reachableAğ geçidinin Redis'e erişip erişemediği.
redis.usedMemoryMbRedis'in kullanımda olduğunu bildirdiği bellek.

appliance

AnahtarAnlamı
versionKurulu ürün sürümü. Yer tutucu bir değer, makinenin ne çalıştırdığını söyleyemediği anlamına gelir.
channelSabitlendiği güncelleme kanalı.
setupCompleteİlk açılış sihirbazı tamamlanmadığı sürece false; bu durumda kurulum koruması kilitli yollarda 423 yanıtı verir.
deploymentModeappliance, docker, development veya unknown. Bazı bulgular yalnızca cihaz için geçerlidir.
license.stateKurulu lisansın doğrulama sonucu.
license.tier, license.expiresAtLisanslı katman ve son kullanma tarihi; süresiz lisansta null.
license.installationIdLisansın bağlandığı kimlik. Null olması bilinen bir saha sorunudur — kimlik bildirmeyen bir makine için lisans üretilemez.
license.trustAnchorPresentLisans imzalama açık anahtarının ana makinede bulunup bulunmadığı. O olmadan hiçbir lisans doğrulanamaz ve her yükleme başarısız olur.
license.requireLicenseCID_REQUIRE_LICENSE değişkeninin etkin değeri. Doğrulanamayan bir lisansla birlikte true olması 402 hatasını doğurur.
update.lastCheckKanalın en son ne zaman başarıyla yoklandığı; hiç yoklanmadıysa null.
update.pendingIntentBekleyen güncelleme ya da ana makine onarımı isteği. Kuyrukta takılı kalan bir istek, ana makine güncelleyicisinin işi almadığını gösterir.
update.channelReachableKanalın son denemede yanıt verip vermediği. Ağdan yalıtılmış bir cihazda her zaman false'tur ve beklenen budur.
tls.modeHangi sertifikanın sunulduğu: cihaz CA'sından biri, yüklenmiş biri, önyükleme için kendinden imzalı biri ya da hiçbiri.
tls.expiresAt, tls.daysLeftSon kullanma tarihi ve kalan tam gün sayısı — süresi geçmişse negatif.
tls.servedByŞu anda 443 portunu gerçekte neyin tuttuğu. Hiçbir şeyin dinlemiyor olması, sertifika çalışma kitabının diğer yarısıdır.
tls.caPresentCihaz kök CA'sının var olup olmadığı; istemcilerin cihaza güvenmesi buna bağlıdır.
proxy.configured, proxy.urlDışarı çıkış için bir vekil sunucu yapılandırılmış mı ve kimlik bilgileri çıkarılmış URL'si.
dnsCihazın çözümlemesi gereken her ana makine adı için sonucuyla birlikte bir kayıt.
egressDışarı çıkış denemeleri; her biri hedefi, sonucu ve ayrıntısıyla.

Danger

Üç dışarı çıkış denemesi birbirinin yerine geçmez. Ad çözümleme, 443 üzerinde bir TCP bağlantısı ve yapılandırılmış vekil sunucu üzerinden kimlik doğrulamalı bir HTTPS isteği birbirinden bağımsız olarak başarısız olur; birini diğerinin kanıtı saymak, "ağ açık" ifadesini iyi niyetle yanlış kılan şeydir. Her hedefin kendi ayrıntı satırını okuyun.

Bu denemeler, cihazın kendiliğinden yaptığı tek dışarı yönelik isteklerdir; bunun dışında hiçbir zaman dışarıya bilgi göndermez. Sınırlıdırlar ve tümüyle kapatılabilirler; bu durumda DNS ve dışarı çıkış dizileri boş döner ve hiçbir dışarı çıkış bulgusu tetiklenmez:

# ağ geçidi kapsayıcısında — her dışarı çıkış denemesini devre dışı bırakır
CID_DIAGNOSTICS_EGRESS=0

posture

Etkin yapılandırmadan okunan veriler. Değerlendirme burada değil, bulgularda yapılır.

AnahtarAnlamı
dbSynchronizeDB_SYNCHRONIZE değişkeninin etkin değeri. Geliştirme dışında true olması, her açılışta geçişlerin kendi dizinlerini siler.
jwtSecretPlaceholderJWT_SECRET bilinen bir yer tutucu ya da tanımsız olduğunda true. Başlatma bilinen yer tutucuları reddettiği için burada true olması genellikle tanımsız olduğu anlamına gelir — ve her yeniden başlatmada ölen oturumlar demektir.
corsOriginsSetCORS_ALLOWED_ORIGINS ayarlanmış mı. Tek kaynaklı bir cihazda false doğrudur; pano ya da uzantı başka bir yerde duruyorsa bozuktur.
inspectionSourceIpModeICAP dinleyicisinin çağıranları hangi ölçüte göre kabul ettiği. Açıkça verilen bir izin listesi, özel adres aralığı varsayılanını genişletmez, yerine geçer.
resumableUploadPolicyCID_RESUMABLE_UPLOAD_POLICY değişkeninin etkin değeri. Parçalı yüklemeler incelenemez; block bunları reddeder ve güvenli varsayılandır.
seedSampleAccountsTohumlanan örnek kiracılar ve yayımlanmış parolaları hâlâ duruyorsa true. Müşteri cihazında bu bir bulgudur.

findings

Her kayıt bir kimlik, bir önem derecesi, operatörün dilinde tek bir cümle, sorunu çözen çalışma kitabının kimliği ve kuralın üzerinde tetiklendiği anlık görüntü değerlerini taşır.

BulguÖnemNe zaman tetiklenirÇalışma kitabı
license-trust-anchor-missingkritik veya uyarıAna makinede lisans imzalama açık anahtarı yok. Lisans zorunluluğu açıkken kritik.license-trust-anchor-missing
license-expired-or-402kritik veya uyarıLisansın süresi dolmuş ya da geçersiz, veya ek süre ya da bitiş penceresinin içinde.license-expired-or-402
setup-state-dir-not-writablekritikAğ geçidi; kurulumun, lisanslamanın ve güncellemelerin kalıcı yazdığı durum dizinine yazamıyor.setup-state-dir-not-writable
providers-catalog-emptykritikHiç sağlayıcı kaydı yok, dolayısıyla sohbet bir model çözümleyemiyor.providers-catalog-empty
update-version-unknownuyarıCihaz hangi sürümü çalıştırdığını söyleyemiyor.update-version-unknown
update-channel-unreachableuyarıKanal sunucusu yanıt vermedi. Ağdan yalıtılmış bir cihazda beklenen durumdur.update-channel-unreachable
tls-cert-expiringuyarı veya kritikSertifikanın süresi 14 gün içinde doluyor ya da çoktan dolmuş. Cihaz 30 gün kala yeniler; bu bulguyu görüyorsanız yenileme gerçekleşmemiş demektir.tls-cert-expiring
tls-443-not-servedkritik443 portunu hiçbir şey tutmuyor.tls-443-not-served
service-unhealthy-<service>kritik veya uyarıBir servise erişilemiyor ya da yanıt verip kendini sağlıksız bildiriyor. Servis başına bir bulgu.service-unhealthy
container-restartingkritikBir kapsayıcı üçten fazla kez yeniden başlamış.container-restarting
container-oomkritikBir kapsayıcının son sonlandırılması bellek yetersizliği nedeniyle olmuş.container-oom
ram-below-package-minimumkritikToplam RAM, %5 payla birlikte lisanslı paketin alt sınırının altında.ram-below-package-minimum
disk-lowuyarı veya kritikEn az 2 GB'lık bir dosya sisteminde boş alan %10'un ya da %3'ün altında.disk-low
time-not-synceduyarıAna makine saati senkron değil.time-not-synced
db-synchronize-onkritikŞema otomatik eşitlemesi açık.db-synchronize-on
jwt-placeholderkritikToken imzalama gizli anahtarı bilinen bir yer tutucu.jwt-placeholder
egress-blockeduyarıEn az bir dışarı çıkış denemesi başarısız oldu.egress-blocked
migrations-pendingkritikDerlenmiş geçişler veritabanına kaydedilmemiş.migrations-pending
datastore-unreachablekritik veya uyarıPostgreSQL'e ya da Redis'e erişilemiyor.datastore-unreachable
sample-accounts-seededbilgiTohumlanan örnek kiracılar ve yayımlanmış parolaları hâlâ duruyor.sample-accounts-seeded

Bir kural bir değer üzerinde tetiklenir, değerin yokluğu üzerinde asla. Bu nedenle bir şeyi ölçemeyen bir kurulum, üzerinde işlem yapamayacağı bir kritik bulgu yerine o konuda hiçbir şey bildirmez.

Ana makine ajanı neyi gerektirir, neyi gerektirmez

BölümCompose kurulumuCihaz
version, generatedAt, posture, datastores, servicesHer zamanHer zaman
containersEvet, ana makine ajanı kapsayıcısı çalışıyorsaEvet
hostNull, gerekçesi belirtilerek. Cihaz dışında ana makine denemesi varsayılan olarak kapalıdırEvet
appliance.version, channel, updateKısmi — sürüm, derleme anındaki değere geri düşerEvet
appliance.licenseGüven çıpası bilgisi her zaman yanıtlanabilir; çıpa yokken durum devre dışı olarak okunurEvet
appliance.tlsKullanılamaz ve 443'ü sunan hiçbir şey bildirilmezEvet
appliance.dns, egressEvet, denemeler kapatılmadıysaEvet

Ana makine ajanı makineyi ölçer ve paylaşılan durum dizinine iki dosya yazar; ağ geçidi bunları okur. Dosya tek yönlü bir kanaldır: ağ geçidi bir ana makine bilgisini öğrenir ama ana makinede komut çalıştırma yeteneği kazanmaz. Docker soketinin internete bakan API'ye bağlanmamasının nedeni budur.

Ajan tam taramayı beş dakikada bir, yenileme istendiğinde ise hemen çalıştırır. Otuz dakikayı — yani altı atlanmış taramayı — geçtiğinde iki okuyucu da veriyi düşürür ve ne kadar eski olduğunu bildirir.

Destek paketi

Destek paketi; anlık görüntüye ek olarak etkin yapılandırmayı ve ana makine ajanının kendi durum belgelerini içerir. Gizleme değer üzerinde değil anahtar üzerinde çalışır: bir gizli değer gizleme işaretine dönüşür, tanımsız bir gizli değer boş olarak işaretlenir (çünkü "tanımsız" başlı başına bir teşhistir) ve ne gizli değer listesine ne de izin listesine uyan bir anahtar, dışarı verilmek yerine sınıflandırılmamış olarak işaretlenir — gelecek yıl eklenecek bir token, ortaya çıktığı gün güvendedir.

Desteğe paket göndermek için:

  1. Sorunu yeniden oluşturun, ardından GET /admin/diagnostics/bundle çağrısını yapıp yanıtı kaydedin.
  2. Kurulum kimliğini ve cihaz sürümünü Ayarlar → Lisans ve Ayarlar → Sistem Güncellemeleri sayfalarından not edin.
  3. Çalışan durumla şimdiki durum arasında neyi değiştirdiğinizi yazın. Paket mevcut durumu gösterir; öncekini gösteremez.

Warning

Paketi bir şeyleri değiştirmeye başlamadan önce toplayın. Üç düzeltme denemesinden sonra alınan bir paket, siz dahil hiç kimsenin tanılamadığı bir durumu tarif eder.

İlgili sayfalar

Son güncelleme

Bu sayfada