[{"data":1,"prerenderedAt":2304},["ShallowReactive",2],{"navigation_docs":3,"-adapters-cloud-hyperdx":547,"-adapters-cloud-hyperdx-surround":2299},[4,35,159,201,289,446,531],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24,29],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",{"title":30,"path":31,"stem":32,"icon":33},"vs Other Loggers","\u002Fgetting-started\u002Fvs-other-loggers","1.getting-started\u002F5.vs-other-loggers","i-lucide-scale",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Logging","\u002Flogging","2.logging",[40,45,50,55,60,65,70,99,127],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flogging\u002Foverview","2.logging\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flogging\u002Fsimple-logging","2.logging\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flogging\u002Fwide-events","2.logging\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flogging\u002Fstructured-errors","2.logging\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Catalogs","\u002Flogging\u002Fcatalogs","2.logging\u002F4.catalogs","i-lucide-book-open",{"title":66,"path":67,"stem":68,"icon":69},"Client Logging","\u002Flogging\u002Fclient-logging","2.logging\u002F5.client-logging","i-lucide-monitor",{"title":71,"icon":72,"path":73,"stem":74,"children":75,"page":34},"AI SDK","i-simple-icons-vercel","\u002Flogging\u002Fai-sdk","2.logging\u002F6.ai-sdk",[76,79,84,89,94],{"title":41,"path":77,"stem":78,"icon":44},"\u002Flogging\u002Fai-sdk\u002Foverview","2.logging\u002F6.ai-sdk\u002F01.overview",{"title":80,"path":81,"stem":82,"icon":83},"Usage","\u002Flogging\u002Fai-sdk\u002Fusage","2.logging\u002F6.ai-sdk\u002F02.usage","i-lucide-code",{"title":85,"path":86,"stem":87,"icon":88},"Options","\u002Flogging\u002Fai-sdk\u002Foptions","2.logging\u002F6.ai-sdk\u002F03.options","i-lucide-sliders",{"title":90,"path":91,"stem":92,"icon":93},"Metadata","\u002Flogging\u002Fai-sdk\u002Fmetadata","2.logging\u002F6.ai-sdk\u002F04.metadata","i-lucide-database",{"title":95,"path":96,"stem":97,"icon":98},"Telemetry","\u002Flogging\u002Fai-sdk\u002Ftelemetry","2.logging\u002F6.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":100,"icon":101,"path":102,"stem":103,"children":104,"page":34},"Better Auth","i-simple-icons-betterauth","\u002Flogging\u002Fbetter-auth","2.logging\u002F7.better-auth",[105,108,113,118,122],{"title":41,"path":106,"stem":107,"icon":44},"\u002Flogging\u002Fbetter-auth\u002Foverview","2.logging\u002F7.better-auth\u002F01.overview",{"title":109,"path":110,"stem":111,"icon":112},"Identify User","\u002Flogging\u002Fbetter-auth\u002Fidentify-user","2.logging\u002F7.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":114,"path":115,"stem":116,"icon":117},"Middleware","\u002Flogging\u002Fbetter-auth\u002Fmiddleware","2.logging\u002F7.better-auth\u002F03.middleware","i-lucide-shield",{"title":119,"path":120,"stem":121,"icon":69},"Client Sync","\u002Flogging\u002Fbetter-auth\u002Fclient-sync","2.logging\u002F7.better-auth\u002F04.client-sync",{"title":123,"path":124,"stem":125,"icon":126},"Performance","\u002Flogging\u002Fbetter-auth\u002Fperformance","2.logging\u002F7.better-auth\u002F05.performance","i-lucide-gauge",{"title":128,"icon":129,"path":130,"stem":131,"children":132,"page":34},"Audit Logs","i-lucide-shield-check","\u002Flogging\u002Faudit","2.logging\u002F8.audit",[133,136,141,146,151,155],{"title":41,"path":134,"stem":135,"icon":44},"\u002Flogging\u002Faudit\u002Foverview","2.logging\u002F8.audit\u002F01.overview",{"title":137,"path":138,"stem":139,"icon":140},"Schema","\u002Flogging\u002Faudit\u002Fschema","2.logging\u002F8.audit\u002F02.schema","i-lucide-file-text",{"title":142,"path":143,"stem":144,"icon":145},"Recording","\u002Flogging\u002Faudit\u002Frecording","2.logging\u002F8.audit\u002F03.recording","i-lucide-pen-line",{"title":147,"path":148,"stem":149,"icon":150},"Drains","\u002Flogging\u002Faudit\u002Fpipeline","2.logging\u002F8.audit\u002F04.pipeline","i-lucide-link",{"title":152,"path":153,"stem":154,"icon":129},"Compliance","\u002Flogging\u002Faudit\u002Fcompliance","2.logging\u002F8.audit\u002F05.compliance",{"title":156,"path":157,"stem":158,"icon":64},"Recipes","\u002Flogging\u002Faudit\u002Frecipes","2.logging\u002F8.audit\u002F06.recipes",{"title":160,"path":161,"stem":162,"children":163,"page":34},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[164,169,174,179,184,188,191,196],{"title":165,"path":166,"stem":167,"icon":168},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":170,"path":171,"stem":172,"icon":173},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":175,"path":176,"stem":177,"icon":178},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":180,"path":181,"stem":182,"icon":183},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":185,"path":186,"stem":187,"icon":129},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices",{"title":123,"path":189,"stem":190,"icon":126},"\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance",{"title":192,"path":193,"stem":194,"icon":195},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":197,"path":198,"stem":199,"icon":200},"Auto-Redaction","\u002Fcore-concepts\u002Fredaction","3.core-concepts\u002F7.redaction","i-lucide-eye-off",{"title":202,"path":203,"stem":204,"children":205,"page":34},"Frameworks","\u002Fframeworks","4.frameworks",[206,210,215,220,225,230,235,240,245,250,255,260,265,270,274,279,284],{"title":41,"path":207,"stem":208,"icon":209},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":211,"path":212,"stem":213,"icon":214},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":216,"path":217,"stem":218,"icon":219},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":221,"path":222,"stem":223,"icon":224},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":226,"path":227,"stem":228,"icon":229},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":231,"path":232,"stem":233,"icon":234},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":236,"path":237,"stem":238,"icon":239},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":241,"path":242,"stem":243,"icon":244},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":246,"path":247,"stem":248,"icon":249},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":251,"path":252,"stem":253,"icon":254},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":256,"path":257,"stem":258,"icon":259},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":261,"path":262,"stem":263,"icon":264},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":266,"path":267,"stem":268,"icon":269},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":271,"path":272,"stem":273,"icon":183},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":275,"path":276,"stem":277,"icon":278},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":280,"path":281,"stem":282,"icon":283},"AWS Lambda","\u002Fframeworks\u002Faws-lambda","4.frameworks\u002F16.aws-lambda","i-custom-lambda",{"title":285,"path":286,"stem":287,"icon":288},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F17.custom-integration","i-lucide-puzzle",{"title":290,"path":291,"stem":292,"children":293,"page":34},"Build on top","\u002Fbuild-on-top","5.build-on-top",[294,297,325,346,373,400,428],{"title":41,"path":295,"stem":296,"icon":54},"\u002Fbuild-on-top\u002Foverview","5.build-on-top\u002F0.overview",{"title":298,"path":299,"stem":300,"children":301,"page":34},"Observers","\u002Fbuild-on-top\u002Fobservers","5.build-on-top\u002Fobservers",[302,306,311,316,321],{"title":41,"path":303,"stem":304,"icon":305},"\u002Fbuild-on-top\u002Fobservers\u002Foverview","5.build-on-top\u002Fobservers\u002F1.overview","i-lucide-eye",{"title":307,"path":308,"stem":309,"icon":310},"Stream API","\u002Fbuild-on-top\u002Fobservers\u002Fin-process-stream","5.build-on-top\u002Fobservers\u002F2.in-process-stream","i-lucide-radio-tower",{"title":312,"path":313,"stem":314,"icon":315},"Stream server","\u002Fbuild-on-top\u002Fobservers\u002Fstream-server","5.build-on-top\u002Fobservers\u002F3.stream-server","i-lucide-radio",{"title":317,"path":318,"stem":319,"icon":320},"FS reader","\u002Fbuild-on-top\u002Fobservers\u002Ffs-reader","5.build-on-top\u002Fobservers\u002F4.fs-reader","i-lucide-folder-search",{"title":156,"path":322,"stem":323,"icon":324},"\u002Fbuild-on-top\u002Fobservers\u002Fconsumer-recipes","5.build-on-top\u002Fobservers\u002F5.consumer-recipes","i-lucide-chef-hat",{"title":326,"path":327,"stem":328,"children":329,"page":34},"Pipeline","\u002Fbuild-on-top\u002Fpipeline","5.build-on-top\u002Fpipeline",[330,334,338,342],{"title":41,"path":331,"stem":332,"icon":333},"\u002Fbuild-on-top\u002Fpipeline\u002Foverview","5.build-on-top\u002Fpipeline\u002F1.overview","i-lucide-workflow",{"title":335,"path":336,"stem":337,"icon":288},"Plugins","\u002Fbuild-on-top\u002Fpipeline\u002Fplugins","5.build-on-top\u002Fpipeline\u002F2.plugins",{"title":339,"path":340,"stem":341,"icon":28},"Custom enrichers","\u002Fbuild-on-top\u002Fpipeline\u002Fcustom-enrichers","5.build-on-top\u002Fpipeline\u002F3.custom-enrichers",{"title":343,"path":344,"stem":345,"icon":178},"Tail sampling","\u002Fbuild-on-top\u002Fpipeline\u002Ftail-sampling","5.build-on-top\u002Fpipeline\u002F4.tail-sampling",{"title":347,"path":348,"stem":349,"children":350,"page":34},"Scenarios","\u002Fbuild-on-top\u002Fscenarios","5.build-on-top\u002Fscenarios",[351,355,359,364,368],{"title":41,"path":352,"stem":353,"icon":354},"\u002Fbuild-on-top\u002Fscenarios\u002Foverview","5.build-on-top\u002Fscenarios\u002F0.overview","i-lucide-clipboard-list",{"title":356,"path":357,"stem":358,"icon":49},"Local debugging toolkit","\u002Fbuild-on-top\u002Fscenarios\u002Flocal-debugging-toolkit","5.build-on-top\u002Fscenarios\u002F1.local-debugging-toolkit",{"title":360,"path":361,"stem":362,"icon":363},"Tenant-aware logging","\u002Fbuild-on-top\u002Fscenarios\u002Ftenant-aware-logging","5.build-on-top\u002Fscenarios\u002F2.tenant-aware-logging","i-lucide-users",{"title":365,"path":366,"stem":367,"icon":129},"Compliance audit","\u002Fbuild-on-top\u002Fscenarios\u002Fcompliance-audit","5.build-on-top\u002Fscenarios\u002F3.compliance-audit",{"title":369,"path":370,"stem":371,"icon":372},"Cross-app error vocab","\u002Fbuild-on-top\u002Fscenarios\u002Fcross-app-error-vocab","5.build-on-top\u002Fscenarios\u002F4.cross-app-error-vocab","i-lucide-book",{"title":374,"path":375,"stem":376,"children":377,"page":34},"Shared packages","\u002Fbuild-on-top\u002Fshared","5.build-on-top\u002Fshared",[378,382,386,391,395],{"title":41,"path":379,"stem":380,"icon":381},"\u002Fbuild-on-top\u002Fshared\u002Foverview","5.build-on-top\u002Fshared\u002F1.overview","i-lucide-package",{"title":383,"path":384,"stem":385,"icon":381},"Catalogs as packages","\u002Fbuild-on-top\u002Fshared\u002Fcatalogs-as-packages","5.build-on-top\u002Fshared\u002F2.catalogs-as-packages",{"title":387,"path":388,"stem":389,"icon":390},"Drains as packages","\u002Fbuild-on-top\u002Fshared\u002Fdrains-as-packages","5.build-on-top\u002Fshared\u002F3.drains-as-packages","i-lucide-package-2",{"title":392,"path":393,"stem":394,"icon":28},"Enrichers as packages","\u002Fbuild-on-top\u002Fshared\u002Fenrichers-as-packages","5.build-on-top\u002Fshared\u002F4.enrichers-as-packages",{"title":396,"path":397,"stem":398,"icon":399},"Integration as package","\u002Fbuild-on-top\u002Fshared\u002Fintegration-as-package","5.build-on-top\u002Fshared\u002F5.integration-as-package","i-lucide-package-check",{"title":401,"path":402,"stem":403,"children":404,"page":34},"Sinks","\u002Fbuild-on-top\u002Fsinks","5.build-on-top\u002Fsinks",[405,409,414,418,423],{"title":41,"path":406,"stem":407,"icon":408},"\u002Fbuild-on-top\u002Fsinks\u002Foverview","5.build-on-top\u002Fsinks\u002F1.overview","i-lucide-arrow-up-from-line",{"title":410,"path":411,"stem":412,"icon":413},"Custom drains","\u002Fbuild-on-top\u002Fsinks\u002Fcustom-drains","5.build-on-top\u002Fsinks\u002F2.custom-drains","i-lucide-code-2",{"title":415,"path":416,"stem":417,"icon":333},"Drain pipeline","\u002Fbuild-on-top\u002Fsinks\u002Fdrain-pipeline","5.build-on-top\u002Fsinks\u002F3.drain-pipeline",{"title":419,"path":420,"stem":421,"icon":422},"Identity headers","\u002Fbuild-on-top\u002Fsinks\u002Fidentity-headers","5.build-on-top\u002Fsinks\u002F4.identity-headers","i-lucide-fingerprint",{"title":424,"path":425,"stem":426,"icon":427},"Fanout","\u002Fbuild-on-top\u002Fsinks\u002Ffanout-and-multi-drain","5.build-on-top\u002Fsinks\u002F5.fanout-and-multi-drain","i-lucide-share-2",{"title":429,"path":430,"stem":431,"children":432,"page":34},"Sources","\u002Fbuild-on-top\u002Fsources","5.build-on-top\u002Fsources",[433,437,441],{"title":41,"path":434,"stem":435,"icon":436},"\u002Fbuild-on-top\u002Fsources\u002Foverview","5.build-on-top\u002Fsources\u002F1.overview","i-lucide-arrow-down-to-line",{"title":438,"path":439,"stem":440,"icon":288},"Custom framework","\u002Fbuild-on-top\u002Fsources\u002Fcustom-framework","5.build-on-top\u002Fsources\u002F2.custom-framework",{"title":442,"path":443,"stem":444,"icon":445},"Middleware toolkit","\u002Fbuild-on-top\u002Fsources\u002Fmiddleware-toolkit","5.build-on-top\u002Fsources\u002F3.middleware-toolkit","i-lucide-wrench",{"title":447,"path":448,"stem":449,"children":450,"page":34},"Adapters","\u002Fadapters","6.adapters",[451,454,494,509],{"title":41,"path":452,"stem":453,"icon":44},"\u002Fadapters\u002Foverview","6.adapters\u002F01.overview",{"title":455,"path":456,"stem":457,"children":458,"page":34},"Cloud destinations","\u002Fadapters\u002Fcloud","6.adapters\u002F02.cloud",[459,464,469,474,479,484,489],{"title":460,"path":461,"stem":462,"icon":463},"Axiom","\u002Fadapters\u002Fcloud\u002Faxiom","6.adapters\u002F02.cloud\u002F01.axiom","i-custom-axiom",{"title":465,"path":466,"stem":467,"icon":468},"OTLP","\u002Fadapters\u002Fcloud\u002Fotlp","6.adapters\u002F02.cloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":470,"path":471,"stem":472,"icon":473},"PostHog","\u002Fadapters\u002Fcloud\u002Fposthog","6.adapters\u002F02.cloud\u002F03.posthog","i-simple-icons-posthog",{"title":475,"path":476,"stem":477,"icon":478},"Sentry","\u002Fadapters\u002Fcloud\u002Fsentry","6.adapters\u002F02.cloud\u002F04.sentry","i-simple-icons-sentry",{"title":480,"path":481,"stem":482,"icon":483},"Better Stack","\u002Fadapters\u002Fcloud\u002Fbetter-stack","6.adapters\u002F02.cloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":485,"path":486,"stem":487,"icon":488},"Datadog","\u002Fadapters\u002Fcloud\u002Fdatadog","6.adapters\u002F02.cloud\u002F06.datadog","i-simple-icons-datadog",{"title":490,"path":491,"stem":492,"icon":493},"HyperDX","\u002Fadapters\u002Fcloud\u002Fhyperdx","6.adapters\u002F02.cloud\u002F07.hyperdx","i-custom-hyperdx",{"title":495,"path":496,"stem":497,"children":498,"page":34},"Self-hosted","\u002Fadapters\u002Fself-hosted","6.adapters\u002F03.self-hosted",[499,504],{"title":500,"path":501,"stem":502,"icon":503},"File System","\u002Fadapters\u002Fself-hosted\u002Ffs","6.adapters\u002F03.self-hosted\u002F01.fs","i-lucide-hard-drive",{"title":505,"path":506,"stem":507,"icon":508},"NuxtHub","\u002Fadapters\u002Fself-hosted\u002Fnuxthub","6.adapters\u002F03.self-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":510,"path":511,"stem":512,"children":513,"page":34},"Building blocks","\u002Fadapters\u002Fbuilding-blocks","6.adapters\u002F04.building-blocks",[514,517,522,526],{"title":326,"path":515,"stem":516,"icon":333},"\u002Fadapters\u002Fbuilding-blocks\u002Fpipeline","6.adapters\u002F04.building-blocks\u002F01.pipeline",{"title":518,"path":519,"stem":520,"icon":521},"HTTP","\u002Fadapters\u002Fbuilding-blocks\u002Fhttp","6.adapters\u002F04.building-blocks\u002F02.http","i-lucide-globe",{"title":523,"path":524,"stem":525,"icon":83},"Custom Adapters","\u002Fadapters\u002Fbuilding-blocks\u002Fcustom","6.adapters\u002F04.building-blocks\u002F03.custom",{"title":527,"path":528,"stem":529,"icon":530},"Toolkit","\u002Fadapters\u002Fbuilding-blocks\u002Ftoolkit","6.adapters\u002F04.building-blocks\u002F04.toolkit","i-lucide-blocks",{"title":532,"path":533,"stem":534,"children":535,"page":34},"Enrichers","\u002Fenrichers","7.enrichers",[536,539,543],{"title":41,"path":537,"stem":538,"icon":28},"\u002Fenrichers\u002Foverview","7.enrichers\u002F1.overview",{"title":540,"path":541,"stem":542,"icon":288},"Built-in","\u002Fenrichers\u002Fbuilt-in","7.enrichers\u002F2.built-in",{"title":544,"path":545,"stem":546,"icon":83},"Custom","\u002Fenrichers\u002Fcustom","7.enrichers\u002F3.custom",{"id":548,"title":549,"body":550,"description":2286,"extension":2287,"links":2288,"meta":2295,"navigation":2296,"path":491,"seo":2297,"stem":492,"__hash__":2298},"docs\u002F6.adapters\u002F02.cloud\u002F07.hyperdx.md","HyperDX Adapter",{"type":551,"value":552,"toc":2263},"minimark",[553,574,616,620,623,667,670,675,695,699,721,725,1303,1306,1309,1312,1349,1353,1429,1436,1458,1471,1475,1482,1557,1563,1567,1570,1649,1663,1667,1800,1804,1817,1854,1858,1865,1877,1880,2005,2025,2029,2032,2052,2056,2060,2069,2072,2076,2088,2092,2095,2231,2235,2259],[554,555,556,562,563,567,568,573],"p",{},[557,558,490],"a",{"href":559,"rel":560},"https:\u002F\u002Fhyperdx.io",[561],"nofollow"," is an open-source observability platform. The evlog HyperDX adapter sends your wide events to HyperDX using ",[564,565,566],"strong",{},"OTLP over HTTP",", with defaults aligned to ",[557,569,572],{"href":570,"rel":571},"https:\u002F\u002Fhyperdx.io\u002Fdocs\u002Finstall\u002Fopentelemetry",[561],"HyperDX’s OpenTelemetry documentation",".",[575,576,579,582,604],"prompt",{":actions":577,"description":578,"icon":493},"[\"copy\",\"cursor\",\"windsurf\"]","Add the HyperDX drain adapter",[554,580,581],{},"Add the HyperDX drain adapter to send evlog wide events to HyperDX.",[583,584,585,589,592,595,598,601],"ol",{},[586,587,588],"li",{},"Identify which framework I'm using and follow its evlog integration pattern",[586,590,591],{},"Install evlog if not already installed",[586,593,594],{},"Import createHyperDXDrain from 'evlog\u002Fhyperdx'",[586,596,597],{},"Wire createHyperDXDrain() into my framework's drain configuration",[586,599,600],{},"Set HYPERDX_API_KEY environment variable in .env",[586,602,603],{},"Test by triggering a request and checking HyperDX",[554,605,606,607,611,612],{},"Adapter docs: ",[557,608,609],{"href":609,"rel":610},"https:\u002F\u002Fwww.evlog.dev\u002Fadapters\u002Fcloud\u002Fhyperdx",[561],"\nFramework setup: ",[557,613,614],{"href":614,"rel":615},"https:\u002F\u002Fwww.evlog.dev\u002Fframeworks",[561],[617,618,15],"h2",{"id":619},"installation",[554,621,622],{},"The HyperDX adapter comes bundled with evlog:",[624,625,631],"pre",{"className":626,"code":627,"filename":628,"language":629,"meta":630,"style":630},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createHyperDXDrain } from 'evlog\u002Fhyperdx'\n","src\u002Findex.ts","typescript","",[632,633,634],"code",{"__ignoreMap":630},[635,636,639,643,647,651,654,657,660,664],"span",{"class":637,"line":638},"line",1,[635,640,642],{"class":641},"s7zQu","import",[635,644,646],{"class":645},"sMK4o"," {",[635,648,650],{"class":649},"sTEyZ"," createHyperDXDrain",[635,652,653],{"class":645}," }",[635,655,656],{"class":641}," from",[635,658,659],{"class":645}," '",[635,661,663],{"class":662},"sfazB","evlog\u002Fhyperdx",[635,665,666],{"class":645},"'\n",[617,668,20],{"id":669},"quick-start",[671,672,674],"h3",{"id":673},"_1-get-your-ingestion-api-key","1. Get your ingestion API key",[583,676,677,684],{},[586,678,679,680,683],{},"Open the ",[557,681,490],{"href":559,"rel":682},[561]," dashboard for your team",[586,685,686,687,690,691,694],{},"Copy your ",[564,688,689],{},"ingestion API key"," (HyperDX documents this as the value for the ",[632,692,693],{},"authorization"," header in their OpenTelemetry examples)",[671,696,698],{"id":697},"_2-set-environment-variables","2. Set environment variables",[624,700,705],{"className":701,"code":702,"filename":703,"language":704,"meta":630,"style":630},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","HYPERDX_API_KEY=\u003CYOUR_HYPERDX_API_KEY_HERE>\n",".env","bash",[632,706,707],{"__ignoreMap":630},[635,708,709,712,715,718],{"class":637,"line":638},[635,710,711],{"class":649},"HYPERDX_API_KEY",[635,713,714],{"class":645},"=\u003C",[635,716,717],{"class":662},"YOUR_HYPERDX_API_KEY_HERE",[635,719,720],{"class":645},">\n",[671,722,724],{"id":723},"_3-wire-the-drain-to-your-framework","3. Wire the drain to your framework",[726,727,728,842,973,1035,1089,1148,1202,1255],"code-group",{},[624,729,732],{"className":626,"code":730,"filename":731,"language":629,"meta":630,"style":630},"\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\nimport { createHyperDXDrain } from 'evlog\u002Fhyperdx'\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', createHyperDXDrain())\n})\n","Nuxt \u002F Nitro",[632,733,734,740,759,766,798,833],{"__ignoreMap":630},[635,735,736],{"class":637,"line":638},[635,737,739],{"class":738},"sHwdD","\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\n",[635,741,743,745,747,749,751,753,755,757],{"class":637,"line":742},2,[635,744,642],{"class":641},[635,746,646],{"class":645},[635,748,650],{"class":649},[635,750,653],{"class":645},[635,752,656],{"class":641},[635,754,659],{"class":645},[635,756,663],{"class":662},[635,758,666],{"class":645},[635,760,762],{"class":637,"line":761},3,[635,763,765],{"emptyLinePlaceholder":764},true,"\n",[635,767,769,772,775,779,782,784,788,791,795],{"class":637,"line":768},4,[635,770,771],{"class":641},"export",[635,773,774],{"class":641}," default",[635,776,778],{"class":777},"s2Zo4"," defineNitroPlugin",[635,780,781],{"class":649},"(",[635,783,781],{"class":645},[635,785,787],{"class":786},"sHdIc","nitroApp",[635,789,790],{"class":645},")",[635,792,794],{"class":793},"spNyl"," =>",[635,796,797],{"class":645}," {\n",[635,799,801,804,806,809,811,814,817,820,823,825,828,830],{"class":637,"line":800},5,[635,802,803],{"class":649},"  nitroApp",[635,805,573],{"class":645},[635,807,808],{"class":649},"hooks",[635,810,573],{"class":645},[635,812,813],{"class":777},"hook",[635,815,781],{"class":816},"swJcz",[635,818,819],{"class":645},"'",[635,821,822],{"class":662},"evlog:drain",[635,824,819],{"class":645},[635,826,827],{"class":645},",",[635,829,650],{"class":777},[635,831,832],{"class":816},"())\n",[635,834,836,839],{"class":637,"line":835},6,[635,837,838],{"class":645},"}",[635,840,841],{"class":649},")\n",[624,843,845],{"className":626,"code":844,"filename":216,"language":629,"meta":630,"style":630},"\u002F\u002F lib\u002Fevlog.ts\nimport { createEvlog } from 'evlog\u002Fnext'\nimport { createHyperDXDrain } from 'evlog\u002Fhyperdx'\n\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n  drain: createHyperDXDrain(),\n})\n",[632,846,847,852,872,890,894,933,951,966],{"__ignoreMap":630},[635,848,849],{"class":637,"line":638},[635,850,851],{"class":738},"\u002F\u002F lib\u002Fevlog.ts\n",[635,853,854,856,858,861,863,865,867,870],{"class":637,"line":742},[635,855,642],{"class":641},[635,857,646],{"class":645},[635,859,860],{"class":649}," createEvlog",[635,862,653],{"class":645},[635,864,656],{"class":641},[635,866,659],{"class":645},[635,868,869],{"class":662},"evlog\u002Fnext",[635,871,666],{"class":645},[635,873,874,876,878,880,882,884,886,888],{"class":637,"line":761},[635,875,642],{"class":641},[635,877,646],{"class":645},[635,879,650],{"class":649},[635,881,653],{"class":645},[635,883,656],{"class":641},[635,885,659],{"class":645},[635,887,663],{"class":662},[635,889,666],{"class":645},[635,891,892],{"class":637,"line":768},[635,893,765],{"emptyLinePlaceholder":764},[635,895,896,898,901,903,906,908,911,913,916,918,921,923,926,928,930],{"class":637,"line":800},[635,897,771],{"class":641},[635,899,900],{"class":793}," const",[635,902,646],{"class":645},[635,904,905],{"class":649}," withEvlog",[635,907,827],{"class":645},[635,909,910],{"class":649}," useLogger",[635,912,827],{"class":645},[635,914,915],{"class":649}," log",[635,917,827],{"class":645},[635,919,920],{"class":649}," createError ",[635,922,838],{"class":645},[635,924,925],{"class":645}," =",[635,927,860],{"class":777},[635,929,781],{"class":649},[635,931,932],{"class":645},"{\n",[635,934,935,938,941,943,946,948],{"class":637,"line":835},[635,936,937],{"class":816},"  service",[635,939,940],{"class":645},":",[635,942,659],{"class":645},[635,944,945],{"class":662},"my-app",[635,947,819],{"class":645},[635,949,950],{"class":645},",\n",[635,952,954,957,959,961,964],{"class":637,"line":953},7,[635,955,956],{"class":816},"  drain",[635,958,940],{"class":645},[635,960,650],{"class":777},[635,962,963],{"class":649},"()",[635,965,950],{"class":645},[635,967,969,971],{"class":637,"line":968},8,[635,970,838],{"class":645},[635,972,841],{"class":649},[624,974,976],{"className":626,"code":975,"filename":246,"language":629,"meta":630,"style":630},"import { createHyperDXDrain } from 'evlog\u002Fhyperdx'\n\napp.use(evlog({ drain: createHyperDXDrain() }))\n",[632,977,978,996,1000],{"__ignoreMap":630},[635,979,980,982,984,986,988,990,992,994],{"class":637,"line":638},[635,981,642],{"class":641},[635,983,646],{"class":645},[635,985,650],{"class":649},[635,987,653],{"class":645},[635,989,656],{"class":641},[635,991,659],{"class":645},[635,993,663],{"class":662},[635,995,666],{"class":645},[635,997,998],{"class":637,"line":742},[635,999,765],{"emptyLinePlaceholder":764},[635,1001,1002,1005,1007,1010,1012,1015,1017,1020,1023,1025,1027,1030,1032],{"class":637,"line":761},[635,1003,1004],{"class":649},"app",[635,1006,573],{"class":645},[635,1008,1009],{"class":777},"use",[635,1011,781],{"class":649},[635,1013,1014],{"class":777},"evlog",[635,1016,781],{"class":649},[635,1018,1019],{"class":645},"{",[635,1021,1022],{"class":816}," drain",[635,1024,940],{"class":645},[635,1026,650],{"class":777},[635,1028,1029],{"class":649},"() ",[635,1031,838],{"class":645},[635,1033,1034],{"class":649},"))\n",[624,1036,1037],{"className":626,"code":975,"filename":241,"language":629,"meta":630,"style":630},[632,1038,1039,1057,1061],{"__ignoreMap":630},[635,1040,1041,1043,1045,1047,1049,1051,1053,1055],{"class":637,"line":638},[635,1042,642],{"class":641},[635,1044,646],{"class":645},[635,1046,650],{"class":649},[635,1048,653],{"class":645},[635,1050,656],{"class":641},[635,1052,659],{"class":645},[635,1054,663],{"class":662},[635,1056,666],{"class":645},[635,1058,1059],{"class":637,"line":742},[635,1060,765],{"emptyLinePlaceholder":764},[635,1062,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1083,1085,1087],{"class":637,"line":761},[635,1064,1004],{"class":649},[635,1066,573],{"class":645},[635,1068,1009],{"class":777},[635,1070,781],{"class":649},[635,1072,1014],{"class":777},[635,1074,781],{"class":649},[635,1076,1019],{"class":645},[635,1078,1022],{"class":816},[635,1080,940],{"class":645},[635,1082,650],{"class":777},[635,1084,1029],{"class":649},[635,1086,838],{"class":645},[635,1088,1034],{"class":649},[624,1090,1092],{"className":626,"code":1091,"filename":251,"language":629,"meta":630,"style":630},"import { createHyperDXDrain } from 'evlog\u002Fhyperdx'\n\nawait app.register(evlog, { drain: createHyperDXDrain() })\n",[632,1093,1094,1112,1116],{"__ignoreMap":630},[635,1095,1096,1098,1100,1102,1104,1106,1108,1110],{"class":637,"line":638},[635,1097,642],{"class":641},[635,1099,646],{"class":645},[635,1101,650],{"class":649},[635,1103,653],{"class":645},[635,1105,656],{"class":641},[635,1107,659],{"class":645},[635,1109,663],{"class":662},[635,1111,666],{"class":645},[635,1113,1114],{"class":637,"line":742},[635,1115,765],{"emptyLinePlaceholder":764},[635,1117,1118,1121,1124,1126,1129,1132,1134,1136,1138,1140,1142,1144,1146],{"class":637,"line":761},[635,1119,1120],{"class":641},"await",[635,1122,1123],{"class":649}," app",[635,1125,573],{"class":645},[635,1127,1128],{"class":777},"register",[635,1130,1131],{"class":649},"(evlog",[635,1133,827],{"class":645},[635,1135,646],{"class":645},[635,1137,1022],{"class":816},[635,1139,940],{"class":645},[635,1141,650],{"class":777},[635,1143,1029],{"class":649},[635,1145,838],{"class":645},[635,1147,841],{"class":649},[624,1149,1150],{"className":626,"code":975,"filename":256,"language":629,"meta":630,"style":630},[632,1151,1152,1170,1174],{"__ignoreMap":630},[635,1153,1154,1156,1158,1160,1162,1164,1166,1168],{"class":637,"line":638},[635,1155,642],{"class":641},[635,1157,646],{"class":645},[635,1159,650],{"class":649},[635,1161,653],{"class":645},[635,1163,656],{"class":641},[635,1165,659],{"class":645},[635,1167,663],{"class":662},[635,1169,666],{"class":645},[635,1171,1172],{"class":637,"line":742},[635,1173,765],{"emptyLinePlaceholder":764},[635,1175,1176,1178,1180,1182,1184,1186,1188,1190,1192,1194,1196,1198,1200],{"class":637,"line":761},[635,1177,1004],{"class":649},[635,1179,573],{"class":645},[635,1181,1009],{"class":777},[635,1183,781],{"class":649},[635,1185,1014],{"class":777},[635,1187,781],{"class":649},[635,1189,1019],{"class":645},[635,1191,1022],{"class":816},[635,1193,940],{"class":645},[635,1195,650],{"class":777},[635,1197,1029],{"class":649},[635,1199,838],{"class":645},[635,1201,1034],{"class":649},[624,1203,1205],{"className":626,"code":1204,"filename":236,"language":629,"meta":630,"style":630},"import { createHyperDXDrain } from 'evlog\u002Fhyperdx'\n\nEvlogModule.forRoot({ drain: createHyperDXDrain() })\n",[632,1206,1207,1225,1229],{"__ignoreMap":630},[635,1208,1209,1211,1213,1215,1217,1219,1221,1223],{"class":637,"line":638},[635,1210,642],{"class":641},[635,1212,646],{"class":645},[635,1214,650],{"class":649},[635,1216,653],{"class":645},[635,1218,656],{"class":641},[635,1220,659],{"class":645},[635,1222,663],{"class":662},[635,1224,666],{"class":645},[635,1226,1227],{"class":637,"line":742},[635,1228,765],{"emptyLinePlaceholder":764},[635,1230,1231,1234,1236,1239,1241,1243,1245,1247,1249,1251,1253],{"class":637,"line":761},[635,1232,1233],{"class":649},"EvlogModule",[635,1235,573],{"class":645},[635,1237,1238],{"class":777},"forRoot",[635,1240,781],{"class":649},[635,1242,1019],{"class":645},[635,1244,1022],{"class":816},[635,1246,940],{"class":645},[635,1248,650],{"class":777},[635,1250,1029],{"class":649},[635,1252,838],{"class":645},[635,1254,841],{"class":649},[624,1256,1258],{"className":626,"code":1257,"filename":271,"language":629,"meta":630,"style":630},"import { createHyperDXDrain } from 'evlog\u002Fhyperdx'\n\ninitLogger({ drain: createHyperDXDrain() })\n",[632,1259,1260,1278,1282],{"__ignoreMap":630},[635,1261,1262,1264,1266,1268,1270,1272,1274,1276],{"class":637,"line":638},[635,1263,642],{"class":641},[635,1265,646],{"class":645},[635,1267,650],{"class":649},[635,1269,653],{"class":645},[635,1271,656],{"class":641},[635,1273,659],{"class":645},[635,1275,663],{"class":662},[635,1277,666],{"class":645},[635,1279,1280],{"class":637,"line":742},[635,1281,765],{"emptyLinePlaceholder":764},[635,1283,1284,1287,1289,1291,1293,1295,1297,1299,1301],{"class":637,"line":761},[635,1285,1286],{"class":777},"initLogger",[635,1288,781],{"class":649},[635,1290,1019],{"class":645},[635,1292,1022],{"class":816},[635,1294,940],{"class":645},[635,1296,650],{"class":777},[635,1298,1029],{"class":649},[635,1300,838],{"class":645},[635,1302,841],{"class":649},[554,1304,1305],{},"That's it! Your wide events will now appear in HyperDX.",[617,1307,170],{"id":1308},"configuration",[554,1310,1311],{},"The adapter reads configuration from multiple sources (highest priority first):",[583,1313,1314,1323,1337],{},[586,1315,1316,1319,1320],{},[564,1317,1318],{},"Overrides"," passed to ",[632,1321,1322],{},"createHyperDXDrain()",[586,1324,1325,1328,1329,1332,1333,1336],{},[564,1326,1327],{},"Runtime config"," at ",[632,1330,1331],{},"runtimeConfig.evlog.hyperdx"," or ",[632,1334,1335],{},"runtimeConfig.hyperdx"," (Nuxt\u002FNitro only)",[586,1338,1339,1342,1343,1332,1346,790],{},[564,1340,1341],{},"Environment variables"," (",[632,1344,1345],{},"HYPERDX_*",[632,1347,1348],{},"NUXT_HYPERDX_*",[671,1350,1352],{"id":1351},"environment-variables","Environment Variables",[1354,1355,1356,1372],"table",{},[1357,1358,1359],"thead",{},[1360,1361,1362,1366,1369],"tr",{},[1363,1364,1365],"th",{},"Variable",[1363,1367,1368],{},"Nuxt alias",[1363,1370,1371],{},"Description",[1373,1374,1375,1393,1411],"tbody",{},[1360,1376,1377,1382,1387],{},[1378,1379,1380],"td",{},[632,1381,711],{},[1378,1383,1384],{},[632,1385,1386],{},"NUXT_HYPERDX_API_KEY",[1378,1388,1389,1390,1392],{},"Ingestion API key (sent as the ",[632,1391,693],{}," header)",[1360,1394,1395,1400,1405],{},[1378,1396,1397],{},[632,1398,1399],{},"HYPERDX_OTLP_ENDPOINT",[1378,1401,1402],{},[632,1403,1404],{},"NUXT_HYPERDX_OTLP_ENDPOINT",[1378,1406,1407,1408,790],{},"OTLP HTTP base URL (default: ",[632,1409,1410],{},"https:\u002F\u002Fin-otel.hyperdx.io",[1360,1412,1413,1418,1423],{},[1378,1414,1415],{},[632,1416,1417],{},"HYPERDX_SERVICE_NAME",[1378,1419,1420],{},[632,1421,1422],{},"NUXT_HYPERDX_SERVICE_NAME",[1378,1424,1425,1426],{},"Override ",[632,1427,1428],{},"service.name",[554,1430,1431,1432,1435],{},"The following variable is also read when resolving ",[632,1433,1434],{},"serviceName"," (same as the OTLP adapter):",[1354,1437,1438,1446],{},[1357,1439,1440],{},[1360,1441,1442,1444],{},[1363,1443,1365],{},[1363,1445,1371],{},[1373,1447,1448],{},[1360,1449,1450,1455],{},[1378,1451,1452],{},[632,1453,1454],{},"OTEL_SERVICE_NAME",[1378,1456,1457],{},"Fallback for service name (HyperDX SDK examples use this)",[1459,1460,1462,1463,1466,1467,1470],"callout",{"color":1461,"icon":13},"info","In Nuxt\u002FNitro, use the ",[632,1464,1465],{},"NUXT_"," prefix so values are available via ",[632,1468,1469],{},"useRuntimeConfig()",". In all other frameworks, use the unprefixed variables.",[671,1472,1474],{"id":1473},"runtime-config-nuxt-only","Runtime Config (Nuxt only)",[554,1476,1477,1478,1481],{},"Configure via ",[632,1479,1480],{},"nuxt.config.ts"," for type-safe configuration:",[624,1483,1485],{"className":626,"code":1484,"filename":1480,"language":629,"meta":630,"style":630},"export default defineNuxtConfig({\n  runtimeConfig: {\n    hyperdx: {\n      apiKey: '', \u002F\u002F Set via NUXT_HYPERDX_API_KEY\n      \u002F\u002F endpoint: '', \u002F\u002F Set via NUXT_HYPERDX_OTLP_ENDPOINT\n    },\n  },\n})\n",[632,1486,1487,1500,1509,1518,1533,1541,1546,1551],{"__ignoreMap":630},[635,1488,1489,1491,1493,1496,1498],{"class":637,"line":638},[635,1490,771],{"class":641},[635,1492,774],{"class":641},[635,1494,1495],{"class":777}," defineNuxtConfig",[635,1497,781],{"class":649},[635,1499,932],{"class":645},[635,1501,1502,1505,1507],{"class":637,"line":742},[635,1503,1504],{"class":816},"  runtimeConfig",[635,1506,940],{"class":645},[635,1508,797],{"class":645},[635,1510,1511,1514,1516],{"class":637,"line":761},[635,1512,1513],{"class":816},"    hyperdx",[635,1515,940],{"class":645},[635,1517,797],{"class":645},[635,1519,1520,1523,1525,1528,1530],{"class":637,"line":768},[635,1521,1522],{"class":816},"      apiKey",[635,1524,940],{"class":645},[635,1526,1527],{"class":645}," ''",[635,1529,827],{"class":645},[635,1531,1532],{"class":738}," \u002F\u002F Set via NUXT_HYPERDX_API_KEY\n",[635,1534,1535,1538],{"class":637,"line":800},[635,1536,1537],{"class":738},"      \u002F\u002F endpoint: '',",[635,1539,1540],{"class":738}," \u002F\u002F Set via NUXT_HYPERDX_OTLP_ENDPOINT\n",[635,1542,1543],{"class":637,"line":835},[635,1544,1545],{"class":645},"    },\n",[635,1547,1548],{"class":637,"line":953},[635,1549,1550],{"class":645},"  },\n",[635,1552,1553,1555],{"class":637,"line":968},[635,1554,838],{"class":645},[635,1556,841],{"class":649},[554,1558,1559,1560,1562],{},"You can also nest keys under ",[632,1561,1331],{},"; both match how the adapter resolves Nuxt runtime config.",[671,1564,1566],{"id":1565},"override-options","Override Options",[554,1568,1569],{},"Pass options directly to override any configuration:",[624,1571,1574],{"className":626,"code":1572,"filename":1573,"language":629,"meta":630,"style":630},"const drain = createHyperDXDrain({\n  apiKey: process.env.HYPERDX_API_KEY!,\n  endpoint: 'https:\u002F\u002Fin-otel.hyperdx.io',\n  timeout: 10000,\n})\n","server\u002Fplugins\u002Fevlog-drain.ts",[632,1575,1576,1593,1615,1630,1643],{"__ignoreMap":630},[635,1577,1578,1581,1584,1587,1589,1591],{"class":637,"line":638},[635,1579,1580],{"class":793},"const",[635,1582,1583],{"class":649}," drain ",[635,1585,1586],{"class":645},"=",[635,1588,650],{"class":777},[635,1590,781],{"class":649},[635,1592,932],{"class":645},[635,1594,1595,1598,1600,1603,1605,1608,1610,1612],{"class":637,"line":742},[635,1596,1597],{"class":816},"  apiKey",[635,1599,940],{"class":645},[635,1601,1602],{"class":649}," process",[635,1604,573],{"class":645},[635,1606,1607],{"class":649},"env",[635,1609,573],{"class":645},[635,1611,711],{"class":649},[635,1613,1614],{"class":645},"!,\n",[635,1616,1617,1620,1622,1624,1626,1628],{"class":637,"line":761},[635,1618,1619],{"class":816},"  endpoint",[635,1621,940],{"class":645},[635,1623,659],{"class":645},[635,1625,1410],{"class":662},[635,1627,819],{"class":645},[635,1629,950],{"class":645},[635,1631,1632,1635,1637,1641],{"class":637,"line":768},[635,1633,1634],{"class":816},"  timeout",[635,1636,940],{"class":645},[635,1638,1640],{"class":1639},"sbssI"," 10000",[635,1642,950],{"class":645},[635,1644,1645,1647],{"class":637,"line":800},[635,1646,838],{"class":645},[635,1648,841],{"class":649},[554,1650,1651,1652,1655,1656,1658,1659,1662],{},"For self-hosted HyperDX, set ",[632,1653,1654],{},"endpoint"," to your OTLP HTTP base URL (same role as ",[632,1657,1654],{}," in HyperDX’s ",[632,1660,1661],{},"otlphttp"," exporter example).",[671,1664,1666],{"id":1665},"full-configuration-reference","Full Configuration Reference",[1354,1668,1669,1684],{},[1357,1670,1671],{},[1360,1672,1673,1676,1679,1682],{},[1363,1674,1675],{},"Option",[1363,1677,1678],{},"Type",[1363,1680,1681],{},"Default",[1363,1683,1371],{},[1373,1685,1686,1707,1727,1744,1761,1781],{},[1360,1687,1688,1693,1698,1701],{},[1378,1689,1690],{},[632,1691,1692],{},"apiKey",[1378,1694,1695],{},[632,1696,1697],{},"string",[1378,1699,1700],{},"-",[1378,1702,1703,1704,1706],{},"Ingestion API key (required). Sent as the ",[632,1705,693],{}," header value",[1360,1708,1709,1713,1717,1721],{},[1378,1710,1711],{},[632,1712,1654],{},[1378,1714,1715],{},[632,1716,1697],{},[1378,1718,1719],{},[632,1720,1410],{},[1378,1722,1723,1724,790],{},"OTLP HTTP base URL (evlog appends ",[632,1725,1726],{},"\u002Fv1\u002Flogs",[1360,1728,1729,1733,1737,1739],{},[1378,1730,1731],{},[632,1732,1434],{},[1378,1734,1735],{},[632,1736,1697],{},[1378,1738,1700],{},[1378,1740,1425,1741,1743],{},[632,1742,1428],{}," resource attribute",[1360,1745,1746,1751,1756,1758],{},[1378,1747,1748],{},[632,1749,1750],{},"resourceAttributes",[1378,1752,1753],{},[632,1754,1755],{},"object",[1378,1757,1700],{},[1378,1759,1760],{},"Additional OTLP resource attributes",[1360,1762,1763,1768,1773,1778],{},[1378,1764,1765],{},[632,1766,1767],{},"timeout",[1378,1769,1770],{},[632,1771,1772],{},"number",[1378,1774,1775],{},[632,1776,1777],{},"5000",[1378,1779,1780],{},"Request timeout in milliseconds",[1360,1782,1783,1788,1792,1797],{},[1378,1784,1785],{},[632,1786,1787],{},"retries",[1378,1789,1790],{},[632,1791,1772],{},[1378,1793,1794],{},[632,1795,1796],{},"2",[1378,1798,1799],{},"Retry attempts on transient failures",[617,1801,1803],{"id":1802},"how-it-works","How It Works",[554,1805,1806,1807,1809,1810,1813,1814,940],{},"Under the hood, ",[632,1808,1322],{}," maps your HyperDX settings to the shared ",[557,1811,1812],{"href":466},"OTLP adapter"," and calls ",[632,1815,1816],{},"sendBatchToOTLP()",[1818,1819,1820,1832,1844],"ul",{},[586,1821,1822,1825,1826,1828,1829,790],{},[564,1823,1824],{},"Endpoint",": OTLP HTTP base URL, defaulting to ",[632,1827,1410],{}," (evlog posts to ",[632,1830,1831],{},"{endpoint}\u002Fv1\u002Flogs",[586,1833,1834,1837,1838,1840,1841,1843],{},[564,1835,1836],{},"Auth",": ",[632,1839,693],{}," header set to your API key (same as HyperDX’s documented ",[632,1842,1661],{}," exporter)",[586,1845,1846,1849,1850,1853],{},[564,1847,1848],{},"Format",": Standard OTLP JSON ",[632,1851,1852],{},"ExportLogsServiceRequest"," with severity, trace context when present, and structured attributes",[617,1855,1857],{"id":1856},"official-hyperdx-opentelemetry-reference","Official HyperDX OpenTelemetry reference",[554,1859,1860,1861,940],{},"From ",[557,1862,1864],{"href":570,"rel":1863},[561],"HyperDX — OpenTelemetry",[1866,1867,1868],"blockquote",{},[554,1869,1870,1871,1873,1874,1876],{},"Our OpenTelemetry HTTP endpoint is hosted at ",[632,1872,1410],{}," (gRPC at port 4317), and requires the ",[632,1875,693],{}," header to be set to your API key.",[554,1878,1879],{},"HyperDX documents this collector configuration (HTTP and gRPC exporters):",[624,1881,1886],{"className":1882,"code":1883,"filename":1884,"language":1885,"meta":630,"style":630},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","exporters:\n  # HTTP setup\n  otlphttp\u002Fhdx:\n    endpoint: 'https:\u002F\u002Fin-otel.hyperdx.io'\n    headers:\n      authorization: \u003CYOUR_HYPERDX_API_KEY_HERE>\n    compression: gzip\n\n  # gRPC setup (alternative)\n  otlp\u002Fhdx:\n    endpoint: 'in-otel.hyperdx.io:4317'\n    headers:\n      authorization: \u003CYOUR_HYPERDX_API_KEY_HERE>\n    compression: gzip\n","OpenTelemetry HyperDX exporters","yaml",[632,1887,1888,1896,1901,1908,1921,1928,1938,1948,1952,1958,1966,1980,1987,1996],{"__ignoreMap":630},[635,1889,1890,1893],{"class":637,"line":638},[635,1891,1892],{"class":816},"exporters",[635,1894,1895],{"class":645},":\n",[635,1897,1898],{"class":637,"line":742},[635,1899,1900],{"class":738},"  # HTTP setup\n",[635,1902,1903,1906],{"class":637,"line":761},[635,1904,1905],{"class":816},"  otlphttp\u002Fhdx",[635,1907,1895],{"class":645},[635,1909,1910,1913,1915,1917,1919],{"class":637,"line":768},[635,1911,1912],{"class":816},"    endpoint",[635,1914,940],{"class":645},[635,1916,659],{"class":645},[635,1918,1410],{"class":662},[635,1920,666],{"class":645},[635,1922,1923,1926],{"class":637,"line":800},[635,1924,1925],{"class":816},"    headers",[635,1927,1895],{"class":645},[635,1929,1930,1933,1935],{"class":637,"line":835},[635,1931,1932],{"class":816},"      authorization",[635,1934,940],{"class":645},[635,1936,1937],{"class":662}," \u003CYOUR_HYPERDX_API_KEY_HERE>\n",[635,1939,1940,1943,1945],{"class":637,"line":953},[635,1941,1942],{"class":816},"    compression",[635,1944,940],{"class":645},[635,1946,1947],{"class":662}," gzip\n",[635,1949,1950],{"class":637,"line":968},[635,1951,765],{"emptyLinePlaceholder":764},[635,1953,1955],{"class":637,"line":1954},9,[635,1956,1957],{"class":738},"  # gRPC setup (alternative)\n",[635,1959,1961,1964],{"class":637,"line":1960},10,[635,1962,1963],{"class":816},"  otlp\u002Fhdx",[635,1965,1895],{"class":645},[635,1967,1969,1971,1973,1975,1978],{"class":637,"line":1968},11,[635,1970,1912],{"class":816},[635,1972,940],{"class":645},[635,1974,659],{"class":645},[635,1976,1977],{"class":662},"in-otel.hyperdx.io:4317",[635,1979,666],{"class":645},[635,1981,1983,1985],{"class":637,"line":1982},12,[635,1984,1925],{"class":816},[635,1986,1895],{"class":645},[635,1988,1990,1992,1994],{"class":637,"line":1989},13,[635,1991,1932],{"class":816},[635,1993,940],{"class":645},[635,1995,1937],{"class":662},[635,1997,1999,2001,2003],{"class":637,"line":1998},14,[635,2000,1942],{"class":816},[635,2002,940],{"class":645},[635,2004,1947],{"class":662},[554,2006,2007,2008,2010,2011,2013,2014,2017,2018,2020,2021,2024],{},"evlog uses the ",[564,2009,518],{}," path: JSON to ",[632,2012,1831],{}," with ",[632,2015,2016],{},"Content-Type: application\u002Fjson"," and the ",[632,2019,693],{}," header above. The collector may enable ",[632,2022,2023],{},"compression: gzip","; evlog sends uncompressed JSON bodies like typical OTLP HTTP clients.",[617,2026,2028],{"id":2027},"querying-logs-in-hyperdx","Querying logs in HyperDX",[554,2030,2031],{},"Use the HyperDX UI to search and explore wide events:",[1818,2033,2034,2040,2046],{},[586,2035,2036,2039],{},[564,2037,2038],{},"Search",": Filter by fields from your wide events (level, service, path, custom attributes, etc.)",[586,2041,2042,2045],{},[564,2043,2044],{},"Live tail",": Stream incoming logs",[586,2047,2048,2051],{},[564,2049,2050],{},"Dashboards",": Build views on top of structured log data",[617,2053,2055],{"id":2054},"troubleshooting","Troubleshooting",[671,2057,2059],{"id":2058},"missing-apikey-error","Missing apiKey error",[624,2061,2067],{"className":2062,"code":2064,"filename":2065,"language":2066,"meta":630},[2063],"language-text","[evlog\u002Fhyperdx] Missing apiKey. Set HYPERDX_API_KEY or NUXT_HYPERDX_API_KEY, or pass to createHyperDXDrain()\n","Console","text",[632,2068,2064],{"__ignoreMap":630},[554,2070,2071],{},"Make sure your environment variables are set and the server was restarted after adding them.",[671,2073,2075],{"id":2074},"_401-unauthorized-or-ingest-rejected","401 Unauthorized or ingest rejected",[554,2077,2078,2079,2083,2084,2087],{},"Your API key may be invalid or not permitted to ingest. Confirm the key in HyperDX matches the ingestion key used in their ",[557,2080,2082],{"href":570,"rel":2081},[561],"OpenTelemetry"," examples (",[632,2085,2086],{},"authorization: \u003CYOUR_HYPERDX_API_KEY_HERE>",").",[617,2089,2091],{"id":2090},"direct-api-usage","Direct API Usage",[554,2093,2094],{},"For advanced use cases, you can use the lower-level functions:",[624,2096,2099],{"className":626,"code":2097,"filename":2098,"language":629,"meta":630,"style":630},"import { sendToHyperDX, sendBatchToHyperDX } from 'evlog\u002Fhyperdx'\n\n\u002F\u002F Send a single event\nawait sendToHyperDX(event, {\n  apiKey: process.env.HYPERDX_API_KEY!,\n})\n\n\u002F\u002F Send multiple events in one request\nawait sendBatchToHyperDX(events, {\n  apiKey: process.env.HYPERDX_API_KEY!,\n  endpoint: 'https:\u002F\u002Fin-otel.hyperdx.io',\n})\n","server\u002Futils\u002Fhyperdx.ts",[632,2100,2101,2125,2129,2134,2147,2165,2171,2175,2180,2193,2211,2225],{"__ignoreMap":630},[635,2102,2103,2105,2107,2110,2112,2115,2117,2119,2121,2123],{"class":637,"line":638},[635,2104,642],{"class":641},[635,2106,646],{"class":645},[635,2108,2109],{"class":649}," sendToHyperDX",[635,2111,827],{"class":645},[635,2113,2114],{"class":649}," sendBatchToHyperDX",[635,2116,653],{"class":645},[635,2118,656],{"class":641},[635,2120,659],{"class":645},[635,2122,663],{"class":662},[635,2124,666],{"class":645},[635,2126,2127],{"class":637,"line":742},[635,2128,765],{"emptyLinePlaceholder":764},[635,2130,2131],{"class":637,"line":761},[635,2132,2133],{"class":738},"\u002F\u002F Send a single event\n",[635,2135,2136,2138,2140,2143,2145],{"class":637,"line":768},[635,2137,1120],{"class":641},[635,2139,2109],{"class":777},[635,2141,2142],{"class":649},"(event",[635,2144,827],{"class":645},[635,2146,797],{"class":645},[635,2148,2149,2151,2153,2155,2157,2159,2161,2163],{"class":637,"line":800},[635,2150,1597],{"class":816},[635,2152,940],{"class":645},[635,2154,1602],{"class":649},[635,2156,573],{"class":645},[635,2158,1607],{"class":649},[635,2160,573],{"class":645},[635,2162,711],{"class":649},[635,2164,1614],{"class":645},[635,2166,2167,2169],{"class":637,"line":835},[635,2168,838],{"class":645},[635,2170,841],{"class":649},[635,2172,2173],{"class":637,"line":953},[635,2174,765],{"emptyLinePlaceholder":764},[635,2176,2177],{"class":637,"line":968},[635,2178,2179],{"class":738},"\u002F\u002F Send multiple events in one request\n",[635,2181,2182,2184,2186,2189,2191],{"class":637,"line":1954},[635,2183,1120],{"class":641},[635,2185,2114],{"class":777},[635,2187,2188],{"class":649},"(events",[635,2190,827],{"class":645},[635,2192,797],{"class":645},[635,2194,2195,2197,2199,2201,2203,2205,2207,2209],{"class":637,"line":1960},[635,2196,1597],{"class":816},[635,2198,940],{"class":645},[635,2200,1602],{"class":649},[635,2202,573],{"class":645},[635,2204,1607],{"class":649},[635,2206,573],{"class":645},[635,2208,711],{"class":649},[635,2210,1614],{"class":645},[635,2212,2213,2215,2217,2219,2221,2223],{"class":637,"line":1968},[635,2214,1619],{"class":816},[635,2216,940],{"class":645},[635,2218,659],{"class":645},[635,2220,1410],{"class":662},[635,2222,819],{"class":645},[635,2224,950],{"class":645},[635,2226,2227,2229],{"class":637,"line":1982},[635,2228,838],{"class":645},[635,2230,841],{"class":649},[617,2232,2234],{"id":2233},"next-steps","Next Steps",[1818,2236,2237,2243,2249,2254],{},[586,2238,2239,2242],{},[557,2240,2241],{"href":466},"OTLP Adapter"," - Send logs via OpenTelemetry Protocol to any OTLP backend",[586,2244,2245,2248],{},[557,2246,2247],{"href":471},"PostHog Adapter"," - Send logs to PostHog Logs via OTLP",[586,2250,2251,2253],{},[557,2252,523],{"href":524}," - Build your own adapter",[586,2255,2256,2258],{},[557,2257,185],{"href":186}," - Security and production tips",[2260,2261,2262],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":630,"searchDepth":742,"depth":742,"links":2264},[2265,2266,2271,2277,2278,2279,2280,2284,2285],{"id":619,"depth":742,"text":15},{"id":669,"depth":742,"text":20,"children":2267},[2268,2269,2270],{"id":673,"depth":761,"text":674},{"id":697,"depth":761,"text":698},{"id":723,"depth":761,"text":724},{"id":1308,"depth":742,"text":170,"children":2272},[2273,2274,2275,2276],{"id":1351,"depth":761,"text":1352},{"id":1473,"depth":761,"text":1474},{"id":1565,"depth":761,"text":1566},{"id":1665,"depth":761,"text":1666},{"id":1802,"depth":742,"text":1803},{"id":1856,"depth":742,"text":1857},{"id":2027,"depth":742,"text":2028},{"id":2054,"depth":742,"text":2055,"children":2281},[2282,2283],{"id":2058,"depth":761,"text":2059},{"id":2074,"depth":761,"text":2075},{"id":2090,"depth":742,"text":2091},{"id":2233,"depth":742,"text":2234},"Send wide events to HyperDX via OTLP\u002FHTTP using HyperDX’s documented OpenTelemetry endpoint and authorization header. Zero-config setup with environment variables.","md",[2289,2294],{"label":490,"icon":2290,"to":559,"target":2291,"color":2292,"variant":2293},"i-lucide-external-link","_blank","neutral","subtle",{"label":2241,"icon":468,"to":466,"color":2292,"variant":2293},{},{"title":490,"icon":493},{"title":549,"description":2286},"PQTSx8LPy2YX3IF4VKXytXDGxTlwPk2BSpFbLuBWxjk",[2300,2302],{"title":485,"path":486,"stem":487,"description":2301,"icon":488,"children":-1},"Send wide events to Datadog Logs via the native HTTP intake API. Supports all Datadog sites and DD_* environment variables.",{"title":500,"path":501,"stem":502,"description":2303,"icon":503,"children":-1},"Write wide events to the local file system as NDJSON for local debugging, AI agent integration, and production backup.",1778338244141]