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/snapshot | Anlı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/bundle | Anlı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
| Anahtar | Anlamı |
|---|---|
version | Anlık görüntü belgesinin şema sürümü; ürün sürümünden bağımsızdır. |
generatedAt | Anlı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. |
host | Makineye ilişkin veriler; ana makine ajanı hiç bildirim yapmadıysa null. |
containers | Kurulumdaki her kapsayıcı için bir kayıt — çalışsın ya da çalışmasın. |
services | Ağ geçidinin çağırdığı her servisin uygulama düzeyindeki sağlığı. |
datastores | PostgreSQL ve Redis. |
appliance | Sürüm, kurulum durumu, lisans, güncellemeler, TLS, vekil sunucu, DNS ve dışarı çıkış. |
posture | Güvenlikle ilgili ayarlar; onları uygulayan kodun okuduğu biçimde okunur. |
findings | Tetiklenen 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.
| Anahtar | Anlamı |
|---|---|
hypervisor | Normalleş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. |
hypervisorRaw | Saptayıcının ve donanımın ham dizeleri; hatalı bir normalleştirmenin tanılanabilmesi için saklanır. |
cpuCount, cpuModel | Mantıksal CPU sayısı ve model dizesi. |
memTotalMb | Toplam RAM. Boyutlandırma kuralı bunu lisanslı paketin alt sınırıyla karşılaştırır. |
memFreeMb | Kullanılabilir RAM — bir sonraki bellek yetersizliği sonlandırmasını haber veren sayı budur, boştaki RAM değil. |
swapTotalMb | Toplam 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ü. |
timeSynced | Saatin 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. |
gpu | Bir 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.
| Anahtar | Anlamı |
|---|---|
name, service | Kapsayıcı adı ve çalışma kitaplarıyla bulguların kullandığı servis adı. |
state | running, restarting, exited, created, paused, dead, removing veya unknown. |
restarts | Oluş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. |
oomKilled | Son sonlandırmanın bellek yetersizliği nedeniyle olup olmadığı. Yetersiz boyutlandırılmış bir makinede en işe yarar tek bilgi budur. |
memUsageMb, memLimitMb | Anlı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. |
health | Kapsayı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.
| Anahtar | Anlamı |
|---|---|
reachable | Sağlık uç noktasının yanıt verip vermediği. False, model sorunu değil, ağ ya da kapsayıcı sorunudur. |
healthy | Servisin 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. |
latencyMs | Sağ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. |
version | Servisin bildirdiği sürüm — bildiriyorsa. |
error | Hata 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
| Anahtar | Anlamı |
|---|---|
postgres.reachable | Ağ geçidinin veritabanına erişip erişemediği. |
postgres.migrationsPending | Derlenmiş 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.dbSizeMb | CID veritabanının diskteki boyutu. |
redis.reachable | Ağ geçidinin Redis'e erişip erişemediği. |
redis.usedMemoryMb | Redis'in kullanımda olduğunu bildirdiği bellek. |
appliance
| Anahtar | Anlamı |
|---|---|
version | Kurulu ürün sürümü. Yer tutucu bir değer, makinenin ne çalıştırdığını söyleyemediği anlamına gelir. |
channel | Sabitlendiği güncelleme kanalı. |
setupComplete | İlk açılış sihirbazı tamamlanmadığı sürece false; bu durumda kurulum koruması kilitli yollarda 423 yanıtı verir. |
deploymentMode | appliance, docker, development veya unknown. Bazı bulgular yalnızca cihaz için geçerlidir. |
license.state | Kurulu lisansın doğrulama sonucu. |
license.tier, license.expiresAt | Lisanslı katman ve son kullanma tarihi; süresiz lisansta null. |
license.installationId | Lisansın bağlandığı kimlik. Null olması bilinen bir saha sorunudur — kimlik bildirmeyen bir makine için lisans üretilemez. |
license.trustAnchorPresent | Lisans 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.requireLicense | CID_REQUIRE_LICENSE değişkeninin etkin değeri. Doğrulanamayan bir lisansla birlikte true olması 402 hatasını doğurur. |
update.lastCheck | Kanalın en son ne zaman başarıyla yoklandığı; hiç yoklanmadıysa null. |
update.pendingIntent | Bekleyen 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.channelReachable | Kanalın son denemede yanıt verip vermediği. Ağdan yalıtılmış bir cihazda her zaman false'tur ve beklenen budur. |
tls.mode | Hangi 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.daysLeft | Son 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.caPresent | Cihaz kök CA'sının var olup olmadığı; istemcilerin cihaza güvenmesi buna bağlıdır. |
proxy.configured, proxy.url | Dışarı çıkış için bir vekil sunucu yapılandırılmış mı ve kimlik bilgileri çıkarılmış URL'si. |
dns | Cihazın çözümlemesi gereken her ana makine adı için sonucuyla birlikte bir kayıt. |
egress | Dış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:
posture
Etkin yapılandırmadan okunan veriler. Değerlendirme burada değil, bulgularda yapılır.
| Anahtar | Anlamı |
|---|---|
dbSynchronize | DB_SYNCHRONIZE değişkeninin etkin değeri. Geliştirme dışında true olması, her açılışta geçişlerin kendi dizinlerini siler. |
jwtSecretPlaceholder | JWT_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. |
corsOriginsSet | CORS_ALLOWED_ORIGINS ayarlanmış mı. Tek kaynaklı bir cihazda false doğrudur; pano ya da uzantı başka bir yerde duruyorsa bozuktur. |
inspectionSourceIpMode | ICAP 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. |
resumableUploadPolicy | CID_RESUMABLE_UPLOAD_POLICY değişkeninin etkin değeri. Parçalı yüklemeler incelenemez; block bunları reddeder ve güvenli varsayılandır. |
seedSampleAccounts | Tohumlanan ö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 | Önem | Ne zaman tetiklenir | Çalışma kitabı |
|---|---|---|---|
license-trust-anchor-missing | kritik veya uyarı | Ana makinede lisans imzalama açık anahtarı yok. Lisans zorunluluğu açıkken kritik. | license-trust-anchor-missing |
license-expired-or-402 | kritik 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-writable | kritik | Ağ geçidi; kurulumun, lisanslamanın ve güncellemelerin kalıcı yazdığı durum dizinine yazamıyor. | setup-state-dir-not-writable |
providers-catalog-empty | kritik | Hiç sağlayıcı kaydı yok, dolayısıyla sohbet bir model çözümleyemiyor. | providers-catalog-empty |
update-version-unknown | uyarı | Cihaz hangi sürümü çalıştırdığını söyleyemiyor. | update-version-unknown |
update-channel-unreachable | uyarı | Kanal sunucusu yanıt vermedi. Ağdan yalıtılmış bir cihazda beklenen durumdur. | update-channel-unreachable |
tls-cert-expiring | uyarı veya kritik | Sertifikanı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-served | kritik | 443 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-restarting | kritik | Bir kapsayıcı üçten fazla kez yeniden başlamış. | container-restarting |
container-oom | kritik | Bir kapsayıcının son sonlandırılması bellek yetersizliği nedeniyle olmuş. | container-oom |
ram-below-package-minimum | kritik | Toplam RAM, %5 payla birlikte lisanslı paketin alt sınırının altında. | ram-below-package-minimum |
disk-low | uyarı veya kritik | En az 2 GB'lık bir dosya sisteminde boş alan %10'un ya da %3'ün altında. | disk-low |
time-not-synced | uyarı | Ana makine saati senkron değil. | time-not-synced |
db-synchronize-on | kritik | Şema otomatik eşitlemesi açık. | db-synchronize-on |
jwt-placeholder | kritik | Token imzalama gizli anahtarı bilinen bir yer tutucu. | jwt-placeholder |
egress-blocked | uyarı | En az bir dışarı çıkış denemesi başarısız oldu. | egress-blocked |
migrations-pending | kritik | Derlenmiş geçişler veritabanına kaydedilmemiş. | migrations-pending |
datastore-unreachable | kritik veya uyarı | PostgreSQL'e ya da Redis'e erişilemiyor. | datastore-unreachable |
sample-accounts-seeded | bilgi | Tohumlanan ö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üm | Compose kurulumu | Cihaz |
|---|---|---|
version, generatedAt, posture, datastores, services | Her zaman | Her zaman |
containers | Evet, ana makine ajanı kapsayıcısı çalışıyorsa | Evet |
host | Null, gerekçesi belirtilerek. Cihaz dışında ana makine denemesi varsayılan olarak kapalıdır | Evet |
appliance.version, channel, update | Kısmi — sürüm, derleme anındaki değere geri düşer | Evet |
appliance.license | Güven çıpası bilgisi her zaman yanıtlanabilir; çıpa yokken durum devre dışı olarak okunur | Evet |
appliance.tls | Kullanılamaz ve 443'ü sunan hiçbir şey bildirilmez | Evet |
appliance.dns, egress | Evet, denemeler kapatılmadıysa | Evet |
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:
- Sorunu yeniden oluşturun, ardından
GET /admin/diagnostics/bundleçağrısını yapıp yanıtı kaydedin. - Kurulum kimliğini ve cihaz sürümünü Ayarlar → Lisans ve Ayarlar → Sistem Güncellemeleri sayfalarından not edin.
- Ç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
- Sağlık tablosu — her servisin ne yaptığı ve kapalıyken nelerin bozulduğu.
- Rehberli çalışma kitapları — her bulgunun adını verdiği çalışma kitabı.
Son güncelleme