WEB / WEB-21.03
Logs, metrics ve traces
Logs, metrics ve traces’ı operation sonucu ve observation pipeline’dan ayrı değerlendir.
1. Core · Mekanizma
Hareket olmadan bütün senaryoları oku
Signal production
- Public operation
Public business service Tea note girdisini bilir. Instrumentation, yerel exporter ve observer henüz completion record almamıştır; bütün işlemler yerel adapter kapsamındadır.
- Public business service
- Public input known
- Local instrumentation
- Signals not recorded
- Local export adapter
- Local sink empty
- Observer projection
- Observer has no record
- Business result
Own public-read adapter status200 ve Tea title üretir; telemetry delivery business completion ile aynı olay değildir.
- Public business service
- Tea result completed
- Local instrumentation
- Signals not recorded
- Local export adapter
- Local sink empty
- Observer projection
- Observer has no record
- Metric increment
Selected operation/status counter local input’tan artar; metric aggregate individual log record’un yerine geçmez.
- Public business service
- Tea result completed
- Local instrumentation
- Counter incremented
- Local export adapter
- Local sink empty
- Observer projection
- Observer has no record
- Context relation
Supplied logical spans shared traceAlias ve exact parentAlias relation taşır; measured network trace değildir.
- Public business service
- Tea result completed
- Local instrumentation
- Root / child recorded
- Local export adapter
- Local sink empty
- Observer projection
- Observer has no record
- Redact / project
Known fake authorization/session aliases output allowlist dışında bırakılır; source dictionary değişmez.
- Public business service
- Tea result completed
- Local instrumentation
- Allowlisted log ready
- Local export adapter
- Local sink empty
- Observer projection
- Observer has no record
- Local stream write
Own structured record StringIO stream’e yazılır; gerçek collector veya remote telemetry packet gönderilmez.
- Public business service
- Tea result completed
- Local instrumentation
- Allowlisted log ready
- Local export adapter
- Own stream written
- Observer projection
- Observer has no record
- Independent observe
Independent JSON parser event/operation/correlation fields’ı okur; seed aliases output’ta bulunmaz.
- Public business service
- Tea result completed
- Local instrumentation
- Allowlisted log ready
- Local export adapter
- Own stream written
- Observer projection
- Parsed public record
Unsampled trace
- Sampling decision
Bu dalda sampled=false girdisi seçilmiştir. Bu karar business operation’ın yapılmadığını söylemez; completion ve metric ayrıca izlenir.
- Public business service
- Public input known
- Local instrumentation
- sampled=false supplied
- Local export adapter
- Local sink unchanged
- Observer projection
- No request trace
- Read completes
Public-read adapter normal status200 üretir; trace selection bu finite result’u değiştirmez.
- Public business service
- Tea result completed
- Local instrumentation
- sampled=false supplied
- Local export adapter
- Local sink unchanged
- Observer projection
- No request trace
- Counter still counts
Own request counter sampled=false operation’ı da sayar; metrics and trace inclusion ayrı decisions’dır.
- Public business service
- Tea result completed
- Local instrumentation
- Metric +1 recorded
- Local export adapter
- Local sink unchanged
- Observer projection
- No request trace
- Trace omitted
Declared sampling nedeniyle retained trace0 kalır; omitted trace synthetic failure event’i değildir.
- Public business service
- Tea result completed
- Local instrumentation
- Trace deliberately absent
- Local export adapter
- Local sink unchanged
- Observer projection
- No request trace
- Knowledge boundary
Observer no-trace ile no-event’i eşitlemez; verified sampling reason business completion’ın yanında tutulur.
- Public business service
- Tea result completed
- Local instrumentation
- Trace deliberately absent
- Local export adapter
- Local sink unchanged
- Observer projection
- No trace; event occurred
Exporter failure
- Read input known
Bu dal public read ve best-effort diagnostics policy ile başlar. Mandatory audit için aynı devam kararı verilmiş sayılmaz.
- Public business service
- Public input known
- Local instrumentation
- Record not produced
- Local export adapter
- Failing sink supplied
- Observer projection
- Observer empty
- Business completes
Public note read successful result üretir; logging sink failure business data mutation veya permission verdict değildir.
- Public business service
- Business success200
- Local instrumentation
- Record not produced
- Local export adapter
- Failing sink supplied
- Observer projection
- Observer empty
- Record projection
Only public allowlisted fields local record’a bağlanır; raw seeded aliases sensitive output’a dahil edilmez.
- Public business service
- Business success200
- Local instrumentation
- Public record ready
- Local export adapter
- Failing sink supplied
- Observer projection
- Observer empty
- Exporter failure
Own failing sink OSError üretir; actual local exception gözlenir ama remote exporter outage iddia edilmez.
- Public business service
- Business success200
- Local instrumentation
- Public record ready
- Local export adapter
- Own OSError observed
- Observer projection
- Observer empty
- Visibility missing
Observer exported record0 ve visibilityConfirmed=false taşır; business success sağlık garantisine çevrilmez.
- Public business service
- Business success200
- Local instrumentation
- Public record ready
- Local export adapter
- Own OSError observed
- Observer projection
- export0 / visibility gap
- Scope / policy
Seçilen public-read policy business sonucunu korur. Bu karar compliance audit’in eksiksizliği için genel garanti sağlamaz.
- Public business service
- Success / diagnostic gap
- Local instrumentation
- Public record ready
- Local export adapter
- Own OSError observed
- Observer projection
- export0 / visibility gap
Missing signal
- No observation
Bu dal application event, exporter sonucu ve güncel counter sample hakkında kanıt sağlamaz. Observer bu alanları unknown tutar.
- Public business service
- Operation unobserved
- Local instrumentation
- No observation supplied
- Local export adapter
- Sink state unknown
- Observer projection
- Observer has no evidence
- Window undefined
Empty measurement window’da error fraction undefined kalır; observation yokluğunu rate0 diye yazmayız.
- Public business service
- Operation unobserved
- Local instrumentation
- No observation supplied
- Local export adapter
- Sink state unknown
- Observer projection
- Denominator0 / undefined
- Health unknown
Health unknown sonucu application’ın down veya healthy olduğunu ispatlamaz; yalnız evidence boundary’sini bildirir.
- Public business service
- Operation unobserved
- Local instrumentation
- No observation supplied
- Local export adapter
- Sink state unknown
- Observer projection
- Health unknown
- No event inference
Observer no-event veya no-failure assertion üretmez; missing record authorization ve business success sağlayamaz.
- Public business service
- Operation unobserved
- Local instrumentation
- No observation supplied
- Local export adapter
- Sink state unknown
- Observer projection
- No absence proof
ROLLER · STATE · VERİ AKIŞI
Observability, instrumentation sayısından büyük bir sorudur
Observability, dışarıdan görülen signals ile sistemin içinde ne olduğunu ve belirli davranışın nedenini anlayabilmektir. Çok log satırı veya güzel dashboard tek başına yeterli değildir. Önce soru seçilir: public note okuması tamamlandı mı, hangi dependency bekledi, error hangi aşamada oluştu, observation pipeline gerçekten data aldı mı? Instrumented operation, signal semantics ve correlation bu soruya bağlanır. Telemetry sonucu authoritative business state’in yerine geçmez.
Log belirli event’in structured veya unstructured kaydıdır; timestamp, event type ve sınırlı context taşıyabilir. Metric ölçümlerin aggregate görünümünü sağlar. Request counter, error counter ve histogram aynı tür değildir. Counter cumulative artabilir; process restart ve exporter temporality’si yorumu etkiler. Gauge mevcut değeri, histogram ise değer dağılımını anlatabilir. Her raw URL veya user identifier’ı metric label yapmak cardinality maliyetini artırır. Örnekte sınırlı operation/status boyutları kullanılır; vendor tuning değeri önerilmez.
Trace operation’ları span ve parent/context ilişkileriyle bağlar. Public-read root span’ine local-note-read child span’i bağlanabilir; ortak trace context ve doğru parent ilişkisi bu bağı anlatır. Correlation identifier credential veya authorization grant değildir. trace-demo ve span-root öğretim alias’larıdır, geçerli trace wire ID’si olarak sunulmaz. Root için 10–14 aralığı 4, child için 11–13 aralığı 2 logical tick sürer. Bunlar verilen clock değerleridir; ölçülmüş latency veya production trace capture değildir.
Bir event oluşması bütün signals’da görünmesini garanti etmez
Instrumentation, sampling, local buffer, exporter ve collector/backend ayrı aşamalardır. Request gerçekleşmişken sampling kararı nedeniyle trace tutulmamış olabilir. Metrics ayrı instrumentation yolu üzerinden aynı request’i sayabilir. Head sampling erken karar verdiği için sonradan oluşan her error’ı seçme garantisi vermez. Tail sampling tamamlanmış span bilgisine daha geniş bakabilir, fakat kendi buffer ve availability sınırları vardır. Örnek verilen sampled boolean’ını kullanır; gerçek OpenTelemetry sampler veya collector çalıştırmaz.
Sınırlı window üç yerel public call içerir: iki success ve bir unavailable. Metric request total 3, error total 1 olur; trace seçilen iki request için tutulur. Her request’in trace’inin görünmemesi metric total’un yanlış olduğu anlamına gelmez. Error fraction 1/3 yalnız bu denominator içindir; window, reset ve label kapsamı olmadan global error rate söylenmez. Boş window’da denominator 0 olduğunda rate tanımsız kalır. Ölçülmüş sıfır error ile hiç measurement olmaması farklıdır.
Log record’un üretilmesi, redaction’dan geçmesi, exporter’a verilmesi ve observer store’da bulunması ayrı gözlemlerdir. Normal yerel stream sonucunda public record bağımsız JSON parser ile okunur. Export failure’da yerel sink OSError verir; business success korunur ama exported record sayısı 0, visibility ise doğrulanmamış kalır. Bu public-read policy her compliance veya audit sistemi için genel izin değildir; zorunlu audit event’lerinin retention ve durability sözleşmesi ayrıca tasarlanır.
2. Red · Güven ve etki
Hareket olmadan bütün senaryoları oku
Trace yokluğu
- Unsampled başarılı call
Unsampled status 200 ve businessCompleted true; metricIncrement 1, sampled false ve retainedTraces 0. Trace bulunmaması bu normal request’in gerçekleşmediğini söylemiyor.
- Diagnostic ledger
- Business complete / metric+1 / trace0
- Observation policy
- Henüz değerlendirilmedi
- Observer sonucu
- Henüz değerlendirilmedi
- Window denominator
Status penceresi 200/503/200 için requestTotal 3, errorTotal 1. RetainedRequestTraces 2 sayısını denominator yaparsak scope değişir; sampling metric’ten call silmez.
- Diagnostic ledger
- Business complete / metric+1 / trace0
- Observation policy
- Error fraction1/3 / retained traces2
- Observer sonucu
- Henüz değerlendirilmedi
- Boş input oran değil
Missing denominator 0 için windowRate null. Zero observation’dan error fraction 0 çıkarılmıyor; signal coverage bilinmeden healthy sonucu üretilemiyor.
- Diagnostic ledger
- Business complete / metric+1 / trace0
- Observation policy
- Error fraction1/3 / retained traces2
- Observer sonucu
- No denominator / rate null / health unknown
- Span ilişkisini oku
span-child parentAlias span-root ile aynı trace-demo’ya bağlı. Logical interval 11–13, root 10–14; authored duration gerçek milliseconds veya latency değildir.
- Diagnostic ledger
- Logical parent relation / no wall-clock latency
- Observation policy
- Error fraction1/3 / retained traces2
- Observer sonucu
- No denominator / rate null / health unknown
- Causal iddiayı sınırlı tut
Aynı operation adı veya timestamp yakınlığı parent context’i oluşturmaz. Trace alias ve exact parent relation kapsamı korunur; logical duration’dan production bottleneck teşhisi çıkarılmaz.
- Diagnostic ledger
- Logical parent relation / no wall-clock latency
- Observation policy
- Correlation relation ≠ full causal diagnosis
- Observer sonucu
- No denominator / rate null / health unknown
- Yokluğu doğru adlandır
Verified sampling kararı known trace absence nedeni; missing observation’da böyle açıklama yok. No signal, no event veya health-success diye tek sonuca çevrilmiyor.
- Diagnostic ledger
- Logical parent relation / no wall-clock latency
- Observation policy
- Correlation relation ≠ full causal diagnosis
- Observer sonucu
- Sampling absence ≠ unexplained visibility gap
Export ve privacy
- Public log projection
Fake input demo-token-alias ve demo-session-alias içeriyor. Allowlist yalnız event, operation ve correlationAlias çıkarır; raw source object değişmez.
- Diagnostic ledger
- Three exported fields / fake aliases excluded
- Observation policy
- Henüz değerlendirilmedi
- Observer sonucu
- Henüz değerlendirilmedi
- Redaction’ın dar kapsamı
Known field projection bütün nested log format’ları için secret detector değildir. Trace attributes veya metric dimensions aynı filter’dan otomatik geçmez; her signal kendi data policy’sini ister.
- Diagnostic ledger
- Three exported fields / fake aliases excluded
- Observation policy
- Known-field projection / other signals separate
- Observer sonucu
- Henüz değerlendirilmedi
- Export sink failure
ExportFailure businessCompleted true ve status 200 tutarken exportOk false, exportedRecords 0. Başarılı public read visibilityConfirmed true yapmaz; signal gap ayrı korunur.
- Diagnostic ledger
- Three exported fields / fake aliases excluded
- Observation policy
- Known-field projection / other signals separate
- Observer sonucu
- Business200 / export false / visibility false
- Policy sınırlaması
Bu public diagnostic explicit best-effort policy kullanıyor. Mandatory security audit varsa aynı export error’ın business action’a etkisi ayrı tasarlanmalı; örnek universal fail-open kuralı değildir.
- Diagnostic ledger
- Best-effort public diagnostics only
- Observation policy
- Known-field projection / other signals separate
- Observer sonucu
- Business200 / export false / visibility false
- Secret toplamayı gerekçelendirme
Correlation boşluğunu kapatmak için Authorization, session veya private body toplamak gerekmez. Fake seed values gerçek credential değildir; minimum public comparison alanları yeterli.
- Diagnostic ledger
- Best-effort public diagnostics only
- Observation policy
- Minimum fields / no raw credential collection
- Observer sonucu
- Business200 / export false / visibility false
- İki sonucu ayrı bildir
Public result tamamlandı, diagnostic export başarısız. Bu kayıt server authorization veya telemetry backend teslimi üretmez; local sink error yalnız observer kapsamını daraltır.
- Diagnostic ledger
- Best-effort public diagnostics only
- Observation policy
- Minimum fields / no raw credential collection
- Observer sonucu
- Business result known / diagnostic gap retained
VARSAYIM · SINIR · KONTROL
No signal’ı no event veya healthy diye okumak
Trace bulunmamasından operation’ın gerçekleşmediği çıkarılamaz. Sampling false, eksik context, exporter failure veya retention window farklı açıklamalar olabilir. Unsampled dalında business response tamamlanır, metric artar ve retained trace sayısı 0 kalır. Request sonucu ile recording kararı ayrı tutulur; tutulmamış trace için gerçekleşmemiş failure veya success event’i üretilmez.
Metric değeri 0, instrumentation yolunun aktif ve observation window’un kapsamlı olduğu bilinmeden no-error kanıtı değildir. Boş input’tan error fraction 0 üretmek denominator bilgisini siler. Health değerlendirmesi beklenen sinyal üretimini, güncel observation’ı ve user-flow sonucunu birlikte kullanır. Missing case observer state’ini unknown tutar; dashboard veya tamamlanmış sahne işareti gerçek application health ya da caller yetkisi sağlamaz.
Daha fazla data toplamak her zaman daha iyi değildir
Request body, Authorization, session identifier veya private attribute’ları bütünüyle log’a taşımak secrets ve personal data exposure yaratabilir. Örnekte yalnız demo-token-alias ve demo-session-alias sahte değerleri vardır. Allowlist output’ta event, operation ve correlationAlias bırakırken source dictionary değişmez. Bu kontrol gerçek secret keşfi veya bütün nested log formatlarını tarayan detector değildir; yalnız verilen alanların sink’e gitmediği bağımsız olarak okunur.
Span attribute ve metric dimension da data toplar; log filter’ın diğer sinyallere otomatik uygulandığı varsayılmaz. High-cardinality identifier’lar memory, maliyet ve investigation kapsamını etkiler. Operational telemetry ile authoritative security audit aynı completeness ve retention garantilerine sahip olmayabilir. Export failure ile business sonucunu ayırmak mandatory audit gap’ini yok saymak değildir. Burada yalnız public read için açıkça seçilmiş best-effort diagnostic policy vardır.
3. Blue · Güvenli geliştirme ve savunma
Hareket olmadan bütün senaryoları oku
Signal controls
- Üç call envanteri
Adapter status listesi 200/503/200; totals 3 request, 2 success ve 1 error. Counter scope bu finite window’dur; global service oranı veya SLA diye gösterilmiyor.
- Public telemetry records
- Window3 / success2 / error1
- Signal comparison
- Henüz değerlendirilmedi
- Coverage sonucu
- Henüz değerlendirilmedi
- Sampling karşılaştırması
Sampled true/true/false iki trace bırakırken üçüncü call metricIncrement 1 taşır. Request outcome ile record retention ayrı tutulur; trace count request denominator’ı değildir.
- Public telemetry records
- Window3 / success2 / error1
- Signal comparison
- Calls3 / retained traces2
- Coverage sonucu
- Henüz değerlendirilmedi
- Structured field kontrolü
Exported record yalnız üç allowed field içerir. Fake authorization/session aliases output’ta yok, sourceMutated false; daha geniş anonymization başarısı eklenmez.
- Public telemetry records
- Window3 / success2 / error1
- Signal comparison
- Calls3 / retained traces2
- Coverage sonucu
- Allowed fields only / source unchanged
- Span context kontrolü
Root parent null, child parent span-root ve trace-demo aynı. Duration end-start ile 4/2 logical unit; unit ve clock scope gerçek timing iddiasından ayrı.
- Public telemetry records
- Exact parent relation / logical durations4,2
- Signal comparison
- Calls3 / retained traces2
- Coverage sonucu
- Allowed fields only / source unchanged
- Üç visibility durumu
Unsampled verified recording decision, exportFailure observed sink OSError, missing ise hiç observation yok. Aynı record count 0 farklı knowledge taşır; nedenler tek missing etiketiyle birleşmez.
- Public telemetry records
- Exact parent relation / logical durations4,2
- Signal comparison
- Sampling / observed export error / unknown
- Coverage sonucu
- Allowed fields only / source unchanged
- Observer health sınırı
Finite log/count karşılaştırması local adapter scope’unda kalır. Collector, remote exporter ve SDK çalıştığı veya production logs yakalandığı iddiası yok; visibility ile business outcome ayrı bildirilir.
- Public telemetry records
- Exact parent relation / logical durations4,2
- Signal comparison
- Sampling / observed export error / unknown
- Coverage sonucu
- Local signal evidence / remote coverage unmeasured
Observation eksik
- Boş observer görünümü
Missing observationPresent false ve health unknown. Observer’da record yokken source event’in gerçekleşmediği veya service’in healthy olduğu çıkarılamaz.
- Public telemetry records
- No observation / health unknown
- Signal comparison
- Henüz değerlendirilmedi
- Coverage sonucu
- Henüz değerlendirilmedi
- Coverage koşulu eksik
Sampling, export success ve retained window bilinmiyor. Normal exporter veya unsampled açıklamasını bu olaya eklemek missing state’i doğrulanmış bir nedeni varmış gibi gösterir.
- Public telemetry records
- No observation / health unknown
- Signal comparison
- Sampling/export/window missing
- Coverage sonucu
- Henüz değerlendirilmedi
- Oranı hesaplama
Denominator 0 ve windowRate null korunur. Empty data için error0 yazmak instrumentation completeness varsayımı ekler; businessEventAbsenceProved false kalır.
- Public telemetry records
- No observation / health unknown
- Signal comparison
- Sampling/export/window missing
- Coverage sonucu
- No fraction / event absence unproved
- Gerekli observation bağı
Signal purpose, active instrumentation, sample decision, export outcome ve observation window gerekli. Public correlation alias aynı action’a bağlanır; secret veya private body gerekmez.
- Public telemetry records
- Needed: instrumentation/sampling/export/window
- Signal comparison
- Sampling/export/window missing
- Coverage sonucu
- No fraction / event absence unproved
- Causal sonucu sınırlı tut
Clock yakınlığı veya aynı title event’in tamamlandığını kanıtlamaz. Business result kendi receiver’ından, telemetry receipt kendi sink’inden doğrulanmalı; biri diğerinin boşluğunu doldurmaz.
- Public telemetry records
- Needed: instrumentation/sampling/export/window
- Signal comparison
- Business and telemetry recipients distinct
- Coverage sonucu
- No fraction / event absence unproved
- Unknown’u dürüst koru
Bu inceleme visibility gap kaydeder, yeni event veya health başarı üretmez. Yeni evidence window ve receiver sınırını açıklayınca rate veya outcome tekrar değerlendirilebilir.
- Public telemetry records
- Needed: instrumentation/sampling/export/window
- Signal comparison
- Business and telemetry recipients distinct
- Coverage sonucu
- Visibility unknown / collect scoped signal evidence
UYGULAMA · GÜVENLİK KONTROLÜ · DOĞRULAMA
Sinyalin neyi saydığını ve neyi taşıdığını tanımla
Log schema’sında event’in amacını, output’a uygun alanları ve correlation alias’ını tanımla; raw secrets veya upstream object’in tamamını ekleme. Metric counter’ın reset kapsamını ve operation/status boyutlarını kaydet. Histogram ve duration yorumu unit, window ve source clock ister; verilen logical tick’i millisecond veya benchmark sanma. Root/child span ilişkisini ortak traceAlias ve doğru parentAlias ile göster. İsim eşitliği tek başına parent context kurmaz.
Yerel kontrol public-call adapter kararlarından cumulative counts türetir ve bağımsız parse edilmiş request sonuçlarıyla toplamları karşılaştırır. Sampled=false request metric toplamından düşmez. Structured log StringIO sink’te üretilir; bağımsız JSON parser yalnız seçilen alanları kontrol eder. Sahte seed değerleri output’a gitmez ve source object korunur. Bu observation Python ve yerel writer kapsamındadır; SDK exporter/backend veya gerçek production log capture değildir.
Visibility gap ve business outcome’u birlikte göster
Exporter error, unsampled trace ve eksik observation’ı ayrı dallarla göster. Export error sırasında public read tamamlanabilir ama signal store eksik kalır; bunu health success saymadan visibility gap olarak kaydet. Unsampled dalında sıfır trace için açık sampling kararı vardır; missing observation’da aynı açıklama bulunmayabilir. Best-effort policy yalnız operational public-read diagnostics içindir. Security-sensitive audit retention ve access policy ayrıca belirlenmelidir.
Selector exportOk=false iken visibilityConfirmed=true yazılmış tutarsız kaydı arar. Normal degraded-visibility row’da count=0, positive inconsistent row’da count=1 bulunur; missing row yine yetersiz kanıttır. Business response’un tamamlanması instrumentation’ın record ürettiğini veya observer’ın remote telemetry aldığını söylemez. Request outcome, recording ve export receipt aynı iş için ayrı izlenir.
ŞİMDİ VAKAYA UYGULA
Trace yoksa request de yok mu?
Üç public call’ın status’ları 200, 503 ve 200; sadece ilk iki trace saklanıyor. Export sink hata verse de bir public read 200 ile tamamlanabiliyor. Counter, sampled trace ve exported record farklı kapsamları sayıyor; correlation alias gerçek wire trace ID’si değil.
Vakadaki data journey’yi environment, dependency ve telemetry context’iyle birlikte değerlendir. Bir operational success etiketi bütün application sonuçlarını kanıtlar mı?
Bağlı vaka dosyasını aç ↗ÖRNEĞİ BİRLİKTE OKUYALIM
Public telemetry ve visibility karar defteri
Bir alan seç; hangi sonucu desteklediğini ve nerede yetersiz kaldığını incele.
Ham kaydı ve alan açıklamalarını oku
{
"schema": {
"fields": [
"event",
"operation",
"correlationAlias"
],
"classification": "public synthetic diagnostic only",
"recordIsVendorFormat": false,
"traceAliasesAreWireIds": false
},
"normal": {
"rawFakeInput": {
"event": "public-read-completed",
"operation": "read-public-note",
"correlationAlias": "request-demo",
"authorizationAlias": "demo-token-alias",
"sessionAlias": "demo-session-alias"
},
"exported": {
"event": "public-read-completed",
"operation": "read-public-note",
"correlationAlias": "request-demo"
},
"businessResult": {
"status": 200,
"title": "Tea note"
},
"exportedRecords": 1,
"sourceMutated": false
},
"window": {
"adapterStatuses": [
200,
503,
200
],
"sampled": [
true,
true,
false
],
"requestTotal": 3,
"successTotal": 2,
"errorTotal": 1,
"retainedRequestTraces": 2,
"errorFraction": {
"numerator": 1,
"denominator": 3
},
"scope": "finite own adapter window; not global service rate"
},
"spans": [
{
"traceAlias": "trace-demo",
"spanAlias": "span-root",
"parentAlias": null,
"operation": "read-public-note",
"logicalStart": 10,
"logicalEnd": 14,
"logicalDuration": 4
},
{
"traceAlias": "trace-demo",
"spanAlias": "span-child",
"parentAlias": "span-root",
"operation": "local-note-read",
"logicalStart": 11,
"logicalEnd": 13,
"logicalDuration": 2
}
],
"unsampled": {
"status": 200,
"metricIncrement": 1,
"sampled": false,
"retainedTraces": 0,
"businessCompleted": true
},
"exportFailure": {
"status": 200,
"businessCompleted": true,
"exportOk": false,
"exportedRecords": 0,
"visibilityConfirmed": false,
"observedFailure": "own sink OSError",
"policy": "explicit best-effort public diagnostics; not mandatory audit"
},
"missing": {
"observationPresent": false,
"health": "unknown",
"businessEventAbsenceProved": false,
"windowRate": null,
"denominator": 0
},
"limits": {
"actualProductionLogsRead": false,
"otelSdkExecuted": false,
"collectorExecuted": false,
"remoteExporterExecuted": false,
"realSecretsRead": false,
"realLatencyMeasured": false,
"authorizationVerified": false
},
"selector": {
"language": "XPath",
"xml": "<audit><telemetry exportOk=\"false\" visibilityConfirmed=\"false\"/></audit>",
"xpath": "count(/audit/telemetry[@exportOk='false' and @visibilityConfirmed='true'])",
"expected": 0,
"positiveFixtureXml": "<audit><telemetry exportOk=\"false\" visibilityConfirmed=\"true\"/></audit>",
"positiveExpected": 1,
"scope": "Own inert decision observations, not vendor log fields.",
"missingFieldBehavior": "Missing observation is insufficient evidence; zero matches alone proves no healthy runtime/control."
}
}- normal/schema
- Yalnız örneğin public output schema’sı; sahte hassas alias’lar dışarıda bırakılır.
- window/spans
- Sınırlı counter window’u ile verilen logical span aralıkları farklı kapsam taşır.
- unsampled/exportFailure/missing
- Recording kararı, sink hatası ve eksik evidence farklı sonuçlardır.
- selector/limits
- Production capture, gerçek SDK/backend, secret veya latency ölçümü yok.
Yerel adapter, structured stream ve counter ölçümleriyle sınırlıdır; span’ler verilen logical context örnekleridir. Gerçek log veya secret okunmaz; OpenTelemetry SDK, collector/backend, remote exporter ya da latency capture çalıştırılmaz.
İki yanlış kanı
Trace veya error log yoksa request ya da error da olmamıştır.
Sampling, export, retention veya observation gap sinyali eksiltebilir; sinyal yokluğu event yokluğunu kanıtlamaz.
Correlation ID ve log success, yetki veya business commit kanıtıdır.
Correlation context’i bağlar; permission ve authoritative business sonucu ilgili owner’da ayrıca doğrulanır.
SIRA SENDE
Bu hikâyeyi sen çöz.
Sonucu tahmin et, kanıtın sınırını bul ve nedenini kendi cümlenle anlat.
Bir request 200 ile tamamlandı, fakat sampled=false ve retainedTraces=0. Metrics’e de hiç eklenmediği çıkarılabilir mi?
- Evet. Trace tutulmadıysa request gerçekleşmemiştir.
- Hayır. metricIncrement=1; businessCompleted=true.
Gerekçeli cevabı oku
Hayır. metricIncrement=1; businessCompleted=true. — Bu request için trace tutulmaz, fakat metric sayacı artar. Trace sayısı bütün request sayısı değildir.
Public diagnostic export’u başarısız. Kullanıcıya response verilmesi ile log’un görünür olması aynı başarı mı?
Dersten seçilen artifact alanları; öğretim örneği
- exportFailure.status
- 200
- exportFailure.businessCompleted
- true
- exportFailure.exportOk
- false
- exportFailure.visibilityConfirmed
- false
- exportFailure.policy
- explicit best-effort public diagnostics; not mandatory audit
- Hayır. Business işlem tamamlanır; export görünürlüğü doğrulanmaz.
- Response 200 ise bütün log sink’leri kaydı kesin almıştır.
Gerekçeli cevabı oku
Hayır. Business işlem tamamlanır; export görünürlüğü doğrulanmaz. — status=200 ve businessCompleted=true olsa da exportOk=false ve visibilityConfirmed=false. Bu policy response’u durdurmaz, fakat log delivery kanıtı da üretmez.
Window’da 3 request, 1 error ve 2 retained trace var. Missing observation ve denominator=0 için neden error rate 0 diyemeyiz?
Gerekçeli cevabı oku
Verilen window için errorFraction=1/3 hesaplanır. Sampling nedeniyle retained trace sayısı 2’dir; metric denominator 3’tür. Missing branch’inde observationPresent=false ve windowRate=null; denominator=0 sıfır hata oranı kanıtı değildir. Trace alias’ları logical correlation içindir, kullanıcı kimliği veya wire ID doğrulaması değildir. Public allowlist dışındaki fake session/authorization alias’ları export edilmez; bu işlem tam anonimleştirme garantisi de değildir.
□ Trace sayısını metric denominator yerine kullanmadım.
□ Eksik gözlemi sıfır hata oranına veya sağlıklı service sonucuna çevirmedim.
Uygulama konsolunu aç · request / response / browser
Request, URL, cookie ve DOM örneklerini ayrıca aç
Kaynaklar ve kapsam
- OpenTelemetry — Observability primerWhat is Observability? · Reliability and metrics · Understanding distributed tracing
- OpenTelemetry — LogsLogs: timestamped record of an event · Structured logs · Log Record Exporter
- OpenTelemetry — MetricsMetrics: runtime measurement · Metric Instruments · Aggregation · Cardinality limits
- OpenTelemetry — TracesContext Propagation · Spans · Span Context
- OpenTelemetry — SamplingHead Sampling · Tail Sampling
- OWASP — Logging Cheat SheetEvent attributes · Data to exclude · Verification · Protection