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