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