[{"data":1,"prerenderedAt":245},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fhow-it-works\u002Fwhat-gets-captured":3,"docs-navigation":172},{"id":4,"title":5,"body":6,"description":163,"extension":164,"meta":165,"navTitle":166,"navigation":167,"path":168,"seo":169,"stem":170,"__hash__":171},"docs\u002Fdocs\u002F2.how-it-works\u002F1.what-gets-captured.md","What gets captured, and how",{"type":7,"value":8,"toc":158},"minimark",[9,34,143,148,155],[10,11,12,13,17,18,21,22,25,26,29,30,33],"p",{},"Nafas hooks into the same extension points ASP.NET Core and\n",[14,15,16],"code",{},"Microsoft.Extensions.Logging","\u002F",[14,19,20],{},"System.Diagnostics"," already expose — it\ndoes not require replacing ",[14,23,24],{},"ILogger\u003CT>",", wrapping ",[14,27,28],{},"HttpClient",", or adding\nany ",[14,31,32],{},"[Trace]","-style attributes to your code.",[35,36,37,53],"table",{},[38,39,40],"thead",{},[41,42,43,47,50],"tr",{},[44,45,46],"th",{},"Signal",[44,48,49],{},"Source",[44,51,52],{},"Notes",[54,55,56,80,98,118],"tbody",{},[41,57,58,62,69],{},[59,60,61],"td",{},"Logs",[59,63,64,65,68],{},"An ",[14,66,67],{},"ILoggerProvider"," registered alongside your existing providers",[59,70,71,72,75,76,79],{},"Every ",[14,73,74],{},"ILogger.Log*"," call in the app, correlated to the active ",[14,77,78],{},"Activity"," when there is one",[41,81,82,85,91],{},[59,83,84],{},"Traces",[59,86,87,88],{},"A process-wide ",[14,89,90],{},"System.Diagnostics.ActivityListener",[59,92,93,94,97],{},"Listens to every ",[14,95,96],{},"ActivitySource",", including ASP.NET Core's own built-in per-request activity — no manual span creation needed for basic request tracing",[41,99,100,103,108],{},[59,101,102],{},"Metrics",[59,104,87,105],{},[14,106,107],{},"System.Diagnostics.Metrics.MeterListener",[59,109,93,110,113,114,117],{},[14,111,112],{},"Meter",", including ASP.NET Core 8+'s built-in ",[14,115,116],{},"http.server.request.duration",", from which request-rate is also derived",[41,119,120,123,140],{},[59,121,122],{},"Resource usage",[59,124,125,126,129,130,133,134,139],{},"A native sampler (",[14,127,128],{},"Process"," + ",[14,131,132],{},"GC.GetGCMemoryInfo()",", with a Windows-API fallback — see ",[135,136,138],"a",{"href":137},"\u002Fdocs\u002Fgetting-started\u002Frequirements","Requirements",")",[59,141,142],{},"CPU and memory usage of the running process, sampled on an interval",[144,145,147],"h2",{"id":146},"no-backpressure-on-your-app","No backpressure on your app",[10,149,150,151,154],{},"All of it is written through a bounded, non-blocking queue\n(",[14,152,153],{},"System.Threading.Channels",") so a burst of telemetry never applies\nbackpressure to your request pipeline — under sustained overload, Nafas\ndrops its own data rather than slow your app down.",[10,156,157],{},"A dedicated background service drains and batches that queue into\nstorage, and the dashboard's live views (the log stream, in particular)\nare pushed to the browser over Server-Sent Events at write time — they are\nnot a polling query against the database.",{"title":159,"searchDepth":160,"depth":160,"links":161},"",2,[162],{"id":146,"depth":160,"text":147},"Nafas hooks into ASP.NET Core's own extension points — no code changes required to start capturing logs, traces, and metrics.","md",{},"What gets captured",true,"\u002Fdocs\u002Fhow-it-works\u002Fwhat-gets-captured",{"title":5,"description":163},"docs\u002F2.how-it-works\u002F1.what-gets-captured","tjwRW2O4C2oQxBe3UIC1Dn8g9L4nCFqRtEMTCDk336E",[173],{"title":174,"path":175,"stem":176,"children":177},"Docs","\u002Fdocs","docs",[178,181,197,207,220,233,241],{"title":179,"path":175,"stem":180},"Documentation","docs\u002Findex",{"title":182,"path":183,"stem":184,"children":185,"page":196},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",[186,190,194],{"title":187,"path":188,"stem":189},"Why Nafas","\u002Fdocs\u002Fgetting-started\u002Fwhy-nafas","docs\u002F1.getting-started\u002F1.why-nafas",{"title":191,"path":192,"stem":193},"Quick start","\u002Fdocs\u002Fgetting-started\u002Fquick-start","docs\u002F1.getting-started\u002F2.quick-start",{"title":138,"path":137,"stem":195},"docs\u002F1.getting-started\u002F3.requirements",false,{"title":198,"path":199,"stem":200,"children":201,"page":196},"How It Works","\u002Fdocs\u002Fhow-it-works","docs\u002F2.how-it-works",[202,203],{"title":5,"path":168,"stem":170},{"title":204,"path":205,"stem":206},"How it's built internally","\u002Fdocs\u002Fhow-it-works\u002Finternals","docs\u002F2.how-it-works\u002F2.internals",{"title":208,"path":209,"stem":210,"children":211,"page":196},"Configuration","\u002Fdocs\u002Fconfiguration","docs\u002F3.configuration",[212,216],{"title":213,"path":214,"stem":215},"Configuration options","\u002Fdocs\u002Fconfiguration\u002Foptions","docs\u002F3.configuration\u002F1.options",{"title":217,"path":218,"stem":219},"Security","\u002Fdocs\u002Fconfiguration\u002Fsecurity","docs\u002F3.configuration\u002F2.security",{"title":221,"path":222,"stem":223,"children":224,"page":196},"Deployment","\u002Fdocs\u002Fdeployment","docs\u002F4.deployment",[225,229],{"title":226,"path":227,"stem":228},"Multi-instance deployments","\u002Fdocs\u002Fdeployment\u002Fmulti-instance","docs\u002F4.deployment\u002F1.multi-instance",{"title":230,"path":231,"stem":232},"Desktop and other non-ASP.NET Core apps","\u002Fdocs\u002Fdeployment\u002Fdesktop-apps","docs\u002F4.deployment\u002F2.desktop-apps",{"title":234,"path":235,"stem":236,"children":237,"page":196},"Alerting","\u002Fdocs\u002Falerting","docs\u002F5.alerting",[238],{"title":234,"path":239,"stem":240},"\u002Fdocs\u002Falerting\u002Falert-rules","docs\u002F5.alerting\u002F1.alert-rules",{"title":242,"path":243,"stem":244},"Contributing","\u002Fdocs\u002Fcontributing","docs\u002F6.contributing",1789838144292]