[{"data":1,"prerenderedAt":2396},["ShallowReactive",2],{"navigation_docs":3,"-integrate-adapters-hybrid-hyperdx":529,"-integrate-adapters-hybrid-hyperdx-surround":2391},[4,29,76,122,304,436,495],{"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,432],{"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,"icon":431},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":433,"path":434,"stem":435},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve",{"title":437,"path":438,"stem":439,"children":440,"page":28},"Extend","\u002Fextend","6.extend",[441,445,450,455,459,464,468,472,476,481,486,491],{"title":128,"path":442,"stem":443,"icon":444},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":446,"path":447,"stem":448,"icon":449},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":451,"path":452,"stem":453,"icon":454},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":456,"path":457,"stem":458,"icon":449},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":460,"path":461,"stem":462,"icon":463},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":403,"path":465,"stem":466,"icon":467},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":469,"path":470,"stem":471},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":473,"path":474,"stem":475,"icon":431},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"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},"Drain Pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline",{"title":424,"path":496,"stem":497,"children":498,"page":28},"\u002Freference","7.reference",[499,504,507,512,516,521,525],{"title":500,"path":501,"stem":502,"icon":503},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"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,"icon":520},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":522,"path":523,"stem":524,"icon":431},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":526,"path":527,"stem":528},"Log cost","\u002Freference\u002Fcost","7.reference\u002F7.cost",{"id":530,"title":531,"body":532,"description":2378,"extension":2379,"links":2380,"meta":2387,"navigation":2388,"path":193,"seo":2389,"stem":194,"__hash__":2390},"docs\u002F4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx.md","HyperDX Adapter",{"type":533,"value":534,"toc":2351},"minimark",[535,556,598,602,605,649,652,657,677,681,703,707,1285,1288,1291,1294,1328,1332,1390,1397,1419,1423,1430,1505,1511,1515,1518,1597,1611,1615,1748,1752,1758,1762,1765,1779,1793,1798,1802,1813,1842,1870,1886,1890,1903,1940,1944,1951,1963,1966,2091,2112,2116,2119,2139,2143,2147,2156,2159,2163,2175,2179,2182,2318,2322,2347],[536,537,538,544,545,549,550,555],"p",{},[539,540,192],"a",{"href":541,"rel":542},"https:\u002F\u002Fhyperdx.io",[543],"nofollow"," is an open-source observability platform. The evlog HyperDX adapter sends your wide events to HyperDX using ",[546,547,548],"strong",{},"OTLP over HTTP",", with defaults aligned to ",[539,551,554],{"href":552,"rel":553},"https:\u002F\u002Fhyperdx.io\u002Fdocs\u002Finstall\u002Fopentelemetry",[543],"HyperDX’s OpenTelemetry documentation",".",[557,558,561,564,586],"prompt",{":actions":559,"description":560,"icon":195},"[\"copy\",\"cursor\",\"claude\"]","Add the HyperDX drain adapter",[536,562,563],{},"Add the HyperDX drain adapter to send evlog wide events to HyperDX.",[565,566,567,571,574,577,580,583],"ol",{},[568,569,570],"li",{},"Identify which framework I'm using and follow its evlog integration pattern",[568,572,573],{},"Install evlog if not already installed",[568,575,576],{},"Import createHyperDXDrain from 'evlog\u002Fhyperdx'",[568,578,579],{},"Wire createHyperDXDrain() into my framework's drain configuration",[568,581,582],{},"Set HYPERDX_API_KEY environment variable in .env",[568,584,585],{},"Test by triggering a request and checking HyperDX",[536,587,588,589,593,594],{},"Adapter docs: ",[539,590,591],{"href":591,"rel":592},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx",[543],"\nFramework setup: ",[539,595,596],{"href":596,"rel":597},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Foverview",[543],[599,600,19],"h2",{"id":601},"installation",[536,603,604],{},"The HyperDX adapter comes bundled with evlog:",[606,607,613],"pre",{"className":608,"code":609,"filename":610,"language":611,"meta":612,"style":612},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createHyperDXDrain } from 'evlog\u002Fhyperdx'\n","src\u002Findex.ts","typescript","",[614,615,616],"code",{"__ignoreMap":612},[617,618,621,625,629,633,636,639,642,646],"span",{"class":619,"line":620},"line",1,[617,622,624],{"class":623},"s7zQu","import",[617,626,628],{"class":627},"sMK4o"," {",[617,630,632],{"class":631},"sTEyZ"," createHyperDXDrain",[617,634,635],{"class":627}," }",[617,637,638],{"class":623}," from",[617,640,641],{"class":627}," '",[617,643,645],{"class":644},"sfazB","evlog\u002Fhyperdx",[617,647,648],{"class":627},"'\n",[599,650,24],{"id":651},"quick-start",[653,654,656],"h3",{"id":655},"_1-get-your-ingestion-api-key","1. Get your ingestion API key",[565,658,659,666],{},[568,660,661,662,665],{},"Open the ",[539,663,192],{"href":541,"rel":664},[543]," dashboard for your team",[568,667,668,669,672,673,676],{},"Copy your ",[546,670,671],{},"ingestion API key"," (HyperDX documents this as the value for the ",[614,674,675],{},"authorization"," header in their OpenTelemetry examples)",[653,678,680],{"id":679},"_2-set-environment-variables","2. Set environment variables",[606,682,687],{"className":683,"code":684,"filename":685,"language":686,"meta":612,"style":612},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","HYPERDX_API_KEY=\u003CYOUR_HYPERDX_API_KEY_HERE>\n",".env","bash",[614,688,689],{"__ignoreMap":612},[617,690,691,694,697,700],{"class":619,"line":620},[617,692,693],{"class":631},"HYPERDX_API_KEY",[617,695,696],{"class":627},"=\u003C",[617,698,699],{"class":644},"YOUR_HYPERDX_API_KEY_HERE",[617,701,702],{"class":627},">\n",[653,704,706],{"id":705},"_3-wire-the-drain-to-your-framework","3. Wire the drain to your framework",[708,709,710,824,955,1017,1071,1130,1184,1237],"code-group",{},[606,711,714],{"className":608,"code":712,"filename":713,"language":611,"meta":612,"style":612},"\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",[614,715,716,722,741,748,780,815],{"__ignoreMap":612},[617,717,718],{"class":619,"line":620},[617,719,721],{"class":720},"sHwdD","\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\n",[617,723,725,727,729,731,733,735,737,739],{"class":619,"line":724},2,[617,726,624],{"class":623},[617,728,628],{"class":627},[617,730,632],{"class":631},[617,732,635],{"class":627},[617,734,638],{"class":623},[617,736,641],{"class":627},[617,738,645],{"class":644},[617,740,648],{"class":627},[617,742,744],{"class":619,"line":743},3,[617,745,747],{"emptyLinePlaceholder":746},true,"\n",[617,749,751,754,757,761,764,766,770,773,777],{"class":619,"line":750},4,[617,752,753],{"class":623},"export",[617,755,756],{"class":623}," default",[617,758,760],{"class":759},"s2Zo4"," defineNitroPlugin",[617,762,763],{"class":631},"(",[617,765,763],{"class":627},[617,767,769],{"class":768},"sHdIc","nitroApp",[617,771,772],{"class":627},")",[617,774,776],{"class":775},"spNyl"," =>",[617,778,779],{"class":627}," {\n",[617,781,783,786,788,791,793,796,799,802,805,807,810,812],{"class":619,"line":782},5,[617,784,785],{"class":631},"  nitroApp",[617,787,555],{"class":627},[617,789,790],{"class":631},"hooks",[617,792,555],{"class":627},[617,794,795],{"class":759},"hook",[617,797,763],{"class":798},"swJcz",[617,800,801],{"class":627},"'",[617,803,804],{"class":644},"evlog:drain",[617,806,801],{"class":627},[617,808,809],{"class":627},",",[617,811,632],{"class":759},[617,813,814],{"class":798},"())\n",[617,816,818,821],{"class":619,"line":817},6,[617,819,820],{"class":627},"}",[617,822,823],{"class":631},")\n",[606,825,827],{"className":608,"code":826,"filename":231,"language":611,"meta":612,"style":612},"\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",[614,828,829,834,854,872,876,915,933,948],{"__ignoreMap":612},[617,830,831],{"class":619,"line":620},[617,832,833],{"class":720},"\u002F\u002F lib\u002Fevlog.ts\n",[617,835,836,838,840,843,845,847,849,852],{"class":619,"line":724},[617,837,624],{"class":623},[617,839,628],{"class":627},[617,841,842],{"class":631}," createEvlog",[617,844,635],{"class":627},[617,846,638],{"class":623},[617,848,641],{"class":627},[617,850,851],{"class":644},"evlog\u002Fnext",[617,853,648],{"class":627},[617,855,856,858,860,862,864,866,868,870],{"class":619,"line":743},[617,857,624],{"class":623},[617,859,628],{"class":627},[617,861,632],{"class":631},[617,863,635],{"class":627},[617,865,638],{"class":623},[617,867,641],{"class":627},[617,869,645],{"class":644},[617,871,648],{"class":627},[617,873,874],{"class":619,"line":750},[617,875,747],{"emptyLinePlaceholder":746},[617,877,878,880,883,885,888,890,893,895,898,900,903,905,908,910,912],{"class":619,"line":782},[617,879,753],{"class":623},[617,881,882],{"class":775}," const",[617,884,628],{"class":627},[617,886,887],{"class":631}," withEvlog",[617,889,809],{"class":627},[617,891,892],{"class":631}," useLogger",[617,894,809],{"class":627},[617,896,897],{"class":631}," log",[617,899,809],{"class":627},[617,901,902],{"class":631}," createError ",[617,904,820],{"class":627},[617,906,907],{"class":627}," =",[617,909,842],{"class":759},[617,911,763],{"class":631},[617,913,914],{"class":627},"{\n",[617,916,917,920,923,925,928,930],{"class":619,"line":817},[617,918,919],{"class":798},"  service",[617,921,922],{"class":627},":",[617,924,641],{"class":627},[617,926,927],{"class":644},"my-app",[617,929,801],{"class":627},[617,931,932],{"class":627},",\n",[617,934,936,939,941,943,946],{"class":619,"line":935},7,[617,937,938],{"class":798},"  drain",[617,940,922],{"class":627},[617,942,632],{"class":759},[617,944,945],{"class":631},"()",[617,947,932],{"class":627},[617,949,951,953],{"class":619,"line":950},8,[617,952,820],{"class":627},[617,954,823],{"class":631},[606,956,958],{"className":608,"code":957,"filename":261,"language":611,"meta":612,"style":612},"import { createHyperDXDrain } from 'evlog\u002Fhyperdx'\n\napp.use(evlog({ drain: createHyperDXDrain() }))\n",[614,959,960,978,982],{"__ignoreMap":612},[617,961,962,964,966,968,970,972,974,976],{"class":619,"line":620},[617,963,624],{"class":623},[617,965,628],{"class":627},[617,967,632],{"class":631},[617,969,635],{"class":627},[617,971,638],{"class":623},[617,973,641],{"class":627},[617,975,645],{"class":644},[617,977,648],{"class":627},[617,979,980],{"class":619,"line":724},[617,981,747],{"emptyLinePlaceholder":746},[617,983,984,987,989,992,994,997,999,1002,1005,1007,1009,1012,1014],{"class":619,"line":743},[617,985,986],{"class":631},"app",[617,988,555],{"class":627},[617,990,991],{"class":759},"use",[617,993,763],{"class":631},[617,995,996],{"class":759},"evlog",[617,998,763],{"class":631},[617,1000,1001],{"class":627},"{",[617,1003,1004],{"class":798}," drain",[617,1006,922],{"class":627},[617,1008,632],{"class":759},[617,1010,1011],{"class":631},"() ",[617,1013,820],{"class":627},[617,1015,1016],{"class":631},"))\n",[606,1018,1019],{"className":608,"code":957,"filename":256,"language":611,"meta":612,"style":612},[614,1020,1021,1039,1043],{"__ignoreMap":612},[617,1022,1023,1025,1027,1029,1031,1033,1035,1037],{"class":619,"line":620},[617,1024,624],{"class":623},[617,1026,628],{"class":627},[617,1028,632],{"class":631},[617,1030,635],{"class":627},[617,1032,638],{"class":623},[617,1034,641],{"class":627},[617,1036,645],{"class":644},[617,1038,648],{"class":627},[617,1040,1041],{"class":619,"line":724},[617,1042,747],{"emptyLinePlaceholder":746},[617,1044,1045,1047,1049,1051,1053,1055,1057,1059,1061,1063,1065,1067,1069],{"class":619,"line":743},[617,1046,986],{"class":631},[617,1048,555],{"class":627},[617,1050,991],{"class":759},[617,1052,763],{"class":631},[617,1054,996],{"class":759},[617,1056,763],{"class":631},[617,1058,1001],{"class":627},[617,1060,1004],{"class":798},[617,1062,922],{"class":627},[617,1064,632],{"class":759},[617,1066,1011],{"class":631},[617,1068,820],{"class":627},[617,1070,1016],{"class":631},[606,1072,1074],{"className":608,"code":1073,"filename":266,"language":611,"meta":612,"style":612},"import { createHyperDXDrain } from 'evlog\u002Fhyperdx'\n\nawait app.register(evlog, { drain: createHyperDXDrain() })\n",[614,1075,1076,1094,1098],{"__ignoreMap":612},[617,1077,1078,1080,1082,1084,1086,1088,1090,1092],{"class":619,"line":620},[617,1079,624],{"class":623},[617,1081,628],{"class":627},[617,1083,632],{"class":631},[617,1085,635],{"class":627},[617,1087,638],{"class":623},[617,1089,641],{"class":627},[617,1091,645],{"class":644},[617,1093,648],{"class":627},[617,1095,1096],{"class":619,"line":724},[617,1097,747],{"emptyLinePlaceholder":746},[617,1099,1100,1103,1106,1108,1111,1114,1116,1118,1120,1122,1124,1126,1128],{"class":619,"line":743},[617,1101,1102],{"class":623},"await",[617,1104,1105],{"class":631}," app",[617,1107,555],{"class":627},[617,1109,1110],{"class":759},"register",[617,1112,1113],{"class":631},"(evlog",[617,1115,809],{"class":627},[617,1117,628],{"class":627},[617,1119,1004],{"class":798},[617,1121,922],{"class":627},[617,1123,632],{"class":759},[617,1125,1011],{"class":631},[617,1127,820],{"class":627},[617,1129,823],{"class":631},[606,1131,1132],{"className":608,"code":957,"filename":271,"language":611,"meta":612,"style":612},[614,1133,1134,1152,1156],{"__ignoreMap":612},[617,1135,1136,1138,1140,1142,1144,1146,1148,1150],{"class":619,"line":620},[617,1137,624],{"class":623},[617,1139,628],{"class":627},[617,1141,632],{"class":631},[617,1143,635],{"class":627},[617,1145,638],{"class":623},[617,1147,641],{"class":627},[617,1149,645],{"class":644},[617,1151,648],{"class":627},[617,1153,1154],{"class":619,"line":724},[617,1155,747],{"emptyLinePlaceholder":746},[617,1157,1158,1160,1162,1164,1166,1168,1170,1172,1174,1176,1178,1180,1182],{"class":619,"line":743},[617,1159,986],{"class":631},[617,1161,555],{"class":627},[617,1163,991],{"class":759},[617,1165,763],{"class":631},[617,1167,996],{"class":759},[617,1169,763],{"class":631},[617,1171,1001],{"class":627},[617,1173,1004],{"class":798},[617,1175,922],{"class":627},[617,1177,632],{"class":759},[617,1179,1011],{"class":631},[617,1181,820],{"class":627},[617,1183,1016],{"class":631},[606,1185,1187],{"className":608,"code":1186,"filename":251,"language":611,"meta":612,"style":612},"import { createHyperDXDrain } from 'evlog\u002Fhyperdx'\n\nEvlogModule.forRoot({ drain: createHyperDXDrain() })\n",[614,1188,1189,1207,1211],{"__ignoreMap":612},[617,1190,1191,1193,1195,1197,1199,1201,1203,1205],{"class":619,"line":620},[617,1192,624],{"class":623},[617,1194,628],{"class":627},[617,1196,632],{"class":631},[617,1198,635],{"class":627},[617,1200,638],{"class":623},[617,1202,641],{"class":627},[617,1204,645],{"class":644},[617,1206,648],{"class":627},[617,1208,1209],{"class":619,"line":724},[617,1210,747],{"emptyLinePlaceholder":746},[617,1212,1213,1216,1218,1221,1223,1225,1227,1229,1231,1233,1235],{"class":619,"line":743},[617,1214,1215],{"class":631},"EvlogModule",[617,1217,555],{"class":627},[617,1219,1220],{"class":759},"forRoot",[617,1222,763],{"class":631},[617,1224,1001],{"class":627},[617,1226,1004],{"class":798},[617,1228,922],{"class":627},[617,1230,632],{"class":759},[617,1232,1011],{"class":631},[617,1234,820],{"class":627},[617,1236,823],{"class":631},[606,1238,1240],{"className":608,"code":1239,"filename":286,"language":611,"meta":612,"style":612},"import { createHyperDXDrain } from 'evlog\u002Fhyperdx'\n\ninitLogger({ drain: createHyperDXDrain() })\n",[614,1241,1242,1260,1264],{"__ignoreMap":612},[617,1243,1244,1246,1248,1250,1252,1254,1256,1258],{"class":619,"line":620},[617,1245,624],{"class":623},[617,1247,628],{"class":627},[617,1249,632],{"class":631},[617,1251,635],{"class":627},[617,1253,638],{"class":623},[617,1255,641],{"class":627},[617,1257,645],{"class":644},[617,1259,648],{"class":627},[617,1261,1262],{"class":619,"line":724},[617,1263,747],{"emptyLinePlaceholder":746},[617,1265,1266,1269,1271,1273,1275,1277,1279,1281,1283],{"class":619,"line":743},[617,1267,1268],{"class":759},"initLogger",[617,1270,763],{"class":631},[617,1272,1001],{"class":627},[617,1274,1004],{"class":798},[617,1276,922],{"class":627},[617,1278,632],{"class":759},[617,1280,1011],{"class":631},[617,1282,820],{"class":627},[617,1284,823],{"class":631},[536,1286,1287],{},"That's it! Your wide events will now appear in HyperDX.",[599,1289,500],{"id":1290},"configuration",[536,1292,1293],{},"The adapter reads configuration from multiple sources (highest priority first):",[565,1295,1296,1305,1319],{},[568,1297,1298,1301,1302],{},[546,1299,1300],{},"Overrides"," passed to ",[614,1303,1304],{},"createHyperDXDrain()",[568,1306,1307,1310,1311,1314,1315,1318],{},[546,1308,1309],{},"Runtime config"," at ",[614,1312,1313],{},"runtimeConfig.evlog.hyperdx"," or ",[614,1316,1317],{},"runtimeConfig.hyperdx"," (Nuxt\u002FNitro only)",[568,1320,1321,1324,1325,772],{},[546,1322,1323],{},"Environment variables"," (",[614,1326,1327],{},"HYPERDX_*",[653,1329,1331],{"id":1330},"environment-variables","Environment Variables",[1333,1334,1335,1348],"table",{},[1336,1337,1338],"thead",{},[1339,1340,1341,1345],"tr",{},[1342,1343,1344],"th",{},"Variable",[1342,1346,1347],{},"Description",[1349,1350,1351,1364,1377],"tbody",{},[1339,1352,1353,1358],{},[1354,1355,1356],"td",{},[614,1357,693],{},[1354,1359,1360,1361,1363],{},"Ingestion API key (sent as the ",[614,1362,675],{}," header)",[1339,1365,1366,1371],{},[1354,1367,1368],{},[614,1369,1370],{},"HYPERDX_OTLP_ENDPOINT",[1354,1372,1373,1374,772],{},"OTLP HTTP base URL (default: ",[614,1375,1376],{},"https:\u002F\u002Fin-otel.hyperdx.io",[1339,1378,1379,1384],{},[1354,1380,1381],{},[614,1382,1383],{},"HYPERDX_SERVICE_NAME",[1354,1385,1386,1387],{},"Override ",[614,1388,1389],{},"service.name",[536,1391,1392,1393,1396],{},"The following variable is also read when resolving ",[614,1394,1395],{},"serviceName"," (same as the OTLP adapter):",[1333,1398,1399,1407],{},[1336,1400,1401],{},[1339,1402,1403,1405],{},[1342,1404,1344],{},[1342,1406,1347],{},[1349,1408,1409],{},[1339,1410,1411,1416],{},[1354,1412,1413],{},[614,1414,1415],{},"OTEL_SERVICE_NAME",[1354,1417,1418],{},"Fallback for service name (HyperDX SDK examples use this)",[653,1420,1422],{"id":1421},"runtime-config-nuxt-only","Runtime Config (Nuxt only)",[536,1424,1425,1426,1429],{},"Configure via ",[614,1427,1428],{},"nuxt.config.ts"," for type-safe configuration:",[606,1431,1433],{"className":608,"code":1432,"filename":1428,"language":611,"meta":612,"style":612},"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",[614,1434,1435,1448,1457,1466,1481,1489,1494,1499],{"__ignoreMap":612},[617,1436,1437,1439,1441,1444,1446],{"class":619,"line":620},[617,1438,753],{"class":623},[617,1440,756],{"class":623},[617,1442,1443],{"class":759}," defineNuxtConfig",[617,1445,763],{"class":631},[617,1447,914],{"class":627},[617,1449,1450,1453,1455],{"class":619,"line":724},[617,1451,1452],{"class":798},"  runtimeConfig",[617,1454,922],{"class":627},[617,1456,779],{"class":627},[617,1458,1459,1462,1464],{"class":619,"line":743},[617,1460,1461],{"class":798},"    hyperdx",[617,1463,922],{"class":627},[617,1465,779],{"class":627},[617,1467,1468,1471,1473,1476,1478],{"class":619,"line":750},[617,1469,1470],{"class":798},"      apiKey",[617,1472,922],{"class":627},[617,1474,1475],{"class":627}," ''",[617,1477,809],{"class":627},[617,1479,1480],{"class":720}," \u002F\u002F Set via HYPERDX_API_KEY\n",[617,1482,1483,1486],{"class":619,"line":782},[617,1484,1485],{"class":720},"      \u002F\u002F endpoint: '',",[617,1487,1488],{"class":720}," \u002F\u002F Set via HYPERDX_OTLP_ENDPOINT\n",[617,1490,1491],{"class":619,"line":817},[617,1492,1493],{"class":627},"    },\n",[617,1495,1496],{"class":619,"line":935},[617,1497,1498],{"class":627},"  },\n",[617,1500,1501,1503],{"class":619,"line":950},[617,1502,820],{"class":627},[617,1504,823],{"class":631},[536,1506,1507,1508,1510],{},"You can also nest keys under ",[614,1509,1313],{},"; both match how the adapter resolves Nuxt runtime config.",[653,1512,1514],{"id":1513},"override-options","Override Options",[536,1516,1517],{},"Pass options directly to override any configuration:",[606,1519,1522],{"className":608,"code":1520,"filename":1521,"language":611,"meta":612,"style":612},"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",[614,1523,1524,1541,1563,1578,1591],{"__ignoreMap":612},[617,1525,1526,1529,1532,1535,1537,1539],{"class":619,"line":620},[617,1527,1528],{"class":775},"const",[617,1530,1531],{"class":631}," drain ",[617,1533,1534],{"class":627},"=",[617,1536,632],{"class":759},[617,1538,763],{"class":631},[617,1540,914],{"class":627},[617,1542,1543,1546,1548,1551,1553,1556,1558,1560],{"class":619,"line":724},[617,1544,1545],{"class":798},"  apiKey",[617,1547,922],{"class":627},[617,1549,1550],{"class":631}," process",[617,1552,555],{"class":627},[617,1554,1555],{"class":631},"env",[617,1557,555],{"class":627},[617,1559,693],{"class":631},[617,1561,1562],{"class":627},"!,\n",[617,1564,1565,1568,1570,1572,1574,1576],{"class":619,"line":743},[617,1566,1567],{"class":798},"  endpoint",[617,1569,922],{"class":627},[617,1571,641],{"class":627},[617,1573,1376],{"class":644},[617,1575,801],{"class":627},[617,1577,932],{"class":627},[617,1579,1580,1583,1585,1589],{"class":619,"line":750},[617,1581,1582],{"class":798},"  timeout",[617,1584,922],{"class":627},[617,1586,1588],{"class":1587},"sbssI"," 10000",[617,1590,932],{"class":627},[617,1592,1593,1595],{"class":619,"line":782},[617,1594,820],{"class":627},[617,1596,823],{"class":631},[536,1598,1599,1600,1603,1604,1606,1607,1610],{},"For self-hosted HyperDX, set ",[614,1601,1602],{},"endpoint"," to your OTLP HTTP base URL (same role as ",[614,1605,1602],{}," in HyperDX’s ",[614,1608,1609],{},"otlphttp"," exporter example).",[653,1612,1614],{"id":1613},"full-configuration-reference","Full Configuration Reference",[1333,1616,1617,1632],{},[1336,1618,1619],{},[1339,1620,1621,1624,1627,1630],{},[1342,1622,1623],{},"Option",[1342,1625,1626],{},"Type",[1342,1628,1629],{},"Default",[1342,1631,1347],{},[1349,1633,1634,1655,1675,1692,1709,1729],{},[1339,1635,1636,1641,1646,1649],{},[1354,1637,1638],{},[614,1639,1640],{},"apiKey",[1354,1642,1643],{},[614,1644,1645],{},"string",[1354,1647,1648],{},"-",[1354,1650,1651,1652,1654],{},"Ingestion API key (required). Sent as the ",[614,1653,675],{}," header value",[1339,1656,1657,1661,1665,1669],{},[1354,1658,1659],{},[614,1660,1602],{},[1354,1662,1663],{},[614,1664,1645],{},[1354,1666,1667],{},[614,1668,1376],{},[1354,1670,1671,1672,772],{},"OTLP HTTP base URL (evlog appends ",[614,1673,1674],{},"\u002Fv1\u002Flogs",[1339,1676,1677,1681,1685,1687],{},[1354,1678,1679],{},[614,1680,1395],{},[1354,1682,1683],{},[614,1684,1645],{},[1354,1686,1648],{},[1354,1688,1386,1689,1691],{},[614,1690,1389],{}," resource attribute",[1339,1693,1694,1699,1704,1706],{},[1354,1695,1696],{},[614,1697,1698],{},"resourceAttributes",[1354,1700,1701],{},[614,1702,1703],{},"object",[1354,1705,1648],{},[1354,1707,1708],{},"Additional OTLP resource attributes",[1339,1710,1711,1716,1721,1726],{},[1354,1712,1713],{},[614,1714,1715],{},"timeout",[1354,1717,1718],{},[614,1719,1720],{},"number",[1354,1722,1723],{},[614,1724,1725],{},"5000",[1354,1727,1728],{},"Request timeout in milliseconds",[1339,1730,1731,1736,1740,1745],{},[1354,1732,1733],{},[614,1734,1735],{},"retries",[1354,1737,1738],{},[614,1739,1720],{},[1354,1741,1742],{},[614,1743,1744],{},"2",[1354,1746,1747],{},"Retry attempts on transient failures",[599,1749,1751],{"id":1750},"deployment","Deployment",[536,1753,1754,1755,1757],{},"HyperDX is open source, so the adapter targets a managed account and a cluster\nyou run yourself with the same code. Only ",[614,1756,1602],{}," changes.",[653,1759,1761],{"id":1760},"hyperdx-cloud","HyperDX Cloud",[536,1763,1764],{},"The default. Set the API key and nothing else:",[606,1766,1769],{"className":608,"code":1767,"filename":1768,"language":611,"meta":612,"style":612},"createHyperDXDrain()\n","server\u002Fplugins\u002Fevlog.ts",[614,1770,1771],{"__ignoreMap":612},[617,1772,1773,1776],{"class":619,"line":620},[617,1774,1775],{"class":759},"createHyperDXDrain",[617,1777,1778],{"class":631},"()\n",[606,1780,1782],{"className":683,"code":1781,"filename":685,"language":686,"meta":612,"style":612},"HYPERDX_API_KEY=your-ingestion-key\n",[614,1783,1784],{"__ignoreMap":612},[617,1785,1786,1788,1790],{"class":619,"line":620},[617,1787,693],{"class":631},[617,1789,1534],{"class":627},[617,1791,1792],{"class":644},"your-ingestion-key\n",[536,1794,1795,1796,555],{},"The endpoint defaults to ",[614,1797,1376],{},[653,1799,1801],{"id":1800},"self-hosted","Self-hosted",[536,1803,1804,1805,1807,1808,1810,1811,922],{},"Point ",[614,1806,1602],{}," at your own OTLP HTTP collector, the same value you would put\nin an ",[614,1809,1609],{}," exporter's ",[614,1812,1602],{},[606,1814,1816],{"className":608,"code":1815,"filename":1768,"language":611,"meta":612,"style":612},"createHyperDXDrain({ endpoint: 'http:\u002F\u002Fhyperdx.internal:4318' })\n",[614,1817,1818],{"__ignoreMap":612},[617,1819,1820,1822,1824,1826,1829,1831,1833,1836,1838,1840],{"class":619,"line":620},[617,1821,1775],{"class":759},[617,1823,763],{"class":631},[617,1825,1001],{"class":627},[617,1827,1828],{"class":798}," endpoint",[617,1830,922],{"class":627},[617,1832,641],{"class":627},[617,1834,1835],{"class":644},"http:\u002F\u002Fhyperdx.internal:4318",[617,1837,801],{"class":627},[617,1839,635],{"class":627},[617,1841,823],{"class":631},[606,1843,1845],{"className":683,"code":1844,"filename":685,"language":686,"meta":612,"style":612},"HYPERDX_OTLP_ENDPOINT=http:\u002F\u002Fhyperdx.internal:4318\n# Only if your deployment enforces auth:\nHYPERDX_API_KEY=your-key\n",[614,1846,1847,1856,1861],{"__ignoreMap":612},[617,1848,1849,1851,1853],{"class":619,"line":620},[617,1850,1370],{"class":631},[617,1852,1534],{"class":627},[617,1854,1855],{"class":644},"http:\u002F\u002Fhyperdx.internal:4318\n",[617,1857,1858],{"class":619,"line":724},[617,1859,1860],{"class":720},"# Only if your deployment enforces auth:\n",[617,1862,1863,1865,1867],{"class":619,"line":743},[617,1864,693],{"class":631},[617,1866,1534],{"class":627},[617,1868,1869],{"class":644},"your-key\n",[1871,1872,1875,1876,1879,1880,1882,1883,555],"callout",{"color":1873,"icon":1874},"info","i-lucide-info","Give the ",[546,1877,1878],{},"base"," URL, not the signal path. evlog appends ",[614,1881,1674],{}," itself.\nA self-hosted collector on the default OTLP HTTP port is ",[614,1884,1885],{},"http:\u002F\u002Fhost:4318",[599,1887,1889],{"id":1888},"how-it-works","How It Works",[536,1891,1892,1893,1895,1896,1899,1900,922],{},"Under the hood, ",[614,1894,1304],{}," maps your HyperDX settings to the shared ",[539,1897,1898],{"href":188},"OTLP adapter"," and calls ",[614,1901,1902],{},"sendBatchToOTLP()",[1904,1905,1906,1918,1930],"ul",{},[568,1907,1908,1911,1912,1914,1915,772],{},[546,1909,1910],{},"Endpoint",": OTLP HTTP base URL, defaulting to ",[614,1913,1376],{}," (evlog posts to ",[614,1916,1917],{},"{endpoint}\u002Fv1\u002Flogs",[568,1919,1920,1923,1924,1926,1927,1929],{},[546,1921,1922],{},"Auth",": ",[614,1925,675],{}," header set to your API key (same as HyperDX’s documented ",[614,1928,1609],{}," exporter)",[568,1931,1932,1935,1936,1939],{},[546,1933,1934],{},"Format",": Standard OTLP JSON ",[614,1937,1938],{},"ExportLogsServiceRequest"," with severity, trace context when present, and structured attributes",[599,1941,1943],{"id":1942},"official-hyperdx-opentelemetry-reference","Official HyperDX OpenTelemetry reference",[536,1945,1946,1947,922],{},"From ",[539,1948,1950],{"href":552,"rel":1949},[543],"HyperDX OpenTelemetry setup",[1952,1953,1954],"blockquote",{},[536,1955,1956,1957,1959,1960,1962],{},"Our OpenTelemetry HTTP endpoint is hosted at ",[614,1958,1376],{}," (gRPC at port 4317), and requires the ",[614,1961,675],{}," header to be set to your API key.",[536,1964,1965],{},"HyperDX documents this collector configuration (HTTP and gRPC exporters):",[606,1967,1972],{"className":1968,"code":1969,"filename":1970,"language":1971,"meta":612,"style":612},"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",[614,1973,1974,1982,1987,1994,2007,2014,2024,2034,2038,2044,2052,2066,2073,2082],{"__ignoreMap":612},[617,1975,1976,1979],{"class":619,"line":620},[617,1977,1978],{"class":798},"exporters",[617,1980,1981],{"class":627},":\n",[617,1983,1984],{"class":619,"line":724},[617,1985,1986],{"class":720},"  # HTTP setup\n",[617,1988,1989,1992],{"class":619,"line":743},[617,1990,1991],{"class":798},"  otlphttp\u002Fhdx",[617,1993,1981],{"class":627},[617,1995,1996,1999,2001,2003,2005],{"class":619,"line":750},[617,1997,1998],{"class":798},"    endpoint",[617,2000,922],{"class":627},[617,2002,641],{"class":627},[617,2004,1376],{"class":644},[617,2006,648],{"class":627},[617,2008,2009,2012],{"class":619,"line":782},[617,2010,2011],{"class":798},"    headers",[617,2013,1981],{"class":627},[617,2015,2016,2019,2021],{"class":619,"line":817},[617,2017,2018],{"class":798},"      authorization",[617,2020,922],{"class":627},[617,2022,2023],{"class":644}," \u003CYOUR_HYPERDX_API_KEY_HERE>\n",[617,2025,2026,2029,2031],{"class":619,"line":935},[617,2027,2028],{"class":798},"    compression",[617,2030,922],{"class":627},[617,2032,2033],{"class":644}," gzip\n",[617,2035,2036],{"class":619,"line":950},[617,2037,747],{"emptyLinePlaceholder":746},[617,2039,2041],{"class":619,"line":2040},9,[617,2042,2043],{"class":720},"  # gRPC setup (alternative)\n",[617,2045,2047,2050],{"class":619,"line":2046},10,[617,2048,2049],{"class":798},"  otlp\u002Fhdx",[617,2051,1981],{"class":627},[617,2053,2055,2057,2059,2061,2064],{"class":619,"line":2054},11,[617,2056,1998],{"class":798},[617,2058,922],{"class":627},[617,2060,641],{"class":627},[617,2062,2063],{"class":644},"in-otel.hyperdx.io:4317",[617,2065,648],{"class":627},[617,2067,2069,2071],{"class":619,"line":2068},12,[617,2070,2011],{"class":798},[617,2072,1981],{"class":627},[617,2074,2076,2078,2080],{"class":619,"line":2075},13,[617,2077,2018],{"class":798},[617,2079,922],{"class":627},[617,2081,2023],{"class":644},[617,2083,2085,2087,2089],{"class":619,"line":2084},14,[617,2086,2028],{"class":798},[617,2088,922],{"class":627},[617,2090,2033],{"class":644},[536,2092,2093,2094,2097,2098,2100,2101,2104,2105,2107,2108,2111],{},"evlog uses the ",[546,2095,2096],{},"HTTP"," path: JSON to ",[614,2099,1917],{}," with ",[614,2102,2103],{},"Content-Type: application\u002Fjson"," and the ",[614,2106,675],{}," header above. The collector may enable ",[614,2109,2110],{},"compression: gzip","; evlog sends uncompressed JSON bodies like typical OTLP HTTP clients.",[599,2113,2115],{"id":2114},"querying-logs-in-hyperdx","Querying logs in HyperDX",[536,2117,2118],{},"Use the HyperDX UI to search and explore wide events:",[1904,2120,2121,2127,2133],{},[568,2122,2123,2126],{},[546,2124,2125],{},"Search",": Filter by fields from your wide events (level, service, path, custom attributes, etc.)",[568,2128,2129,2132],{},[546,2130,2131],{},"Live tail",": Stream incoming logs",[568,2134,2135,2138],{},[546,2136,2137],{},"Dashboards",": Build views on top of structured log data",[599,2140,2142],{"id":2141},"troubleshooting","Troubleshooting",[653,2144,2146],{"id":2145},"missing-apikey-error","Missing apiKey error",[606,2148,2154],{"className":2149,"code":2151,"filename":2152,"language":2153,"meta":612},[2150],"language-text","[evlog\u002Fhyperdx] Missing apiKey. Set HYPERDX_API_KEY, or pass to createHyperDXDrain()\n","Console","text",[614,2155,2151],{"__ignoreMap":612},[536,2157,2158],{},"Make sure your environment variables are set and the server was restarted after adding them.",[653,2160,2162],{"id":2161},"_401-unauthorized-or-ingest-rejected","401 Unauthorized or ingest rejected",[536,2164,2165,2166,2170,2171,2174],{},"Your API key may be invalid or not permitted to ingest. Confirm the key in HyperDX matches the ingestion key used in their ",[539,2167,2169],{"href":552,"rel":2168},[543],"OpenTelemetry"," examples (",[614,2172,2173],{},"authorization: \u003CYOUR_HYPERDX_API_KEY_HERE>",").",[599,2176,2178],{"id":2177},"direct-api-usage","Direct API Usage",[536,2180,2181],{},"For advanced use cases, you can use the lower-level functions:",[606,2183,2186],{"className":608,"code":2184,"filename":2185,"language":611,"meta":612,"style":612},"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",[614,2187,2188,2212,2216,2221,2234,2252,2258,2262,2267,2280,2298,2312],{"__ignoreMap":612},[617,2189,2190,2192,2194,2197,2199,2202,2204,2206,2208,2210],{"class":619,"line":620},[617,2191,624],{"class":623},[617,2193,628],{"class":627},[617,2195,2196],{"class":631}," sendToHyperDX",[617,2198,809],{"class":627},[617,2200,2201],{"class":631}," sendBatchToHyperDX",[617,2203,635],{"class":627},[617,2205,638],{"class":623},[617,2207,641],{"class":627},[617,2209,645],{"class":644},[617,2211,648],{"class":627},[617,2213,2214],{"class":619,"line":724},[617,2215,747],{"emptyLinePlaceholder":746},[617,2217,2218],{"class":619,"line":743},[617,2219,2220],{"class":720},"\u002F\u002F Send a single event\n",[617,2222,2223,2225,2227,2230,2232],{"class":619,"line":750},[617,2224,1102],{"class":623},[617,2226,2196],{"class":759},[617,2228,2229],{"class":631},"(event",[617,2231,809],{"class":627},[617,2233,779],{"class":627},[617,2235,2236,2238,2240,2242,2244,2246,2248,2250],{"class":619,"line":782},[617,2237,1545],{"class":798},[617,2239,922],{"class":627},[617,2241,1550],{"class":631},[617,2243,555],{"class":627},[617,2245,1555],{"class":631},[617,2247,555],{"class":627},[617,2249,693],{"class":631},[617,2251,1562],{"class":627},[617,2253,2254,2256],{"class":619,"line":817},[617,2255,820],{"class":627},[617,2257,823],{"class":631},[617,2259,2260],{"class":619,"line":935},[617,2261,747],{"emptyLinePlaceholder":746},[617,2263,2264],{"class":619,"line":950},[617,2265,2266],{"class":720},"\u002F\u002F Send multiple events in one request\n",[617,2268,2269,2271,2273,2276,2278],{"class":619,"line":2040},[617,2270,1102],{"class":623},[617,2272,2201],{"class":759},[617,2274,2275],{"class":631},"(events",[617,2277,809],{"class":627},[617,2279,779],{"class":627},[617,2281,2282,2284,2286,2288,2290,2292,2294,2296],{"class":619,"line":2046},[617,2283,1545],{"class":798},[617,2285,922],{"class":627},[617,2287,1550],{"class":631},[617,2289,555],{"class":627},[617,2291,1555],{"class":631},[617,2293,555],{"class":627},[617,2295,693],{"class":631},[617,2297,1562],{"class":627},[617,2299,2300,2302,2304,2306,2308,2310],{"class":619,"line":2054},[617,2301,1567],{"class":798},[617,2303,922],{"class":627},[617,2305,641],{"class":627},[617,2307,1376],{"class":644},[617,2309,801],{"class":627},[617,2311,932],{"class":627},[617,2313,2314,2316],{"class":619,"line":2068},[617,2315,820],{"class":627},[617,2317,823],{"class":631},[599,2319,2321],{"id":2320},"next-steps","Next Steps",[1904,2323,2324,2330,2336,2342],{},[568,2325,2326,2329],{},[539,2327,2328],{"href":188},"OTLP Adapter"," - Send logs via OpenTelemetry Protocol to any OTLP backend",[568,2331,2332,2335],{},[539,2333,2334],{"href":153},"PostHog Adapter"," - Send logs to PostHog Logs via OTLP",[568,2337,2338,2341],{},[539,2339,2340],{"href":488},"Custom Adapters"," - Build your own adapter",[568,2343,2344,2346],{},[539,2345,513],{"href":514}," - Security and production tips",[2348,2349,2350],"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":612,"searchDepth":724,"depth":724,"links":2352},[2353,2354,2359,2365,2369,2370,2371,2372,2376,2377],{"id":601,"depth":724,"text":19},{"id":651,"depth":724,"text":24,"children":2355},[2356,2357,2358],{"id":655,"depth":743,"text":656},{"id":679,"depth":743,"text":680},{"id":705,"depth":743,"text":706},{"id":1290,"depth":724,"text":500,"children":2360},[2361,2362,2363,2364],{"id":1330,"depth":743,"text":1331},{"id":1421,"depth":743,"text":1422},{"id":1513,"depth":743,"text":1514},{"id":1613,"depth":743,"text":1614},{"id":1750,"depth":724,"text":1751,"children":2366},[2367,2368],{"id":1760,"depth":743,"text":1761},{"id":1800,"depth":743,"text":1801},{"id":1888,"depth":724,"text":1889},{"id":1942,"depth":724,"text":1943},{"id":2114,"depth":724,"text":2115},{"id":2141,"depth":724,"text":2142,"children":2373},[2374,2375],{"id":2145,"depth":743,"text":2146},{"id":2161,"depth":743,"text":2162},{"id":2177,"depth":724,"text":2178},{"id":2320,"depth":724,"text":2321},"Send wide events to HyperDX over OTLP\u002FHTTP, using its documented endpoint and authorization header. Configured from environment variables.","md",[2381,2386],{"label":192,"icon":2382,"to":541,"target":2383,"color":2384,"variant":2385},"i-lucide-external-link","_blank","neutral","subtle",{"label":2328,"icon":190,"to":188,"color":2384,"variant":2385},{},{"title":192,"icon":195},{"title":531,"description":2378},"RDAwKTX9itzKZH_SoGjkkG34O_VlLccdbIkK1w4ejQc",[2392,2394],{"title":187,"path":188,"stem":189,"description":2393,"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":2395,"icon":205,"children":-1},"Write wide events to the local file system as NDJSON for local debugging, AI agent integration, and production backup.",1786798938387]