"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[895],{60300:(e,t,n)=>{n.d(t,{A:()=>c});var i=n(74848),a=n(65243),s=n(91106),o=n.n(s);let r={primary:"bg-blue-600 text-white hover:bg-blue-500 enabled:hover:text-white/80 transition-colors",secondary:"button",tertiary:"bg-white/10 rounded-lg px-4 py-2 hover:bg-white/20 transition disabled:bg-gray/80 text-white text-base font-semibold"},l={small:"px-4 py-2 text-sm",default:"px-6 py-3 text-base"};function c(e){let{className:t,onClick:n,variant:s="primary",size:c="default",children:h,type:d,disabled:p,title:u,...m}=e,{href:g,target:f}=m,y=(0,a.QP)("font-display inline-flex items-center justify-center rounded text-base font-semibold text-white leading-tight disabled:!select-none disabled:!bg-gray-400",r[s],l[c],t);return g?(0,i.jsx)(o(),{href:g,target:f,className:y,title:u,children:h}):(0,i.jsx)("button",{className:y,onClick:n,type:d,disabled:p,title:u,children:h})}},34760:(e,t,n)=>{n.d(t,{A:()=>o});var i=n(74848),a=n(32485),s=n.n(a);function o(e){let{size:t,className:n,children:a}=e;switch(t){case"h1":return(0,i.jsx)("h1",{className:s()("font-bold leading-tighter text-3xl md:text-5xl",n),children:a});case"h2":return(0,i.jsx)("h2",{className:s()("font-bold text-2xl md:text-4xl",n),children:a});case"h3":return(0,i.jsx)("h3",{className:s()("font-bold leading-tight text-xl md:text-3xl",n),children:a});case"h4":return(0,i.jsx)("h4",{className:s()("font-bold leading-tight text-lg md:text-2xl",n),children:a});case"h5":return(0,i.jsx)("h5",{className:s()("eyebrow",n),children:a});default:return(0,i.jsx)("p",{className:s()("font-bold leading-tight text-white",n),children:a})}}},49788:(e,t,n)=>{n.d(t,{A:()=>c});var i=n(74848),a=n(54701),s=n(32485),o=n.n(s),r=n(34760),l=n(8499);function c(e){let{homepage:t=!0}=e;return(0,i.jsx)(a.kQ,{speed:-10,className:o()({"h-48 md:h-64":!t,"h-64 md:h-96":t}),children:(0,i.jsx)("div",{className:"".concat("after:absolute after:block after:bg-blue-400 after:blur-3xl after:content-[' '] after:h-96 after:opacity-5 after:right-0 after:rounded-full after:top-20 after:w-1/2 after:z-0"," ").concat("before:absolute before:block before:blur-3xl before:bg-orange-400 before:content-[' '] before:h-96 before:left-0 before:opacity-5 before:rounded-full before:w-1/2 before:z-0"," w-full h-full relative"),children:(0,i.jsx)("div",{className:"relative z-10 w-full h-[155%] -top-[25%] bg-no-repeat bg-cover bg-bottom flex items-center justify-center",style:{backgroundImage:"url(".concat((0,l.h)("/grid.svg"),")")},children:t&&(0,i.jsx)(r.A,{className:"text-center max-w-3xl pt-8",size:"h1",children:"Elastic\xa0Observability\xa0Labs"})})})})}},88796:(e,t,n)=>{n.d(t,{A:()=>W});var i=n(74848),a=n(96540),s=n(86715),o=n(13368),r=n.n(o),l=n(32485),c=n.n(l),h=n(94624),d=n.n(h),p=n(4724),u=n(99106),m=n(98016),g=n(37639),f=n(29965),y=n.n(f),b=n(91106),w=n.n(b),v=n(61053),x=n(19130),j=n(28872),E=n(13537),T=n(54784);function k(e){let{path:t,text:n,icon:s,active:o,links:r}=e,l=r&&r.length>6,h=c()("px-1 py-1 flex flex-col space-y-1",{"md:grid md:grid-cols-2 gap-1":l}),d=c()("flex lg:inline-flex font-light my-1 py-1 px-2 font-display font-semibold lg:text-sm xl:text-base items-center transition hover:hover-link hover:text-white focus:accessible-link-focus",{"hover-link":o}),p="ml-1 -mr-1 h-4 w-4 text-zinc-400 relative top-[1px]",u=c()("absolute left-1/2 mt-2 w-64 origin-top-center ring-1 ring-black ring-opacity-5 focus:outline-none transform -translate-x-1/2",{"md:w-[30rem]":l});return r?(0,i.jsx)(v.W1,{as:"div",className:"relative",children:e=>{let{open:t}=e;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("div",{children:(0,i.jsxs)(v.W1.Button,{className:d,children:[n,t?(0,i.jsx)(j.A,{className:p,"aria-hidden":"true"}):(0,i.jsx)(E.A,{className:p,"aria-hidden":"true"})]})}),(0,i.jsx)(x.e,{as:a.Fragment,enter:"transition ease-out duration-100",enterFrom:"transform opacity-0 scale-95",enterTo:"transform opacity-100 scale-100",leave:"transition ease-in duration-75",leaveFrom:"transform opacity-100 scale-100",leaveTo:"transform opacity-0 scale-95",children:(0,i.jsx)(v.W1.Items,{className:u,children:(0,i.jsx)(T.A,{size:"small",children:(0,i.jsx)("div",{className:h,children:r.map((e,t)=>(0,i.jsx)(v.W1.Item,{children:()=>(0,i.jsx)(w(),{href:e.path,className:d,children:e.text})},t))})})})})]})}}):(0,i.jsxs)(w(),{className:d,href:t,children:[s,(0,i.jsx)("span",{className:s?"hidden xl:block":"",children:n})]})}function A(e){let{className:t}=e;return(0,i.jsxs)("svg",{width:"24",height:"21",xmlns:"https://www.w3.org/2000/svg",className:t,viewBox:"0 0 24 21",fill:"none",children:[(0,i.jsx)("path",{d:"M7.45008 14.2379C7.94814 15.4192 9.07839 16.2437 10.3929 16.2437H15.9032L20.0358 20.4424V16.2437C21.8111 16.2437 23.2502 14.74 23.2502 12.8849V7.84663C23.2502 5.99158 21.8111 4.48777 20.0358 4.48777H18.4287V10.9879C18.4287 12.7829 17.0855 14.2379 15.4287 14.2379H7.45008Z",fill:"white"}),(0,i.jsx)("path",{d:"M7.35776 11.019H13.6071C14.4947 11.019 15.2144 10.2671 15.2144 9.33955V4.30126C15.2144 3.37372 14.4947 2.62181 13.6071 2.62181H3.96429C3.07668 2.62181 2.35715 3.37372 2.35715 4.30126V9.33955C2.35715 10.2671 3.07668 11.019 3.96429 11.019H5.57144V13.1968L7.35776 11.019ZM8.09694 12.6984L3.96429 16.897V12.6984C2.18909 12.6984 0.75 11.1946 0.75 9.33955V4.30126C0.75 2.44619 2.18909 0.942383 3.96429 0.942383H13.6071C15.3824 0.942383 16.8215 2.44619 16.8215 4.30126V9.33955C16.8215 11.1946 15.3824 12.6984 13.6071 12.6984H8.09694Z",fill:"white"})]})}function O(e){let{className:t}=e;return(0,i.jsx)("svg",{width:"98",height:"96",xmlns:"https://www.w3.org/2000/svg",className:t,viewBox:"0 0 98 96",fill:"none",children:(0,i.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z",fill:"currentColor"})})}var _=n(76424),S=n(8499),P=n(16939),I=n(30772);let C={navigationLinks:[{path:"/blog",text:"Articles"},{text:"Tags",links:(0,P.Yr)().map(e=>({path:(0,I.w_)(e.slug),text:e.title}))}]};var L=n(60300);function M(){let e=(0,s.useRouter)(),t=(0,_.usePathname)(),n="".concat("https://search.elastic.co/?location%5B0%5D=Observability%20Labs","&referrer=").concat("https://www.elastic.co/observability-labs").concat(e.asPath),o=()=>(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(L.A,{size:"small",href:"https://cloud.elastic.co/registration?cta=cloud-registration&tech=trial&plcmt=navigation&pg=observability-labs",className:"flex-1 lg:flex-auto",children:"Start free trial"}),(0,i.jsx)(L.A,{size:"small",variant:"secondary",href:"https://www.elastic.co/contact",className:"flex-1 lg:flex-auto",children:"Contact sales"})]}),r=(0,a.useMemo)(()=>(0,i.jsx)(w(),{href:n,className:"rounded flex items-center p-4 text-white focus:outline-none focus:ring-0 focus:ring-offset-1 focus:ring-offset-zinc-600 group",children:(0,i.jsx)("div",{className:"flex items-center relative font-display",children:(0,i.jsx)(p.A,{className:"h-6 w-6","aria-hidden":"true"})})}),[n]);return(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(g.EN,{as:"nav",className:"fixed w-full z-40",children:e=>{let{open:n}=e;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("div",{className:"bg-gradient-to-b from-zinc-900 from-20% h-[200%] to-transparent absolute inset-0 z-0 pointer-events-none"}),(0,i.jsx)("div",{className:"container relative z-10",children:(0,i.jsxs)("div",{className:"flex h-16 items-center justify-between",children:[(0,i.jsxs)("div",{className:"flex items-center justify-start w-full",children:[(0,i.jsx)("div",{children:(0,i.jsx)(w(),{href:"/",className:"hover:opacity-50 transition",children:(0,i.jsx)(y(),{alt:"Elastic Observability Labs logo",height:30,priority:!0,src:(0,S.h)("/logo.svg"),width:241})})}),(0,i.jsx)("div",{className:"hidden lg:ml-6 lg:block",children:(0,i.jsx)("div",{className:"flex space-x-4",children:C.navigationLinks.map((e,n)=>{let a=t===e.path;return(0,i.jsx)(k,{path:e.path,text:e.text,links:e.links,active:a},"navLink-".concat(n))})})}),(0,i.jsx)("div",{className:"hidden lg:ml-auto lg:block",children:(0,i.jsxs)("div",{className:"flex items-center space-x-4",children:[r,(0,i.jsx)(w(),{className:"inline-flex items-center font-semibold text-white",href:"https://github.com/elastic/observability-examples",children:(0,i.jsx)(O,{className:"h-5 w-5 mr-2"})}),(0,i.jsx)(w(),{className:"inline-flex items-center font-semibold text-white",href:"https://discuss.elastic.co/c/observability/82",children:(0,i.jsx)(A,{className:"h-6 w-6 mt-1 mr-2"})}),o()]})})]}),(0,i.jsxs)("div",{className:"-mr-2 flex lg:hidden",children:[r,(0,i.jsxs)(g.EN.Button,{className:"inline-flex items-center justify-center rounded-md p-2 text-gray-400 hover:bg-gray-700 hover:text-white focus:outline-none focus:ring-2 focus:ring-inset focus:ring-white",children:[(0,i.jsx)("span",{className:"sr-only",children:"Open navigation menu"}),n?(0,i.jsx)(u.A,{className:"block h-6 w-6","aria-hidden":"true"}):(0,i.jsx)(m.A,{className:"block h-6 w-6","aria-hidden":"true"})]})]})]})}),(0,i.jsx)(g.EN.Panel,{className:"lg:hidden relative bg-zinc-950 flex-1 h-[calc(100vh-64px)] flex items-stretch",children:(0,i.jsxs)("div",{className:"container flex-1 flex flex-col relative",children:[(0,i.jsx)("div",{className:" border-t border-zinc-800 flex flex-col justify-between relative h-[calc(100%-56px)] overflow-auto",children:(0,i.jsxs)("div",{className:"py-5 flex flex-col gap-2 flex-1 text-2xl font-medium text-white",children:[(0,i.jsx)(w(),{href:"/",children:"All Articles"}),(0,i.jsx)("div",{className:"text-xl mt-2 text-zinc-200",children:"Popular tags"}),(0,P.Yr)().map(e=>(0,i.jsx)(w(),{href:(0,I.w_)(e.slug),children:e.title},e.slug))]})}),(0,i.jsx)("div",{className:"border-t border-zinc-700 flex items-center justify-center gap-4 h-14 absolute inset-x-0 bottom-0 z-10 px-4",children:o()})]})})]})}})})}var R=n(87839),D=n(52346);function z(){let e=new Date().getFullYear();return(0,i.jsx)("footer",{className:"mt-auto text-xs md:text-sm",children:(0,i.jsxs)("div",{className:"container py-6 flex flex-col md:flex-row gap-2 md:gap-0 justify-between items-center",children:[(0,i.jsx)("div",{className:"text-zinc-300",children:(0,i.jsx)("nav",{children:(0,i.jsxs)("ul",{className:"flex space-x-4",children:[(0,i.jsx)("li",{children:(0,i.jsxs)(w(),{href:"".concat("https://www.elastic.co/observability-labs","/rss/feed.xml"),className:"hover:text-white font-medium flex items-center gap-1",children:[(0,i.jsx)(D.A,{className:"w-3 h-3"})," Subscribe"]})}),(0,i.jsx)("li",{children:(0,i.jsx)(w(),{href:"/sitemap.xml/",className:"hover:text-white font-medium",children:"Sitemap"})}),(0,i.jsx)("li",{children:(0,i.jsxs)(w(),{href:"https://elastic.co?utm_source=elastic-security-labs&utm_medium=referral&utm_campaign=security-labs&utm_content=footer",className:"hover:text-white font-medium flex items-center space-x-1",children:[(0,i.jsx)(R.A,{className:"inline-block w-3 h-3"}),(0,i.jsx)("span",{children:"Elastic.co"})]})})]})})}),(0,i.jsx)("div",{className:"flex flex-col space-y-1 text-zinc-300",children:(0,i.jsxs)("p",{children:["\xa9 ",e,". Elasticsearch B.V. All Rights Reserved."]})})]})})}var N=n(77836);function W(e){let{title:t,description:n,image:o,showScrollIndicator:l,children:h}=e,p=(0,s.useRouter)(),[u,m]=(0,a.useState)(0),g=()=>m(document.documentElement.scrollTop/(document.documentElement.scrollHeight-document.documentElement.clientHeight)*100);(0,a.useEffect)(()=>{window.addEventListener("scroll",g);let e=e=>{"k"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),p.push("/search"))};return window.addEventListener("keydown",e),()=>{window.removeEventListener("scroll",g),window.removeEventListener("keydown",e)}},[u,p]);let f=d().randomBytes(16).toString("hex"),y=t?"".concat(t," — Elastic Observability Labs"):"Elastic Observability Labs",b=n||"Explore Elastic Observability Labs for expert-led resources and hands-on learning. Enhance your skills and optimize your observability strategy with Elastic.",w=o?"".concat("https://www.elastic.co/observability-labs").concat(o,"?").concat(f):"".concat("https://www.elastic.co/observability-labs","/assets/observability-labs-thumbnail.png?").concat(f);return(0,i.jsxs)(a.Fragment,{children:[(0,i.jsxs)(r(),{children:[(0,i.jsx)("title",{children:y}),(0,i.jsx)("meta",{name:"description",content:b}),(0,i.jsx)("meta",{property:"og:title",content:y}),(0,i.jsx)("meta",{property:"og:description",content:b}),(0,i.jsx)("meta",{property:"og:image",content:w}),(0,i.jsx)("meta",{property:"og:image:alt",content:b}),(0,i.jsx)("meta",{property:"og:site_name",content:N.env.siteTitle}),(0,i.jsx)("meta",{property:"og:url",content:"".concat("https://www.elastic.co/observability-labs").concat(p.asPath)}),(0,i.jsx)("meta",{property:"og:type",content:"website"}),(0,i.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,i.jsx)("meta",{name:"twitter:title",content:y}),(0,i.jsx)("meta",{name:"twitter:description",content:b}),(0,i.jsx)("meta",{name:"twitter:image",content:w}),(0,i.jsx)("meta",{name:"twitter:image:alt",content:b})]}),(0,i.jsx)("div",{className:c()("scroll-percentage-container",{invisible:!l}),children:(0,i.jsx)("div",{className:"scroll-percentage-bar",style:{width:"".concat(u,"%")}})}),(0,i.jsx)(M,{}),(0,i.jsx)("main",{className:"mb-20 flex-1 flex flex-col",children:h}),(0,i.jsx)(z,{})]})}},54784:(e,t,n)=>{n.d(t,{A:()=>o});var i=n(74848),a=n(32485),s=n.n(a);function o(e){let{children:t,className:n,size:a="default",hoverable:o}=e,r=s()({"bg-zinc-900 border border-zinc-800 drop-shadow-lg p-5 sm:p-8 md:p-10 rounded-3xl":"default"===a,"bg-zinc-900 border border-zinc-800 drop-shadow-lg p-5 md:p-2 sm:p-4 md:px-6 md:py-4 rounded-xl":"small"===a,"hover:bg-zing-950 transition":o},n);return(0,i.jsx)("div",{className:r,children:t})}},30772:(e,t,n)=>{n.d(t,{Ef:()=>o,Wo:()=>a,kY:()=>s,w_:()=>l,yW:()=>r});var i=n(36503);function a(e){return new Date(i.c9.fromISO(e).setZone("America/New_York").toISO()).toLocaleDateString("en-GB",{day:"numeric",month:"long",year:"numeric"})}function s(e){return e.map(e=>e.title).join(", ")}function o(e){return e.replace(/^(.*)\s(.*)$/,"$1 $2").replace(/-/g,"- ")}function r(e){return"/blog/".concat(e)}function l(e){return"/blog/tag/".concat(e)}},16939:(e,t,n)=>{n.d(t,{kq:()=>r,xQ:()=>l,Yr:()=>c}),n(50341);let i=JSON.parse('[{"title":"Abhishek Singh","slug":"abhishek-singh","description":"General Manager, Observability at Elastic","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var h=Object.create;var i=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var b=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),d=(t,e)=>{for(var n in e)i(t,n,{get:e[n],enumerable:!0})},s=(t,e,n,o)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let a of x(e))!_.call(t,a)&&a!==n&&i(t,a,{get:()=>e[a],enumerable:!(o=l(e,a))||o.enumerable});return t};var p=(t,e,n)=>(n=t!=null?h(f(t)):{},s(e||!t||!t.__esModule?i(n,\\"default\\",{value:t,enumerable:!0}):n,t)),M=t=>s(i({},\\"__esModule\\",{value:!0}),t);var m=b((C,c)=>{c.exports=_jsx_runtime});var k={};d(k,{default:()=>g,frontmatter:()=>j});var r=p(m()),j={title:\\"Abhishek Singh\\",slug:\\"abhishek-singh\\",description:\\"General Manager, Observability at Elastic\\",image:\\"\\"};function u(t){return(0,r.jsx)(r.Fragment,{})}function g(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}return M(k);})();\\n;return Component;"},"_id":"authors/abhishek-singh.mdx","_raw":{"sourceFilePath":"authors/abhishek-singh.mdx","sourceFileName":"abhishek-singh.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/abhishek-singh"},"type":"Author","imageUrl":"","url":"/authors/abhishek-singh"},{"title":"Achyut Jhunjhunwala","slug":"achyut-jhunjhunwala","description":"","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var x=Object.create;var o=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var d=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),g=(t,n)=>{for(var e in n)o(t,e,{get:n[e],enumerable:!0})},c=(t,n,e,u)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let a of l(n))!_.call(t,a)&&a!==e&&o(t,a,{get:()=>n[a],enumerable:!(u=j(n,a))||u.enumerable});return t};var p=(t,n,e)=>(e=t!=null?x(f(t)):{},c(n||!t||!t.__esModule?o(e,\\"default\\",{value:t,enumerable:!0}):e,t)),w=t=>c(o({},\\"__esModule\\",{value:!0}),t);var s=d((D,i)=>{i.exports=_jsx_runtime});var M={};g(M,{default:()=>h,frontmatter:()=>y});var r=p(s()),y={title:\\"Achyut Jhunjhunwala\\",slug:\\"achyut-jhunjhunwala\\",description:\\"\\",image:\\"\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function h(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return w(M);})();\\n;return Component;"},"_id":"authors/achyut-jhunjhunwala.mdx","_raw":{"sourceFilePath":"authors/achyut-jhunjhunwala.mdx","sourceFileName":"achyut-jhunjhunwala.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/achyut-jhunjhunwala"},"type":"Author","imageUrl":"","url":"/authors/achyut-jhunjhunwala"},{"title":"Agi K Thomas","slug":"agi-thomas","description":"Senior Software Engineer, Observability at Elastic","image":"","body":{"raw":"","code":"var Component=(()=>{var x=Object.create;var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var p=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),h=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},s=(t,e,n,i)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of l(e))!d.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(i=f(e,o))||i.enumerable});return t};var j=(t,e,n)=>(n=t!=null?x(_(t)):{},s(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),M=t=>s(a({},\\"__esModule\\",{value:!0}),t);var c=p((C,m)=>{m.exports=_jsx_runtime});var w={};h(w,{default:()=>g,frontmatter:()=>b});var r=j(c()),b={title:\\"Agi K Thomas\\",slug:\\"agi-thomas\\",description:\\"Senior Software Engineer, Observability at Elastic\\",image:\\"\\"};function u(t){return(0,r.jsx)(r.Fragment,{})}function g(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}return M(w);})();\\n;return Component;"},"_id":"authors/agi-thomas.mdx","_raw":{"sourceFilePath":"authors/agi-thomas.mdx","sourceFileName":"agi-thomas.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/agi-thomas"},"type":"Author","imageUrl":"","url":"/authors/agi-thomas"},{"title":"Akhilesh Pokhariyal","slug":"akhilesh-pokhariyal","description":"","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var h=Object.create;var a=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var d=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),g=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},s=(t,e,n,i)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of f(e))!_.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(i=x(e,o))||i.enumerable});return t};var k=(t,e,n)=>(n=t!=null?h(p(t)):{},s(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),j=t=>s(a({},\\"__esModule\\",{value:!0}),t);var l=d((D,c)=>{c.exports=_jsx_runtime});var M={};g(M,{default:()=>u,frontmatter:()=>y});var r=k(l()),y={title:\\"Akhilesh Pokhariyal\\",slug:\\"akhilesh-pokhariyal\\",description:\\"\\",image:\\"\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function u(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return j(M);})();\\n;return Component;"},"_id":"authors/akhilesh-pokhariyal.mdx","_raw":{"sourceFilePath":"authors/akhilesh-pokhariyal.mdx","sourceFileName":"akhilesh-pokhariyal.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/akhilesh-pokhariyal"},"type":"Author","imageUrl":"","url":"/authors/akhilesh-pokhariyal"},{"title":"Alexander Wert","slug":"alexander-wert","description":"Senior Manager, Observability Edge Collection and OpenTelemetry at Elastic","image":"alexander-wert.jpg","body":{"raw":"\\n","code":"var Component=(()=>{var m=Object.create;var o=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var _=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),j=(e,t)=>{for(var n in t)o(e,n,{get:t[n],enumerable:!0})},l=(e,t,n,i)=>{if(t&&typeof t==\\"object\\"||typeof t==\\"function\\")for(let a of g(t))!f.call(e,a)&&a!==n&&o(e,a,{get:()=>t[a],enumerable:!(i=u(t,a))||i.enumerable});return e};var M=(e,t,n)=>(n=e!=null?m(p(e)):{},l(t||!e||!e.__esModule?o(n,\\"default\\",{value:e,enumerable:!0}):n,e)),w=e=>l(o({},\\"__esModule\\",{value:!0}),e);var c=_((D,s)=>{s.exports=_jsx_runtime});var C={};j(C,{default:()=>d,frontmatter:()=>y});var r=M(c()),y={title:\\"Alexander Wert\\",slug:\\"alexander-wert\\",description:\\"Senior Manager, Observability Edge Collection and OpenTelemetry at Elastic\\",image:\\"alexander-wert.jpg\\"};function x(e){return(0,r.jsx)(r.Fragment,{})}function d(e={}){let{wrapper:t}=e.components||{};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(x,{...e})}):x(e)}return w(C);})();\\n;return Component;"},"_id":"authors/alexander-wert.mdx","_raw":{"sourceFilePath":"authors/alexander-wert.mdx","sourceFileName":"alexander-wert.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/alexander-wert"},"type":"Author","imageUrl":"/assets/images/authors/alexander-wert.jpg","url":"/authors/alexander-wert"},{"title":"Alexis Roberson","slug":"alexis-roberson","description":"","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var l=Object.create;var s=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var p=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),j=(t,e)=>{for(var n in e)s(t,n,{get:e[n],enumerable:!0})},i=(t,e,n,a)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of _(e))!g.call(t,o)&&o!==n&&s(t,o,{get:()=>e[o],enumerable:!(a=f(e,o))||a.enumerable});return t};var M=(t,e,n)=>(n=t!=null?l(d(t)):{},i(e||!t||!t.__esModule?s(n,\\"default\\",{value:t,enumerable:!0}):n,t)),b=t=>i(s({},\\"__esModule\\",{value:!0}),t);var c=p((X,x)=>{x.exports=_jsx_runtime});var D={};j(D,{default:()=>u,frontmatter:()=>C});var r=M(c()),C={title:\\"Alexis Roberson\\",slug:\\"alexis-roberson\\",description:\\"\\",image:\\"\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function u(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return b(D);})();\\n;return Component;"},"_id":"authors/alexis-roberson.mdx","_raw":{"sourceFilePath":"authors/alexis-roberson.mdx","sourceFileName":"alexis-roberson.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/alexis-roberson"},"type":"Author","imageUrl":"","url":"/authors/alexis-roberson"},{"title":"Almudena Sanz Oliv\xe9","slug":"almudena-sanz-olive","description":"Senior Data Scientist at Elastic","image":"","body":{"raw":"","code":"var Component=(()=>{var x=Object.create;var o=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var p=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),j=(t,n)=>{for(var e in n)o(t,e,{get:n[e],enumerable:!0})},s=(t,n,e,i)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let r of f(n))!g.call(t,r)&&r!==e&&o(t,r,{get:()=>n[r],enumerable:!(i=d(n,r))||i.enumerable});return t};var D=(t,n,e)=>(e=t!=null?x(_(t)):{},s(n||!t||!t.__esModule?o(e,\\"default\\",{value:t,enumerable:!0}):e,t)),M=t=>s(o({},\\"__esModule\\",{value:!0}),t);var m=p((C,c)=>{c.exports=_jsx_runtime});var v={};j(v,{default:()=>l,frontmatter:()=>S});var a=D(m()),S={title:\\"Almudena Sanz Oliv\\\\xE9\\",slug:\\"almudena-sanz-olive\\",description:\\"Senior Data Scientist at Elastic\\",image:\\"\\"};function u(t){return(0,a.jsx)(a.Fragment,{})}function l(t={}){let{wrapper:n}=t.components||{};return n?(0,a.jsx)(n,{...t,children:(0,a.jsx)(u,{...t})}):u(t)}return M(v);})();\\n;return Component;"},"_id":"authors/almudena-sanz-olive.mdx","_raw":{"sourceFilePath":"authors/almudena-sanz-olive.mdx","sourceFileName":"almudena-sanz-olive.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/almudena-sanz-olive"},"type":"Author","imageUrl":"","url":"/authors/almudena-sanz-olive"},{"title":"Aman Agarwal","slug":"aman-agarwal","description":"Maintainer of OpenLIT","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var o=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var d=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),M=(t,n)=>{for(var e in n)o(t,e,{get:n[e],enumerable:!0})},m=(t,n,e,i)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let a of g(n))!_.call(t,a)&&a!==e&&o(t,a,{get:()=>n[a],enumerable:!(i=l(n,a))||i.enumerable});return t};var j=(t,n,e)=>(e=t!=null?f(p(t)):{},m(n||!t||!t.__esModule?o(e,\\"default\\",{value:t,enumerable:!0}):e,t)),w=t=>m(o({},\\"__esModule\\",{value:!0}),t);var c=d((F,s)=>{s.exports=_jsx_runtime});var C={};M(C,{default:()=>x,frontmatter:()=>A});var r=j(c()),A={title:\\"Aman Agarwal\\",slug:\\"aman-agarwal\\",description:\\"Maintainer of OpenLIT\\"};function u(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}return w(C);})();\\n;return Component;"},"_id":"authors/aman-agarwal.mdx","_raw":{"sourceFilePath":"authors/aman-agarwal.mdx","sourceFileName":"aman-agarwal.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/aman-agarwal"},"type":"Author","imageUrl":"","url":"/authors/aman-agarwal"},{"title":"Andres Rodriguez","slug":"andres-rodriguez","description":"Senior Director, Software Engineering at Elastic","image":"andres-rodriguez.jpg","body":{"raw":"\\n","code":"var Component=(()=>{var m=Object.create;var i=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty;var _=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),j=(e,t)=>{for(var r in t)i(e,r,{get:t[r],enumerable:!0})},s=(e,t,r,a)=>{if(t&&typeof t==\\"object\\"||typeof t==\\"function\\")for(let o of f(t))!p.call(e,o)&&o!==r&&i(e,o,{get:()=>t[o],enumerable:!(a=x(t,o))||a.enumerable});return e};var z=(e,t,r)=>(r=e!=null?m(l(e)):{},s(t||!e||!e.__esModule?i(r,\\"default\\",{value:e,enumerable:!0}):r,e)),D=e=>s(i({},\\"__esModule\\",{value:!0}),e);var c=_((E,u)=>{u.exports=_jsx_runtime});var w={};j(w,{default:()=>g,frontmatter:()=>M});var n=z(c()),M={title:\\"Andres Rodriguez\\",slug:\\"andres-rodriguez\\",description:\\"Senior Director, Software Engineering at Elastic\\",image:\\"andres-rodriguez.jpg\\"};function d(e){return(0,n.jsx)(n.Fragment,{})}function g(e={}){let{wrapper:t}=e.components||{};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}return D(w);})();\\n;return Component;"},"_id":"authors/andres-rodriguez.mdx","_raw":{"sourceFilePath":"authors/andres-rodriguez.mdx","sourceFileName":"andres-rodriguez.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/andres-rodriguez"},"type":"Author","imageUrl":"/assets/images/authors/andres-rodriguez.jpg","url":"/authors/andres-rodriguez"},{"title":"Andrew Cholakian","slug":"andrew-cholakian","description":"Technical Lead","image":"andrew-cholakian.jpg","body":{"raw":"Andrew is a technical lead working in Elastic Observability, where he\'s currently working on Elastic\'s Observability solutions. He has worked on projects, such as Logstash, Heartbeat, Synthetics, and the Observability UI.\\n\\n","code":"var Component=(()=>{var u=Object.create;var o=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var m=Object.getPrototypeOf,b=Object.prototype.hasOwnProperty;var x=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),g=(e,t)=>{for(var n in t)o(e,n,{get:t[n],enumerable:!0})},s=(e,t,n,i)=>{if(t&&typeof t==\\"object\\"||typeof t==\\"function\\")for(let a of w(t))!b.call(e,a)&&a!==n&&o(e,a,{get:()=>t[a],enumerable:!(i=p(t,a))||i.enumerable});return e};var k=(e,t,n)=>(n=e!=null?u(m(e)):{},s(t||!e||!e.__esModule?o(n,\\"default\\",{value:e,enumerable:!0}):n,e)),y=e=>s(o({},\\"__esModule\\",{value:!0}),e);var l=x((v,c)=>{c.exports=_jsx_runtime});var j={};g(j,{default:()=>d,frontmatter:()=>f});var r=k(l()),f={title:\\"Andrew Cholakian\\",slug:\\"andrew-cholakian\\",description:\\"Technical Lead\\",image:\\"andrew-cholakian.jpg\\"};function h(e){let t={p:\\"p\\",...e.components};return(0,r.jsx)(t.p,{children:\\"Andrew is a technical lead working in Elastic Observability, where he\'s currently working on Elastic\'s Observability solutions. He has worked on projects, such as Logstash, Heartbeat, Synthetics, and the Observability UI.\\"})}function d(e={}){let{wrapper:t}=e.components||{};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}return y(j);})();\\n;return Component;"},"_id":"authors/andrew-cholakian.mdx","_raw":{"sourceFilePath":"authors/andrew-cholakian.mdx","sourceFileName":"andrew-cholakian.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/andrew-cholakian"},"type":"Author","imageUrl":"/assets/images/authors/andrew-cholakian.jpg","url":"/authors/andrew-cholakian"},{"title":"Baha Azarmi","slug":"baha-azarmi","description":"VP, Customer Engineering at Elastic","image":"Baha.jpeg","body":{"raw":"\\nBaha joined Elastic in 2015 and is currently VP, Customer Success. He previously co-founded ReachFive, a marketing data platform, and worked for several software vendors including Talend and Oracle. Baha holds a master’s degree in computer science.\\n","code":"var Component=(()=>{var l=Object.create;var r=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var x=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),j=(e,n)=>{for(var t in n)r(e,t,{get:n[t],enumerable:!0})},s=(e,n,t,i)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let a of f(n))!g.call(e,a)&&a!==t&&r(e,a,{get:()=>n[a],enumerable:!(i=p(n,a))||i.enumerable});return e};var _=(e,n,t)=>(t=e!=null?l(h(e)):{},s(n||!e||!e.__esModule?r(t,\\"default\\",{value:e,enumerable:!0}):t,e)),v=e=>s(r({},\\"__esModule\\",{value:!0}),e);var d=x((y,c)=>{c.exports=_jsx_runtime});var C={};j(C,{default:()=>u,frontmatter:()=>B});var o=_(d()),B={title:\\"Baha Azarmi\\",slug:\\"baha-azarmi\\",description:\\"VP, Customer Engineering at Elastic\\",image:\\"Baha.jpeg\\"};function m(e){let n={p:\\"p\\",...e.components};return(0,o.jsx)(n.p,{children:\\"Baha joined Elastic in 2015 and is currently VP, Customer Success. He previously co-founded ReachFive, a marketing data platform, and worked for several software vendors including Talend and Oracle. Baha holds a master\\\\u2019s degree in computer science.\\"})}function u(e={}){let{wrapper:n}=e.components||{};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(m,{...e})}):m(e)}return v(C);})();\\n;return Component;"},"_id":"authors/baha-azarmi.mdx","_raw":{"sourceFilePath":"authors/baha-azarmi.mdx","sourceFileName":"baha-azarmi.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/baha-azarmi"},"type":"Author","imageUrl":"/assets/images/authors/Baha.jpeg","url":"/authors/baha-azarmi"},{"title":"Bahubali Shetti","slug":"bahubali-shetti","description":"Senior Director, Technical Solutions for Observability at Elastic","image":"bahubali-shetti.jpg","body":{"raw":"\\n","code":"var Component=(()=>{var m=Object.create;var a=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var p=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),_=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},s=(t,e,n,o)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let r of x(e))!g.call(t,r)&&r!==n&&a(t,r,{get:()=>e[r],enumerable:!(o=b(e,r))||o.enumerable});return t};var d=(t,e,n)=>(n=t!=null?m(f(t)):{},s(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),j=t=>s(a({},\\"__esModule\\",{value:!0}),t);var u=p((y,c)=>{c.exports=_jsx_runtime});var M={};_(M,{default:()=>h,frontmatter:()=>D});var i=d(u()),D={title:\\"Bahubali Shetti\\",slug:\\"bahubali-shetti\\",description:\\"Senior Director, Technical Solutions for Observability at Elastic\\",image:\\"bahubali-shetti.jpg\\"};function l(t){return(0,i.jsx)(i.Fragment,{})}function h(t={}){let{wrapper:e}=t.components||{};return e?(0,i.jsx)(e,{...t,children:(0,i.jsx)(l,{...t})}):l(t)}return j(M);})();\\n;return Component;"},"_id":"authors/bahubali-shetti.mdx","_raw":{"sourceFilePath":"authors/bahubali-shetti.mdx","sourceFileName":"bahubali-shetti.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/bahubali-shetti"},"type":"Author","imageUrl":"/assets/images/authors/bahubali-shetti.jpg","url":"/authors/bahubali-shetti"},{"title":"Bryce Buchanan","slug":"bryce-buchanan","description":"Elastic","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var f=Object.create;var o=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var p=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),h=(t,n)=>{for(var e in n)o(t,e,{get:n[e],enumerable:!0})},i=(t,n,e,c)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let a of _(n))!g.call(t,a)&&a!==e&&o(t,a,{get:()=>n[a],enumerable:!(c=l(n,a))||c.enumerable});return t};var j=(t,n,e)=>(e=t!=null?f(d(t)):{},i(n||!t||!t.__esModule?o(e,\\"default\\",{value:t,enumerable:!0}):e,t)),y=t=>i(o({},\\"__esModule\\",{value:!0}),t);var u=p((C,s)=>{s.exports=_jsx_runtime});var b={};h(b,{default:()=>x,frontmatter:()=>M});var r=j(u()),M={title:\\"Bryce Buchanan\\",slug:\\"bryce-buchanan\\",description:\\"Elastic\\",image:\\"\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return y(b);})();\\n;return Component;"},"_id":"authors/bryce-buchanan.mdx","_raw":{"sourceFilePath":"authors/bryce-buchanan.mdx","sourceFileName":"bryce-buchanan.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/bryce-buchanan"},"type":"Author","imageUrl":"","url":"/authors/bryce-buchanan"},{"title":"Carly Richmond","slug":"carly-richmond","description":"Principal Developer Advocate","image":"carly-richmond.jpeg","body":{"raw":"Carly is a principal developer advocate at Elastic. Before joining Elastic in 2022, she spent over 10 years working as a software engineer, scrum master, and engineering leader at a large investment bank. She is a UI engineer who occasionally dabbles in writing backend services, a speaker, and a regular blogger on both her personal blog and the Elastic blog.\\n\\nShe enjoys cooking, photography, drinking tea, and chasing after her young son in her spare time.\\n\\n","code":"var Component=(()=>{var p=Object.create;var o=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var u=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty;var x=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),b=(e,n)=>{for(var a in n)o(e,a,{get:n[a],enumerable:!0})},s=(e,n,a,i)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let t of m(n))!y.call(e,t)&&t!==a&&o(e,t,{get:()=>n[t],enumerable:!(i=h(n,t))||i.enumerable});return e};var f=(e,n,a)=>(a=e!=null?p(u(e)):{},s(n||!e||!e.__esModule?o(a,\\"default\\",{value:e,enumerable:!0}):a,e)),j=e=>s(o({},\\"__esModule\\",{value:!0}),e);var l=x((w,c)=>{c.exports=_jsx_runtime});var _={};b(_,{default:()=>d,frontmatter:()=>v});var r=f(l()),v={title:\\"Carly Richmond\\",slug:\\"carly-richmond\\",description:\\"Principal Developer Advocate\\",image:\\"carly-richmond.jpeg\\"};function g(e){let n={p:\\"p\\",...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:\\"Carly is a principal developer advocate at Elastic. Before joining Elastic in 2022, she spent over 10 years working as a software engineer, scrum master, and engineering leader at a large investment bank. She is a UI engineer who occasionally dabbles in writing backend services, a speaker, and a regular blogger on both her personal blog and the Elastic blog.\\"}),`\\n`,(0,r.jsx)(n.p,{children:\\"She enjoys cooking, photography, drinking tea, and chasing after her young son in her spare time.\\"})]})}function d(e={}){let{wrapper:n}=e.components||{};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(g,{...e})}):g(e)}return j(_);})();\\n;return Component;"},"_id":"authors/carly-richmond.mdx","_raw":{"sourceFilePath":"authors/carly-richmond.mdx","sourceFileName":"carly-richmond.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/carly-richmond"},"type":"Author","imageUrl":"/assets/images/authors/carly-richmond.jpeg","url":"/authors/carly-richmond"},{"title":"Carson Ip","slug":"carson-ip","description":"Software Engineer II","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var l=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),j=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},s=(t,n,e,i)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of g(n))!d.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(i=p(n,o))||i.enumerable});return t};var C=(t,n,e)=>(e=t!=null?f(_(t)):{},s(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),I=t=>s(a({},\\"__esModule\\",{value:!0}),t);var m=l((F,c)=>{c.exports=_jsx_runtime});var w={};j(w,{default:()=>x,frontmatter:()=>M});var r=C(m()),M={title:\\"Carson Ip\\",slug:\\"carson-ip\\",description:\\"Software Engineer II\\",image:\\"\\"};function u(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}return I(w);})();\\n;return Component;"},"_id":"authors/carson-ip.mdx","_raw":{"sourceFilePath":"authors/carson-ip.mdx","sourceFileName":"carson-ip.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/carson-ip"},"type":"Author","imageUrl":"","url":"/authors/carson-ip"},{"title":"Cesar Munoz","slug":"cesar-munoz","description":"","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty;var p=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),M=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},u=(t,e,n,s)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of d(e))!l.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(s=_(e,o))||s.enumerable});return t};var j=(t,e,n)=>(n=t!=null?f(g(t)):{},u(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),C=t=>u(a({},\\"__esModule\\",{value:!0}),t);var i=p((X,c)=>{c.exports=_jsx_runtime});var D={};M(D,{default:()=>x,frontmatter:()=>z});var r=j(i()),z={title:\\"Cesar Munoz\\",slug:\\"cesar-munoz\\",description:\\"\\",image:\\"\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return C(D);})();\\n;return Component;"},"_id":"authors/cesar-munoz.mdx","_raw":{"sourceFilePath":"authors/cesar-munoz.mdx","sourceFileName":"cesar-munoz.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/cesar-munoz"},"type":"Author","imageUrl":"","url":"/authors/cesar-munoz"},{"title":"Christos Kalkanis","slug":"christos-kalkanis","description":"Principal software engineer, Observability","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var x=Object.create;var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var d=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),h=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},s=(t,e,n,o)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let i of g(e))!_.call(t,i)&&i!==n&&a(t,i,{get:()=>e[i],enumerable:!(o=f(e,i))||o.enumerable});return t};var j=(t,e,n)=>(n=t!=null?x(p(t)):{},s(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),k=t=>s(a({},\\"__esModule\\",{value:!0}),t);var l=d((w,c)=>{c.exports=_jsx_runtime});var M={};h(M,{default:()=>u,frontmatter:()=>C});var r=j(l()),C={title:\\"Christos Kalkanis\\",slug:\\"christos-kalkanis\\",description:\\"Principal software engineer, Observability\\",image:\\"\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function u(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return k(M);})();\\n;return Component;"},"_id":"authors/christos-kalkanis.mdx","_raw":{"sourceFilePath":"authors/christos-kalkanis.mdx","sourceFileName":"christos-kalkanis.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/christos-kalkanis"},"type":"Author","imageUrl":"","url":"/authors/christos-kalkanis"},{"title":"Christos Markou","slug":"christos-markou","description":"Senior Software Engineer, Observability and OpenTelemetry at Elastic","image":"christos-markou.jpg","body":{"raw":"\\n","code":"var Component=(()=>{var x=Object.create;var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var _=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),h=(t,e)=>{for(var r in e)a(t,r,{get:e[r],enumerable:!0})},s=(t,e,r,i)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of g(e))!d.call(t,o)&&o!==r&&a(t,o,{get:()=>e[o],enumerable:!(i=f(e,o))||i.enumerable});return t};var j=(t,e,r)=>(r=t!=null?x(p(t)):{},s(e||!t||!t.__esModule?a(r,\\"default\\",{value:t,enumerable:!0}):r,t)),M=t=>s(a({},\\"__esModule\\",{value:!0}),t);var m=_((b,c)=>{c.exports=_jsx_runtime});var y={};h(y,{default:()=>l,frontmatter:()=>k});var n=j(m()),k={title:\\"Christos Markou\\",slug:\\"christos-markou\\",description:\\"Senior Software Engineer, Observability and OpenTelemetry at Elastic\\",image:\\"christos-markou.jpg\\"};function u(t){return(0,n.jsx)(n.Fragment,{})}function l(t={}){let{wrapper:e}=t.components||{};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(u,{...t})}):u(t)}return M(y);})();\\n;return Component;"},"_id":"authors/christos-markou.mdx","_raw":{"sourceFilePath":"authors/christos-markou.mdx","sourceFileName":"christos-markou.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/christos-markou"},"type":"Author","imageUrl":"/assets/images/authors/christos-markou.jpg","url":"/authors/christos-markou"},{"title":"Damien Mathieu","slug":"damien-mathieu","description":"Principal Software Engineer","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var f=Object.create;var i=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty;var _=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),M=(t,e)=>{for(var n in e)i(t,n,{get:e[n],enumerable:!0})},m=(t,e,n,o)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let a of g(e))!p.call(t,a)&&a!==n&&i(t,a,{get:()=>e[a],enumerable:!(o=d(e,a))||o.enumerable});return t};var h=(t,e,n)=>(n=t!=null?f(l(t)):{},m(e||!t||!t.__esModule?i(n,\\"default\\",{value:t,enumerable:!0}):n,t)),j=t=>m(i({},\\"__esModule\\",{value:!0}),t);var c=_((F,u)=>{u.exports=_jsx_runtime});var w={};M(w,{default:()=>x,frontmatter:()=>D});var r=h(c()),D={title:\\"Damien Mathieu\\",slug:\\"damien-mathieu\\",description:\\"Principal Software Engineer\\",image:\\"\\"};function s(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(s,{...t})}):s(t)}return j(w);})();\\n;return Component;"},"_id":"authors/damien-mathieu.mdx","_raw":{"sourceFilePath":"authors/damien-mathieu.mdx","sourceFileName":"damien-mathieu.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/damien-mathieu"},"type":"Author","imageUrl":"","url":"/authors/damien-mathieu"},{"title":"Dario Gieselaar","slug":"dario-gieselaar","description":"Senior Software Engineer at Elastic","image":"dario-gieselaar.jpg","body":{"raw":"\\n","code":"var Component=(()=>{var u=Object.create;var o=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty;var _=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),j=(e,t)=>{for(var r in t)o(e,r,{get:t[r],enumerable:!0})},s=(e,t,r,i)=>{if(t&&typeof t==\\"object\\"||typeof t==\\"function\\")for(let a of d(t))!p.call(e,a)&&a!==r&&o(e,a,{get:()=>t[a],enumerable:!(i=x(t,a))||i.enumerable});return e};var D=(e,t,r)=>(r=e!=null?u(f(e)):{},s(t||!e||!e.__esModule?o(r,\\"default\\",{value:e,enumerable:!0}):r,e)),M=e=>s(o({},\\"__esModule\\",{value:!0}),e);var g=_((F,c)=>{c.exports=_jsx_runtime});var C={};j(C,{default:()=>m,frontmatter:()=>w});var n=D(g()),w={title:\\"Dario Gieselaar\\",slug:\\"dario-gieselaar\\",description:\\"Senior Software Engineer at Elastic\\",image:\\"dario-gieselaar.jpg\\"};function l(e){return(0,n.jsx)(n.Fragment,{})}function m(e={}){let{wrapper:t}=e.components||{};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}return M(C);})();\\n;return Component;"},"_id":"authors/dario-gieselaar.mdx","_raw":{"sourceFilePath":"authors/dario-gieselaar.mdx","sourceFileName":"dario-gieselaar.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/dario-gieselaar"},"type":"Author","imageUrl":"/assets/images/authors/dario-gieselaar.jpg","url":"/authors/dario-gieselaar"},{"title":"David Hope","slug":"david-hope","description":"Director, Observability and AIOps Solutions at Elastic","image":"david-hope.png","body":{"raw":"David Hope is a dedicated IT professional with over 16 years of diverse experience spanning from development, DevOps, leadership, sales, and product marketing. David currently lives in the USA with his family and moved here eight years ago from the UK after meeting his wife in Buffalo, NY.\\n\\n","code":"var Component=(()=>{var m=Object.create;var o=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var u=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty;var g=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),x=(e,t)=>{for(var n in t)o(e,n,{get:t[n],enumerable:!0})},s=(e,t,n,a)=>{if(t&&typeof t==\\"object\\"||typeof t==\\"function\\")for(let i of h(t))!v.call(e,i)&&i!==n&&o(e,i,{get:()=>t[i],enumerable:!(a=f(t,i))||a.enumerable});return e};var D=(e,t,n)=>(n=e!=null?m(u(e)):{},s(t||!e||!e.__esModule?o(n,\\"default\\",{value:e,enumerable:!0}):n,e)),y=e=>s(o({},\\"__esModule\\",{value:!0}),e);var p=g((M,d)=>{d.exports=_jsx_runtime});var w={};x(w,{default:()=>l,frontmatter:()=>_});var r=D(p()),_={title:\\"David Hope\\",slug:\\"david-hope\\",description:\\"Director, Observability and AIOps Solutions at Elastic\\",image:\\"david-hope.png\\"};function c(e){let t={p:\\"p\\",...e.components};return(0,r.jsx)(t.p,{children:\\"David Hope is a dedicated IT professional with over 16 years of diverse experience spanning from development, DevOps, leadership, sales, and product marketing. David currently lives in the USA with his family and moved here eight years ago from the UK after meeting his wife in Buffalo, NY.\\"})}function l(e={}){let{wrapper:t}=e.components||{};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}return y(w);})();\\n;return Component;"},"_id":"authors/david-hope.mdx","_raw":{"sourceFilePath":"authors/david-hope.mdx","sourceFileName":"david-hope.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/david-hope"},"type":"Author","imageUrl":"/assets/images/authors/david-hope.png","url":"/authors/david-hope"},{"title":"David Ricordel","slug":"david-ricordel","description":"Consulting Architect","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var l=Object.create;var i=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var p=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),j=(t,e)=>{for(var n in e)i(t,n,{get:e[n],enumerable:!0})},c=(t,e,n,a)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of f(e))!_.call(t,o)&&o!==n&&i(t,o,{get:()=>e[o],enumerable:!(a=x(e,o))||a.enumerable});return t};var C=(t,e,n)=>(n=t!=null?l(g(t)):{},c(e||!t||!t.__esModule?i(n,\\"default\\",{value:t,enumerable:!0}):n,t)),D=t=>c(i({},\\"__esModule\\",{value:!0}),t);var d=p((F,s)=>{s.exports=_jsx_runtime});var h={};j(h,{default:()=>m,frontmatter:()=>M});var r=C(d()),M={title:\\"David Ricordel\\",slug:\\"david-ricordel\\",description:\\"Consulting Architect\\",image:\\"\\"};function u(t){return(0,r.jsx)(r.Fragment,{})}function m(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}return D(h);})();\\n;return Component;"},"_id":"authors/david-ricordel.mdx","_raw":{"sourceFilePath":"authors/david-ricordel.mdx","sourceFileName":"david-ricordel.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/david-ricordel"},"type":"Author","imageUrl":"","url":"/authors/david-ricordel"},{"title":"Drew Post","slug":"drew-post","description":"Principal Product Manager, Observability at Elastic","image":"drew-post.jpg","body":{"raw":"\\n","code":"var Component=(()=>{var d=Object.create;var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var _=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),j=(t,e)=>{for(var r in e)a(t,r,{get:e[r],enumerable:!0})},s=(t,e,r,i)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of x(e))!f.call(t,o)&&o!==r&&a(t,o,{get:()=>e[o],enumerable:!(i=l(e,o))||i.enumerable});return t};var w=(t,e,r)=>(r=t!=null?d(g(t)):{},s(e||!t||!t.__esModule?a(r,\\"default\\",{value:t,enumerable:!0}):r,t)),M=t=>s(a({},\\"__esModule\\",{value:!0}),t);var u=_((y,c)=>{c.exports=_jsx_runtime});var P={};j(P,{default:()=>p,frontmatter:()=>D});var n=w(u()),D={title:\\"Drew Post\\",slug:\\"drew-post\\",description:\\"Principal Product Manager, Observability at Elastic\\",image:\\"drew-post.jpg\\"};function m(t){return(0,n.jsx)(n.Fragment,{})}function p(t={}){let{wrapper:e}=t.components||{};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(m,{...t})}):m(t)}return M(P);})();\\n;return Component;"},"_id":"authors/drew-post.mdx","_raw":{"sourceFilePath":"authors/drew-post.mdx","sourceFileName":"drew-post.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/drew-post"},"type":"Author","imageUrl":"/assets/images/authors/drew-post.jpg","url":"/authors/drew-post"},{"title":"Elastic Observability Team","slug":"elastic-observability-team","description":"Elastic Observability Team","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var x=Object.create;var i=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),p=(t,e)=>{for(var n in e)i(t,n,{get:e[n],enumerable:!0})},s=(t,e,n,o)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let a of f(e))!d.call(t,a)&&a!==n&&i(t,a,{get:()=>e[a],enumerable:!(o=b(e,a))||o.enumerable});return t};var y=(t,e,n)=>(n=t!=null?x(_(t)):{},s(e||!t||!t.__esModule?i(n,\\"default\\",{value:t,enumerable:!0}):n,t)),j=t=>s(i({},\\"__esModule\\",{value:!0}),t);var m=g((D,c)=>{c.exports=_jsx_runtime});var M={};p(M,{default:()=>u,frontmatter:()=>v});var r=y(m()),v={title:\\"Elastic Observability Team\\",slug:\\"elastic-observability-team\\",description:\\"Elastic Observability Team\\",image:\\"\\"};function l(t){return(0,r.jsx)(r.Fragment,{})}function u(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(l,{...t})}):l(t)}return j(M);})();\\n;return Component;"},"_id":"authors/elasitic-observability-team.mdx","_raw":{"sourceFilePath":"authors/elasitic-observability-team.mdx","sourceFileName":"elasitic-observability-team.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/elasitic-observability-team"},"type":"Author","imageUrl":"","url":"/authors/elastic-observability-team"},{"title":"Eric Lowry","slug":"eric-lowry","description":"Principal Solutions Architect at Elastic","image":"eric-lowry.jpg","body":{"raw":"\\n","code":"var Component=(()=>{var x=Object.create;var i=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var d=(t,r)=>()=>(r||t((r={exports:{}}).exports,r),r.exports),j=(t,r)=>{for(var e in r)i(t,e,{get:r[e],enumerable:!0})},a=(t,r,e,c)=>{if(r&&typeof r==\\"object\\"||typeof r==\\"function\\")for(let o of f(r))!_.call(t,o)&&o!==e&&i(t,o,{get:()=>r[o],enumerable:!(c=p(r,o))||c.enumerable});return t};var w=(t,r,e)=>(e=t!=null?x(g(t)):{},a(r||!t||!t.__esModule?i(e,\\"default\\",{value:t,enumerable:!0}):e,t)),y=t=>a(i({},\\"__esModule\\",{value:!0}),t);var l=d((D,s)=>{s.exports=_jsx_runtime});var h={};j(h,{default:()=>m,frontmatter:()=>M});var n=w(l()),M={title:\\"Eric Lowry\\",slug:\\"eric-lowry\\",description:\\"Principal Solutions Architect at Elastic\\",image:\\"eric-lowry.jpg\\"};function u(t){return(0,n.jsx)(n.Fragment,{})}function m(t={}){let{wrapper:r}=t.components||{};return r?(0,n.jsx)(r,{...t,children:(0,n.jsx)(u,{...t})}):u(t)}return y(h);})();\\n;return Component;"},"_id":"authors/eric-lowry.mdx","_raw":{"sourceFilePath":"authors/eric-lowry.mdx","sourceFileName":"eric-lowry.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/eric-lowry"},"type":"Author","imageUrl":"/assets/images/authors/eric-lowry.jpg","url":"/authors/eric-lowry"},{"title":"Felix Barnsteiner","slug":"felix-barnsteiner","description":"Tech Lead","image":"felix-barnsteiner.jpg","body":{"raw":"Felix joined Elastic in 2018 where he built the Elastic APM Java agent from the ground up. Two years in, he took the role of the tech lead for the APM Agents team. Another two years later, he became tech lead of application observability. Since Oct 2023, Felix is a floating tech lead in observability, focusing on strategical initiatives, such as working with other teams to make Elasticsearch the best place to store your observability signals. Felix is also a passionate home barista and loves practicing latte art.\\n\\n","code":"var Component=(()=>{var p=Object.create;var n=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,b=Object.prototype.hasOwnProperty;var d=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),g=(e,t)=>{for(var i in t)n(e,i,{get:t[i],enumerable:!0})},s=(e,t,i,r)=>{if(t&&typeof t==\\"object\\"||typeof t==\\"function\\")for(let a of f(t))!b.call(e,a)&&a!==i&&n(e,a,{get:()=>t[a],enumerable:!(r=u(t,a))||r.enumerable});return e};var y=(e,t,i)=>(i=e!=null?p(x(e)):{},s(t||!e||!e.__esModule?n(i,\\"default\\",{value:e,enumerable:!0}):i,e)),v=e=>s(n({},\\"__esModule\\",{value:!0}),e);var c=d((_,l)=>{l.exports=_jsx_runtime});var j={};g(j,{default:()=>m,frontmatter:()=>w});var o=y(c()),w={title:\\"Felix Barnsteiner\\",slug:\\"felix-barnsteiner\\",description:\\"Tech Lead\\",image:\\"felix-barnsteiner.jpg\\"};function h(e){let t={p:\\"p\\",...e.components};return(0,o.jsx)(t.p,{children:\\"Felix joined Elastic in 2018 where he built the Elastic APM Java agent from the ground up. Two years in, he took the role of the tech lead for the APM Agents team. Another two years later, he became tech lead of application observability. Since Oct 2023, Felix is a floating tech lead in observability, focusing on strategical initiatives, such as working with other teams to make Elasticsearch the best place to store your observability signals. Felix is also a passionate home barista and loves practicing latte art.\\"})}function m(e={}){let{wrapper:t}=e.components||{};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}return v(j);})();\\n;return Component;"},"_id":"authors/felix-barnsteiner.mdx","_raw":{"sourceFilePath":"authors/felix-barnsteiner.mdx","sourceFileName":"felix-barnsteiner.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/felix-barnsteiner"},"type":"Author","imageUrl":"/assets/images/authors/felix-barnsteiner.jpg","url":"/authors/felix-barnsteiner"},{"title":"Francesco Gualazzi","slug":"francesco-gualazzi","description":"","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var f=Object.create;var o=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var p=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),z=(t,e)=>{for(var n in e)o(t,n,{get:e[n],enumerable:!0})},i=(t,e,n,c)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let a of g(e))!d.call(t,a)&&a!==n&&o(t,a,{get:()=>e[a],enumerable:!(c=l(e,a))||c.enumerable});return t};var j=(t,e,n)=>(n=t!=null?f(_(t)):{},i(e||!t||!t.__esModule?o(n,\\"default\\",{value:t,enumerable:!0}):n,t)),F=t=>i(o({},\\"__esModule\\",{value:!0}),t);var u=p((X,s)=>{s.exports=_jsx_runtime});var C={};z(C,{default:()=>x,frontmatter:()=>M});var r=j(u()),M={title:\\"Francesco Gualazzi\\",slug:\\"francesco-gualazzi\\",description:\\"\\",image:\\"\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return F(C);})();\\n;return Component;"},"_id":"authors/francesco-gualazzi.mdx","_raw":{"sourceFilePath":"authors/francesco-gualazzi.mdx","sourceFileName":"francesco-gualazzi.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/francesco-gualazzi"},"type":"Author","imageUrl":"","url":"/authors/francesco-gualazzi"},{"title":"Giorgos Bamparopoulos","slug":"giorgos-bamparopoulos","description":"","image":"","body":{"raw":"","code":"var Component=(()=>{var g=Object.create;var a=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var d=(t,o)=>()=>(o||t((o={exports:{}}).exports,o),o.exports),j=(t,o)=>{for(var r in o)a(t,r,{get:o[r],enumerable:!0})},i=(t,o,r,s)=>{if(o&&typeof o==\\"object\\"||typeof o==\\"function\\")for(let n of l(o))!_.call(t,n)&&n!==r&&a(t,n,{get:()=>o[n],enumerable:!(s=x(o,n))||s.enumerable});return t};var M=(t,o,r)=>(r=t!=null?g(f(t)):{},i(o||!t||!t.__esModule?a(r,\\"default\\",{value:t,enumerable:!0}):r,t)),C=t=>i(a({},\\"__esModule\\",{value:!0}),t);var u=d((b,m)=>{m.exports=_jsx_runtime});var F={};j(F,{default:()=>p,frontmatter:()=>D});var e=M(u()),D={title:\\"Giorgos Bamparopoulos\\",slug:\\"giorgos-bamparopoulos\\",description:\\"\\",image:\\"\\"};function c(t){return(0,e.jsx)(e.Fragment,{})}function p(t={}){let{wrapper:o}=t.components||{};return o?(0,e.jsx)(o,{...t,children:(0,e.jsx)(c,{...t})}):c(t)}return C(F);})();\\n;return Component;"},"_id":"authors/giorgos-bamparopoulos.mdx","_raw":{"sourceFilePath":"authors/giorgos-bamparopoulos.mdx","sourceFileName":"giorgos-bamparopoulos.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/giorgos-bamparopoulos"},"type":"Author","imageUrl":"","url":"/authors/giorgos-bamparopoulos"},{"title":"Giuseppe Santoro","slug":"giuseppe-santoro","description":"Senior Software Engineer","image":"giuseppe-santoro.jpg","body":{"raw":"Giuseppe, a seasoned senior software engineer with 10 years of experience, is an integral member of the Observability department, specializing in Cloud Native Monitoring. With a robust background in cloud technology, Kubernetes, Golang, and Python, Giuseppe is dedicated to ongoing growth and improvement in the field. Giuseppe\'s commitment to excellence is underscored by his Certified Kubernetes Administrator credential, demonstrating his proficiency in orchestrating containerized applications in complex environments. Before joining Elastic, Giuseppe served as a senior data engineer at Playstation, where he honed his skills and contributed to the gaming industry\'s data landscape.\\n\\n","code":"var Component=(()=>{var l=Object.create;var o=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var x=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),b=(e,n)=>{for(var t in n)o(e,t,{get:n[t],enumerable:!0})},a=(e,n,t,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let i of m(n))!f.call(e,i)&&i!==t&&o(e,i,{get:()=>n[i],enumerable:!(s=g(n,i))||s.enumerable});return e};var y=(e,n,t)=>(t=e!=null?l(h(e)):{},a(n||!e||!e.__esModule?o(t,\\"default\\",{value:e,enumerable:!0}):t,e)),w=e=>a(o({},\\"__esModule\\",{value:!0}),e);var d=x((_,c)=>{c.exports=_jsx_runtime});var j={};b(j,{default:()=>u,frontmatter:()=>G});var r=y(d()),G={title:\\"Giuseppe Santoro\\",slug:\\"giuseppe-santoro\\",description:\\"Senior Software Engineer\\",image:\\"giuseppe-santoro.jpg\\"};function p(e){let n={p:\\"p\\",...e.components};return(0,r.jsx)(n.p,{children:\\"Giuseppe, a seasoned senior software engineer with 10 years of experience, is an integral member of the Observability department, specializing in Cloud Native Monitoring. With a robust background in cloud technology, Kubernetes, Golang, and Python, Giuseppe is dedicated to ongoing growth and improvement in the field. Giuseppe\'s commitment to excellence is underscored by his Certified Kubernetes Administrator credential, demonstrating his proficiency in orchestrating containerized applications in complex environments. Before joining Elastic, Giuseppe served as a senior data engineer at Playstation, where he honed his skills and contributed to the gaming industry\'s data landscape.\\"})}function u(e={}){let{wrapper:n}=e.components||{};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}return w(j);})();\\n;return Component;"},"_id":"authors/giuseppe-santoro.mdx","_raw":{"sourceFilePath":"authors/giuseppe-santoro.mdx","sourceFileName":"giuseppe-santoro.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/giuseppe-santoro"},"type":"Author","imageUrl":"/assets/images/authors/giuseppe-santoro.jpg","url":"/authors/giuseppe-santoro"},{"title":"Greg Kalapos","slug":"greg-kalapos","description":"","image":"greg-kalapos.jpg","body":{"raw":"\\n","code":"var Component=(()=>{var u=Object.create;var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var d=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),j=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},g=(t,e,n,s)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of x(e))!_.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(s=l(e,o))||s.enumerable});return t};var M=(t,e,n)=>(n=t!=null?u(f(t)):{},g(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),k=t=>g(a({},\\"__esModule\\",{value:!0}),t);var c=d((X,i)=>{i.exports=_jsx_runtime});var D={};j(D,{default:()=>p,frontmatter:()=>C});var r=M(c()),C={title:\\"Greg Kalapos\\",slug:\\"greg-kalapos\\",description:\\"\\",image:\\"greg-kalapos.jpg\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function p(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return k(D);})();\\n;return Component;"},"_id":"authors/greg-kalapos.mdx","_raw":{"sourceFilePath":"authors/greg-kalapos.mdx","sourceFileName":"greg-kalapos.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/greg-kalapos"},"type":"Author","imageUrl":"/assets/images/authors/greg-kalapos.jpg","url":"/authors/greg-kalapos"},{"title":"Hemant Malik","slug":"hemant-malik","description":"Senior Principal Solutions Architect at Elastic","image":"hemant-malik.jpg","body":{"raw":"Hemant Malik is a principal solutions architect for Elastic, based out of Greater Seattle Area. Hemant is an Azure Certified Solutions Architect and has been working with users of Elastic since 2017. Before Elastic, Hemant worked at Oracle, where he focused on helping users integrate applications, services, data, and humans into their business processes.\\n\\n","code":"var Component=(()=>{var p=Object.create;var a=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,x=Object.prototype.hasOwnProperty;var g=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),k=(e,t)=>{for(var n in t)a(e,n,{get:t[n],enumerable:!0})},o=(e,t,n,s)=>{if(t&&typeof t==\\"object\\"||typeof t==\\"function\\")for(let i of d(t))!x.call(e,i)&&i!==n&&a(e,i,{get:()=>t[i],enumerable:!(s=h(t,i))||s.enumerable});return e};var w=(e,t,n)=>(n=e!=null?p(f(e)):{},o(t||!e||!e.__esModule?a(n,\\"default\\",{value:e,enumerable:!0}):n,e)),M=e=>o(a({},\\"__esModule\\",{value:!0}),e);var l=g((E,c)=>{c.exports=_jsx_runtime});var j={};k(j,{default:()=>m,frontmatter:()=>_});var r=w(l()),_={title:\\"Hemant Malik\\",slug:\\"hemant-malik\\",description:\\"Senior Principal Solutions Architect at Elastic\\",image:\\"hemant-malik.jpg\\"};function u(e){let t={p:\\"p\\",...e.components};return(0,r.jsx)(t.p,{children:\\"Hemant Malik is a principal solutions architect for Elastic, based out of Greater Seattle Area. Hemant is an Azure Certified Solutions Architect and has been working with users of Elastic since 2017. Before Elastic, Hemant worked at Oracle, where he focused on helping users integrate applications, services, data, and humans into their business processes.\\"})}function m(e={}){let{wrapper:t}=e.components||{};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}return M(j);})();\\n;return Component;"},"_id":"authors/hemant-malik.mdx","_raw":{"sourceFilePath":"authors/hemant-malik.mdx","sourceFileName":"hemant-malik.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/hemant-malik"},"type":"Author","imageUrl":"/assets/images/authors/hemant-malik.jpg","url":"/authors/hemant-malik"},{"title":"Ishleen Kaur","slug":"ishleen-kaur","description":"Principal Software Engineer","image":"ishleen-kaur.jpg","body":{"raw":"\\nIshleen is a Principal engineer on the Observability team. Her journey in the observability domain began as a natural progression of her interest in technology, data, and the interconnectedness of complex systems. In her free time, she enjoys traveling and inventing new games with her kid.\\n","code":"var Component=(()=>{var u=Object.create;var i=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var x=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),y=(e,n)=>{for(var t in n)i(e,t,{get:n[t],enumerable:!0})},s=(e,n,t,a)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let r of d(n))!f.call(e,r)&&r!==t&&i(e,r,{get:()=>n[r],enumerable:!(a=p(n,r))||a.enumerable});return e};var j=(e,n,t)=>(t=e!=null?u(g(e)):{},s(n||!e||!e.__esModule?i(t,\\"default\\",{value:e,enumerable:!0}):t,e)),b=e=>s(i({},\\"__esModule\\",{value:!0}),e);var l=x((k,c)=>{c.exports=_jsx_runtime});var v={};y(v,{default:()=>m,frontmatter:()=>_});var o=j(l()),_={title:\\"Ishleen Kaur\\",slug:\\"ishleen-kaur\\",description:\\"Principal Software Engineer\\",image:\\"ishleen-kaur.jpg\\"};function h(e){let n={p:\\"p\\",...e.components};return(0,o.jsx)(n.p,{children:\\"Ishleen is a Principal engineer on the Observability team. Her journey in the observability domain began as a natural progression of her interest in technology, data, and the interconnectedness of complex systems. In her free time, she enjoys traveling and inventing new games with her kid.\\"})}function m(e={}){let{wrapper:n}=e.components||{};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}return b(v);})();\\n;return Component;"},"_id":"authors/ishleen-kaur.mdx","_raw":{"sourceFilePath":"authors/ishleen-kaur.mdx","sourceFileName":"ishleen-kaur.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/ishleen-kaur"},"type":"Author","imageUrl":"/assets/images/authors/ishleen-kaur.jpg","url":"/authors/ishleen-kaur"},{"title":"Israel Ogbole","slug":"israel-ogbole","description":"","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var x=Object.create;var a=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var p=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),j=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},i=(t,e,n,s)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of f(e))!d.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(s=g(e,o))||s.enumerable});return t};var M=(t,e,n)=>(n=t!=null?x(_(t)):{},i(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),b=t=>i(a({},\\"__esModule\\",{value:!0}),t);var l=p((X,c)=>{c.exports=_jsx_runtime});var D={};j(D,{default:()=>u,frontmatter:()=>C});var r=M(l()),C={title:\\"Israel Ogbole\\",slug:\\"israel-ogbole\\",description:\\"\\",image:\\"\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function u(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return b(D);})();\\n;return Component;"},"_id":"authors/israel-ogbole.mdx","_raw":{"sourceFilePath":"authors/israel-ogbole.mdx","sourceFileName":"israel-ogbole.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/israel-ogbole"},"type":"Author","imageUrl":"","url":"/authors/israel-ogbole"},{"title":"Jack Shirazi","slug":"jack-shirazi","description":"Principal Software Engineer","image":"jack-shirazi.jpg","body":{"raw":"Jack Shirazi works in the APM Java agent team at Elastic. He is the founder of JavaPerformanceTuning.com and author of Java Performance Tuning (O’Reilly) and has been an official Java Champion since 2005. Jack has worked at all levels and all stages of IT projects in several industries, including with real-time, low latency, and highly scaled applications. As well as authoring his popular book and contributing to several other books, Jack has published over 70 articles on Java performance for various sites and magazines. He has also published over 200 newsletters for JavaPerformanceTuning.com over 20 years in addition to publishing over 10,000 Java performance and memory related tips.\\n\\n","code":"var Component=(()=>{var u=Object.create;var i=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var v=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports),J=(a,e)=>{for(var n in e)i(a,n,{get:e[n],enumerable:!0})},s=(a,e,n,t)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of p(e))!g.call(a,o)&&o!==n&&i(a,o,{get:()=>e[o],enumerable:!(t=m(e,o))||t.enumerable});return a};var k=(a,e,n)=>(n=a!=null?u(f(a)):{},s(e||!a||!a.__esModule?i(n,\\"default\\",{value:a,enumerable:!0}):n,a)),w=a=>s(i({},\\"__esModule\\",{value:!0}),a);var l=v((y,c)=>{c.exports=_jsx_runtime});var j={};J(j,{default:()=>d,frontmatter:()=>b});var r=k(l()),b={title:\\"Jack Shirazi\\",slug:\\"jack-shirazi\\",description:\\"Principal Software Engineer\\",image:\\"jack-shirazi.jpg\\"};function h(a){let e={p:\\"p\\",...a.components};return(0,r.jsx)(e.p,{children:\\"Jack Shirazi works in the APM Java agent team at Elastic. He is the founder of JavaPerformanceTuning.com and author of Java Performance Tuning (O\\\\u2019Reilly) and has been an official Java Champion since 2005. Jack has worked at all levels and all stages of IT projects in several industries, including with real-time, low latency, and highly scaled applications. As well as authoring his popular book and contributing to several other books, Jack has published over 70 articles on Java performance for various sites and magazines. He has also published over 200 newsletters for JavaPerformanceTuning.com over 20 years in addition to publishing over 10,000 Java performance and memory related tips.\\"})}function d(a={}){let{wrapper:e}=a.components||{};return e?(0,r.jsx)(e,{...a,children:(0,r.jsx)(h,{...a})}):h(a)}return w(j);})();\\n;return Component;"},"_id":"authors/jack-shirazi.mdx","_raw":{"sourceFilePath":"authors/jack-shirazi.mdx","sourceFileName":"jack-shirazi.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/jack-shirazi"},"type":"Author","imageUrl":"/assets/images/authors/jack-shirazi.jpg","url":"/authors/jack-shirazi"},{"title":"Jeff Vestal","slug":"jeff-vestal","description":"Principal Customer Enterprise Architect at Elastic","image":"jeff-vestal.jpg","body":{"raw":"With a rich background spanning over a decade in financial trading firms and extensive experience with Elasticsearch, he offers a unique blend of operational acumen, engineering skill, and machine learning expertise. As a Principal Customer Enterprise Architect, he excels in crafting innovative solutions, leveraging Elasticsearch\'s advanced search capabilities, machine learning features, and generative AI integrations, adeptly guiding users to transform complex data challenges into actionable insights.\\n","code":"var Component=(()=>{var p=Object.create;var a=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty;var x=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),v=(e,n)=>{for(var t in n)a(e,t,{get:n[t],enumerable:!0})},c=(e,n,t,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let i of u(n))!m.call(e,i)&&i!==t&&a(e,i,{get:()=>n[i],enumerable:!(s=d(n,i))||s.enumerable});return e};var j=(e,n,t)=>(t=e!=null?p(h(e)):{},c(n||!e||!e.__esModule?a(t,\\"default\\",{value:e,enumerable:!0}):t,e)),E=e=>c(a({},\\"__esModule\\",{value:!0}),e);var l=x((C,o)=>{o.exports=_jsx_runtime});var b={};v(b,{default:()=>g,frontmatter:()=>_});var r=j(l()),_={title:\\"Jeff Vestal\\",slug:\\"jeff-vestal\\",description:\\"Principal Customer Enterprise Architect at Elastic\\",image:\\"jeff-vestal.jpg\\"};function f(e){let n={p:\\"p\\",...e.components};return(0,r.jsx)(n.p,{children:\\"With a rich background spanning over a decade in financial trading firms and extensive experience with Elasticsearch, he offers a unique blend of operational acumen, engineering skill, and machine learning expertise. As a Principal Customer Enterprise Architect, he excels in crafting innovative solutions, leveraging Elasticsearch\'s advanced search capabilities, machine learning features, and generative AI integrations, adeptly guiding users to transform complex data challenges into actionable insights.\\"})}function g(e={}){let{wrapper:n}=e.components||{};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(f,{...e})}):f(e)}return E(b);})();\\n;return Component;"},"_id":"authors/jeff-vestal.mdx","_raw":{"sourceFilePath":"authors/jeff-vestal.mdx","sourceFileName":"jeff-vestal.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/jeff-vestal"},"type":"Author","imageUrl":"/assets/images/authors/jeff-vestal.jpg","url":"/authors/jeff-vestal"},{"title":"Jenny Morris","slug":"jenny-morris","description":"Principal Solutions Architect","image":"jenny-morris.jpeg","body":{"raw":"As a software technologist with over 20 years of experience, Jenny is dedicated to developing effective go-to-market strategies that enable customers to leverage technology for their business goals. She loves working closely with customers, understanding their needs, and crafting solutions to help them succeed. With a strong background in application development, Jenny still finds coding to be a source of genuine creative satisfaction.\\n\\n","code":"var Component=(()=>{var g=Object.create;var i=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var y=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),x=(e,t)=>{for(var n in t)i(e,n,{get:t[n],enumerable:!0})},c=(e,t,n,s)=>{if(t&&typeof t==\\"object\\"||typeof t==\\"function\\")for(let o of p(t))!h.call(e,o)&&o!==n&&i(e,o,{get:()=>t[o],enumerable:!(s=m(t,o))||s.enumerable});return e};var v=(e,t,n)=>(n=e!=null?g(f(e)):{},c(t||!e||!e.__esModule?i(n,\\"default\\",{value:e,enumerable:!0}):n,e)),j=e=>c(i({},\\"__esModule\\",{value:!0}),e);var l=y((M,a)=>{a.exports=_jsx_runtime});var _={};x(_,{default:()=>u,frontmatter:()=>w});var r=v(l()),w={title:\\"Jenny Morris\\",slug:\\"jenny-morris\\",description:\\"Principal Solutions Architect\\",image:\\"jenny-morris.jpeg\\"};function d(e){let t={p:\\"p\\",...e.components};return(0,r.jsx)(t.p,{children:\\"As a software technologist with over 20 years of experience, Jenny is dedicated to developing effective go-to-market strategies that enable customers to leverage technology for their business goals. She loves working closely with customers, understanding their needs, and crafting solutions to help them succeed. With a strong background in application development, Jenny still finds coding to be a source of genuine creative satisfaction.\\"})}function u(e={}){let{wrapper:t}=e.components||{};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}return j(_);})();\\n;return Component;"},"_id":"authors/jenny-morris.mdx","_raw":{"sourceFilePath":"authors/jenny-morris.mdx","sourceFileName":"jenny-morris.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/jenny-morris"},"type":"Author","imageUrl":"/assets/images/authors/jenny-morris.jpeg","url":"/authors/jenny-morris"},{"title":"Joel H\xf6ner","slug":"joel-honer","description":"Senior software engineer","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var j=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),p=(e,t)=>{for(var n in t)a(e,n,{get:t[n],enumerable:!0})},s=(e,t,n,i)=>{if(t&&typeof t==\\"object\\"||typeof t==\\"function\\")for(let o of g(t))!d.call(e,o)&&o!==n&&a(e,o,{get:()=>t[o],enumerable:!(i=l(t,o))||i.enumerable});return e};var M=(e,t,n)=>(n=e!=null?f(_(e)):{},s(t||!e||!e.__esModule?a(n,\\"default\\",{value:e,enumerable:!0}):n,e)),h=e=>s(a({},\\"__esModule\\",{value:!0}),e);var m=j((F,c)=>{c.exports=_jsx_runtime});var C={};p(C,{default:()=>x,frontmatter:()=>w});var r=M(m()),w={title:\\"Joel H\\\\xF6ner\\",slug:\\"joel-honer\\",description:\\"Senior software engineer\\",image:\\"\\"};function u(e){return(0,r.jsx)(r.Fragment,{})}function x(e={}){let{wrapper:t}=e.components||{};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}return h(C);})();\\n;return Component;"},"_id":"authors/joel-honer.mdx","_raw":{"sourceFilePath":"authors/joel-honer.mdx","sourceFileName":"joel-honer.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/joel-honer"},"type":"Author","imageUrl":"","url":"/authors/joel-honer"},{"title":"John Knoepfle","slug":"john-knoepfle","description":"Principal Solutions Architect at Elastic","image":"john-knoepfle.jpg","body":{"raw":"\\n","code":"var Component=(()=>{var f=Object.create;var i=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var h=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),_=(t,n)=>{for(var e in n)i(t,e,{get:n[e],enumerable:!0})},c=(t,n,e,a)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let r of x(n))!g.call(t,r)&&r!==e&&i(t,r,{get:()=>n[r],enumerable:!(a=m(n,r))||a.enumerable});return t};var d=(t,n,e)=>(e=t!=null?f(j(t)):{},c(n||!t||!t.__esModule?i(e,\\"default\\",{value:t,enumerable:!0}):e,t)),M=t=>c(i({},\\"__esModule\\",{value:!0}),t);var l=h((F,s)=>{s.exports=_jsx_runtime});var C={};_(C,{default:()=>u,frontmatter:()=>k});var o=d(l()),k={title:\\"John Knoepfle\\",slug:\\"john-knoepfle\\",description:\\"Principal Solutions Architect at Elastic\\",image:\\"john-knoepfle.jpg\\"};function p(t){return(0,o.jsx)(o.Fragment,{})}function u(t={}){let{wrapper:n}=t.components||{};return n?(0,o.jsx)(n,{...t,children:(0,o.jsx)(p,{...t})}):p(t)}return M(C);})();\\n;return Component;"},"_id":"authors/john-knoepfle.mdx","_raw":{"sourceFilePath":"authors/john-knoepfle.mdx","sourceFileName":"john-knoepfle.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/john-knoepfle"},"type":"Author","imageUrl":"/assets/images/authors/john-knoepfle.jpg","url":"/authors/john-knoepfle"},{"title":"Jonas Kunz","slug":"jonas-kunz","description":"Principal Engineer, APM Agents","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var g=Object.create;var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var d=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),j=(n,t)=>{for(var e in t)a(n,e,{get:t[e],enumerable:!0})},s=(n,t,e,i)=>{if(t&&typeof t==\\"object\\"||typeof t==\\"function\\")for(let o of l(t))!_.call(n,o)&&o!==e&&a(n,o,{get:()=>t[o],enumerable:!(i=f(t,o))||i.enumerable});return n};var M=(n,t,e)=>(e=n!=null?g(p(n)):{},s(t||!n||!n.__esModule?a(e,\\"default\\",{value:n,enumerable:!0}):e,n)),z=n=>s(a({},\\"__esModule\\",{value:!0}),n);var c=d((F,u)=>{u.exports=_jsx_runtime});var C={};j(C,{default:()=>x,frontmatter:()=>A});var r=M(c()),A={title:\\"Jonas Kunz\\",slug:\\"jonas-kunz\\",description:\\"Principal Engineer, APM Agents\\",image:\\"\\"};function m(n){return(0,r.jsx)(r.Fragment,{})}function x(n={}){let{wrapper:t}=n.components||{};return t?(0,r.jsx)(t,{...n,children:(0,r.jsx)(m,{...n})}):m(n)}return z(C);})();\\n;return Component;"},"_id":"authors/jonas-kunz.mdx","_raw":{"sourceFilePath":"authors/jonas-kunz.mdx","sourceFileName":"jonas-kunz.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/jonas-kunz"},"type":"Author","imageUrl":"","url":"/authors/jonas-kunz"},{"title":"Jonathan Simon","slug":"jonathan-simon","description":"Sr. Product Marketing Engineer","image":"jonathan-simon.jpg","body":{"raw":"\\n","code":"var Component=(()=>{var x=Object.create;var a=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty;var _=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),h=(n,t)=>{for(var e in t)a(n,e,{get:t[e],enumerable:!0})},m=(n,t,e,i)=>{if(t&&typeof t==\\"object\\"||typeof t==\\"function\\")for(let r of d(t))!p.call(n,r)&&r!==e&&a(n,r,{get:()=>t[r],enumerable:!(i=j(t,r))||i.enumerable});return n};var l=(n,t,e)=>(e=n!=null?x(f(n)):{},m(t||!n||!n.__esModule?a(e,\\"default\\",{value:n,enumerable:!0}):e,n)),M=n=>m(a({},\\"__esModule\\",{value:!0}),n);var c=_((S,s)=>{s.exports=_jsx_runtime});var D={};h(D,{default:()=>g,frontmatter:()=>C});var o=l(c()),C={title:\\"Jonathan Simon\\",slug:\\"jonathan-simon\\",description:\\"Sr. Product Marketing Engineer\\",image:\\"jonathan-simon.jpg\\"};function u(n){return(0,o.jsx)(o.Fragment,{})}function g(n={}){let{wrapper:t}=n.components||{};return t?(0,o.jsx)(t,{...n,children:(0,o.jsx)(u,{...n})}):u(n)}return M(D);})();\\n;return Component;"},"_id":"authors/jonathan-simon.mdx","_raw":{"sourceFilePath":"authors/jonathan-simon.mdx","sourceFileName":"jonathan-simon.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/jonathan-simon"},"type":"Author","imageUrl":"/assets/images/authors/jonathan-simon.jpg","url":"/authors/jonathan-simon"},{"title":"Kaiyan White","slug":"kaiyan-white","description":"","image":"","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var o=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty;var p=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),h=(t,e)=>{for(var n in e)o(t,n,{get:e[n],enumerable:!0})},s=(t,e,n,i)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let a of d(e))!l.call(t,a)&&a!==n&&o(t,a,{get:()=>e[a],enumerable:!(i=_(e,a))||i.enumerable});return t};var j=(t,e,n)=>(n=t!=null?f(g(t)):{},s(e||!t||!t.__esModule?o(n,\\"default\\",{value:t,enumerable:!0}):n,t)),y=t=>s(o({},\\"__esModule\\",{value:!0}),t);var m=p((D,c)=>{c.exports=_jsx_runtime});var w={};h(w,{default:()=>x,frontmatter:()=>M});var r=j(m()),M={title:\\"Kaiyan White\\",slug:\\"kaiyan-white\\",description:\\"\\",image:\\"\\"};function u(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}return y(w);})();\\n;return Component;"},"_id":"authors/kaiyan-white.mdx","_raw":{"sourceFilePath":"authors/kaiyan-white.mdx","sourceFileName":"kaiyan-white.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/kaiyan-white"},"type":"Author","imageUrl":"","url":"/authors/kaiyan-white"},{"title":"Karthik Kalyanaraman","slug":"karthik-kalyanaraman","description":"Co-founder and CTO of Langtrace AI","body":{"raw":"\\n","code":"var Component=(()=>{var x=Object.create;var o=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var k=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var a in n)o(t,a,{get:n[a],enumerable:!0})},c=(t,n,a,i)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let e of l(n))!g.call(t,e)&&e!==a&&o(t,e,{get:()=>n[e],enumerable:!(i=d(n,e))||i.enumerable});return t};var C=(t,n,a)=>(a=t!=null?x(_(t)):{},c(n||!t||!t.__esModule?o(a,\\"default\\",{value:t,enumerable:!0}):a,t)),h=t=>c(o({},\\"__esModule\\",{value:!0}),t);var s=k((D,m)=>{m.exports=_jsx_runtime});var y={};p(y,{default:()=>f,frontmatter:()=>j});var r=C(s()),j={title:\\"Karthik Kalyanaraman\\",slug:\\"karthik-kalyanaraman\\",description:\\"Co-founder and CTO of Langtrace AI\\"};function u(t){return(0,r.jsx)(r.Fragment,{})}function f(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}return h(y);})();\\n;return Component;"},"_id":"authors/karthik-kalyanaraman.mdx","_raw":{"sourceFilePath":"authors/karthik-kalyanaraman.mdx","sourceFileName":"karthik-kalyanaraman.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/karthik-kalyanaraman"},"type":"Author","imageUrl":"","url":"/authors/karthik-kalyanaraman"},{"title":"Katrin Freihofner","slug":"katrin-freihofner","description":"Product Manager","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var x=Object.create;var a=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty;var p=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),M=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},c=(t,e,n,i)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of g(e))!l.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(i=d(e,o))||i.enumerable});return t};var h=(t,e,n)=>(n=t!=null?x(_(t)):{},c(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),j=t=>c(a({},\\"__esModule\\",{value:!0}),t);var u=p((X,s)=>{s.exports=_jsx_runtime});var C={};M(C,{default:()=>m,frontmatter:()=>F});var r=h(u()),F={title:\\"Katrin Freihofner\\",slug:\\"katrin-freihofner\\",description:\\"Product Manager\\",image:\\"\\"};function f(t){return(0,r.jsx)(r.Fragment,{})}function m(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(f,{...t})}):f(t)}return j(C);})();\\n;return Component;"},"_id":"authors/katrin-freihofner.mdx","_raw":{"sourceFilePath":"authors/katrin-freihofner.mdx","sourceFileName":"katrin-freihofner.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/katrin-freihofner"},"type":"Author","imageUrl":"","url":"/authors/katrin-freihofner"},{"title":"Lalit Satapathy","slug":"lalit-satapathy","description":"Senior Manager Software Engineering","image":"lalit-satapathy.jpeg","body":{"raw":"Lalit is a team lead in Elastic Observability. He is excited to dive deep into evolving domains of observability and learn new technologies. He has recently worked on Elastic\'s journey on time series data base (TSDB) for metrics and OpenTelemetry adoption.\\n\\n","code":"var Component=(()=>{var m=Object.create;var i=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var x=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),h=(e,t)=>{for(var n in t)i(e,n,{get:t[n],enumerable:!0})},s=(e,t,n,r)=>{if(t&&typeof t==\\"object\\"||typeof t==\\"function\\")for(let a of y(t))!g.call(e,a)&&a!==n&&i(e,a,{get:()=>t[a],enumerable:!(r=u(t,a))||r.enumerable});return e};var b=(e,t,n)=>(n=e!=null?m(f(e)):{},s(t||!e||!e.__esModule?i(n,\\"default\\",{value:e,enumerable:!0}):n,e)),j=e=>s(i({},\\"__esModule\\",{value:!0}),e);var c=x((M,l)=>{l.exports=_jsx_runtime});var _={};h(_,{default:()=>p,frontmatter:()=>v});var o=b(c()),v={title:\\"Lalit Satapathy\\",slug:\\"lalit-satapathy\\",description:\\"Senior Manager Software Engineering\\",image:\\"lalit-satapathy.jpeg\\"};function d(e){let t={p:\\"p\\",...e.components};return(0,o.jsx)(t.p,{children:\\"Lalit is a team lead in Elastic Observability. He is excited to dive deep into evolving domains of observability and learn new technologies. He has recently worked on Elastic\'s journey on time series data base (TSDB) for metrics and OpenTelemetry adoption.\\"})}function p(e={}){let{wrapper:t}=e.components||{};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}return j(_);})();\\n;return Component;"},"_id":"authors/lalit-satapathy.mdx","_raw":{"sourceFilePath":"authors/lalit-satapathy.mdx","sourceFileName":"lalit-satapathy.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/lalit-satapathy"},"type":"Author","imageUrl":"/assets/images/authors/lalit-satapathy.jpeg","url":"/authors/lalit-satapathy"},{"title":"Luca Wintergerst","slug":"luca-wintergerst","description":"Product Marketing Director at Elastic","image":"luca-wintergerst.jpg","body":{"raw":"\\n","code":"var Component=(()=>{var l=Object.create;var o=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty;var _=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),j=(t,e)=>{for(var r in e)o(t,r,{get:e[r],enumerable:!0})},c=(t,e,r,i)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let a of d(e))!p.call(t,a)&&a!==r&&o(t,a,{get:()=>e[a],enumerable:!(i=x(e,a))||i.enumerable});return t};var M=(t,e,r)=>(r=t!=null?l(f(t)):{},c(e||!t||!t.__esModule?o(r,\\"default\\",{value:t,enumerable:!0}):r,t)),w=t=>c(o({},\\"__esModule\\",{value:!0}),t);var u=_((L,s)=>{s.exports=_jsx_runtime});var C={};j(C,{default:()=>m,frontmatter:()=>D});var n=M(u()),D={title:\\"Luca Wintergerst\\",slug:\\"luca-wintergerst\\",description:\\"Product Marketing Director at Elastic\\",image:\\"luca-wintergerst.jpg\\"};function g(t){return(0,n.jsx)(n.Fragment,{})}function m(t={}){let{wrapper:e}=t.components||{};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(g,{...t})}):g(t)}return w(C);})();\\n;return Component;"},"_id":"authors/luca-wintergerst.mdx","_raw":{"sourceFilePath":"authors/luca-wintergerst.mdx","sourceFileName":"luca-wintergerst.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/luca-wintergerst"},"type":"Author","imageUrl":"/assets/images/authors/luca-wintergerst.jpg","url":"/authors/luca-wintergerst"},{"title":"Martijn Laarman","slug":"martijn-laarman","description":"Principal Software Engineer at Elastic","image":"martijn-laarman.jpg","body":{"raw":"A .NET developer for nearly a decade and tinkering with the web since his teens, Martijn loves keyboard-driven creativity.\\n\\n","code":"var Component=(()=>{var p=Object.create;var a=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,x=Object.prototype.hasOwnProperty;var g=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),h=(n,t)=>{for(var e in t)a(n,e,{get:t[e],enumerable:!0})},c=(n,t,e,o)=>{if(t&&typeof t==\\"object\\"||typeof t==\\"function\\")for(let r of u(t))!x.call(n,r)&&r!==e&&a(n,r,{get:()=>t[r],enumerable:!(o=j(t,r))||o.enumerable});return n};var M=(n,t,e)=>(e=n!=null?p(f(n)):{},c(t||!n||!n.__esModule?a(e,\\"default\\",{value:n,enumerable:!0}):e,n)),_=n=>c(a({},\\"__esModule\\",{value:!0}),n);var m=g((E,s)=>{s.exports=_jsx_runtime});var w={};h(w,{default:()=>d,frontmatter:()=>v});var i=M(m()),v={title:\\"Martijn Laarman\\",slug:\\"martijn-laarman\\",description:\\"Principal Software Engineer at Elastic\\",image:\\"martijn-laarman.jpg\\"};function l(n){let t={p:\\"p\\",...n.components};return(0,i.jsx)(t.p,{children:\\"A .NET developer for nearly a decade and tinkering with the web since his teens, Martijn loves keyboard-driven creativity.\\"})}function d(n={}){let{wrapper:t}=n.components||{};return t?(0,i.jsx)(t,{...n,children:(0,i.jsx)(l,{...n})}):l(n)}return _(w);})();\\n;return Component;"},"_id":"authors/martijn-laarman.mdx","_raw":{"sourceFilePath":"authors/martijn-laarman.mdx","sourceFileName":"martijn-laarman.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/martijn-laarman"},"type":"Author","imageUrl":"/assets/images/authors/martijn-laarman.jpg","url":"/authors/martijn-laarman"},{"title":"Maurizio Branca","slug":"maurizio-branca","description":"Senior Software Engineer","image":"maurizio-branca.jpg","body":{"raw":"\\nMaurizio Branca is a software engineer on the Observability team. He is working on cloud observability, focusing mostly on Azure and AWS. Maurizio is passionate about open source and loves automating all the things.\\n","code":"var Component=(()=>{var p=Object.create;var i=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,b=Object.prototype.hasOwnProperty;var x=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),z=(n,t)=>{for(var e in t)i(n,e,{get:t[e],enumerable:!0})},s=(n,t,e,r)=>{if(t&&typeof t==\\"object\\"||typeof t==\\"function\\")for(let o of d(t))!b.call(n,o)&&o!==e&&i(n,o,{get:()=>t[o],enumerable:!(r=g(t,o))||r.enumerable});return n};var M=(n,t,e)=>(e=n!=null?p(f(n)):{},s(t||!n||!n.__esModule?i(e,\\"default\\",{value:n,enumerable:!0}):e,n)),h=n=>s(i({},\\"__esModule\\",{value:!0}),n);var u=x((y,c)=>{c.exports=_jsx_runtime});var j={};z(j,{default:()=>l,frontmatter:()=>_});var a=M(u()),_={title:\\"Maurizio Branca\\",slug:\\"maurizio-branca\\",description:\\"Senior Software Engineer\\",image:\\"maurizio-branca.jpg\\"};function m(n){let t={p:\\"p\\",...n.components};return(0,a.jsx)(t.p,{children:\\"Maurizio Branca is a software engineer on the Observability team. He is working on cloud observability, focusing mostly on Azure and AWS. Maurizio is passionate about open source and loves automating all the things.\\"})}function l(n={}){let{wrapper:t}=n.components||{};return t?(0,a.jsx)(t,{...n,children:(0,a.jsx)(m,{...n})}):m(n)}return h(j);})();\\n;return Component;"},"_id":"authors/maurizio-branca.mdx","_raw":{"sourceFilePath":"authors/maurizio-branca.mdx","sourceFileName":"maurizio-branca.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/maurizio-branca"},"type":"Author","imageUrl":"/assets/images/authors/maurizio-branca.jpg","url":"/authors/maurizio-branca"},{"title":"Michael Hyatt","slug":"michael-hyatt","description":"Principal Solutions Architect at Elastic","image":"michael-hyatt.jpg","body":{"raw":"Michael is a solutions architect with background in Analytics, APIs and messaging. He is passionate about technology and travelling with my family.\\n\\n","code":"var Component=(()=>{var u=Object.create;var a=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty;var x=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),f=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},s=(t,n,e,c)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let i of d(n))!y.call(t,i)&&i!==e&&a(t,i,{get:()=>n[i],enumerable:!(c=p(n,i))||c.enumerable});return t};var M=(t,n,e)=>(e=t!=null?u(g(t)):{},s(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),_=t=>s(a({},\\"__esModule\\",{value:!0}),t);var l=x((b,r)=>{r.exports=_jsx_runtime});var w={};f(w,{default:()=>m,frontmatter:()=>j});var o=M(l()),j={title:\\"Michael Hyatt\\",slug:\\"michael-hyatt\\",description:\\"Principal Solutions Architect at Elastic\\",image:\\"michael-hyatt.jpg\\"};function h(t){let n={p:\\"p\\",...t.components};return(0,o.jsx)(n.p,{children:\\"Michael is a solutions architect with background in Analytics, APIs and messaging. He is passionate about technology and travelling with my family.\\"})}function m(t={}){let{wrapper:n}=t.components||{};return n?(0,o.jsx)(n,{...t,children:(0,o.jsx)(h,{...t})}):h(t)}return _(w);})();\\n;return Component;"},"_id":"authors/michael-hyatt.mdx","_raw":{"sourceFilePath":"authors/michael-hyatt.mdx","sourceFileName":"michael-hyatt.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/michael-hyatt"},"type":"Author","imageUrl":"/assets/images/authors/michael-hyatt.jpg","url":"/authors/michael-hyatt"},{"title":"Miguel Luna","slug":"miguel-luna","description":"Principal Product Manager Observability","image":null,"body":{"raw":"\\n","code":"var Component=(()=>{var g=Object.create;var i=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty;var M=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),_=(t,n)=>{for(var e in n)i(t,e,{get:n[e],enumerable:!0})},u=(t,n,e,o)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let a of d(n))!p.call(t,a)&&a!==e&&i(t,a,{get:()=>n[a],enumerable:!(o=x(n,a))||o.enumerable});return t};var j=(t,n,e)=>(e=t!=null?g(f(t)):{},u(n||!t||!t.__esModule?i(e,\\"default\\",{value:t,enumerable:!0}):e,t)),b=t=>u(i({},\\"__esModule\\",{value:!0}),t);var c=M((F,l)=>{l.exports=_jsx_runtime});var C={};_(C,{default:()=>m,frontmatter:()=>y});var r=j(c()),y={title:\\"Miguel Luna\\",slug:\\"miguel-luna\\",description:\\"Principal Product Manager Observability\\",image:null};function s(t){return(0,r.jsx)(r.Fragment,{})}function m(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(s,{...t})}):s(t)}return b(C);})();\\n;return Component;"},"_id":"authors/miguel-luna.mdx","_raw":{"sourceFilePath":"authors/miguel-luna.mdx","sourceFileName":"miguel-luna.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/miguel-luna"},"type":"Author","imageUrl":"","url":"/authors/miguel-luna"},{"title":"Mike Birnstiehl","slug":"mike-birnstiehl","description":"","image":"","body":{"raw":"","code":"var Component=(()=>{var l=Object.create;var o=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var p=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),M=(t,e)=>{for(var n in e)o(t,n,{get:e[n],enumerable:!0})},a=(t,e,n,s)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let i of _(e))!g.call(t,i)&&i!==n&&o(t,i,{get:()=>e[i],enumerable:!(s=f(e,i))||s.enumerable});return t};var h=(t,e,n)=>(n=t!=null?l(d(t)):{},a(e||!t||!t.__esModule?o(n,\\"default\\",{value:t,enumerable:!0}):n,t)),j=t=>a(o({},\\"__esModule\\",{value:!0}),t);var c=p((F,m)=>{m.exports=_jsx_runtime});var C={};M(C,{default:()=>x,frontmatter:()=>k});var r=h(c()),k={title:\\"Mike Birnstiehl\\",slug:\\"mike-birnstiehl\\",description:\\"\\",image:\\"\\"};function u(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}return j(C);})();\\n;return Component;"},"_id":"authors/mike-birnstiehl.mdx","_raw":{"sourceFilePath":"authors/mike-birnstiehl.mdx","sourceFileName":"mike-birnstiehl.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/mike-birnstiehl"},"type":"Author","imageUrl":"","url":"/authors/mike-birnstiehl"},{"title":"Mirko Bez","slug":"mirko-bez","description":"Senior Technical Consultant","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var l=Object.create;var i=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var p=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),M=(t,e)=>{for(var n in e)i(t,n,{get:e[n],enumerable:!0})},c=(t,e,n,a)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of _(e))!g.call(t,o)&&o!==n&&i(t,o,{get:()=>e[o],enumerable:!(a=f(e,o))||a.enumerable});return t};var j=(t,e,n)=>(n=t!=null?l(d(t)):{},c(e||!t||!t.__esModule?i(n,\\"default\\",{value:t,enumerable:!0}):n,t)),C=t=>c(i({},\\"__esModule\\",{value:!0}),t);var m=p((D,s)=>{s.exports=_jsx_runtime});var k={};M(k,{default:()=>x,frontmatter:()=>h});var r=j(m()),h={title:\\"Mirko Bez\\",slug:\\"mirko-bez\\",description:\\"Senior Technical Consultant\\",image:\\"\\"};function u(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}return C(k);})();\\n;return Component;"},"_id":"authors/mirko-bez.mdx","_raw":{"sourceFilePath":"authors/mirko-bez.mdx","sourceFileName":"mirko-bez.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/mirko-bez"},"type":"Author","imageUrl":"","url":"/authors/mirko-bez"},{"title":"Muthukumar Paramasivam","slug":"muthukumar-paramasivam","description":"Senior Software Engineer","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var f=Object.create;var o=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var l=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),M=(t,e)=>{for(var r in e)o(t,r,{get:e[r],enumerable:!0})},u=(t,e,r,m)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let a of p(e))!d.call(t,a)&&a!==r&&o(t,a,{get:()=>e[a],enumerable:!(m=g(e,a))||m.enumerable});return t};var h=(t,e,r)=>(r=t!=null?f(_(t)):{},u(e||!t||!t.__esModule?o(r,\\"default\\",{value:t,enumerable:!0}):r,t)),j=t=>u(o({},\\"__esModule\\",{value:!0}),t);var s=l((C,i)=>{i.exports=_jsx_runtime});var v={};M(v,{default:()=>x,frontmatter:()=>k});var n=h(s()),k={title:\\"Muthukumar Paramasivam\\",slug:\\"muthukumar-paramasivam\\",description:\\"Senior Software Engineer\\",image:\\"\\"};function c(t){return(0,n.jsx)(n.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(c,{...t})}):c(t)}return j(v);})();\\n;return Component;"},"_id":"authors/muthukumar-paramasivam.mdx","_raw":{"sourceFilePath":"authors/muthukumar-paramasivam.mdx","sourceFileName":"muthukumar-paramasivam.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/muthukumar-paramasivam"},"type":"Author","imageUrl":"","url":"/authors/muthukumar-paramasivam"},{"title":"Mykola Harmash","slug":"mykola-harmash","description":"","image":"","body":{"raw":"","code":"var Component=(()=>{var l=Object.create;var o=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var h=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),p=(t,e)=>{for(var n in e)o(t,n,{get:e[n],enumerable:!0})},s=(t,e,n,m)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let a of _(e))!g.call(t,a)&&a!==n&&o(t,a,{get:()=>e[a],enumerable:!(m=f(e,a))||m.enumerable});return t};var M=(t,e,n)=>(n=t!=null?l(d(t)):{},s(e||!t||!t.__esModule?o(n,\\"default\\",{value:t,enumerable:!0}):n,t)),j=t=>s(o({},\\"__esModule\\",{value:!0}),t);var c=h((D,i)=>{i.exports=_jsx_runtime});var k={};p(k,{default:()=>x,frontmatter:()=>y});var r=M(c()),y={title:\\"Mykola Harmash\\",slug:\\"mykola-harmash\\",description:\\"\\",image:\\"\\"};function u(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}return j(k);})();\\n;return Component;"},"_id":"authors/mykola-harmash.mdx","_raw":{"sourceFilePath":"authors/mykola-harmash.mdx","sourceFileName":"mykola-harmash.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/mykola-harmash"},"type":"Author","imageUrl":"","url":"/authors/mykola-harmash"},{"title":"Nathan Smith","slug":"nathan-smith","description":"Senior Manager, Software Engineering","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var x=Object.create;var o=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var l=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)o(t,e,{get:n[e],enumerable:!0})},m=(t,n,e,i)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let a of h(n))!d.call(t,a)&&a!==e&&o(t,a,{get:()=>n[a],enumerable:!(i=f(n,a))||i.enumerable});return t};var M=(t,n,e)=>(e=t!=null?x(_(t)):{},m(n||!t||!t.__esModule?o(e,\\"default\\",{value:t,enumerable:!0}):e,t)),j=t=>m(o({},\\"__esModule\\",{value:!0}),t);var c=l((D,s)=>{s.exports=_jsx_runtime});var w={};p(w,{default:()=>g,frontmatter:()=>S});var r=M(c()),S={title:\\"Nathan Smith\\",slug:\\"nathan-smith\\",description:\\"Senior Manager, Software Engineering\\",image:\\"\\"};function u(t){return(0,r.jsx)(r.Fragment,{})}function g(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}return j(w);})();\\n;return Component;"},"_id":"authors/nathan-smith.mdx","_raw":{"sourceFilePath":"authors/nathan-smith.mdx","sourceFileName":"nathan-smith.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/nathan-smith"},"type":"Author","imageUrl":"","url":"/authors/nathan-smith"},{"title":"Nicolas Ruflin","slug":"nicolas-ruflin","description":"Principal Software Engineer II at Elastic","image":"nicolas-ruflin.jpg","body":{"raw":"Nicolas Ruflin is a software engineer on the Observability team. He is passionate about automating everything through software and embraces the constancy of change in the field. When not pondering engineering problems, he enjoys doing all kinds of sports, particularly handball.\\n\\n","code":"var Component=(()=>{var p=Object.create;var i=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var m=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var x=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports),b=(n,e)=>{for(var t in e)i(n,t,{get:e[t],enumerable:!0})},s=(n,e,t,r)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of h(e))!d.call(n,o)&&o!==t&&i(n,o,{get:()=>e[o],enumerable:!(r=g(e,o))||r.enumerable});return n};var y=(n,e,t)=>(t=n!=null?p(m(n)):{},s(e||!n||!n.__esModule?i(t,\\"default\\",{value:n,enumerable:!0}):t,n)),j=n=>s(i({},\\"__esModule\\",{value:!0}),n);var c=x((v,l)=>{l.exports=_jsx_runtime});var w={};b(w,{default:()=>f,frontmatter:()=>_});var a=y(c()),_={title:\\"Nicolas Ruflin\\",slug:\\"nicolas-ruflin\\",description:\\"Principal Software Engineer II at Elastic\\",image:\\"nicolas-ruflin.jpg\\"};function u(n){let e={p:\\"p\\",...n.components};return(0,a.jsx)(e.p,{children:\\"Nicolas Ruflin is a software engineer on the Observability team. He is passionate about automating everything through software and embraces the constancy of change in the field. When not pondering engineering problems, he enjoys doing all kinds of sports, particularly handball.\\"})}function f(n={}){let{wrapper:e}=n.components||{};return e?(0,a.jsx)(e,{...n,children:(0,a.jsx)(u,{...n})}):u(n)}return j(w);})();\\n;return Component;"},"_id":"authors/nicolas-ruflin.mdx","_raw":{"sourceFilePath":"authors/nicolas-ruflin.mdx","sourceFileName":"nicolas-ruflin.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/nicolas-ruflin"},"type":"Author","imageUrl":"/assets/images/authors/nicolas-ruflin.jpg","url":"/authors/nicolas-ruflin"},{"title":"Pawel Filipczak","slug":"pawel-filipczak","description":"Principal Engineer, APM Agents","image":"pawel-filipczak.jpg","body":{"raw":"\\n","code":"var Component=(()=>{var u=Object.create;var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var d=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),j=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},c=(t,e,n,o)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let i of g(e))!_.call(t,i)&&i!==n&&a(t,i,{get:()=>e[i],enumerable:!(o=f(e,i))||o.enumerable});return t};var w=(t,e,n)=>(n=t!=null?u(x(t)):{},c(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),M=t=>c(a({},\\"__esModule\\",{value:!0}),t);var p=d((P,l)=>{l.exports=_jsx_runtime});var z={};j(z,{default:()=>m,frontmatter:()=>k});var r=w(p()),k={title:\\"Pawel Filipczak\\",slug:\\"pawel-filipczak\\",description:\\"Principal Engineer, APM Agents\\",image:\\"pawel-filipczak.jpg\\"};function s(t){return(0,r.jsx)(r.Fragment,{})}function m(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(s,{...t})}):s(t)}return M(z);})();\\n;return Component;"},"_id":"authors/pawel-filipczak.mdx","_raw":{"sourceFilePath":"authors/pawel-filipczak.mdx","sourceFileName":"pawel-filipczak.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/pawel-filipczak"},"type":"Author","imageUrl":"/assets/images/authors/pawel-filipczak.jpg","url":"/authors/pawel-filipczak"},{"title":"Peter Titov","slug":"peter-titov","description":"Global Solutions Architect at Elastic","image":"peter-titov.jpeg","body":{"raw":"\\n","code":"var Component=(()=>{var p=Object.create;var i=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var d=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),j=(t,e)=>{for(var n in e)i(t,n,{get:e[n],enumerable:!0})},c=(t,e,n,a)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of f(e))!_.call(t,o)&&o!==n&&i(t,o,{get:()=>e[o],enumerable:!(a=x(e,o))||a.enumerable});return t};var v=(t,e,n)=>(n=t!=null?p(g(t)):{},c(e||!t||!t.__esModule?i(n,\\"default\\",{value:t,enumerable:!0}):n,t)),M=t=>c(i({},\\"__esModule\\",{value:!0}),t);var u=d((F,s)=>{s.exports=_jsx_runtime});var C={};j(C,{default:()=>m,frontmatter:()=>h});var r=v(u()),h={title:\\"Peter Titov\\",slug:\\"peter-titov\\",description:\\"Global Solutions Architect at Elastic\\",image:\\"peter-titov.jpeg\\"};function l(t){return(0,r.jsx)(r.Fragment,{})}function m(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(l,{...t})}):l(t)}return M(C);})();\\n;return Component;"},"_id":"authors/peter-titov.mdx","_raw":{"sourceFilePath":"authors/peter-titov.mdx","sourceFileName":"peter-titov.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/peter-titov"},"type":"Author","imageUrl":"/assets/images/authors/peter-titov.jpeg","url":"/authors/peter-titov"},{"title":"Philipp Kahr","slug":"philipp-kahr","description":"Principal Consulting Architect","image":"philipp-kahr.jpg","body":{"raw":"Philipp is a consultant on the services EMEA team working with different customers that spawn from small to large multinational companies. Prior to Elastic, he was a infrastructure and cloud architect at T-System. In his spare time, he likes to find curious ways to analyse and visualise any form of data.\\n\\n","code":"var Component=(()=>{var h=Object.create;var a=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,x=Object.prototype.hasOwnProperty;var g=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),w=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},s=(t,n,e,r)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let i of f(n))!x.call(t,i)&&i!==e&&a(t,i,{get:()=>n[i],enumerable:!(r=m(n,i))||r.enumerable});return t};var y=(t,n,e)=>(e=t!=null?h(d(t)):{},s(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),_=t=>s(a({},\\"__esModule\\",{value:!0}),t);var l=g((P,c)=>{c.exports=_jsx_runtime});var k={};w(k,{default:()=>u,frontmatter:()=>j});var o=y(l()),j={title:\\"Philipp Kahr\\",slug:\\"philipp-kahr\\",description:\\"Principal Consulting Architect\\",image:\\"philipp-kahr.jpg\\"};function p(t){let n={p:\\"p\\",...t.components};return(0,o.jsx)(n.p,{children:\\"Philipp is a consultant on the services EMEA team working with different customers that spawn from small to large multinational companies. Prior to Elastic, he was a infrastructure and cloud architect at T-System. In his spare time, he likes to find curious ways to analyse and visualise any form of data.\\"})}function u(t={}){let{wrapper:n}=t.components||{};return n?(0,o.jsx)(n,{...t,children:(0,o.jsx)(p,{...t})}):p(t)}return _(k);})();\\n;return Component;"},"_id":"authors/philipp-kahr.mdx","_raw":{"sourceFilePath":"authors/philipp-kahr.mdx","sourceFileName":"philipp-kahr.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/philipp-kahr"},"type":"Author","imageUrl":"/assets/images/authors/philipp-kahr.jpg","url":"/authors/philipp-kahr"},{"title":"Rema Subramanian","slug":"rema-s","description":"Sr Customer Architect","image":"rema-s.jpeg","body":{"raw":"Rema enjoys everything architecture, engineering and data. In the past, she has implemented several healthcare protocols for provider and payor products. Along the way, she has worked in the engineering, infrastructure, security, DevOps teams. Now she loves to work with customers imparting all the learning and help them solve cool data use cases\\n\\n","code":"var Component=(()=>{var p=Object.create;var o=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var x=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),v=(e,t)=>{for(var n in t)o(e,n,{get:t[n],enumerable:!0})},i=(e,t,n,s)=>{if(t&&typeof t==\\"object\\"||typeof t==\\"function\\")for(let r of d(t))!f.call(e,r)&&r!==n&&o(e,r,{get:()=>t[r],enumerable:!(s=u(t,r))||s.enumerable});return e};var w=(e,t,n)=>(n=e!=null?p(g(e)):{},i(t||!e||!e.__esModule?o(n,\\"default\\",{value:e,enumerable:!0}):n,e)),y=e=>i(o({},\\"__esModule\\",{value:!0}),e);var m=x((D,c)=>{c.exports=_jsx_runtime});var _={};v(_,{default:()=>l,frontmatter:()=>j});var a=w(m()),j={title:\\"Rema Subramanian\\",slug:\\"rema-s\\",description:\\"Sr Customer Architect\\",image:\\"rema-s.jpeg\\"};function h(e){let t={p:\\"p\\",...e.components};return(0,a.jsx)(t.p,{children:\\"Rema enjoys everything architecture, engineering and data. In the past, she has implemented several healthcare protocols for provider and payor products. Along the way, she has worked in the engineering, infrastructure, security, DevOps teams. Now she loves to work with customers imparting all the learning and help them solve cool data use cases\\"})}function l(e={}){let{wrapper:t}=e.components||{};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}return y(_);})();\\n;return Component;"},"_id":"authors/rema-s.mdx","_raw":{"sourceFilePath":"authors/rema-s.mdx","sourceFileName":"rema-s.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/rema-s"},"type":"Author","imageUrl":"/assets/images/authors/rema-s.jpeg","url":"/authors/rema-s"},{"title":"Riccardo Magliocchetti","slug":"riccardo-magliocchetti","description":"","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var d=Object.create;var c=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var p=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),M=(t,e)=>{for(var n in e)c(t,n,{get:e[n],enumerable:!0})},a=(t,e,n,i)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of l(e))!_.call(t,o)&&o!==n&&c(t,o,{get:()=>e[o],enumerable:!(i=g(e,o))||i.enumerable});return t};var h=(t,e,n)=>(n=t!=null?d(f(t)):{},a(e||!t||!t.__esModule?c(n,\\"default\\",{value:t,enumerable:!0}):n,t)),j=t=>a(c({},\\"__esModule\\",{value:!0}),t);var s=p((X,m)=>{m.exports=_jsx_runtime});var D={};M(D,{default:()=>x,frontmatter:()=>C});var r=h(s()),C={title:\\"Riccardo Magliocchetti\\",slug:\\"riccardo-magliocchetti\\",description:\\"\\",image:\\"\\"};function u(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}return j(D);})();\\n;return Component;"},"_id":"authors/riccardo-magliocchetti.mdx","_raw":{"sourceFilePath":"authors/riccardo-magliocchetti.mdx","sourceFileName":"riccardo-magliocchetti.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/riccardo-magliocchetti"},"type":"Author","imageUrl":"","url":"/authors/riccardo-magliocchetti"},{"title":"Roger Coll","slug":"roger-coll","description":"Senior Software Engineer, Observability and OpenTelemetry at Elastic","image":"roger-coll.jpg","body":{"raw":"\\n","code":"var Component=(()=>{var u=Object.create;var a=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var _=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),j=(e,t)=>{for(var r in t)a(e,r,{get:t[r],enumerable:!0})},l=(e,t,r,i)=>{if(t&&typeof t==\\"object\\"||typeof t==\\"function\\")for(let o of f(t))!d.call(e,o)&&o!==r&&a(e,o,{get:()=>t[o],enumerable:!(i=x(t,o))||i.enumerable});return e};var y=(e,t,r)=>(r=e!=null?u(p(e)):{},l(t||!e||!e.__esModule?a(r,\\"default\\",{value:e,enumerable:!0}):r,e)),C=e=>l(a({},\\"__esModule\\",{value:!0}),e);var s=_((D,c)=>{c.exports=_jsx_runtime});var b={};j(b,{default:()=>m,frontmatter:()=>M});var n=y(s()),M={title:\\"Roger Coll\\",slug:\\"roger-coll\\",description:\\"Senior Software Engineer, Observability and OpenTelemetry at Elastic\\",image:\\"roger-coll.jpg\\"};function g(e){return(0,n.jsx)(n.Fragment,{})}function m(e={}){let{wrapper:t}=e.components||{};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(g,{...e})}):g(e)}return C(b);})();\\n;return Component;"},"_id":"authors/roger-coll.mdx","_raw":{"sourceFilePath":"authors/roger-coll.mdx","sourceFileName":"roger-coll.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/roger-coll"},"type":"Author","imageUrl":"/assets/images/authors/roger-coll.jpg","url":"/authors/roger-coll"},{"title":"Shaunak Kashyap","slug":"shaunak-kashyap","description":"Manager, Fleet Platform - Control Plane at Elastic","image":"shaunak-kashyap.jpg","body":{"raw":"\\n","code":"var Component=(()=>{var p=Object.create;var o=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var k=(t,a)=>()=>(a||t((a={exports:{}}).exports,a),a.exports),_=(t,a)=>{for(var n in a)o(t,n,{get:a[n],enumerable:!0})},u=(t,a,n,s)=>{if(a&&typeof a==\\"object\\"||typeof a==\\"function\\")for(let r of x(a))!g.call(t,r)&&r!==n&&o(t,r,{get:()=>a[r],enumerable:!(s=h(a,r))||s.enumerable});return t};var d=(t,a,n)=>(n=t!=null?p(f(t)):{},u(a||!t||!t.__esModule?o(n,\\"default\\",{value:t,enumerable:!0}):n,t)),j=t=>u(o({},\\"__esModule\\",{value:!0}),t);var c=k((F,i)=>{i.exports=_jsx_runtime});var M={};_(M,{default:()=>m,frontmatter:()=>y});var e=d(c()),y={title:\\"Shaunak Kashyap\\",slug:\\"shaunak-kashyap\\",description:\\"Manager, Fleet Platform - Control Plane at Elastic\\",image:\\"shaunak-kashyap.jpg\\"};function l(t){return(0,e.jsx)(e.Fragment,{})}function m(t={}){let{wrapper:a}=t.components||{};return a?(0,e.jsx)(a,{...t,children:(0,e.jsx)(l,{...t})}):l(t)}return j(M);})();\\n;return Component;"},"_id":"authors/shaunak-kashyap.mdx","_raw":{"sourceFilePath":"authors/shaunak-kashyap.mdx","sourceFileName":"shaunak-kashyap.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/shaunak-kashyap"},"type":"Author","imageUrl":"/assets/images/authors/shaunak-kashyap.jpg","url":"/authors/shaunak-kashyap"},{"title":"Stephen Brown","slug":"stephen-brown","description":"Sr. Principal Customer Architect at Elastic","image":"stephen-brown.jpg","body":{"raw":"Stephen is a Sr. Principal Customer Enterprise Architect at Elastic. He loves solving \\"Data Puzzles\\" in his spare time between making and drinking esspresso.\\n","code":"var Component=(()=>{var u=Object.create;var i=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var f=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),w=(t,e)=>{for(var n in e)i(t,n,{get:e[n],enumerable:!0})},c=(t,e,n,o)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let r of d(e))!g.call(t,r)&&r!==n&&i(t,r,{get:()=>e[r],enumerable:!(o=h(e,r))||o.enumerable});return t};var _=(t,e,n)=>(n=t!=null?u(x(t)):{},c(e||!t||!t.__esModule?i(n,\\"default\\",{value:t,enumerable:!0}):n,t)),j=t=>c(i({},\\"__esModule\\",{value:!0}),t);var p=f((D,a)=>{a.exports=_jsx_runtime});var S={};w(S,{default:()=>m,frontmatter:()=>C});var s=_(p()),C={title:\\"Stephen Brown\\",slug:\\"stephen-brown\\",description:\\"Sr. Principal Customer Architect at Elastic\\",image:\\"stephen-brown.jpg\\"};function l(t){let e={p:\\"p\\",...t.components};return(0,s.jsx)(e.p,{children:\'Stephen is a Sr. Principal Customer Enterprise Architect at Elastic. He loves solving \\"Data Puzzles\\" in his spare time between making and drinking esspresso.\'})}function m(t={}){let{wrapper:e}=t.components||{};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(l,{...t})}):l(t)}return j(S);})();\\n;return Component;"},"_id":"authors/stephen-brown.mdx","_raw":{"sourceFilePath":"authors/stephen-brown.mdx","sourceFileName":"stephen-brown.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/stephen-brown"},"type":"Author","imageUrl":"/assets/images/authors/stephen-brown.jpg","url":"/authors/stephen-brown"},{"title":"Steve Gordon","slug":"steve-gordon","description":"Senior Software Engineer","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var d=Object.create;var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty;var p=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),j=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},s=(t,e,n,i)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of g(e))!l.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(i=f(e,o))||i.enumerable});return t};var M=(t,e,n)=>(n=t!=null?d(_(t)):{},s(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),S=t=>s(a({},\\"__esModule\\",{value:!0}),t);var m=p((D,c)=>{c.exports=_jsx_runtime});var w={};j(w,{default:()=>x,frontmatter:()=>v});var r=M(m()),v={title:\\"Steve Gordon\\",slug:\\"steve-gordon\\",description:\\"Senior Software Engineer\\",image:\\"\\"};function u(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}return S(w);})();\\n;return Component;"},"_id":"authors/steve-gordon.mdx","_raw":{"sourceFilePath":"authors/steve-gordon.mdx","sourceFileName":"steve-gordon.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/steve-gordon"},"type":"Author","imageUrl":"","url":"/authors/steve-gordon"},{"title":"Subhrata Kulshrestha","slug":"subhrata-kulshrestha","description":"Principal Product Manager I","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var l=Object.create;var o=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var p=(t,r)=>()=>(r||t((r={exports:{}}).exports,r),r.exports),_=(t,r)=>{for(var e in r)o(t,e,{get:r[e],enumerable:!0})},u=(t,r,e,s)=>{if(r&&typeof r==\\"object\\"||typeof r==\\"function\\")for(let a of d(r))!g.call(t,a)&&a!==e&&o(t,a,{get:()=>r[a],enumerable:!(s=x(r,a))||s.enumerable});return t};var M=(t,r,e)=>(e=t!=null?l(f(t)):{},u(r||!t||!t.__esModule?o(e,\\"default\\",{value:t,enumerable:!0}):e,t)),j=t=>u(o({},\\"__esModule\\",{value:!0}),t);var c=p((F,i)=>{i.exports=_jsx_runtime});var C={};_(C,{default:()=>h,frontmatter:()=>b});var n=M(c()),b={title:\\"Subhrata Kulshrestha\\",slug:\\"subhrata-kulshrestha\\",description:\\"Principal Product Manager I\\",image:\\"\\"};function m(t){return(0,n.jsx)(n.Fragment,{})}function h(t={}){let{wrapper:r}=t.components||{};return r?(0,n.jsx)(r,{...t,children:(0,n.jsx)(m,{...t})}):m(t)}return j(C);})();\\n;return Component;"},"_id":"authors/subhrata-kulshrestha.mdx","_raw":{"sourceFilePath":"authors/subhrata-kulshrestha.mdx","sourceFileName":"subhrata-kulshrestha.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/subhrata-kulshrestha"},"type":"Author","imageUrl":"","url":"/authors/subhrata-kulshrestha"},{"title":"Sylvain Juge","slug":"sylvain-juge","description":"Principal Engineer, APM Agents","image":"sylvain-juge.jpg","body":{"raw":"\\n","code":"var Component=(()=>{var m=Object.create;var a=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var _=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),d=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},s=(t,n,e,o)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let i of j(n))!f.call(t,i)&&i!==e&&a(t,i,{get:()=>n[i],enumerable:!(o=x(n,i))||o.enumerable});return t};var y=(t,n,e)=>(e=t!=null?m(p(t)):{},s(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),M=t=>s(a({},\\"__esModule\\",{value:!0}),t);var g=_((D,u)=>{u.exports=_jsx_runtime});var A={};d(A,{default:()=>l,frontmatter:()=>v});var r=y(g()),v={title:\\"Sylvain Juge\\",slug:\\"sylvain-juge\\",description:\\"Principal Engineer, APM Agents\\",image:\\"sylvain-juge.jpg\\"};function c(t){return(0,r.jsx)(r.Fragment,{})}function l(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(c,{...t})}):c(t)}return M(A);})();\\n;return Component;"},"_id":"authors/sylvain-juge.mdx","_raw":{"sourceFilePath":"authors/sylvain-juge.mdx","sourceFileName":"sylvain-juge.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/sylvain-juge"},"type":"Author","imageUrl":"/assets/images/authors/sylvain-juge.jpg","url":"/authors/sylvain-juge"},{"title":"Taha Derouiche","slug":"taha-derouiche","description":"Principal Consulting Architect","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var h=Object.create;var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var p=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),_=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},c=(t,e,n,i)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of d(e))!g.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(i=l(e,o))||i.enumerable});return t};var j=(t,e,n)=>(n=t!=null?h(f(t)):{},c(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),C=t=>c(a({},\\"__esModule\\",{value:!0}),t);var s=p((X,u)=>{u.exports=_jsx_runtime});var M={};_(M,{default:()=>x,frontmatter:()=>D});var r=j(s()),D={title:\\"Taha Derouiche\\",slug:\\"taha-derouiche\\",description:\\"Principal Consulting Architect\\",image:\\"\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return C(M);})();\\n;return Component;"},"_id":"authors/taha-derouiche.mdx","_raw":{"sourceFilePath":"authors/taha-derouiche.mdx","sourceFileName":"taha-derouiche.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/taha-derouiche"},"type":"Author","imageUrl":"","url":"/authors/taha-derouiche"},{"title":"Tamara Dancheva","slug":"tamara-dancheva","description":"Software Engineer II at Elastic","image":"","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var o=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var p=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),h=(t,e)=>{for(var n in e)o(t,n,{get:e[n],enumerable:!0})},i=(t,e,n,c)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let r of g(e))!_.call(t,r)&&r!==n&&o(t,r,{get:()=>e[r],enumerable:!(c=d(e,r))||c.enumerable});return t};var j=(t,e,n)=>(n=t!=null?f(l(t)):{},i(e||!t||!t.__esModule?o(n,\\"default\\",{value:t,enumerable:!0}):n,t)),D=t=>i(o({},\\"__esModule\\",{value:!0}),t);var s=p((C,m)=>{m.exports=_jsx_runtime});var v={};h(v,{default:()=>x,frontmatter:()=>M});var a=j(s()),M={title:\\"Tamara Dancheva\\",slug:\\"tamara-dancheva\\",description:\\"Software Engineer II at Elastic\\",image:\\"\\"};function u(t){return(0,a.jsx)(a.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,a.jsx)(e,{...t,children:(0,a.jsx)(u,{...t})}):u(t)}return D(v);})();\\n;return Component;"},"_id":"authors/tamara-dancheva.mdx","_raw":{"sourceFilePath":"authors/tamara-dancheva.mdx","sourceFileName":"tamara-dancheva.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/tamara-dancheva"},"type":"Author","imageUrl":"","url":"/authors/tamara-dancheva"},{"title":"Tim R\xfchsen","slug":"tim-ruhsen","description":"Senior Software Engineer","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var f=Object.create;var i=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty;var p=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),h=(t,e)=>{for(var n in e)i(t,n,{get:e[n],enumerable:!0})},s=(t,e,n,a)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of _(e))!l.call(t,o)&&o!==n&&i(t,o,{get:()=>e[o],enumerable:!(a=g(e,o))||a.enumerable});return t};var j=(t,e,n)=>(n=t!=null?f(d(t)):{},s(e||!t||!t.__esModule?i(n,\\"default\\",{value:t,enumerable:!0}):n,t)),M=t=>s(i({},\\"__esModule\\",{value:!0}),t);var u=p((F,m)=>{m.exports=_jsx_runtime});var C={};h(C,{default:()=>x,frontmatter:()=>w});var r=j(u()),w={title:\\"Tim R\\\\xFChsen\\",slug:\\"tim-ruhsen\\",description:\\"Senior Software Engineer\\",image:\\"\\"};function c(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(c,{...t})}):c(t)}return M(C);})();\\n;return Component;"},"_id":"authors/tim-ruhsen.mdx","_raw":{"sourceFilePath":"authors/tim-ruhsen.mdx","sourceFileName":"tim-ruhsen.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/tim-ruhsen"},"type":"Author","imageUrl":"","url":"/authors/tim-ruhsen"},{"title":"Tom Grabowski","slug":"tom-grabowski","description":"Principal Product Manager at Elastic","image":"tom-grabowski.jpg","body":{"raw":"\\n","code":"var Component=(()=>{var x=Object.create;var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var _=(t,r)=>()=>(r||t((r={exports:{}}).exports,r),r.exports),j=(t,r)=>{for(var n in r)a(t,n,{get:r[n],enumerable:!0})},s=(t,r,n,i)=>{if(r&&typeof r==\\"object\\"||typeof r==\\"function\\")for(let o of p(r))!f.call(t,o)&&o!==n&&a(t,o,{get:()=>r[o],enumerable:!(i=l(r,o))||i.enumerable});return t};var w=(t,r,n)=>(n=t!=null?x(d(t)):{},s(r||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),M=t=>s(a({},\\"__esModule\\",{value:!0}),t);var m=_((D,c)=>{c.exports=_jsx_runtime});var k={};j(k,{default:()=>g,frontmatter:()=>b});var e=w(m()),b={title:\\"Tom Grabowski\\",slug:\\"tom-grabowski\\",description:\\"Principal Product Manager at Elastic\\",image:\\"tom-grabowski.jpg\\"};function u(t){return(0,e.jsx)(e.Fragment,{})}function g(t={}){let{wrapper:r}=t.components||{};return r?(0,e.jsx)(r,{...t,children:(0,e.jsx)(u,{...t})}):u(t)}return M(k);})();\\n;return Component;"},"_id":"authors/tom-grabowski.mdx","_raw":{"sourceFilePath":"authors/tom-grabowski.mdx","sourceFileName":"tom-grabowski.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/tom-grabowski"},"type":"Author","imageUrl":"/assets/images/authors/tom-grabowski.jpg","url":"/authors/tom-grabowski"},{"title":"Trent Mick","slug":"trent-mick","description":"Principal Software Engineer","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var f=Object.create;var i=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var d=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),M=(t,e)=>{for(var n in e)i(t,n,{get:e[n],enumerable:!0})},c=(t,e,n,a)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of l(e))!_.call(t,o)&&o!==n&&i(t,o,{get:()=>e[o],enumerable:!(a=g(e,o))||a.enumerable});return t};var j=(t,e,n)=>(n=t!=null?f(p(t)):{},c(e||!t||!t.__esModule?i(n,\\"default\\",{value:t,enumerable:!0}):n,t)),k=t=>c(i({},\\"__esModule\\",{value:!0}),t);var s=d((F,m)=>{m.exports=_jsx_runtime});var C={};M(C,{default:()=>x,frontmatter:()=>w});var r=j(s()),w={title:\\"Trent Mick\\",slug:\\"trent-mick\\",description:\\"Principal Software Engineer\\",image:\\"\\"};function u(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}return k(C);})();\\n;return Component;"},"_id":"authors/trent-mick.mdx","_raw":{"sourceFilePath":"authors/trent-mick.mdx","sourceFileName":"trent-mick.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/trent-mick"},"type":"Author","imageUrl":"","url":"/authors/trent-mick"},{"title":"Ty Bekiares","slug":"ty-bekiares","description":"Principal Solutions Architect at Elastic","image":"ty-bekiares.jpg","body":{"raw":"Ty Bekiares is a Principal Solutions Architect with Elastic. Ty thinks about observability coming from a 20+ year background of architecting and developing production software.\\n\\n","code":"var Component=(()=>{var m=Object.create;var o=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var h=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),x=(t,e)=>{for(var n in e)o(t,n,{get:e[n],enumerable:!0})},c=(t,e,n,a)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let i of f(e))!g.call(t,i)&&i!==n&&o(t,i,{get:()=>e[i],enumerable:!(a=d(e,i))||a.enumerable});return t};var b=(t,e,n)=>(n=t!=null?m(y(t)):{},c(e||!t||!t.__esModule?o(n,\\"default\\",{value:t,enumerable:!0}):n,t)),k=t=>c(o({},\\"__esModule\\",{value:!0}),t);var l=h((M,s)=>{s.exports=_jsx_runtime});var j={};x(j,{default:()=>p,frontmatter:()=>_});var r=b(l()),_={title:\\"Ty Bekiares\\",slug:\\"ty-bekiares\\",description:\\"Principal Solutions Architect at Elastic\\",image:\\"ty-bekiares.jpg\\"};function u(t){let e={p:\\"p\\",...t.components};return(0,r.jsx)(e.p,{children:\\"Ty Bekiares is a Principal Solutions Architect with Elastic. Ty thinks about observability coming from a 20+ year background of architecting and developing production software.\\"})}function p(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}return k(j);})();\\n;return Component;"},"_id":"authors/ty-bekiares.mdx","_raw":{"sourceFilePath":"authors/ty-bekiares.mdx","sourceFileName":"ty-bekiares.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/ty-bekiares"},"type":"Author","imageUrl":"/assets/images/authors/ty-bekiares.jpg","url":"/authors/ty-bekiares"},{"title":"Udayasimha Theepireddy (Uday)","slug":"udayasimha-theepireddy-uday","description":"Senior Principal Solution Architect at Elastic","image":"udayasimha-theepireddy-uday.jpg","body":{"raw":"\\n","code":"var Component=(()=>{var y=Object.create;var i=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,x=Object.prototype.hasOwnProperty;var f=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),g=(t,e)=>{for(var a in e)i(t,a,{get:e[a],enumerable:!0})},d=(t,e,a,o)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let r of h(e))!x.call(t,r)&&r!==a&&i(t,r,{get:()=>e[r],enumerable:!(o=p(e,r))||o.enumerable});return t};var _=(t,e,a)=>(a=t!=null?y(l(t)):{},d(e||!t||!t.__esModule?i(a,\\"default\\",{value:t,enumerable:!0}):a,t)),j=t=>d(i({},\\"__esModule\\",{value:!0}),t);var u=f((F,s)=>{s.exports=_jsx_runtime});var C={};g(C,{default:()=>m,frontmatter:()=>M});var n=_(u()),M={title:\\"Udayasimha Theepireddy (Uday)\\",slug:\\"udayasimha-theepireddy-uday\\",description:\\"Senior Principal Solution Architect at Elastic\\",image:\\"udayasimha-theepireddy-uday.jpg\\"};function c(t){return(0,n.jsx)(n.Fragment,{})}function m(t={}){let{wrapper:e}=t.components||{};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(c,{...t})}):c(t)}return j(C);})();\\n;return Component;"},"_id":"authors/udayasimha-theepireddy-uday.mdx","_raw":{"sourceFilePath":"authors/udayasimha-theepireddy-uday.mdx","sourceFileName":"udayasimha-theepireddy-uday.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/udayasimha-theepireddy-uday"},"type":"Author","imageUrl":"/assets/images/authors/udayasimha-theepireddy-uday.jpg","url":"/authors/udayasimha-theepireddy-uday"},{"title":"Ugo Sangiorgi","slug":"ugo-sangiorgi","description":"Principal Competitive Intelligence Manager at Elastic","image":"ugo-sangiorgi.png","body":{"raw":"\\n","code":"var Component=(()=>{var l=Object.create;var o=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var d=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),M=(t,n)=>{for(var e in n)o(t,e,{get:n[e],enumerable:!0})},g=(t,n,e,a)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let i of x(n))!_.call(t,i)&&i!==e&&o(t,i,{get:()=>n[i],enumerable:!(a=p(n,i))||a.enumerable});return t};var j=(t,n,e)=>(e=t!=null?l(f(t)):{},g(n||!t||!t.__esModule?o(e,\\"default\\",{value:t,enumerable:!0}):e,t)),C=t=>g(o({},\\"__esModule\\",{value:!0}),t);var c=d((h,s)=>{s.exports=_jsx_runtime});var F={};M(F,{default:()=>m,frontmatter:()=>D});var r=j(c()),D={title:\\"Ugo Sangiorgi\\",slug:\\"ugo-sangiorgi\\",description:\\"Principal Competitive Intelligence Manager at Elastic\\",image:\\"ugo-sangiorgi.png\\"};function u(t){return(0,r.jsx)(r.Fragment,{})}function m(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}return C(F);})();\\n;return Component;"},"_id":"authors/ugo-sangiorgi.mdx","_raw":{"sourceFilePath":"authors/ugo-sangiorgi.mdx","sourceFileName":"ugo-sangiorgi.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/ugo-sangiorgi"},"type":"Author","imageUrl":"/assets/images/authors/ugo-sangiorgi.png","url":"/authors/ugo-sangiorgi"},{"title":"Vinay Chandrasekhar","slug":"vinay-chandrasekhar","description":"Director, Product Management at Elastic","image":"vinay-chandrasekhar.jpg","body":{"raw":"\\n","code":"var Component=(()=>{var h=Object.create;var o=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty;var p=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),_=(t,n)=>{for(var a in n)o(t,a,{get:n[a],enumerable:!0})},c=(t,n,a,i)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let r of g(n))!l.call(t,r)&&r!==a&&o(t,r,{get:()=>n[r],enumerable:!(i=x(n,r))||i.enumerable});return t};var j=(t,n,a)=>(a=t!=null?h(f(t)):{},c(n||!t||!t.__esModule?o(a,\\"default\\",{value:t,enumerable:!0}):a,t)),y=t=>c(o({},\\"__esModule\\",{value:!0}),t);var m=p((D,s)=>{s.exports=_jsx_runtime});var k={};_(k,{default:()=>d,frontmatter:()=>M});var e=j(m()),M={title:\\"Vinay Chandrasekhar\\",slug:\\"vinay-chandrasekhar\\",description:\\"Director, Product Management at Elastic\\",image:\\"vinay-chandrasekhar.jpg\\"};function u(t){return(0,e.jsx)(e.Fragment,{})}function d(t={}){let{wrapper:n}=t.components||{};return n?(0,e.jsx)(n,{...t,children:(0,e.jsx)(u,{...t})}):u(t)}return y(k);})();\\n;return Component;"},"_id":"authors/vinay-chandrasekhar.mdx","_raw":{"sourceFilePath":"authors/vinay-chandrasekhar.mdx","sourceFileName":"vinay-chandrasekhar.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/vinay-chandrasekhar"},"type":"Author","imageUrl":"/assets/images/authors/vinay-chandrasekhar.jpg","url":"/authors/vinay-chandrasekhar"},{"title":"Vincent du Sordet","slug":"vincent-dusordet","description":"Education Architect","image":"vincent-dusordet.png","body":{"raw":"","code":"var Component=(()=>{var x=Object.create;var c=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var l=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),j=(t,n)=>{for(var e in n)c(t,e,{get:n[e],enumerable:!0})},u=(t,n,e,i)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of g(n))!_.call(t,o)&&o!==e&&c(t,o,{get:()=>n[o],enumerable:!(i=f(n,o))||i.enumerable});return t};var M=(t,n,e)=>(e=t!=null?x(p(t)):{},u(n||!t||!t.__esModule?c(e,\\"default\\",{value:t,enumerable:!0}):e,t)),h=t=>u(c({},\\"__esModule\\",{value:!0}),t);var d=l((F,a)=>{a.exports=_jsx_runtime});var C={};j(C,{default:()=>m,frontmatter:()=>v});var r=M(d()),v={title:\\"Vincent du Sordet\\",slug:\\"vincent-dusordet\\",description:\\"Education Architect\\",image:\\"vincent-dusordet.png\\"};function s(t){return(0,r.jsx)(r.Fragment,{})}function m(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(s,{...t})}):s(t)}return h(C);})();\\n;return Component;"},"_id":"authors/vincent.dusordet.mdx","_raw":{"sourceFilePath":"authors/vincent.dusordet.mdx","sourceFileName":"vincent.dusordet.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/vincent.dusordet"},"type":"Author","imageUrl":"/assets/images/authors/vincent-dusordet.png","url":"/authors/vincent-dusordet"},{"title":"Yemi Adejumobi","slug":"yemi-adejumobi","description":"Product Lead at Langtrace AI","body":{"raw":"\\n","code":"var Component=(()=>{var x=Object.create;var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var l=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),p=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},m=(t,e,n,i)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of j(e))!g.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(i=f(e,o))||i.enumerable});return t};var L=(t,e,n)=>(n=t!=null?x(_(t)):{},m(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),M=t=>m(a({},\\"__esModule\\",{value:!0}),t);var c=l((C,u)=>{u.exports=_jsx_runtime});var y={};p(y,{default:()=>d,frontmatter:()=>b});var r=L(c()),b={title:\\"Yemi Adejumobi\\",slug:\\"yemi-adejumobi\\",description:\\"Product Lead at Langtrace AI\\"};function s(t){return(0,r.jsx)(r.Fragment,{})}function d(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(s,{...t})}):s(t)}return M(y);})();\\n;return Component;"},"_id":"authors/yemi-adejumobi.mdx","_raw":{"sourceFilePath":"authors/yemi-adejumobi.mdx","sourceFileName":"yemi-adejumobi.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/yemi-adejumobi"},"type":"Author","imageUrl":"","url":"/authors/yemi-adejumobi"},{"title":"Yngrid Coello","slug":"yngrid-coello","description":"Senior Software Engineer","image":"","body":{"raw":"\\n","code":"var Component=(()=>{var g=Object.create;var i=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var p=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),j=(t,e)=>{for(var n in e)i(t,n,{get:e[n],enumerable:!0})},c=(t,e,n,a)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of d(e))!_.call(t,o)&&o!==n&&i(t,o,{get:()=>e[o],enumerable:!(a=x(e,o))||a.enumerable});return t};var C=(t,e,n)=>(n=t!=null?g(f(t)):{},c(e||!t||!t.__esModule?i(n,\\"default\\",{value:t,enumerable:!0}):n,t)),M=t=>c(i({},\\"__esModule\\",{value:!0}),t);var l=p((F,s)=>{s.exports=_jsx_runtime});var y={};j(y,{default:()=>u,frontmatter:()=>w});var r=C(l()),w={title:\\"Yngrid Coello\\",slug:\\"yngrid-coello\\",description:\\"Senior Software Engineer\\",image:\\"\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function u(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return M(y);})();\\n;return Component;"},"_id":"authors/yngrid-coello.mdx","_raw":{"sourceFilePath":"authors/yngrid-coello.mdx","sourceFileName":"yngrid-coello.mdx","sourceFileDir":"authors","contentType":"mdx","flattenedPath":"authors/yngrid-coello"},"type":"Author","imageUrl":"","url":"/authors/yngrid-coello"}]'),a=JSON.parse('[{"title":"AI Assistant","slug":"ai-assistant","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},i=(t,n,e,o)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let s of l(n))!g.call(t,s)&&s!==e&&a(t,s,{get:()=>n[s],enumerable:!(o=_(n,s))||o.enumerable});return t};var M=(t,n,e)=>(e=t!=null?f(d(t)):{},i(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),A=t=>i(a({},\\"__esModule\\",{value:!0}),t);var c=j((X,u)=>{u.exports=_jsx_runtime});var D={};p(D,{default:()=>x,frontmatter:()=>C});var r=M(c()),C={title:\\"AI Assistant\\",slug:\\"ai-assistant\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return A(D);})();\\n;return Component;"},"_id":"tags/ai-assistant.mdx","_raw":{"sourceFilePath":"tags/ai-assistant.mdx","sourceFileName":"ai-assistant.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/ai-assistant"},"type":"Tag","url":"/tags/ai-assistant"},{"title":"AIOps","slug":"aiops","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),j=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},u=(t,n,e,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of _(n))!d.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(s=p(n,o))||s.enumerable});return t};var M=(t,n,e)=>(e=t!=null?f(l(t)):{},u(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),C=t=>u(a({},\\"__esModule\\",{value:!0}),t);var i=g((h,c)=>{c.exports=_jsx_runtime});var F={};j(F,{default:()=>x,frontmatter:()=>D});var r=M(i()),D={title:\\"AIOps\\",slug:\\"aiops\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return C(F);})();\\n;return Component;"},"_id":"tags/aiops.mdx","_raw":{"sourceFilePath":"tags/aiops.mdx","sourceFileName":"aiops.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/aiops"},"type":"Tag","url":"/tags/aiops"},{"title":"AKS","slug":"aks","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},u=(t,n,e,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of l(n))!g.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(s=_(n,o))||s.enumerable});return t};var M=(t,n,e)=>(e=t!=null?f(d(t)):{},u(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),C=t=>u(a({},\\"__esModule\\",{value:!0}),t);var m=j((h,c)=>{c.exports=_jsx_runtime});var F={};p(F,{default:()=>i,frontmatter:()=>D});var r=M(m()),D={title:\\"AKS\\",slug:\\"aks\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return C(F);})();\\n;return Component;"},"_id":"tags/aks.mdx","_raw":{"sourceFilePath":"tags/aks.mdx","sourceFileName":"aks.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/aks"},"type":"Tag","url":"/tags/aks"},{"title":"Amazon ECS","slug":"amazon-ecs","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},s=(t,n,e,m)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of l(n))!g.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(m=_(n,o))||m.enumerable});return t};var C=(t,n,e)=>(e=t!=null?f(d(t)):{},s(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),M=t=>s(a({},\\"__esModule\\",{value:!0}),t);var u=j((X,c)=>{c.exports=_jsx_runtime});var D={};p(D,{default:()=>i,frontmatter:()=>z});var r=C(u()),z={title:\\"Amazon ECS\\",slug:\\"amazon-ecs\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return M(D);})();\\n;return Component;"},"_id":"tags/amazon-ecs.mdx","_raw":{"sourceFilePath":"tags/amazon-ecs.mdx","sourceFileName":"amazon-ecs.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/amazon-ecs"},"type":"Tag","url":"/tags/amazon-ecs"},{"title":"Amazon EMR","slug":"amazon-emr","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var M=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),j=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},s=(t,n,e,m)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of l(n))!d.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(m=_(n,o))||m.enumerable});return t};var p=(t,n,e)=>(e=t!=null?f(M(t)):{},s(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),z=t=>s(a({},\\"__esModule\\",{value:!0}),t);var c=g((X,u)=>{u.exports=_jsx_runtime});var D={};j(D,{default:()=>i,frontmatter:()=>C});var r=p(c()),C={title:\\"Amazon EMR\\",slug:\\"amazon-emr\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return z(D);})();\\n;return Component;"},"_id":"tags/amazon-emr.mdx","_raw":{"sourceFilePath":"tags/amazon-emr.mdx","sourceFileName":"amazon-emr.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/amazon-emr"},"type":"Tag","url":"/tags/amazon-emr"},{"title":"APM","slug":"apm","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,M=Object.prototype.hasOwnProperty;var d=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),g=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},s=(t,n,e,m)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of l(n))!M.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(m=_(n,o))||m.enumerable});return t};var j=(t,n,e)=>(e=t!=null?f(p(t)):{},s(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),C=t=>s(a({},\\"__esModule\\",{value:!0}),t);var c=d((h,u)=>{u.exports=_jsx_runtime});var F={};g(F,{default:()=>i,frontmatter:()=>D});var r=j(c()),D={title:\\"APM\\",slug:\\"apm\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return C(F);})();\\n;return Component;"},"_id":"tags/apm.mdx","_raw":{"sourceFilePath":"tags/apm.mdx","sourceFileName":"apm.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/apm"},"type":"Tag","url":"/tags/apm"},{"title":"AWS API Gateway","slug":"aws-api-gateway","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var o=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty;var w=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),d=(t,e)=>{for(var n in e)o(t,n,{get:e[n],enumerable:!0})},u=(t,e,n,s)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let a of g(e))!p.call(t,a)&&a!==n&&o(t,a,{get:()=>e[a],enumerable:!(s=_(e,a))||s.enumerable});return t};var j=(t,e,n)=>(n=t!=null?f(l(t)):{},u(e||!t||!t.__esModule?o(n,\\"default\\",{value:t,enumerable:!0}):n,t)),y=t=>u(o({},\\"__esModule\\",{value:!0}),t);var i=w((D,c)=>{c.exports=_jsx_runtime});var A={};d(A,{default:()=>x,frontmatter:()=>M});var r=j(i()),M={title:\\"AWS API Gateway\\",slug:\\"aws-api-gateway\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return y(A);})();\\n;return Component;"},"_id":"tags/aws-api-gateway.mdx","_raw":{"sourceFilePath":"tags/aws-api-gateway.mdx","sourceFileName":"aws-api-gateway.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/aws-api-gateway"},"type":"Tag","url":"/tags/aws-api-gateway"},{"title":"AWS App Runner","slug":"aws-app-runner","body":{"raw":"","code":"var Component=(()=>{var i=Object.create;var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),j=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},s=(t,n,e,u)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of _(n))!d.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(u=f(n,o))||u.enumerable});return t};var M=(t,n,e)=>(e=t!=null?i(l(t)):{},s(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),w=t=>s(a({},\\"__esModule\\",{value:!0}),t);var m=g((F,c)=>{c.exports=_jsx_runtime});var C={};j(C,{default:()=>x,frontmatter:()=>A});var r=M(m()),A={title:\\"AWS App Runner\\",slug:\\"aws-app-runner\\"};function p(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(p,{...t})}):p(t)}return w(C);})();\\n;return Component;"},"_id":"tags/aws-app-runner.mdx","_raw":{"sourceFilePath":"tags/aws-app-runner.mdx","sourceFileName":"aws-app-runner.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/aws-app-runner"},"type":"Tag","url":"/tags/aws-app-runner"},{"title":"AWS Bedrock","slug":"aws-bedrock","body":{"raw":"","code":"var Component=(()=>{var d=Object.create;var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),p=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},s=(t,e,n,c)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of _(e))!g.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(c=f(e,o))||c.enumerable});return t};var M=(t,e,n)=>(n=t!=null?d(l(t)):{},s(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),k=t=>s(a({},\\"__esModule\\",{value:!0}),t);var m=j((F,u)=>{u.exports=_jsx_runtime});var C={};p(C,{default:()=>i,frontmatter:()=>w});var r=M(m()),w={title:\\"AWS Bedrock\\",slug:\\"aws-bedrock\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return k(C);})();\\n;return Component;"},"_id":"tags/aws-bedrock.mdx","_raw":{"sourceFilePath":"tags/aws-bedrock.mdx","sourceFileName":"aws-bedrock.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/aws-bedrock"},"type":"Tag","url":"/tags/aws-bedrock"},{"title":"AWS Fargate","slug":"aws-fargate","body":{"raw":"","code":"var Component=(()=>{var i=Object.create;var o=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var j=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),p=(t,e)=>{for(var n in e)o(t,n,{get:e[n],enumerable:!0})},u=(t,e,n,s)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let a of _(e))!d.call(t,a)&&a!==n&&o(t,a,{get:()=>e[a],enumerable:!(s=g(e,a))||s.enumerable});return t};var F=(t,e,n)=>(n=t!=null?i(l(t)):{},u(e||!t||!t.__esModule?o(n,\\"default\\",{value:t,enumerable:!0}):n,t)),M=t=>u(o({},\\"__esModule\\",{value:!0}),t);var m=j((X,c)=>{c.exports=_jsx_runtime});var C={};p(C,{default:()=>f,frontmatter:()=>w});var r=F(m()),w={title:\\"AWS Fargate\\",slug:\\"aws-fargate\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function f(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return M(C);})();\\n;return Component;"},"_id":"tags/aws-fargate.mdx","_raw":{"sourceFilePath":"tags/aws-fargate.mdx","sourceFileName":"aws-fargate.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/aws-fargate"},"type":"Tag","url":"/tags/aws-fargate"},{"title":"AWS Kinesis Data Firehose","slug":"aws-kinesis-data-firehose","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var s=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var h=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),j=(t,e)=>{for(var n in e)s(t,n,{get:e[n],enumerable:!0})},i=(t,e,n,a)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of d(e))!g.call(t,o)&&o!==n&&s(t,o,{get:()=>e[o],enumerable:!(a=_(e,o))||a.enumerable});return t};var p=(t,e,n)=>(n=t!=null?f(l(t)):{},i(e||!t||!t.__esModule?s(n,\\"default\\",{value:t,enumerable:!0}):n,t)),D=t=>i(s({},\\"__esModule\\",{value:!0}),t);var c=h((C,u)=>{u.exports=_jsx_runtime});var M={};j(M,{default:()=>x,frontmatter:()=>F});var r=p(c()),F={title:\\"AWS Kinesis Data Firehose\\",slug:\\"aws-kinesis-data-firehose\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return D(M);})();\\n;return Component;"},"_id":"tags/aws-kinesis-data-firehose.mdx","_raw":{"sourceFilePath":"tags/aws-kinesis-data-firehose.mdx","sourceFileName":"aws-kinesis-data-firehose.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/aws-kinesis-data-firehose"},"type":"Tag","url":"/tags/aws-kinesis-data-firehose"},{"title":"AWS VPC Flow Logs","slug":"aws-vpc-flow-logs","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var s=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty;var w=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),d=(t,n)=>{for(var e in n)s(t,e,{get:n[e],enumerable:!0})},c=(t,n,e,a)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let r of g(n))!p.call(t,r)&&r!==e&&s(t,r,{get:()=>n[r],enumerable:!(a=i(n,r))||a.enumerable});return t};var j=(t,n,e)=>(e=t!=null?f(_(t)):{},c(n||!t||!t.__esModule?s(e,\\"default\\",{value:t,enumerable:!0}):e,t)),C=t=>c(s({},\\"__esModule\\",{value:!0}),t);var l=w((L,u)=>{u.exports=_jsx_runtime});var M={};d(M,{default:()=>x,frontmatter:()=>F});var o=j(l()),F={title:\\"AWS VPC Flow Logs\\",slug:\\"aws-vpc-flow-logs\\"};function m(t){return(0,o.jsx)(o.Fragment,{})}function x(t={}){let{wrapper:n}=t.components||{};return n?(0,o.jsx)(n,{...t,children:(0,o.jsx)(m,{...t})}):m(t)}return C(M);})();\\n;return Component;"},"_id":"tags/aws-vpc-flow-logs.mdx","_raw":{"sourceFilePath":"tags/aws-vpc-flow-logs.mdx","sourceFileName":"aws-vpc-flow-logs.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/aws-vpc-flow-logs"},"type":"Tag","url":"/tags/aws-vpc-flow-logs"},{"title":"AWS VPC Flow","slug":"aws-vpc-flow","body":{"raw":"","code":"var Component=(()=>{var i=Object.create;var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var d=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),g=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},c=(t,n,e,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of _(n))!w.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(s=l(n,o))||s.enumerable});return t};var j=(t,n,e)=>(e=t!=null?i(p(t)):{},c(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),C=t=>c(a({},\\"__esModule\\",{value:!0}),t);var m=d((X,u)=>{u.exports=_jsx_runtime});var M={};g(M,{default:()=>f,frontmatter:()=>F});var r=j(m()),F={title:\\"AWS VPC Flow\\",slug:\\"aws-vpc-flow\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function f(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return C(M);})();\\n;return Component;"},"_id":"tags/aws-vpc-flow.mdx","_raw":{"sourceFilePath":"tags/aws-vpc-flow.mdx","sourceFileName":"aws-vpc-flow.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/aws-vpc-flow"},"type":"Tag","url":"/tags/aws-vpc-flow"},{"title":"AWS","slug":"aws","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},u=(t,n,e,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of l(n))!g.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(s=_(n,o))||s.enumerable});return t};var M=(t,n,e)=>(e=t!=null?f(d(t)):{},u(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),w=t=>u(a({},\\"__esModule\\",{value:!0}),t);var m=j((X,c)=>{c.exports=_jsx_runtime});var D={};p(D,{default:()=>i,frontmatter:()=>C});var r=M(m()),C={title:\\"AWS\\",slug:\\"aws\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return w(D);})();\\n;return Component;"},"_id":"tags/aws.mdx","_raw":{"sourceFilePath":"tags/aws.mdx","sourceFileName":"aws.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/aws"},"type":"Tag","url":"/tags/aws"},{"title":"Azure Container Apps","slug":"azure-container-apps","body":{"raw":"","code":"var Component=(()=>{var x=Object.create;var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),j=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},u=(t,n,e,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of _(n))!d.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(s=f(n,o))||s.enumerable});return t};var C=(t,n,e)=>(e=t!=null?x(l(t)):{},u(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),M=t=>u(a({},\\"__esModule\\",{value:!0}),t);var i=g((F,c)=>{c.exports=_jsx_runtime});var A={};j(A,{default:()=>p,frontmatter:()=>z});var r=C(i()),z={title:\\"Azure Container Apps\\",slug:\\"azure-container-apps\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function p(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return M(A);})();\\n;return Component;"},"_id":"tags/azure-container-apps.mdx","_raw":{"sourceFilePath":"tags/azure-container-apps.mdx","sourceFileName":"azure-container-apps.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/azure-container-apps"},"type":"Tag","url":"/tags/azure-container-apps"},{"title":"Azure OpenAI","slug":"azure-openai","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),j=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},s=(t,e,n,u)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of _(e))!d.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(u=p(e,o))||u.enumerable});return t};var M=(t,e,n)=>(n=t!=null?f(l(t)):{},s(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),z=t=>s(a({},\\"__esModule\\",{value:!0}),t);var i=g((F,c)=>{c.exports=_jsx_runtime});var C={};j(C,{default:()=>x,frontmatter:()=>A});var r=M(i()),A={title:\\"Azure OpenAI\\",slug:\\"azure-openai\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return z(C);})();\\n;return Component;"},"_id":"tags/azure-openai.mdx","_raw":{"sourceFilePath":"tags/azure-openai.mdx","sourceFileName":"azure-openai.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/azure-openai"},"type":"Tag","url":"/tags/azure-openai"},{"title":"Azure","slug":"azure","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),p=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},s=(t,e,n,u)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of l(e))!g.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(u=_(e,o))||u.enumerable});return t};var M=(t,e,n)=>(n=t!=null?f(d(t)):{},s(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),z=t=>s(a({},\\"__esModule\\",{value:!0}),t);var m=j((X,c)=>{c.exports=_jsx_runtime});var D={};p(D,{default:()=>i,frontmatter:()=>C});var r=M(m()),C={title:\\"Azure\\",slug:\\"azure\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return z(D);})();\\n;return Component;"},"_id":"tags/azure.mdx","_raw":{"sourceFilePath":"tags/azure.mdx","sourceFileName":"azure.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/azure"},"type":"Tag","url":"/tags/azure"},{"title":"Cloud Monitoring","slug":"cloud-monitoring","body":{"raw":"","code":"var Component=(()=>{var l=Object.create;var i=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var M=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),j=(t,n)=>{for(var o in n)i(t,o,{get:n[o],enumerable:!0})},a=(t,n,o,u)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let r of f(n))!_.call(t,r)&&r!==o&&i(t,r,{get:()=>n[r],enumerable:!(u=d(n,r))||u.enumerable});return t};var p=(t,n,o)=>(o=t!=null?l(g(t)):{},a(n||!t||!t.__esModule?i(o,\\"default\\",{value:t,enumerable:!0}):o,t)),C=t=>a(i({},\\"__esModule\\",{value:!0}),t);var m=M((h,c)=>{c.exports=_jsx_runtime});var F={};j(F,{default:()=>x,frontmatter:()=>D});var e=p(m()),D={title:\\"Cloud Monitoring\\",slug:\\"cloud-monitoring\\"};function s(t){return(0,e.jsx)(e.Fragment,{})}function x(t={}){let{wrapper:n}=t.components||{};return n?(0,e.jsx)(n,{...t,children:(0,e.jsx)(s,{...t})}):s(t)}return C(F);})();\\n;return Component;"},"_id":"tags/cloud-monitoring.mdx","_raw":{"sourceFilePath":"tags/cloud-monitoring.mdx","sourceFileName":"cloud-monitoring.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/cloud-monitoring"},"type":"Tag","url":"/tags/cloud-monitoring"},{"title":"Confluent","slug":"confluent","body":{"raw":"","code":"var Component=(()=>{var i=Object.create;var u=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)u(t,e,{get:n[e],enumerable:!0})},c=(t,n,e,a)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of _(n))!g.call(t,o)&&o!==e&&u(t,o,{get:()=>n[o],enumerable:!(a=l(n,o))||a.enumerable});return t};var C=(t,n,e)=>(e=t!=null?i(d(t)):{},c(n||!t||!t.__esModule?u(e,\\"default\\",{value:t,enumerable:!0}):e,t)),M=t=>c(u({},\\"__esModule\\",{value:!0}),t);var f=j((h,s)=>{s.exports=_jsx_runtime});var F={};p(F,{default:()=>x,frontmatter:()=>D});var r=C(f()),D={title:\\"Confluent\\",slug:\\"confluent\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return M(F);})();\\n;return Component;"},"_id":"tags/confluent.mdx","_raw":{"sourceFilePath":"tags/confluent.mdx","sourceFileName":"confluent.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/confluent"},"type":"Tag","url":"/tags/confluent"},{"title":"Containers","slug":"containers","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},c=(t,n,e,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of l(n))!g.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(s=_(n,o))||s.enumerable});return t};var C=(t,n,e)=>(e=t!=null?f(d(t)):{},c(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),M=t=>c(a({},\\"__esModule\\",{value:!0}),t);var u=j((h,i)=>{i.exports=_jsx_runtime});var F={};p(F,{default:()=>x,frontmatter:()=>D});var r=C(u()),D={title:\\"Containers\\",slug:\\"containers\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return M(F);})();\\n;return Component;"},"_id":"tags/containers.mdx","_raw":{"sourceFilePath":"tags/containers.mdx","sourceFileName":"containers.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/containers"},"type":"Tag","url":"/tags/containers"},{"title":"Contribution","slug":"contribution","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var i=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)i(t,e,{get:n[e],enumerable:!0})},a=(t,n,e,u)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of l(n))!g.call(t,o)&&o!==e&&i(t,o,{get:()=>n[o],enumerable:!(u=_(n,o))||u.enumerable});return t};var C=(t,n,e)=>(e=t!=null?f(d(t)):{},a(n||!t||!t.__esModule?i(e,\\"default\\",{value:t,enumerable:!0}):e,t)),M=t=>a(i({},\\"__esModule\\",{value:!0}),t);var s=j((X,c)=>{c.exports=_jsx_runtime});var D={};p(D,{default:()=>x,frontmatter:()=>b});var r=C(s()),b={title:\\"Contribution\\",slug:\\"contribution\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return M(D);})();\\n;return Component;"},"_id":"tags/contribution.mdx","_raw":{"sourceFilePath":"tags/contribution.mdx","sourceFileName":"contribution.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/contribution"},"type":"Tag","url":"/tags/contribution"},{"title":"Cost","slug":"cost","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var s=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)s(t,e,{get:n[e],enumerable:!0})},c=(t,n,e,a)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of l(n))!g.call(t,o)&&o!==e&&s(t,o,{get:()=>n[o],enumerable:!(a=_(n,o))||a.enumerable});return t};var C=(t,n,e)=>(e=t!=null?f(d(t)):{},c(n||!t||!t.__esModule?s(e,\\"default\\",{value:t,enumerable:!0}):e,t)),M=t=>c(s({},\\"__esModule\\",{value:!0}),t);var m=j((h,u)=>{u.exports=_jsx_runtime});var F={};p(F,{default:()=>i,frontmatter:()=>D});var r=C(m()),D={title:\\"Cost\\",slug:\\"cost\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return M(F);})();\\n;return Component;"},"_id":"tags/cost.mdx","_raw":{"sourceFilePath":"tags/cost.mdx","sourceFileName":"cost.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/cost"},"type":"Tag","url":"/tags/cost"},{"title":"Digital Experience","slug":"digital-experience","body":{"raw":"","code":"var Component=(()=>{var l=Object.create;var i=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var d=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),j=(t,e)=>{for(var n in e)i(t,n,{get:e[n],enumerable:!0})},c=(t,e,n,a)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of g(e))!_.call(t,o)&&o!==n&&i(t,o,{get:()=>e[o],enumerable:!(a=f(e,o))||a.enumerable});return t};var D=(t,e,n)=>(n=t!=null?l(p(t)):{},c(e||!t||!t.__esModule?i(n,\\"default\\",{value:t,enumerable:!0}):n,t)),M=t=>c(i({},\\"__esModule\\",{value:!0}),t);var s=d((h,x)=>{x.exports=_jsx_runtime});var F={};j(F,{default:()=>m,frontmatter:()=>C});var r=D(s()),C={title:\\"Digital Experience\\",slug:\\"digital-experience\\"};function u(t){return(0,r.jsx)(r.Fragment,{})}function m(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}return M(F);})();\\n;return Component;"},"_id":"tags/digital-experience.mdx","_raw":{"sourceFilePath":"tags/digital-experience.mdx","sourceFileName":"digital-experience.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/digital-experience"},"type":"Tag","url":"/tags/digital-experience"},{"title":"Distributed Tracing","slug":"distributed-tracing","body":{"raw":"","code":"var Component=(()=>{var d=Object.create;var i=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)i(t,e,{get:n[e],enumerable:!0})},s=(t,n,e,a)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of g(n))!l.call(t,o)&&o!==e&&i(t,o,{get:()=>n[o],enumerable:!(a=f(n,o))||a.enumerable});return t};var D=(t,n,e)=>(e=t!=null?d(_(t)):{},s(n||!t||!t.__esModule?i(e,\\"default\\",{value:t,enumerable:!0}):e,t)),M=t=>s(i({},\\"__esModule\\",{value:!0}),t);var c=j((X,u)=>{u.exports=_jsx_runtime});var C={};p(C,{default:()=>x,frontmatter:()=>b});var r=D(c()),b={title:\\"Distributed Tracing\\",slug:\\"distributed-tracing\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return M(C);})();\\n;return Component;"},"_id":"tags/distributed-tracing.mdx","_raw":{"sourceFilePath":"tags/distributed-tracing.mdx","sourceFileName":"distributed-tracing.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/distributed-tracing"},"type":"Tag","url":"/tags/distributed-tracing"},{"title":"Elastic Common Schema (ECS)","slug":"ecs","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),j=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},m=(t,e,n,c)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of _(e))!d.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(c=l(e,o))||c.enumerable});return t};var p=(t,e,n)=>(n=t!=null?f(C(t)):{},m(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),M=t=>m(a({},\\"__esModule\\",{value:!0}),t);var u=g((F,s)=>{s.exports=_jsx_runtime});var D={};j(D,{default:()=>x,frontmatter:()=>h});var r=p(u()),h={title:\\"Elastic Common Schema (ECS)\\",slug:\\"ecs\\"};function i(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(i,{...t})}):i(t)}return M(D);})();\\n;return Component;"},"_id":"tags/ecs.mdx","_raw":{"sourceFilePath":"tags/ecs.mdx","sourceFileName":"ecs.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/ecs"},"type":"Tag","url":"/tags/ecs"},{"title":"Elastic Agent","slug":"elastic-agent","body":{"raw":"","code":"var Component=(()=>{var l=Object.create;var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var j=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),p=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},c=(t,e,n,s)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of g(e))!d.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(s=f(e,o))||s.enumerable});return t};var M=(t,e,n)=>(n=t!=null?l(_(t)):{},c(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),C=t=>c(a({},\\"__esModule\\",{value:!0}),t);var u=j((h,i)=>{i.exports=_jsx_runtime});var F={};p(F,{default:()=>x,frontmatter:()=>D});var r=M(u()),D={title:\\"Elastic Agent\\",slug:\\"elastic-agent\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return C(F);})();\\n;return Component;"},"_id":"tags/elastic-agent.mdx","_raw":{"sourceFilePath":"tags/elastic-agent.mdx","sourceFileName":"elastic-agent.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/elastic-agent"},"type":"Tag","url":"/tags/elastic-agent"},{"title":"Elastic Architecture Enhancements","slug":"elastic-architecture-enhancements","body":{"raw":"","code":"var Component=(()=>{var l=Object.create;var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),j=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},s=(t,e,n,o)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let c of h(e))!d.call(t,c)&&c!==n&&a(t,c,{get:()=>e[c],enumerable:!(o=f(e,c))||o.enumerable});return t};var p=(t,e,n)=>(n=t!=null?l(_(t)):{},s(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),M=t=>s(a({},\\"__esModule\\",{value:!0}),t);var u=g((F,i)=>{i.exports=_jsx_runtime});var D={};j(D,{default:()=>x,frontmatter:()=>C});var r=p(u()),C={title:\\"Elastic Architecture Enhancements\\",slug:\\"elastic-architecture-enhancements\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return M(D);})();\\n;return Component;"},"_id":"tags/elastic-architecture-enhancements.mdx","_raw":{"sourceFilePath":"tags/elastic-architecture-enhancements.mdx","sourceFileName":"elastic-architecture-enhancements.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/elastic-architecture-enhancements"},"type":"Tag","url":"/tags/elastic-architecture-enhancements"},{"title":"ES|QL","slug":"es-ql","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),p=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},u=(t,e,n,s)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of _(e))!g.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(s=l(e,o))||s.enumerable});return t};var M=(t,e,n)=>(n=t!=null?f(d(t)):{},u(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),C=t=>u(a({},\\"__esModule\\",{value:!0}),t);var m=j((X,c)=>{c.exports=_jsx_runtime});var F={};p(F,{default:()=>i,frontmatter:()=>D});var r=M(m()),D={title:\\"ES|QL\\",slug:\\"es-ql\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return C(F);})();\\n;return Component;"},"_id":"tags/es-ql.mdx","_raw":{"sourceFilePath":"tags/es-ql.mdx","sourceFileName":"es-ql.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/es-ql"},"type":"Tag","url":"/tags/es-ql"},{"title":"ES|QL","slug":"esql","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),p=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},u=(t,e,n,s)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of _(e))!g.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(s=l(e,o))||s.enumerable});return t};var M=(t,e,n)=>(n=t!=null?f(d(t)):{},u(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),C=t=>u(a({},\\"__esModule\\",{value:!0}),t);var m=j((X,c)=>{c.exports=_jsx_runtime});var F={};p(F,{default:()=>i,frontmatter:()=>D});var r=M(m()),D={title:\\"ES|QL\\",slug:\\"esql\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return C(F);})();\\n;return Component;"},"_id":"tags/esql.mdx","_raw":{"sourceFilePath":"tags/esql.mdx","sourceFileName":"esql.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/esql"},"type":"Tag","url":"/tags/esql"},{"title":"ESRE","slug":"esre","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),p=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},u=(t,e,n,s)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of l(e))!g.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(s=_(e,o))||s.enumerable});return t};var M=(t,e,n)=>(n=t!=null?f(d(t)):{},u(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),C=t=>u(a({},\\"__esModule\\",{value:!0}),t);var m=j((X,c)=>{c.exports=_jsx_runtime});var E={};p(E,{default:()=>i,frontmatter:()=>D});var r=M(m()),D={title:\\"ESRE\\",slug:\\"esre\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return C(E);})();\\n;return Component;"},"_id":"tags/esre.mdx","_raw":{"sourceFilePath":"tags/esre.mdx","sourceFileName":"esre.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/esre"},"type":"Tag","url":"/tags/esre"},{"title":"GenAI","slug":"genai","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},u=(t,n,e,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of g(n))!d.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(s=_(n,o))||s.enumerable});return t};var M=(t,n,e)=>(e=t!=null?f(l(t)):{},u(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),C=t=>u(a({},\\"__esModule\\",{value:!0}),t);var i=j((h,c)=>{c.exports=_jsx_runtime});var F={};p(F,{default:()=>x,frontmatter:()=>D});var r=M(i()),D={title:\\"GenAI\\",slug:\\"genai\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return C(F);})();\\n;return Component;"},"_id":"tags/genai.mdx","_raw":{"sourceFilePath":"tags/genai.mdx","sourceFileName":"genai.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/genai"},"type":"Tag","url":"/tags/genai"},{"title":"GitOps","slug":"gitops","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var s=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty;var d=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),j=(t,n)=>{for(var e in n)s(t,e,{get:n[e],enumerable:!0})},i=(t,n,e,a)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of _(n))!l.call(t,o)&&o!==e&&s(t,o,{get:()=>n[o],enumerable:!(a=p(n,o))||a.enumerable});return t};var M=(t,n,e)=>(e=t!=null?f(g(t)):{},i(n||!t||!t.__esModule?s(e,\\"default\\",{value:t,enumerable:!0}):e,t)),C=t=>i(s({},\\"__esModule\\",{value:!0}),t);var c=d((h,u)=>{u.exports=_jsx_runtime});var F={};j(F,{default:()=>x,frontmatter:()=>D});var r=M(c()),D={title:\\"GitOps\\",slug:\\"gitops\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return C(F);})();\\n;return Component;"},"_id":"tags/gitops.mdx","_raw":{"sourceFilePath":"tags/gitops.mdx","sourceFileName":"gitops.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/gitops"},"type":"Tag","url":"/tags/gitops"},{"title":"GKE","slug":"gke","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var j=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),p=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},u=(t,e,n,s)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of g(e))!d.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(s=_(e,o))||s.enumerable});return t};var M=(t,e,n)=>(n=t!=null?f(l(t)):{},u(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),C=t=>u(a({},\\"__esModule\\",{value:!0}),t);var m=j((h,c)=>{c.exports=_jsx_runtime});var F={};p(F,{default:()=>i,frontmatter:()=>D});var r=M(m()),D={title:\\"GKE\\",slug:\\"gke\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return C(F);})();\\n;return Component;"},"_id":"tags/gke.mdx","_raw":{"sourceFilePath":"tags/gke.mdx","sourceFileName":"gke.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/gke"},"type":"Tag","url":"/tags/gke"},{"title":"Go","slug":"go","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},u=(t,n,e,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of g(n))!d.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(s=_(n,o))||s.enumerable});return t};var M=(t,n,e)=>(e=t!=null?f(l(t)):{},u(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),C=t=>u(a({},\\"__esModule\\",{value:!0}),t);var m=j((h,c)=>{c.exports=_jsx_runtime});var F={};p(F,{default:()=>i,frontmatter:()=>D});var r=M(m()),D={title:\\"Go\\",slug:\\"go\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return C(F);})();\\n;return Component;"},"_id":"tags/go.mdx","_raw":{"sourceFilePath":"tags/go.mdx","sourceFileName":"go.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/go"},"type":"Tag","url":"/tags/go"},{"title":"Google Cloud Run","slug":"google-cloud-run","body":{"raw":"","code":"var Component=(()=>{var g=Object.create;var u=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)u(t,e,{get:n[e],enumerable:!0})},c=(t,n,e,a)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let r of d(n))!_.call(t,r)&&r!==e&&u(t,r,{get:()=>n[r],enumerable:!(a=i(n,r))||a.enumerable});return t};var C=(t,n,e)=>(e=t!=null?g(f(t)):{},c(n||!t||!t.__esModule?u(e,\\"default\\",{value:t,enumerable:!0}):e,t)),M=t=>c(u({},\\"__esModule\\",{value:!0}),t);var s=j((h,l)=>{l.exports=_jsx_runtime});var F={};p(F,{default:()=>x,frontmatter:()=>D});var o=C(s()),D={title:\\"Google Cloud Run\\",slug:\\"google-cloud-run\\"};function m(t){return(0,o.jsx)(o.Fragment,{})}function x(t={}){let{wrapper:n}=t.components||{};return n?(0,o.jsx)(n,{...t,children:(0,o.jsx)(m,{...t})}):m(t)}return M(F);})();\\n;return Component;"},"_id":"tags/google-cloud-run.mdx","_raw":{"sourceFilePath":"tags/google-cloud-run.mdx","sourceFileName":"google-cloud-run.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/google-cloud-run"},"type":"Tag","url":"/tags/google-cloud-run"},{"title":"Google Cloud","slug":"google-cloud","body":{"raw":"","code":"var Component=(()=>{var g=Object.create;var u=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var j=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),p=(t,e)=>{for(var n in e)u(t,n,{get:e[n],enumerable:!0})},c=(t,e,n,a)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let r of d(e))!_.call(t,r)&&r!==n&&u(t,r,{get:()=>e[r],enumerable:!(a=i(e,r))||a.enumerable});return t};var C=(t,e,n)=>(n=t!=null?g(f(t)):{},c(e||!t||!t.__esModule?u(n,\\"default\\",{value:t,enumerable:!0}):n,t)),M=t=>c(u({},\\"__esModule\\",{value:!0}),t);var s=j((h,l)=>{l.exports=_jsx_runtime});var F={};p(F,{default:()=>x,frontmatter:()=>D});var o=C(s()),D={title:\\"Google Cloud\\",slug:\\"google-cloud\\"};function m(t){return(0,o.jsx)(o.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(m,{...t})}):m(t)}return M(F);})();\\n;return Component;"},"_id":"tags/google-cloud.mdx","_raw":{"sourceFilePath":"tags/google-cloud.mdx","sourceFileName":"google-cloud.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/google-cloud"},"type":"Tag","url":"/tags/google-cloud"},{"title":"Instrumentation","slug":"instrumentation","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},u=(t,n,e,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of l(n))!g.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(s=_(n,o))||s.enumerable});return t};var M=(t,n,e)=>(e=t!=null?f(d(t)):{},u(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),C=t=>u(a({},\\"__esModule\\",{value:!0}),t);var m=j((h,i)=>{i.exports=_jsx_runtime});var F={};p(F,{default:()=>x,frontmatter:()=>D});var r=M(m()),D={title:\\"Instrumentation\\",slug:\\"instrumentation\\"};function c(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(c,{...t})}):c(t)}return C(F);})();\\n;return Component;"},"_id":"tags/instrumentation.mdx","_raw":{"sourceFilePath":"tags/instrumentation.mdx","sourceFileName":"instrumentation.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/instrumentation"},"type":"Tag","url":"/tags/instrumentation"},{"title":"Java","slug":"java","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var o=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)o(t,e,{get:n[e],enumerable:!0})},u=(t,n,e,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let a of j(n))!d.call(t,a)&&a!==e&&o(t,a,{get:()=>n[a],enumerable:!(s=_(n,a))||s.enumerable});return t};var M=(t,n,e)=>(e=t!=null?f(l(t)):{},u(n||!t||!t.__esModule?o(e,\\"default\\",{value:t,enumerable:!0}):e,t)),v=t=>u(o({},\\"__esModule\\",{value:!0}),t);var m=g((X,c)=>{c.exports=_jsx_runtime});var D={};p(D,{default:()=>i,frontmatter:()=>C});var r=M(m()),C={title:\\"Java\\",slug:\\"java\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return v(D);})();\\n;return Component;"},"_id":"tags/java.mdx","_raw":{"sourceFilePath":"tags/java.mdx","sourceFileName":"java.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/java"},"type":"Tag","url":"/tags/java"},{"title":"javascript","slug":"javascript","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var o=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty;var d=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),g=(t,n)=>{for(var e in n)o(t,e,{get:n[e],enumerable:!0})},c=(t,n,e,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let a of p(n))!l.call(t,a)&&a!==e&&o(t,a,{get:()=>n[a],enumerable:!(s=j(n,a))||s.enumerable});return t};var M=(t,n,e)=>(e=t!=null?f(_(t)):{},c(n||!t||!t.__esModule?o(e,\\"default\\",{value:t,enumerable:!0}):e,t)),v=t=>c(o({},\\"__esModule\\",{value:!0}),t);var u=d((X,i)=>{i.exports=_jsx_runtime});var D={};g(D,{default:()=>x,frontmatter:()=>C});var r=M(u()),C={title:\\"javascript\\",slug:\\"javascript\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return v(D);})();\\n;return Component;"},"_id":"tags/javascript.mdx","_raw":{"sourceFilePath":"tags/javascript.mdx","sourceFileName":"javascript.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/javascript"},"type":"Tag","url":"/tags/javascript"},{"title":"KQL","slug":"kql","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},u=(t,n,e,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of _(n))!g.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(s=l(n,o))||s.enumerable});return t};var M=(t,n,e)=>(e=t!=null?f(d(t)):{},u(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),C=t=>u(a({},\\"__esModule\\",{value:!0}),t);var m=j((X,c)=>{c.exports=_jsx_runtime});var F={};p(F,{default:()=>i,frontmatter:()=>D});var r=M(m()),D={title:\\"KQL\\",slug:\\"kql\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return C(F);})();\\n;return Component;"},"_id":"tags/kql.mdx","_raw":{"sourceFilePath":"tags/kql.mdx","sourceFileName":"kql.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/kql"},"type":"Tag","url":"/tags/kql"},{"title":"Kubernetes","slug":"kubernetes","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var s=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),p=(t,e)=>{for(var n in e)s(t,n,{get:e[n],enumerable:!0})},a=(t,e,n,u)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of l(e))!g.call(t,o)&&o!==n&&s(t,o,{get:()=>e[o],enumerable:!(u=_(e,o))||u.enumerable});return t};var M=(t,e,n)=>(n=t!=null?f(d(t)):{},a(e||!t||!t.__esModule?s(n,\\"default\\",{value:t,enumerable:!0}):n,t)),b=t=>a(s({},\\"__esModule\\",{value:!0}),t);var m=j((X,c)=>{c.exports=_jsx_runtime});var D={};p(D,{default:()=>i,frontmatter:()=>C});var r=M(m()),C={title:\\"Kubernetes\\",slug:\\"kubernetes\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return b(D);})();\\n;return Component;"},"_id":"tags/kubernetes.mdx","_raw":{"sourceFilePath":"tags/kubernetes.mdx","sourceFileName":"kubernetes.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/kubernetes"},"type":"Tag","url":"/tags/kubernetes"},{"title":"Log Analytics","slug":"log-analytics","body":{"raw":"","code":"var Component=(()=>{var x=Object.create;var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},c=(t,n,e,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of g(n))!d.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(s=f(n,o))||s.enumerable});return t};var y=(t,n,e)=>(e=t!=null?x(_(t)):{},c(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),M=t=>c(a({},\\"__esModule\\",{value:!0}),t);var u=j((L,i)=>{i.exports=_jsx_runtime});var D={};p(D,{default:()=>m,frontmatter:()=>C});var r=y(u()),C={title:\\"Log Analytics\\",slug:\\"log-analytics\\"};function l(t){return(0,r.jsx)(r.Fragment,{})}function m(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(l,{...t})}):l(t)}return M(D);})();\\n;return Component;"},"_id":"tags/log-analytics.mdx","_raw":{"sourceFilePath":"tags/log-analytics.mdx","sourceFileName":"log-analytics.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/log-analytics"},"type":"Tag","url":"/tags/log-analytics"},{"title":"logging","slug":"logging","body":{"raw":"","code":"var Component=(()=>{var x=Object.create;var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},i=(t,n,e,g)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of f(n))!d.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(g=l(n,o))||g.enumerable});return t};var M=(t,n,e)=>(e=t!=null?x(_(t)):{},i(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),C=t=>i(a({},\\"__esModule\\",{value:!0}),t);var u=j((h,s)=>{s.exports=_jsx_runtime});var F={};p(F,{default:()=>m,frontmatter:()=>D});var r=M(u()),D={title:\\"logging\\",slug:\\"logging\\"};function c(t){return(0,r.jsx)(r.Fragment,{})}function m(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(c,{...t})}):c(t)}return C(F);})();\\n;return Component;"},"_id":"tags/logging.mdx","_raw":{"sourceFilePath":"tags/logging.mdx","sourceFileName":"logging.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/logging"},"type":"Tag","url":"/tags/logging"},{"title":"Machine Learning","slug":"machine-learning","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var o=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,M=Object.prototype.hasOwnProperty;var d=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),h=(t,n)=>{for(var e in n)o(t,e,{get:n[e],enumerable:!0})},c=(t,n,e,i)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let a of l(n))!M.call(t,a)&&a!==e&&o(t,a,{get:()=>n[a],enumerable:!(i=g(n,a))||i.enumerable});return t};var j=(t,n,e)=>(e=t!=null?f(_(t)):{},c(n||!t||!t.__esModule?o(e,\\"default\\",{value:t,enumerable:!0}):e,t)),p=t=>c(o({},\\"__esModule\\",{value:!0}),t);var s=d((L,m)=>{m.exports=_jsx_runtime});var D={};h(D,{default:()=>x,frontmatter:()=>C});var r=j(s()),C={title:\\"Machine Learning\\",slug:\\"machine-learning\\"};function u(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}return p(D);})();\\n;return Component;"},"_id":"tags/machine-learning.mdx","_raw":{"sourceFilePath":"tags/machine-learning.mdx","sourceFileName":"machine-learning.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/machine-learning"},"type":"Tag","url":"/tags/machine-learning"},{"title":"Metrics","slug":"metrics","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var s=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var M=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),j=(t,e)=>{for(var n in e)s(t,n,{get:e[n],enumerable:!0})},c=(t,e,n,a)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of l(e))!d.call(t,o)&&o!==n&&s(t,o,{get:()=>e[o],enumerable:!(a=_(e,o))||a.enumerable});return t};var p=(t,e,n)=>(n=t!=null?f(M(t)):{},c(e||!t||!t.__esModule?s(n,\\"default\\",{value:t,enumerable:!0}):n,t)),C=t=>c(s({},\\"__esModule\\",{value:!0}),t);var m=g((h,i)=>{i.exports=_jsx_runtime});var F={};j(F,{default:()=>x,frontmatter:()=>D});var r=p(m()),D={title:\\"Metrics\\",slug:\\"metrics\\"};function u(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}return C(F);})();\\n;return Component;"},"_id":"tags/metrics.mdx","_raw":{"sourceFilePath":"tags/metrics.mdx","sourceFileName":"metrics.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/metrics"},"type":"Tag","url":"/tags/metrics"},{"title":"Mobile APM","slug":"mobile-apm","body":{"raw":"","code":"var Component=(()=>{var l=Object.create;var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty;var d=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),g=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},i=(t,e,n,m)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of M(e))!p.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(m=f(e,o))||m.enumerable});return t};var j=(t,e,n)=>(n=t!=null?l(_(t)):{},i(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),b=t=>i(a({},\\"__esModule\\",{value:!0}),t);var u=d((X,s)=>{s.exports=_jsx_runtime});var D={};g(D,{default:()=>x,frontmatter:()=>C});var r=j(u()),C={title:\\"Mobile APM\\",slug:\\"mobile-apm\\"};function c(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(c,{...t})}):c(t)}return b(D);})();\\n;return Component;"},"_id":"tags/mobile-apm.mdx","_raw":{"sourceFilePath":"tags/mobile-apm.mdx","sourceFileName":"mobile-apm.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/mobile-apm"},"type":"Tag","url":"/tags/mobile-apm"},{"title":".NET","slug":"net","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},u=(t,n,e,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of l(n))!g.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(s=_(n,o))||s.enumerable});return t};var M=(t,n,e)=>(e=t!=null?f(d(t)):{},u(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),C=t=>u(a({},\\"__esModule\\",{value:!0}),t);var m=j((h,c)=>{c.exports=_jsx_runtime});var F={};p(F,{default:()=>i,frontmatter:()=>D});var r=M(m()),D={title:\\".NET\\",slug:\\"net\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return C(F);})();\\n;return Component;"},"_id":"tags/net.mdx","_raw":{"sourceFilePath":"tags/net.mdx","sourceFileName":"net.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/net"},"type":"Tag","url":"/tags/net"},{"title":"Nginx","slug":"nginx","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},i=(t,n,e,x)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of _(n))!d.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(x=g(n,o))||x.enumerable});return t};var M=(t,n,e)=>(e=t!=null?f(l(t)):{},i(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),C=t=>i(a({},\\"__esModule\\",{value:!0}),t);var u=j((h,s)=>{s.exports=_jsx_runtime});var F={};p(F,{default:()=>m,frontmatter:()=>D});var r=M(u()),D={title:\\"Nginx\\",slug:\\"nginx\\"};function c(t){return(0,r.jsx)(r.Fragment,{})}function m(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(c,{...t})}):c(t)}return C(F);})();\\n;return Component;"},"_id":"tags/nginx.mdx","_raw":{"sourceFilePath":"tags/nginx.mdx","sourceFileName":"nginx.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/nginx"},"type":"Tag","url":"/tags/nginx"},{"title":"NodeJS","slug":"nodejs","body":{"raw":"","code":"var Component=(()=>{var d=Object.create;var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty;var g=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),p=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},u=(t,e,n,s)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of _(e))!l.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(s=f(e,o))||s.enumerable});return t};var M=(t,e,n)=>(n=t!=null?d(j(t)):{},u(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),C=t=>u(a({},\\"__esModule\\",{value:!0}),t);var m=g((h,c)=>{c.exports=_jsx_runtime});var F={};p(F,{default:()=>i,frontmatter:()=>D});var r=M(m()),D={title:\\"NodeJS\\",slug:\\"nodejs\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return C(F);})();\\n;return Component;"},"_id":"tags/nodejs.mdx","_raw":{"sourceFilePath":"tags/nodejs.mdx","sourceFileName":"nodejs.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/nodejs"},"type":"Tag","url":"/tags/nodejs"},{"title":"OpenAI","slug":"openai","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),j=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},u=(t,n,e,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of _(n))!d.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(s=p(n,o))||s.enumerable});return t};var M=(t,n,e)=>(e=t!=null?f(l(t)):{},u(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),C=t=>u(a({},\\"__esModule\\",{value:!0}),t);var i=g((h,c)=>{c.exports=_jsx_runtime});var F={};j(F,{default:()=>x,frontmatter:()=>D});var r=M(i()),D={title:\\"OpenAI\\",slug:\\"openai\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return C(F);})();\\n;return Component;"},"_id":"tags/openai.mdx","_raw":{"sourceFilePath":"tags/openai.mdx","sourceFileName":"openai.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/openai"},"type":"Tag","url":"/tags/openai"},{"title":"Opensearch","slug":"opensearch","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),h=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},c=(t,e,n,s)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of _(e))!d.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(s=p(e,o))||s.enumerable});return t};var j=(t,e,n)=>(n=t!=null?f(l(t)):{},c(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),M=t=>c(a({},\\"__esModule\\",{value:!0}),t);var m=g((X,u)=>{u.exports=_jsx_runtime});var D={};h(D,{default:()=>i,frontmatter:()=>C});var r=j(m()),C={title:\\"Opensearch\\",slug:\\"opensearch\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return M(D);})();\\n;return Component;"},"_id":"tags/opensearch.mdx","_raw":{"sourceFilePath":"tags/opensearch.mdx","sourceFileName":"opensearch.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/opensearch"},"type":"Tag","url":"/tags/opensearch"},{"title":"OpenTelemetrry","slug":"opentelemetrry","body":{"raw":"","code":"var Component=(()=>{var l=Object.create;var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),j=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},s=(t,e,n,m)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of p(e))!d.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(m=f(e,o))||m.enumerable});return t};var y=(t,e,n)=>(n=t!=null?l(_(t)):{},s(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),M=t=>s(a({},\\"__esModule\\",{value:!0}),t);var c=g((X,u)=>{u.exports=_jsx_runtime});var D={};j(D,{default:()=>i,frontmatter:()=>C});var r=y(c()),C={title:\\"OpenTelemetrry\\",slug:\\"opentelemetrry\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return M(D);})();\\n;return Component;"},"_id":"tags/opentelemetrry.mdx","_raw":{"sourceFilePath":"tags/opentelemetrry.mdx","sourceFileName":"opentelemetrry.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/opentelemetrry"},"type":"Tag","url":"/tags/opentelemetrry"},{"title":"OpenTelemetry","slug":"opentelemetry","body":{"raw":"","code":"var Component=(()=>{var l=Object.create;var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),j=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},s=(t,e,n,m)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of p(e))!d.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(m=f(e,o))||m.enumerable});return t};var y=(t,e,n)=>(n=t!=null?l(_(t)):{},s(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),M=t=>s(a({},\\"__esModule\\",{value:!0}),t);var c=g((X,u)=>{u.exports=_jsx_runtime});var D={};j(D,{default:()=>i,frontmatter:()=>C});var r=y(c()),C={title:\\"OpenTelemetry\\",slug:\\"opentelemetry\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return M(D);})();\\n;return Component;"},"_id":"tags/opentelemetry.mdx","_raw":{"sourceFilePath":"tags/opentelemetry.mdx","sourceFileName":"opentelemetry.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/opentelemetry"},"type":"Tag","url":"/tags/opentelemetry"},{"title":"PHP","slug":"php","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),j=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},u=(t,n,e,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of _(n))!d.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(s=p(n,o))||s.enumerable});return t};var M=(t,n,e)=>(e=t!=null?f(l(t)):{},u(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),h=t=>u(a({},\\"__esModule\\",{value:!0}),t);var m=g((P,c)=>{c.exports=_jsx_runtime});var D={};j(D,{default:()=>i,frontmatter:()=>C});var r=M(m()),C={title:\\"PHP\\",slug:\\"php\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return h(D);})();\\n;return Component;"},"_id":"tags/php.mdx","_raw":{"sourceFilePath":"tags/php.mdx","sourceFileName":"php.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/php"},"type":"Tag","url":"/tags/php"},{"title":"Prometheus","slug":"prometheus","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var s=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),h=(t,e)=>{for(var n in e)s(t,n,{get:e[n],enumerable:!0})},a=(t,e,n,u)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of l(e))!d.call(t,o)&&o!==n&&s(t,o,{get:()=>e[o],enumerable:!(u=_(e,o))||u.enumerable});return t};var j=(t,e,n)=>(n=t!=null?f(p(t)):{},a(e||!t||!t.__esModule?s(n,\\"default\\",{value:t,enumerable:!0}):n,t)),M=t=>a(s({},\\"__esModule\\",{value:!0}),t);var c=g((X,m)=>{m.exports=_jsx_runtime});var D={};h(D,{default:()=>i,frontmatter:()=>C});var r=j(c()),C={title:\\"Prometheus\\",slug:\\"prometheus\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return M(D);})();\\n;return Component;"},"_id":"tags/prometheus.mdx","_raw":{"sourceFilePath":"tags/prometheus.mdx","sourceFileName":"prometheus.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/prometheus"},"type":"Tag","url":"/tags/prometheus"},{"title":"Python","slug":"python","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),h=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},u=(t,n,e,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of l(n))!d.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(s=_(n,o))||s.enumerable});return t};var j=(t,n,e)=>(e=t!=null?f(p(t)):{},u(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),y=t=>u(a({},\\"__esModule\\",{value:!0}),t);var m=g((F,c)=>{c.exports=_jsx_runtime});var C={};h(C,{default:()=>i,frontmatter:()=>M});var r=j(m()),M={title:\\"Python\\",slug:\\"python\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return y(C);})();\\n;return Component;"},"_id":"tags/python.mdx","_raw":{"sourceFilePath":"tags/python.mdx","sourceFileName":"python.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/python"},"type":"Tag","url":"/tags/python"},{"title":"RAG","slug":"rag","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},u=(t,n,e,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of g(n))!d.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(s=_(n,o))||s.enumerable});return t};var M=(t,n,e)=>(e=t!=null?f(l(t)):{},u(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),C=t=>u(a({},\\"__esModule\\",{value:!0}),t);var m=j((h,c)=>{c.exports=_jsx_runtime});var F={};p(F,{default:()=>i,frontmatter:()=>D});var r=M(m()),D={title:\\"RAG\\",slug:\\"rag\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return C(F);})();\\n;return Component;"},"_id":"tags/rag.mdx","_raw":{"sourceFilePath":"tags/rag.mdx","sourceFileName":"rag.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/rag"},"type":"Tag","url":"/tags/rag"},{"title":"RedHat","slug":"redhat","body":{"raw":"","code":"var Component=(()=>{var d=Object.create;var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),p=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},u=(t,e,n,s)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of _(e))!g.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(s=f(e,o))||s.enumerable});return t};var M=(t,e,n)=>(n=t!=null?d(l(t)):{},u(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),h=t=>u(a({},\\"__esModule\\",{value:!0}),t);var m=j((X,c)=>{c.exports=_jsx_runtime});var D={};p(D,{default:()=>i,frontmatter:()=>C});var r=M(m()),C={title:\\"RedHat\\",slug:\\"redhat\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return h(D);})();\\n;return Component;"},"_id":"tags/redhat.mdx","_raw":{"sourceFilePath":"tags/redhat.mdx","sourceFileName":"redhat.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/redhat"},"type":"Tag","url":"/tags/redhat"},{"title":"Security","slug":"security","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var u=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),p=(t,e)=>{for(var n in e)u(t,n,{get:e[n],enumerable:!0})},c=(t,e,n,a)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of l(e))!g.call(t,o)&&o!==n&&u(t,o,{get:()=>e[o],enumerable:!(a=_(e,o))||a.enumerable});return t};var y=(t,e,n)=>(n=t!=null?f(d(t)):{},c(e||!t||!t.__esModule?u(n,\\"default\\",{value:t,enumerable:!0}):n,t)),M=t=>c(u({},\\"__esModule\\",{value:!0}),t);var i=j((X,s)=>{s.exports=_jsx_runtime});var D={};p(D,{default:()=>x,frontmatter:()=>C});var r=y(i()),C={title:\\"Security\\",slug:\\"security\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return M(D);})();\\n;return Component;"},"_id":"tags/security.mdx","_raw":{"sourceFilePath":"tags/security.mdx","sourceFileName":"security.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/security"},"type":"Tag","url":"/tags/security"},{"title":"Serverless","slug":"serverless","body":{"raw":"","code":"var Component=(()=>{var l=Object.create;var s=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),p=(t,e)=>{for(var r in e)s(t,r,{get:e[r],enumerable:!0})},u=(t,e,r,a)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of _(e))!g.call(t,o)&&o!==r&&s(t,o,{get:()=>e[o],enumerable:!(a=f(e,o))||a.enumerable});return t};var M=(t,e,r)=>(r=t!=null?l(d(t)):{},u(e||!t||!t.__esModule?s(r,\\"default\\",{value:t,enumerable:!0}):r,t)),v=t=>u(s({},\\"__esModule\\",{value:!0}),t);var m=j((X,c)=>{c.exports=_jsx_runtime});var D={};p(D,{default:()=>i,frontmatter:()=>C});var n=M(m()),C={title:\\"Serverless\\",slug:\\"serverless\\"};function x(t){return(0,n.jsx)(n.Fragment,{})}function i(t={}){let{wrapper:e}=t.components||{};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(x,{...t})}):x(t)}return v(D);})();\\n;return Component;"},"_id":"tags/serverless.mdx","_raw":{"sourceFilePath":"tags/serverless.mdx","sourceFileName":"serverless.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/serverless"},"type":"Tag","url":"/tags/serverless"},{"title":"SLO","slug":"slo","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},u=(t,n,e,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of _(n))!g.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(s=l(n,o))||s.enumerable});return t};var M=(t,n,e)=>(e=t!=null?f(d(t)):{},u(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),C=t=>u(a({},\\"__esModule\\",{value:!0}),t);var m=j((X,c)=>{c.exports=_jsx_runtime});var F={};p(F,{default:()=>i,frontmatter:()=>D});var r=M(m()),D={title:\\"SLO\\",slug:\\"slo\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return C(F);})();\\n;return Component;"},"_id":"tags/slo.mdx","_raw":{"sourceFilePath":"tags/slo.mdx","sourceFileName":"slo.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/slo"},"type":"Tag","url":"/tags/slo"},{"title":"Synthetics","slug":"synthetics","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var s=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var h=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),j=(t,n)=>{for(var e in n)s(t,e,{get:n[e],enumerable:!0})},c=(t,n,e,a)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of l(n))!g.call(t,o)&&o!==e&&s(t,o,{get:()=>n[o],enumerable:!(a=_(n,o))||a.enumerable});return t};var p=(t,n,e)=>(e=t!=null?f(d(t)):{},c(n||!t||!t.__esModule?s(e,\\"default\\",{value:t,enumerable:!0}):e,t)),y=t=>c(s({},\\"__esModule\\",{value:!0}),t);var u=h((F,i)=>{i.exports=_jsx_runtime});var C={};j(C,{default:()=>x,frontmatter:()=>M});var r=p(u()),M={title:\\"Synthetics\\",slug:\\"synthetics\\"};function m(t){return(0,r.jsx)(r.Fragment,{})}function x(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(m,{...t})}):m(t)}return y(C);})();\\n;return Component;"},"_id":"tags/synthetics.mdx","_raw":{"sourceFilePath":"tags/synthetics.mdx","sourceFileName":"synthetics.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/synthetics"},"type":"Tag","url":"/tags/synthetics"},{"title":"Tracetest","slug":"tracetest","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),p=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},c=(t,e,n,s)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let o of l(e))!g.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(s=_(e,o))||s.enumerable});return t};var M=(t,e,n)=>(n=t!=null?f(d(t)):{},c(e||!t||!t.__esModule?a(n,\\"default\\",{value:t,enumerable:!0}):n,t)),C=t=>c(a({},\\"__esModule\\",{value:!0}),t);var m=j((h,u)=>{u.exports=_jsx_runtime});var F={};p(F,{default:()=>i,frontmatter:()=>D});var r=M(m()),D={title:\\"Tracetest\\",slug:\\"tracetest\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:e}=t.components||{};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return C(F);})();\\n;return Component;"},"_id":"tags/tracetest.mdx","_raw":{"sourceFilePath":"tags/tracetest.mdx","sourceFileName":"tracetest.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/tracetest"},"type":"Tag","url":"/tags/tracetest"},{"title":"TSDB","slug":"tsdb","body":{"raw":"","code":"var Component=(()=>{var f=Object.create;var a=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var j=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),p=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},u=(t,n,e,s)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of d(n))!g.call(t,o)&&o!==e&&a(t,o,{get:()=>n[o],enumerable:!(s=_(n,o))||s.enumerable});return t};var D=(t,n,e)=>(e=t!=null?f(l(t)):{},u(n||!t||!t.__esModule?a(e,\\"default\\",{value:t,enumerable:!0}):e,t)),M=t=>u(a({},\\"__esModule\\",{value:!0}),t);var m=j((b,c)=>{c.exports=_jsx_runtime});var F={};p(F,{default:()=>i,frontmatter:()=>C});var r=D(m()),C={title:\\"TSDB\\",slug:\\"tsdb\\"};function x(t){return(0,r.jsx)(r.Fragment,{})}function i(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(x,{...t})}):x(t)}return M(F);})();\\n;return Component;"},"_id":"tags/tsdb.mdx","_raw":{"sourceFilePath":"tags/tsdb.mdx","sourceFileName":"tsdb.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/tsdb"},"type":"Tag","url":"/tags/tsdb"},{"title":"Universal Profiling","slug":"universal-profiling","body":{"raw":"","code":"var Component=(()=>{var m=Object.create;var i=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty;var d=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),j=(t,n)=>{for(var e in n)i(t,e,{get:n[e],enumerable:!0})},s=(t,n,e,a)=>{if(n&&typeof n==\\"object\\"||typeof n==\\"function\\")for(let o of g(n))!p.call(t,o)&&o!==e&&i(t,o,{get:()=>n[o],enumerable:!(a=x(n,o))||a.enumerable});return t};var M=(t,n,e)=>(e=t!=null?m(_(t)):{},s(n||!t||!t.__esModule?i(e,\\"default\\",{value:t,enumerable:!0}):e,t)),v=t=>s(i({},\\"__esModule\\",{value:!0}),t);var l=d((X,u)=>{u.exports=_jsx_runtime});var D={};j(D,{default:()=>f,frontmatter:()=>C});var r=M(l()),C={title:\\"Universal Profiling\\",slug:\\"universal-profiling\\"};function c(t){return(0,r.jsx)(r.Fragment,{})}function f(t={}){let{wrapper:n}=t.components||{};return n?(0,r.jsx)(n,{...t,children:(0,r.jsx)(c,{...t})}):c(t)}return v(D);})();\\n;return Component;"},"_id":"tags/universal-profiling.mdx","_raw":{"sourceFilePath":"tags/universal-profiling.mdx","sourceFileName":"universal-profiling.mdx","sourceFileDir":"tags","contentType":"mdx","flattenedPath":"tags/universal-profiling"},"type":"Tag","url":"/tags/universal-profiling"}]'),s=JSON.parse('[{"title":"3 models for logging with OpenTelemetry and Elastic","slug":"3-models-logging-opentelemetry","date":"2023-06-27","description":"Because OpenTelemetry increases usage of tracing and metrics with developers, logging continues to provide flexible, application-specific, and event-driven data. Explore OpenTelemetry logging and how it provides guidance on the available approaches.","image":"log_infrastructure_apm_synthetics-monitoring.jpeg","author":[{"slug":"ty-bekiares","type":"Author","_raw":{}}],"tags":[{"slug":"opentelemetry","type":"Tag","_raw":{}},{"slug":"log-analytics","type":"Tag","_raw":{}}],"body":{"raw":"\\nArguably, [OpenTelemetry](https://www.elastic.co/blog/opentelemetry-observability) exists to (greatly) increase usage of tracing and metrics among developers. That said, logging will continue to play a critical role in providing flexible, application-specific, event-driven data. Further, OpenTelemetry has the potential to bring added value to existing application logging flows:\\n\\n1. Common metadata across tracing, metrics, and logging to facilitate contextual correlation, including metadata passed between services as part of REST or RPC APIs; this is a critical element of service observability in the age of distributed, horizontally scaled systems\\n\\n2. An optional unified data path for tracing, metrics, and logging to facilitate common tooling and signal routing to your observability backend\\n\\nAdoption of metrics and tracing among developers to date has been relatively small. Further, the number of proprietary vendors and APIs (compared to adoption rate) is relatively large. As such, OpenTelemetry took a greenfield approach to developing new, vendor-agnostic APIs for tracing and metrics. In contrast, most developers have nearly 100% log coverage across their services. Moreover, logging is largely supported by a small number of vendor-agnostic, open-source logging libraries and associated APIs (e.g., [Logback](https://logback.qos.ch) and [ILogger](https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.logging.ilogger)). As such, [OpenTelemetry’s approach to logging](https://opentelemetry.io/docs/specs/otel/logs/#introduction) meets developers where they already are using hooks into existing, popular logging frameworks. In this way, developers can add OpenTelemetry as a log signal output without otherwise altering their code and investment in logging as an observability signal.\\n\\nNotably, logging is the least mature of OTel supported observability signals. Depending on your service’s [language](https://opentelemetry.io/docs/instrumentation/#status-and-releases), and your appetite for adventure, there exist several options for exporting logs from your services and applications and marrying them together in your observability backend.\\n\\nThe intent of this article is to explore the current state of the art of [OpenTelemetry logging](https://www.elastic.co/blog/introduction-apm-tracing-logging-customer-experience) and to provide guidance on the available approaches with the following tenants in mind:\\n\\n- Correlation of service logs with OTel-generated tracing where applicable\\n- Proper capture of exceptions\\n- Common context across tracing, metrics, and logging\\n- Support for [slf4j key-value pairs](https://www.slf4j.org/manual.html#fluent) (“structured logging”)\\n- Automatic attachment of metadata carried between services via [OTel baggage](https://opentelemetry.io/docs/concepts/signals/baggage/)\\n- Use of an Elastic\xae Observability backend\\n- Consistent data fidelity in Elastic regardless of the approach taken\\n\\n## OpenTelemetry logging models\\n\\nThree models currently exist for getting your application or service logs to Elastic with correlation to OTel tracing and baggage:\\n\\n1. Output logs from your service (alongside traces and metrics) using an embedded [OpenTelemetry Instrumentation library](https://opentelemetry.io/docs/instrumentation/#status-and-releases) to Elastic via the OTLP protocol\\n\\n2. Write logs from your service to a file scraped by the [OpenTelemetry Collector](https://opentelemetry.io/docs/collector/), which then forwards to Elastic via the OTLP protocol\\n\\n3. Write logs from your service to a file scraped by [Elastic Agent](https://www.elastic.co/elastic-agent) (or [Filebeat](https://www.elastic.co/beats/filebeat)), which then forwards to Elastic via an Elastic-defined protocol\\n\\nNote that (1), in contrast to (2) and (3), does not involve writing service logs to a file prior to ingestion into Elastic.\\n\\n## Logging vs. span events\\n\\nIt is worth noting that most APM systems, including OpenTelemetry, include provisions for [span events](https://opentelemetry.io/docs/instrumentation/ruby/manual/#add-span-events). Like log statements, span events contain arbitrary, textual data. Additionally, span events automatically carry any custom attributes (e.g., a “user ID”) applied to the parent span, which can help with correlation and context. In this regard, it may be advantageous to translate some existing log statements (inside spans) to span events. As the name implies, of course, span events can only be emitted from within a span and thus are not intended to be a general purpose replacement for logging.\\n\\nUnlike logging, span events do not pass through existing logging frameworks and therefore cannot (practically) be written to a log file. Further, span events are technically emitted as part of trace data and follow the same data path and signal routing as other trace data.\\n\\n## Polyfill appender\\n\\nSome of the demos make use of a custom Logback [“Polyfill appender”](https://github.com/ty-elastic/otel-logging/blob/main/java-otel-log/src/main/java/com/tb93/otel/batteries/PolyfillAppender.java) (inspired by OTel’s [Logback MDC](https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/logback/logback-mdc-1.0/library)), which provides support for attaching [slf4j key-value pairs](https://www.slf4j.org/manual.html#fluent) to log messages for models (2) and (3).\\n\\n## Elastic Common Schema\\n\\nFor log messages to exhibit full fidelity within Elastic, they eventually need to be formatted in accordance with the [Elastic Common Schema](https://www.elastic.co/guide/en/ecs/current/ecs-reference.html) (ECS). In models (1) and (2), log messages remain formatted in OTel log semantics until ingested by the Elastic APM Server. The Elastic APM Server then translates OTel log semantics to ECS. In model (3), ECS is applied at the source.\\n\\nNotably, OpenTelemetry recently [adopted the Elastic Common Schema](https://www.elastic.co/blog/ecs-elastic-common-schema-otel-opentelemetry-announcement) as its standard for semantic conventions going forward! As such, it is anticipated that current OTel log semantics will be updated to align with ECS.\\n\\n## Getting started\\n\\nThe included demos center around a “POJO” (no assumed framework) Java project. Java is arguably the most mature of OTel-supported languages, particularly with respect to logging options. Notably, this singular Java project was designed to support the three models of logging discussed here. In practice, you would only implement one of these models (and corresponding project dependencies).\\n\\nThe demos assume you have a working [Docker](https://www.docker.com/) environment and an [Elastic Cloud](https://www.elastic.co/cloud/) instance.\\n\\n1. git clone https://github.com/ty-elastic/otel-logging\\n\\n2. Create an .env file at the root of otel-logging with the following (appropriately filled-in) environment variables:\\n\\n```bash\\n# the service name\\nOTEL_SERVICE_NAME=app4\\n\\n# Filebeat vars\\nELASTIC_CLOUD_ID=(see https://www.elastic.co/guide/en/beats/metricbeat/current/configure-cloud-id.html)\\nELASTIC_CLOUD_AUTH=(see https://www.elastic.co/guide/en/beats/metricbeat/current/configure-cloud-id.html)\\n\\n# apm vars\\nELASTIC_APM_SERVER_ENDPOINT=(address of your Elastic Cloud APM server... i.e., https://xyz123.apm.us-central1.gcp.cloud.es.io:443)\\nELASTIC_APM_SERVER_SECRET=(see https://www.elastic.co/guide/en/apm/guide/current/secret-token.html)\\n```\\n\\n3. Start up the demo with the desired model:\\n\\n- If you want to demo logging via OTel APM Agent, run MODE=apm docker-compose up\\n- If you want to demo logging via OTel filelogreceiver, run MODE=filelogreceiver docker-compose up\\n- If you want to demo logging via Elastic filebeat, run MODE=filebeat docker-compose up\\n\\n4. Validate incoming span and correlated log data in your Elastic Cloud instance\\n\\n## Model 1: Logging via OpenTelemetry instrumentation\\n\\nThis model aligns with the long-term goals of OpenTelemetry: [integrated tracing, metrics, and logging (with common attributes) from your services](https://opentelemetry.io/docs/specs/otel/logs/#opentelemetry-solution) via the [OpenTelemetry Instrumentation libraries](https://opentelemetry.io/docs/instrumentation/#status-and-releases), without dependency on log files and scrappers.\\n\\nIn this model, your service generates log statements as it always has, using popular logging libraries (e.g., [Logback](https://logback.qos.ch) for Java). OTel provides a “Southbound hook” to Logback via the OTel [Logback Appender](https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/logback/logback-appender-1.0/library), which injects ServiceName, SpanID, TraceID, slf4j key-value pairs, and OTel baggage into log records and passes the composed records to the co-resident OpenTelemetry Instrumentation library. We further employ a [custom LogRecordProcessor](https://github.com/ty-elastic/otel-logging/blob/main/java-otel-log/src/main/java/com/tb93/otel/batteries/AddBaggageLogProcessor.java) to add baggage to the log record as attributes.\\n\\nThe OTel instrumentation library then formats the log statements per the [OTel logging spec](https://opentelemetry.io/docs/specs/otel/logs/data-model/) and ships them via OTLP to either an OTel Collector for further routing and enrichment or directly to Elastic.\\n\\nNotably, as language support improves, this model can and will be supported by runtime agent binding with auto-instrumentation where available (e.g., no code changes required for runtime languages).\\n\\nOne distinguishing advantage of this model, beyond the simplicity it affords, is the ability to more easily tie together attributes and tracing metadata directly with log statements. This inherently makes logging more useful in the context of other OTel-supported observability signals.\\n\\n### Architecture\\n\\n![model 1 architecture](/assets/images/3-models-logging-opentelemetry/elastic-blog-model-1-architecture.png)\\n\\nAlthough not explicitly pictured, an [OpenTelemetry Collector](https://opentelemetry.io/docs/collector/) can be inserted in between the service and Elastic to facilitate additional enrichment and/or signal routing or duplication across observability backends.\\n\\n### Pros\\n\\n- Simplified signal architecture and fewer “moving parts” (no files, disk utilization, or file rotation concerns)\\n- Aligns with long-term OTel vision\\n- Log statements can be (easily) decorated with OTel metadata\\n- No polyfill adapter required to support structured logging with slf4j\\n- No additional collectors/agents required\\n- Conversion to ECS happens within Elastic keeping log data vendor-agnostic until ingestion\\n- Common wireline protocol (OTLP) across tracing, metrics, and logs\\n\\n### Cons\\n\\n- Not available (yet) in many OTel-supported languages\\n- No intermediate log file for ad-hoc, on-node debugging\\n- Immature (alpha/experimental)\\n Unknown “glare” conditions, which could result in loss of log data if service exits prematurely or if the backend is unable to accept log data for an extended period of time\\n\\n### Demo\\n\\nMODE=apm docker-compose up\\n\\n## Model 2: Logging via the OpenTelemetry Collector\\n\\nGiven the cons of Model 1, it may be advantageous to consider a model that continues to leverage an actual log file intermediary between your services and your observability backend. Such a model is possible using an [OpenTelemetry Collector](https://opentelemetry.io/docs/collector/) collocated with your services (e.g., on the same host), running the [filelogreceiver](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/filelogreceiver/README.md) to scrape service log files.\\n\\nIn this model, your service generates log statements as it always has, using popular logging libraries (e.g., [Logback](https://logback.qos.ch) for Java). OTel provides a MDC Appender for Logback ([Logback MDC](https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/logback/logback-mdc-1.0/library)), which adds SpanID, TraceID, and Baggage to the [Logback MDC context](https://logback.qos.ch/manual/mdc.html).\\n\\nNotably, no log record structure is assumed by the OTel filelogreceiver. In the example provided, we employ the [logstash-logback-encoder](https://github.com/logfellow/logstash-logback-encoder) to JSON-encode log messages. The logstash-logback-encoder will read the OTel SpanID, TraceID, and Baggage off the MDC context and encode it into the JSON structure. Notably, logstash-logback-encoder doesn’t explicitly support [slf4j key-value pairs](https://www.slf4j.org/manual.html#fluent). It does, however, support [Logback structured arguments](https://github.com/logfellow/logstash-logback-encoder#event-specific-custom-fields), and thus I use the [Polyfill Appender](https://github.com/ty-elastic/otel-logging/blob/main/java-otel-log/src/main/java/com/tb93/otel/batteries/PolyfillAppender.java) to convert slf4j key-value pairs to Logback structured arguments.\\n\\nFrom there, we write the log lines to a log file. If you are using Kubernetes or other container orchestration in your environment, you would more typically write to stdout (console) and let the orchestration log driver write to and manage log files.\\n\\nWe then [configure](https://github.com/ty-elastic/otel-logging/blob/main/collector/filelogreceiver.yml) the OTel Collector to scrape this log file (using the filelogreceiver). Because no assumptions are made about the format of the log lines, you need to [explicitly map fields](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/pkg/stanza/docs/types/parsers.md#parsers) from your log schema to the OTel log schema.\\n\\nFrom there, the OTel Collector batches and ships the formatted log lines via OTLP to Elastic.\\n\\n### Architecture\\n\\n![model 2 architecture](/assets/images/3-models-logging-opentelemetry/elastic-blog-model-2-architecture.png)\\n\\n### Pros\\n\\n- Easy to debug (you can manually read the intermediate log file)\\n- Inherent file-based FIFO buffer\\n- Less susceptible to “glare” conditions when service prematurely exits\\n- Conversion to ECS happens within Elastic keeping log data vendor-agnostic until ingestion\\n- Common wireline protocol (OTLP) across tracing, metrics, and logs\\n\\n### Cons\\n\\n- All the headaches of file-based logging (rotation, disk overflow)\\n- Beta quality and not yet proven in the field\\n- No support for slf4j key-value pairs\\n\\n### Demo\\n\\nMODE=filelogreceiver docker-compose up\\n\\n## Model 3: Logging via Elastic Agent (or Filebeat)\\n\\nAlthough the second model described affords some resilience as a function of the backing file, the OTel Collector filelogreceiver module is still decidedly [“beta”](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/filelogreceiver) in quality. Because of the importance of logs as a debugging tool, today I generally recommend that customers continue to import logs into Elastic using the field-proven [Elastic Agent](https://www.elastic.co/elastic-agent) or [Filebeat](https://www.elastic.co/beats/filebeat) scrappers. Elastic Agent and Filebeat have many years of field maturity under their collective belt. Further, it is often advantageous to deploy Elastic Agent anyway to capture the multitude of signals outside the purview of OpenTelemetry (e.g., deep Kubernetes and host metrics, security, etc.).\\n\\nIn this model, your service generates log statements as it always has, using popular logging libraries (e.g., [Logback](https://logback.qos.ch) for Java). As with model 2, we employ OTel’s [Logback MDC](https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/logback/logback-mdc-1.0/library) to add SpanID, TraceID, and Baggage to the [Logback MDC context](https://logback.qos.ch/manual/mdc.html).\\n\\nFrom there, we employ the [Elastic ECS Encoder](https://www.elastic.co/guide/en/ecs-logging/java/current/setup.html) to encode log statements compliant to the Elastic Common Schema. The Elastic ECS Encoder will read the OTel SpanID, TraceID, and Baggage off the MDC context and encode it into the JSON structure. Similar to model 2, the Elastic ECS Encoder doesn’t support sl4f key-vair arguments. Curiously, the Elastic ECS encoder also doesn’t appear to support Logback structured arguments. Thus, within the Polyfill Appender, I add slf4j key-value pairs as MDC context. This is less than ideal, however, since MDC forces all values to be strings.\\n\\nFrom there, we write the log lines to a log file. If you are using Kubernetes or other container orchestration in your environment, you would more typically write to stdout (console) and let the orchestration log driver write to and manage log files.We then configure Elastic Agent or Filebeat to scrape the log file. Notably, the Elastic ECS Encoder does not currently translate incoming OTel SpanID and TraceID variables on the MDC. Thus, we need to perform manual translation of these variables in the [Filebeat (or Elastic Agent) configuration](https://github.com/ty-elastic/otel-logging/blob/main/filebeat.yml) to map them to their ECS equivalent.\\n\\n## Architecture\\n\\n![model 3 architecture](/assets/images/3-models-logging-opentelemetry/elastic-blog-model-3-architecture.png)\\n\\n### Pros\\n\\n- Robust and field-proven\\n- Easy to debug (you can manually read the intermediate log file)\\n- Inherent file-based FIFO buffer\\n- Less susceptible to “glare” conditions when service prematurely exits\\n- Native ECS format for easy manipulation in Elastic\\n- Fleet-managed via Elastic Agent\\n\\n### Cons\\n\\n- All the headaches of file-based logging (rotation, disk overflow)\\n- No support for slf4j key-value pairs or Logback structured arguments\\n- Requires translation of OTel SpanID and TraceID in Filebeat config\\n- Disparate data paths for logs versus tracing and metrics\\n- Vendor-specific logging format\\n\\n### Demo\\n\\nMODE=filebeat docker-compose up\\n\\n## Recommendations\\n\\nFor most customers, I currently recommend Model 3 — namely, write to logs in ECS format (with OTel SpanID, TraceID, and Baggage metadata) and collect them with an Elastic Agent installed on the node hosting the application or service. Elastic Agent (or Filebeat) today provides the most field-proven and robust means of capturing log files from applications and services with OpenTelemetry context.\\n\\nFurther, you can leverage this same Elastic Agent instance (ideally running in your [Kubernetes daemonset](https://www.elastic.co/guide/en/fleet/current/running-on-kubernetes-managed-by-fleet.html)) to collect rich and robust metrics and logs from [Kubernetes](https://docs.elastic.co/en/integrations/kubernetes) and many other supported services via [Elastic Integrations](https://www.elastic.co/integrations/data-integrations). Finally, Elastic Agent facilitates remote management via [Fleet](https://www.elastic.co/guide/en/fleet/current/fleet-overview.html), avoiding bespoke configuration files.\\n\\nAlternatively, for customers who either wish to keep their nodes vendor-neutral or use a consolidated signal routing system, I recommend Model 2, wherein an OpenTelemetry collector is used to scrape service log files. While workable and practiced by some early adopters in the field today, this model inherently carries some risk given the current beta nature of the OpenTelemetry filelogreceiver.\\n\\nI generally do not recommend Model 1 given its limited language support, experimental/alpha status (the API could change), and current potential for data loss. That said, in time, with more language support and more thought to resilient designs, it has clear advantages both with regard to simplicity and richness of metadata.\\n\\n## Extracting more value from your logs\\n\\nIn contrast to tracing and metrics, most organizations have nearly 100% log coverage over their applications and services. This is an ideal beachhead upon which to build an application observability system. On the other hand, logs are notoriously noisy and unstructured; this is only amplified with the scale enabled by the hyperscalers and Kubernetes. Collecting log lines reliably is the easy part; making them useful at today’s scale is hard.\\n\\nGiven that logs are arguably the most challenging observability signal from which to extract value at scale, one should ideally give thoughtful consideration to a vendor’s support for logging in the context of other observability signals. Can they handle surges in log rates because of unexpected scale or an error or test scenario? Do they have the machine learning tool set to automatically recognize patterns in log lines, sort them into categories, and identify true anomalies? Can they provide cost-effective online searchability of logs over months or years without manual rehydration? Do they provide the tools to extract and analyze business KPIs buried in logs?\\n\\nAs an ardent and early supporter of OpenTelemetry, Elastic, of course, [natively ingests OTel traces, metrics, and logs](https://www.elastic.co/guide/en/apm/guide/current/open-telemetry.html). And just like all logs coming into our system, logs coming from OTel-equipped sources avail themselves of our [mature tooling and next-gen AI Ops technologies](https://www.elastic.co/observability/log-monitoring) to enable you to extract their full value.Interested? [Reach out to our pre-sales team](https://www.elastic.co/contact?storm=global-header-en) to get started building with Elastic!\\n\\n_The release and timing of any features or functionality described in this post remain at Elastic\'s sole discretion. Any features or functionality not currently available may not be delivered on time or at all._\\n","code":"var Component=(()=>{var g=Object.create;var i=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var u=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var y=(o,e)=>()=>(e||o((e={exports:{}}).exports,e),e.exports),b=(o,e)=>{for(var n in e)i(o,n,{get:e[n],enumerable:!0})},a=(o,e,n,r)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let l of m(e))!f.call(o,l)&&l!==n&&i(o,l,{get:()=>e[l],enumerable:!(r=p(e,l))||r.enumerable});return o};var w=(o,e,n)=>(n=o!=null?g(u(o)):{},a(e||!o||!o.__esModule?i(n,\\"default\\",{value:o,enumerable:!0}):n,o)),v=o=>a(i({},\\"__esModule\\",{value:!0}),o);var c=y((O,s)=>{s.exports=_jsx_runtime});var E={};b(E,{default:()=>h,frontmatter:()=>T});var t=w(c()),T={title:\\"3 models for logging with OpenTelemetry and Elastic\\",slug:\\"3-models-logging-opentelemetry\\",date:\\"2023-06-27\\",description:\\"Because OpenTelemetry increases usage of tracing and metrics with developers, logging continues to provide flexible, application-specific, and event-driven data. Explore OpenTelemetry logging and how it provides guidance on the available approaches.\\",author:[{slug:\\"ty-bekiares\\"}],image:\\"log_infrastructure_apm_synthetics-monitoring.jpeg\\",tags:[{slug:\\"opentelemetry\\"},{slug:\\"log-analytics\\"}]};function d(o){let e={a:\\"a\\",code:\\"code\\",em:\\"em\\",h2:\\"h2\\",h3:\\"h3\\",img:\\"img\\",li:\\"li\\",ol:\\"ol\\",p:\\"p\\",pre:\\"pre\\",ul:\\"ul\\",...o.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(e.p,{children:[\\"Arguably, \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/blog/opentelemetry-observability\\",rel:\\"nofollow\\",children:\\"OpenTelemetry\\"}),\\" exists to (greatly) increase usage of tracing and metrics among developers. That said, logging will continue to play a critical role in providing flexible, application-specific, event-driven data. Further, OpenTelemetry has the potential to bring added value to existing application logging flows:\\"]}),`\\n`,(0,t.jsxs)(e.ol,{children:[`\\n`,(0,t.jsxs)(e.li,{children:[`\\n`,(0,t.jsx)(e.p,{children:\\"Common metadata across tracing, metrics, and logging to facilitate contextual correlation, including metadata passed between services as part of REST or RPC APIs; this is a critical element of service observability in the age of distributed, horizontally scaled systems\\"}),`\\n`]}),`\\n`,(0,t.jsxs)(e.li,{children:[`\\n`,(0,t.jsx)(e.p,{children:\\"An optional unified data path for tracing, metrics, and logging to facilitate common tooling and signal routing to your observability backend\\"}),`\\n`]}),`\\n`]}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"Adoption of metrics and tracing among developers to date has been relatively small. Further, the number of proprietary vendors and APIs (compared to adoption rate) is relatively large. As such, OpenTelemetry took a greenfield approach to developing new, vendor-agnostic APIs for tracing and metrics. In contrast, most developers have nearly 100% log coverage across their services. Moreover, logging is largely supported by a small number of vendor-agnostic, open-source logging libraries and associated APIs (e.g., \\",(0,t.jsx)(e.a,{href:\\"https://logback.qos.ch\\",rel:\\"nofollow\\",children:\\"Logback\\"}),\\" and \\",(0,t.jsx)(e.a,{href:\\"https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.logging.ilogger\\",rel:\\"nofollow\\",children:\\"ILogger\\"}),\\"). As such, \\",(0,t.jsx)(e.a,{href:\\"https://opentelemetry.io/docs/specs/otel/logs/#introduction\\",rel:\\"nofollow\\",children:\\"OpenTelemetry\\\\u2019s approach to logging\\"}),\\" meets developers where they already are using hooks into existing, popular logging frameworks. In this way, developers can add OpenTelemetry as a log signal output without otherwise altering their code and investment in logging as an observability signal.\\"]}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"Notably, logging is the least mature of OTel supported observability signals. Depending on your service\\\\u2019s \\",(0,t.jsx)(e.a,{href:\\"https://opentelemetry.io/docs/instrumentation/#status-and-releases\\",rel:\\"nofollow\\",children:\\"language\\"}),\\", and your appetite for adventure, there exist several options for exporting logs from your services and applications and marrying them together in your observability backend.\\"]}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"The intent of this article is to explore the current state of the art of \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/blog/introduction-apm-tracing-logging-customer-experience\\",rel:\\"nofollow\\",children:\\"OpenTelemetry logging\\"}),\\" and to provide guidance on the available approaches with the following tenants in mind:\\"]}),`\\n`,(0,t.jsxs)(e.ul,{children:[`\\n`,(0,t.jsx)(e.li,{children:\\"Correlation of service logs with OTel-generated tracing where applicable\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"Proper capture of exceptions\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"Common context across tracing, metrics, and logging\\"}),`\\n`,(0,t.jsxs)(e.li,{children:[\\"Support for \\",(0,t.jsx)(e.a,{href:\\"https://www.slf4j.org/manual.html#fluent\\",rel:\\"nofollow\\",children:\\"slf4j key-value pairs\\"}),\\" (\\\\u201Cstructured logging\\\\u201D)\\"]}),`\\n`,(0,t.jsxs)(e.li,{children:[\\"Automatic attachment of metadata carried between services via \\",(0,t.jsx)(e.a,{href:\\"https://opentelemetry.io/docs/concepts/signals/baggage/\\",rel:\\"nofollow\\",children:\\"OTel baggage\\"})]}),`\\n`,(0,t.jsxs)(e.li,{children:[\\"Use of an Elastic\\",(0,t.jsx)(\\"sup\\",{children:\\"\\\\xAE\\"}),\\" Observability backend\\"]}),`\\n`,(0,t.jsx)(e.li,{children:\\"Consistent data fidelity in Elastic regardless of the approach taken\\"}),`\\n`]}),`\\n`,(0,t.jsx)(e.h2,{id:\\"opentelemetry-logging-models\\",children:\\"OpenTelemetry logging models\\"}),`\\n`,(0,t.jsx)(e.p,{children:\\"Three models currently exist for getting your application or service logs to Elastic with correlation to OTel tracing and baggage:\\"}),`\\n`,(0,t.jsxs)(e.ol,{children:[`\\n`,(0,t.jsxs)(e.li,{children:[`\\n`,(0,t.jsxs)(e.p,{children:[\\"Output logs from your service (alongside traces and metrics) using an embedded \\",(0,t.jsx)(e.a,{href:\\"https://opentelemetry.io/docs/instrumentation/#status-and-releases\\",rel:\\"nofollow\\",children:\\"OpenTelemetry Instrumentation library\\"}),\\" to Elastic via the OTLP protocol\\"]}),`\\n`]}),`\\n`,(0,t.jsxs)(e.li,{children:[`\\n`,(0,t.jsxs)(e.p,{children:[\\"Write logs from your service to a file scraped by the \\",(0,t.jsx)(e.a,{href:\\"https://opentelemetry.io/docs/collector/\\",rel:\\"nofollow\\",children:\\"OpenTelemetry Collector\\"}),\\", which then forwards to Elastic via the OTLP protocol\\"]}),`\\n`]}),`\\n`,(0,t.jsxs)(e.li,{children:[`\\n`,(0,t.jsxs)(e.p,{children:[\\"Write logs from your service to a file scraped by \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/elastic-agent\\",rel:\\"nofollow\\",children:\\"Elastic Agent\\"}),\\" (or \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/beats/filebeat\\",rel:\\"nofollow\\",children:\\"Filebeat\\"}),\\"), which then forwards to Elastic via an Elastic-defined protocol\\"]}),`\\n`]}),`\\n`]}),`\\n`,(0,t.jsx)(e.p,{children:\\"Note that (1), in contrast to (2) and (3), does not involve writing service logs to a file prior to ingestion into Elastic.\\"}),`\\n`,(0,t.jsx)(e.h2,{id:\\"logging-vs-span-events\\",children:\\"Logging vs. span events\\"}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"It is worth noting that most APM systems, including OpenTelemetry, include provisions for \\",(0,t.jsx)(e.a,{href:\\"https://opentelemetry.io/docs/instrumentation/ruby/manual/#add-span-events\\",rel:\\"nofollow\\",children:\\"span events\\"}),\\". Like log statements, span events contain arbitrary, textual data. Additionally, span events automatically carry any custom attributes (e.g., a \\\\u201Cuser ID\\\\u201D) applied to the parent span, which can help with correlation and context. In this regard, it may be advantageous to translate some existing log statements (inside spans) to span events. As the name implies, of course, span events can only be emitted from within a span and thus are not intended to be a general purpose replacement for logging.\\"]}),`\\n`,(0,t.jsx)(e.p,{children:\\"Unlike logging, span events do not pass through existing logging frameworks and therefore cannot (practically) be written to a log file. Further, span events are technically emitted as part of trace data and follow the same data path and signal routing as other trace data.\\"}),`\\n`,(0,t.jsx)(e.h2,{id:\\"polyfill-appender\\",children:\\"Polyfill appender\\"}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"Some of the demos make use of a custom Logback \\",(0,t.jsx)(e.a,{href:\\"https://github.com/ty-elastic/otel-logging/blob/main/java-otel-log/src/main/java/com/tb93/otel/batteries/PolyfillAppender.java\\",rel:\\"nofollow\\",children:\\"\\\\u201CPolyfill appender\\\\u201D\\"}),\\" (inspired by OTel\\\\u2019s \\",(0,t.jsx)(e.a,{href:\\"https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/logback/logback-mdc-1.0/library\\",rel:\\"nofollow\\",children:\\"Logback MDC\\"}),\\"), which provides support for attaching \\",(0,t.jsx)(e.a,{href:\\"https://www.slf4j.org/manual.html#fluent\\",rel:\\"nofollow\\",children:\\"slf4j key-value pairs\\"}),\\" to log messages for models (2) and (3).\\"]}),`\\n`,(0,t.jsx)(e.h2,{id:\\"elastic-common-schema\\",children:\\"Elastic Common Schema\\"}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"For log messages to exhibit full fidelity within Elastic, they eventually need to be formatted in accordance with the \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/guide/en/ecs/current/ecs-reference.html\\",rel:\\"nofollow\\",children:\\"Elastic Common Schema\\"}),\\" (ECS). In models (1) and (2), log messages remain formatted in OTel log semantics until ingested by the Elastic APM Server. The Elastic APM Server then translates OTel log semantics to ECS. In model (3), ECS is applied at the source.\\"]}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"Notably, OpenTelemetry recently \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/blog/ecs-elastic-common-schema-otel-opentelemetry-announcement\\",rel:\\"nofollow\\",children:\\"adopted the Elastic Common Schema\\"}),\\" as its standard for semantic conventions going forward! As such, it is anticipated that current OTel log semantics will be updated to align with ECS.\\"]}),`\\n`,(0,t.jsx)(e.h2,{id:\\"getting-started\\",children:\\"Getting started\\"}),`\\n`,(0,t.jsx)(e.p,{children:\\"The included demos center around a \\\\u201CPOJO\\\\u201D (no assumed framework) Java project. Java is arguably the most mature of OTel-supported languages, particularly with respect to logging options. Notably, this singular Java project was designed to support the three models of logging discussed here. In practice, you would only implement one of these models (and corresponding project dependencies).\\"}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"The demos assume you have a working \\",(0,t.jsx)(e.a,{href:\\"https://www.docker.com/\\",rel:\\"nofollow\\",children:\\"Docker\\"}),\\" environment and an \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/cloud/\\",rel:\\"nofollow\\",children:\\"Elastic Cloud\\"}),\\" instance.\\"]}),`\\n`,(0,t.jsxs)(e.ol,{children:[`\\n`,(0,t.jsxs)(e.li,{children:[`\\n`,(0,t.jsxs)(e.p,{children:[\\"git clone \\",(0,t.jsx)(e.a,{href:\\"https://github.com/ty-elastic/otel-logging\\",rel:\\"nofollow\\",children:\\"https://github.com/ty-elastic/otel-logging\\"})]}),`\\n`]}),`\\n`,(0,t.jsxs)(e.li,{children:[`\\n`,(0,t.jsx)(e.p,{children:\\"Create an .env file at the root of otel-logging with the following (appropriately filled-in) environment variables:\\"}),`\\n`]}),`\\n`]}),`\\n`,(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:\\"language-bash\\",children:`# the service name\\nOTEL_SERVICE_NAME=app4\\n\\n# Filebeat vars\\nELASTIC_CLOUD_ID=(see https://www.elastic.co/guide/en/beats/metricbeat/current/configure-cloud-id.html)\\nELASTIC_CLOUD_AUTH=(see https://www.elastic.co/guide/en/beats/metricbeat/current/configure-cloud-id.html)\\n\\n# apm vars\\nELASTIC_APM_SERVER_ENDPOINT=(address of your Elastic Cloud APM server... i.e., https://xyz123.apm.us-central1.gcp.cloud.es.io:443)\\nELASTIC_APM_SERVER_SECRET=(see https://www.elastic.co/guide/en/apm/guide/current/secret-token.html)\\n`})}),`\\n`,(0,t.jsxs)(e.ol,{start:\\"3\\",children:[`\\n`,(0,t.jsx)(e.li,{children:\\"Start up the demo with the desired model:\\"}),`\\n`]}),`\\n`,(0,t.jsxs)(e.ul,{children:[`\\n`,(0,t.jsx)(e.li,{children:\\"If you want to demo logging via OTel APM Agent, run MODE=apm docker-compose up\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"If you want to demo logging via OTel filelogreceiver, run MODE=filelogreceiver docker-compose up\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"If you want to demo logging via Elastic filebeat, run MODE=filebeat docker-compose up\\"}),`\\n`]}),`\\n`,(0,t.jsxs)(e.ol,{start:\\"4\\",children:[`\\n`,(0,t.jsx)(e.li,{children:\\"Validate incoming span and correlated log data in your Elastic Cloud instance\\"}),`\\n`]}),`\\n`,(0,t.jsx)(e.h2,{id:\\"model-1-logging-via-opentelemetry-instrumentation\\",children:\\"Model 1: Logging via OpenTelemetry instrumentation\\"}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"This model aligns with the long-term goals of OpenTelemetry: \\",(0,t.jsx)(e.a,{href:\\"https://opentelemetry.io/docs/specs/otel/logs/#opentelemetry-solution\\",rel:\\"nofollow\\",children:\\"integrated tracing, metrics, and logging (with common attributes) from your services\\"}),\\" via the \\",(0,t.jsx)(e.a,{href:\\"https://opentelemetry.io/docs/instrumentation/#status-and-releases\\",rel:\\"nofollow\\",children:\\"OpenTelemetry Instrumentation libraries\\"}),\\", without dependency on log files and scrappers.\\"]}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"In this model, your service generates log statements as it always has, using popular logging libraries (e.g., \\",(0,t.jsx)(e.a,{href:\\"https://logback.qos.ch\\",rel:\\"nofollow\\",children:\\"Logback\\"}),\\" for Java). OTel provides a \\\\u201CSouthbound hook\\\\u201D to Logback via the OTel \\",(0,t.jsx)(e.a,{href:\\"https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/logback/logback-appender-1.0/library\\",rel:\\"nofollow\\",children:\\"Logback Appender\\"}),\\", which injects ServiceName, SpanID, TraceID, slf4j key-value pairs, and OTel baggage into log records and passes the composed records to the co-resident OpenTelemetry Instrumentation library. We further employ a \\",(0,t.jsx)(e.a,{href:\\"https://github.com/ty-elastic/otel-logging/blob/main/java-otel-log/src/main/java/com/tb93/otel/batteries/AddBaggageLogProcessor.java\\",rel:\\"nofollow\\",children:\\"custom LogRecordProcessor\\"}),\\" to add baggage to the log record as attributes.\\"]}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"The OTel instrumentation library then formats the log statements per the \\",(0,t.jsx)(e.a,{href:\\"https://opentelemetry.io/docs/specs/otel/logs/data-model/\\",rel:\\"nofollow\\",children:\\"OTel logging spec\\"}),\\" and ships them via OTLP to either an OTel Collector for further routing and enrichment or directly to Elastic.\\"]}),`\\n`,(0,t.jsx)(e.p,{children:\\"Notably, as language support improves, this model can and will be supported by runtime agent binding with auto-instrumentation where available (e.g., no code changes required for runtime languages).\\"}),`\\n`,(0,t.jsx)(e.p,{children:\\"One distinguishing advantage of this model, beyond the simplicity it affords, is the ability to more easily tie together attributes and tracing metadata directly with log statements. This inherently makes logging more useful in the context of other OTel-supported observability signals.\\"}),`\\n`,(0,t.jsx)(e.h3,{id:\\"architecture\\",children:\\"Architecture\\"}),`\\n`,(0,t.jsx)(e.p,{children:(0,t.jsx)(e.img,{src:\\"/assets/images/3-models-logging-opentelemetry/elastic-blog-model-1-architecture.png\\",alt:\\"model 1 architecture\\",width:\\"443\\",height:\\"818\\"})}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"Although not explicitly pictured, an \\",(0,t.jsx)(e.a,{href:\\"https://opentelemetry.io/docs/collector/\\",rel:\\"nofollow\\",children:\\"OpenTelemetry Collector\\"}),\\" can be inserted in between the service and Elastic to facilitate additional enrichment and/or signal routing or duplication across observability backends.\\"]}),`\\n`,(0,t.jsx)(e.h3,{id:\\"pros\\",children:\\"Pros\\"}),`\\n`,(0,t.jsxs)(e.ul,{children:[`\\n`,(0,t.jsx)(e.li,{children:\\"Simplified signal architecture and fewer \\\\u201Cmoving parts\\\\u201D (no files, disk utilization, or file rotation concerns)\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"Aligns with long-term OTel vision\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"Log statements can be (easily) decorated with OTel metadata\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"No polyfill adapter required to support structured logging with slf4j\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"No additional collectors/agents required\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"Conversion to ECS happens within Elastic keeping log data vendor-agnostic until ingestion\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"Common wireline protocol (OTLP) across tracing, metrics, and logs\\"}),`\\n`]}),`\\n`,(0,t.jsx)(e.h3,{id:\\"cons\\",children:\\"Cons\\"}),`\\n`,(0,t.jsxs)(e.ul,{children:[`\\n`,(0,t.jsx)(e.li,{children:\\"Not available (yet) in many OTel-supported languages\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"No intermediate log file for ad-hoc, on-node debugging\\"}),`\\n`,(0,t.jsx)(e.li,{children:`Immature (alpha/experimental)\\nUnknown \\\\u201Cglare\\\\u201D conditions, which could result in loss of log data if service exits prematurely or if the backend is unable to accept log data for an extended period of time`}),`\\n`]}),`\\n`,(0,t.jsx)(e.h3,{id:\\"demo\\",children:\\"Demo\\"}),`\\n`,(0,t.jsx)(e.p,{children:\\"MODE=apm docker-compose up\\"}),`\\n`,(0,t.jsx)(e.h2,{id:\\"model-2-logging-via-the-opentelemetry-collector\\",children:\\"Model 2: Logging via the OpenTelemetry Collector\\"}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"Given the cons of Model 1, it may be advantageous to consider a model that continues to leverage an actual log file intermediary between your services and your observability backend. Such a model is possible using an \\",(0,t.jsx)(e.a,{href:\\"https://opentelemetry.io/docs/collector/\\",rel:\\"nofollow\\",children:\\"OpenTelemetry Collector\\"}),\\" collocated with your services (e.g., on the same host), running the \\",(0,t.jsx)(e.a,{href:\\"https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/filelogreceiver/README.md\\",rel:\\"nofollow\\",children:\\"filelogreceiver\\"}),\\" to scrape service log files.\\"]}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"In this model, your service generates log statements as it always has, using popular logging libraries (e.g., \\",(0,t.jsx)(e.a,{href:\\"https://logback.qos.ch\\",rel:\\"nofollow\\",children:\\"Logback\\"}),\\" for Java). OTel provides a MDC Appender for Logback (\\",(0,t.jsx)(e.a,{href:\\"https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/logback/logback-mdc-1.0/library\\",rel:\\"nofollow\\",children:\\"Logback MDC\\"}),\\"), which adds SpanID, TraceID, and Baggage to the \\",(0,t.jsx)(e.a,{href:\\"https://logback.qos.ch/manual/mdc.html\\",rel:\\"nofollow\\",children:\\"Logback MDC context\\"}),\\".\\"]}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"Notably, no log record structure is assumed by the OTel filelogreceiver. In the example provided, we employ the \\",(0,t.jsx)(e.a,{href:\\"https://github.com/logfellow/logstash-logback-encoder\\",rel:\\"nofollow\\",children:\\"logstash-logback-encoder\\"}),\\" to JSON-encode log messages. The logstash-logback-encoder will read the OTel SpanID, TraceID, and Baggage off the MDC context and encode it into the JSON structure. Notably, logstash-logback-encoder doesn\\\\u2019t explicitly support \\",(0,t.jsx)(e.a,{href:\\"https://www.slf4j.org/manual.html#fluent\\",rel:\\"nofollow\\",children:\\"slf4j key-value pairs\\"}),\\". It does, however, support \\",(0,t.jsx)(e.a,{href:\\"https://github.com/logfellow/logstash-logback-encoder#event-specific-custom-fields\\",rel:\\"nofollow\\",children:\\"Logback structured arguments\\"}),\\", and thus I use the \\",(0,t.jsx)(e.a,{href:\\"https://github.com/ty-elastic/otel-logging/blob/main/java-otel-log/src/main/java/com/tb93/otel/batteries/PolyfillAppender.java\\",rel:\\"nofollow\\",children:\\"Polyfill Appender\\"}),\\" to convert slf4j key-value pairs to Logback structured arguments.\\"]}),`\\n`,(0,t.jsx)(e.p,{children:\\"From there, we write the log lines to a log file. If you are using Kubernetes or other container orchestration in your environment, you would more typically write to stdout (console) and let the orchestration log driver write to and manage log files.\\"}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"We then \\",(0,t.jsx)(e.a,{href:\\"https://github.com/ty-elastic/otel-logging/blob/main/collector/filelogreceiver.yml\\",rel:\\"nofollow\\",children:\\"configure\\"}),\\" the OTel Collector to scrape this log file (using the filelogreceiver). Because no assumptions are made about the format of the log lines, you need to \\",(0,t.jsx)(e.a,{href:\\"https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/pkg/stanza/docs/types/parsers.md#parsers\\",rel:\\"nofollow\\",children:\\"explicitly map fields\\"}),\\" from your log schema to the OTel log schema.\\"]}),`\\n`,(0,t.jsx)(e.p,{children:\\"From there, the OTel Collector batches and ships the formatted log lines via OTLP to Elastic.\\"}),`\\n`,(0,t.jsx)(e.h3,{id:\\"architecture-1\\",children:\\"Architecture\\"}),`\\n`,(0,t.jsx)(e.p,{children:(0,t.jsx)(e.img,{src:\\"/assets/images/3-models-logging-opentelemetry/elastic-blog-model-2-architecture.png\\",alt:\\"model 2 architecture\\",width:\\"524\\",height:\\"1120\\"})}),`\\n`,(0,t.jsx)(e.h3,{id:\\"pros-1\\",children:\\"Pros\\"}),`\\n`,(0,t.jsxs)(e.ul,{children:[`\\n`,(0,t.jsx)(e.li,{children:\\"Easy to debug (you can manually read the intermediate log file)\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"Inherent file-based FIFO buffer\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"Less susceptible to \\\\u201Cglare\\\\u201D conditions when service prematurely exits\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"Conversion to ECS happens within Elastic keeping log data vendor-agnostic until ingestion\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"Common wireline protocol (OTLP) across tracing, metrics, and logs\\"}),`\\n`]}),`\\n`,(0,t.jsx)(e.h3,{id:\\"cons-1\\",children:\\"Cons\\"}),`\\n`,(0,t.jsxs)(e.ul,{children:[`\\n`,(0,t.jsx)(e.li,{children:\\"All the headaches of file-based logging (rotation, disk overflow)\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"Beta quality and not yet proven in the field\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"No support for slf4j key-value pairs\\"}),`\\n`]}),`\\n`,(0,t.jsx)(e.h3,{id:\\"demo-1\\",children:\\"Demo\\"}),`\\n`,(0,t.jsx)(e.p,{children:\\"MODE=filelogreceiver docker-compose up\\"}),`\\n`,(0,t.jsx)(e.h2,{id:\\"model-3-logging-via-elastic-agent-or-filebeat\\",children:\\"Model 3: Logging via Elastic Agent (or Filebeat)\\"}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"Although the second model described affords some resilience as a function of the backing file, the OTel Collector filelogreceiver module is still decidedly \\",(0,t.jsx)(e.a,{href:\\"https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/filelogreceiver\\",rel:\\"nofollow\\",children:\\"\\\\u201Cbeta\\\\u201D\\"}),\\" in quality. Because of the importance of logs as a debugging tool, today I generally recommend that customers continue to import logs into Elastic using the field-proven \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/elastic-agent\\",rel:\\"nofollow\\",children:\\"Elastic Agent\\"}),\\" or \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/beats/filebeat\\",rel:\\"nofollow\\",children:\\"Filebeat\\"}),\\" scrappers. Elastic Agent and Filebeat have many years of field maturity under their collective belt. Further, it is often advantageous to deploy Elastic Agent anyway to capture the multitude of signals outside the purview of OpenTelemetry (e.g., deep Kubernetes and host metrics, security, etc.).\\"]}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"In this model, your service generates log statements as it always has, using popular logging libraries (e.g., \\",(0,t.jsx)(e.a,{href:\\"https://logback.qos.ch\\",rel:\\"nofollow\\",children:\\"Logback\\"}),\\" for Java). As with model 2, we employ OTel\\\\u2019s \\",(0,t.jsx)(e.a,{href:\\"https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/logback/logback-mdc-1.0/library\\",rel:\\"nofollow\\",children:\\"Logback MDC\\"}),\\" to add SpanID, TraceID, and Baggage to the \\",(0,t.jsx)(e.a,{href:\\"https://logback.qos.ch/manual/mdc.html\\",rel:\\"nofollow\\",children:\\"Logback MDC context\\"}),\\".\\"]}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"From there, we employ the \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/guide/en/ecs-logging/java/current/setup.html\\",rel:\\"nofollow\\",children:\\"Elastic ECS Encoder\\"}),\\" to encode log statements compliant to the Elastic Common Schema. The Elastic ECS Encoder will read the OTel SpanID, TraceID, and Baggage off the MDC context and encode it into the JSON structure. Similar to model 2, the Elastic ECS Encoder doesn\\\\u2019t support sl4f key-vair arguments. Curiously, the Elastic ECS encoder also doesn\\\\u2019t appear to support Logback structured arguments. Thus, within the Polyfill Appender, I add slf4j key-value pairs as MDC context. This is less than ideal, however, since MDC forces all values to be strings.\\"]}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"From there, we write the log lines to a log file. If you are using Kubernetes or other container orchestration in your environment, you would more typically write to stdout (console) and let the orchestration log driver write to and manage log files.We then configure Elastic Agent or Filebeat to scrape the log file. Notably, the Elastic ECS Encoder does not currently translate incoming OTel SpanID and TraceID variables on the MDC. Thus, we need to perform manual translation of these variables in the \\",(0,t.jsx)(e.a,{href:\\"https://github.com/ty-elastic/otel-logging/blob/main/filebeat.yml\\",rel:\\"nofollow\\",children:\\"Filebeat (or Elastic Agent) configuration\\"}),\\" to map them to their ECS equivalent.\\"]}),`\\n`,(0,t.jsx)(e.h2,{id:\\"architecture-2\\",children:\\"Architecture\\"}),`\\n`,(0,t.jsx)(e.p,{children:(0,t.jsx)(e.img,{src:\\"/assets/images/3-models-logging-opentelemetry/elastic-blog-model-3-architecture.png\\",alt:\\"model 3 architecture\\",width:\\"524\\",height:\\"927\\"})}),`\\n`,(0,t.jsx)(e.h3,{id:\\"pros-2\\",children:\\"Pros\\"}),`\\n`,(0,t.jsxs)(e.ul,{children:[`\\n`,(0,t.jsx)(e.li,{children:\\"Robust and field-proven\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"Easy to debug (you can manually read the intermediate log file)\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"Inherent file-based FIFO buffer\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"Less susceptible to \\\\u201Cglare\\\\u201D conditions when service prematurely exits\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"Native ECS format for easy manipulation in Elastic\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"Fleet-managed via Elastic Agent\\"}),`\\n`]}),`\\n`,(0,t.jsx)(e.h3,{id:\\"cons-2\\",children:\\"Cons\\"}),`\\n`,(0,t.jsxs)(e.ul,{children:[`\\n`,(0,t.jsx)(e.li,{children:\\"All the headaches of file-based logging (rotation, disk overflow)\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"No support for slf4j key-value pairs or Logback structured arguments\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"Requires translation of OTel SpanID and TraceID in Filebeat config\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"Disparate data paths for logs versus tracing and metrics\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"Vendor-specific logging format\\"}),`\\n`]}),`\\n`,(0,t.jsx)(e.h3,{id:\\"demo-2\\",children:\\"Demo\\"}),`\\n`,(0,t.jsx)(e.p,{children:\\"MODE=filebeat docker-compose up\\"}),`\\n`,(0,t.jsx)(e.h2,{id:\\"recommendations\\",children:\\"Recommendations\\"}),`\\n`,(0,t.jsx)(e.p,{children:\\"For most customers, I currently recommend Model 3 \\\\u2014 namely, write to logs in ECS format (with OTel SpanID, TraceID, and Baggage metadata) and collect them with an Elastic Agent installed on the node hosting the application or service. Elastic Agent (or Filebeat) today provides the most field-proven and robust means of capturing log files from applications and services with OpenTelemetry context.\\"}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"Further, you can leverage this same Elastic Agent instance (ideally running in your \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/guide/en/fleet/current/running-on-kubernetes-managed-by-fleet.html\\",rel:\\"nofollow\\",children:\\"Kubernetes daemonset\\"}),\\") to collect rich and robust metrics and logs from \\",(0,t.jsx)(e.a,{href:\\"https://docs.elastic.co/en/integrations/kubernetes\\",rel:\\"nofollow\\",children:\\"Kubernetes\\"}),\\" and many other supported services via \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/integrations/data-integrations\\",rel:\\"nofollow\\",children:\\"Elastic Integrations\\"}),\\". Finally, Elastic Agent facilitates remote management via \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/guide/en/fleet/current/fleet-overview.html\\",rel:\\"nofollow\\",children:\\"Fleet\\"}),\\", avoiding bespoke configuration files.\\"]}),`\\n`,(0,t.jsx)(e.p,{children:\\"Alternatively, for customers who either wish to keep their nodes vendor-neutral or use a consolidated signal routing system, I recommend Model 2, wherein an OpenTelemetry collector is used to scrape service log files. While workable and practiced by some early adopters in the field today, this model inherently carries some risk given the current beta nature of the OpenTelemetry filelogreceiver.\\"}),`\\n`,(0,t.jsx)(e.p,{children:\\"I generally do not recommend Model 1 given its limited language support, experimental/alpha status (the API could change), and current potential for data loss. That said, in time, with more language support and more thought to resilient designs, it has clear advantages both with regard to simplicity and richness of metadata.\\"}),`\\n`,(0,t.jsx)(e.h2,{id:\\"extracting-more-value-from-your-logs\\",children:\\"Extracting more value from your logs\\"}),`\\n`,(0,t.jsx)(e.p,{children:\\"In contrast to tracing and metrics, most organizations have nearly 100% log coverage over their applications and services. This is an ideal beachhead upon which to build an application observability system. On the other hand, logs are notoriously noisy and unstructured; this is only amplified with the scale enabled by the hyperscalers and Kubernetes. Collecting log lines reliably is the easy part; making them useful at today\\\\u2019s scale is hard.\\"}),`\\n`,(0,t.jsx)(e.p,{children:\\"Given that logs are arguably the most challenging observability signal from which to extract value at scale, one should ideally give thoughtful consideration to a vendor\\\\u2019s support for logging in the context of other observability signals. Can they handle surges in log rates because of unexpected scale or an error or test scenario? Do they have the machine learning tool set to automatically recognize patterns in log lines, sort them into categories, and identify true anomalies? Can they provide cost-effective online searchability of logs over months or years without manual rehydration? Do they provide the tools to extract and analyze business KPIs buried in logs?\\"}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"As an ardent and early supporter of OpenTelemetry, Elastic, of course, \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/guide/en/apm/guide/current/open-telemetry.html\\",rel:\\"nofollow\\",children:\\"natively ingests OTel traces, metrics, and logs\\"}),\\". And just like all logs coming into our system, logs coming from OTel-equipped sources avail themselves of our \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/observability/log-monitoring\\",rel:\\"nofollow\\",children:\\"mature tooling and next-gen AI Ops technologies\\"}),\\" to enable you to extract their full value.Interested? \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/contact?storm=global-header-en\\",rel:\\"nofollow\\",children:\\"Reach out to our pre-sales team\\"}),\\" to get started building with Elastic!\\"]}),`\\n`,(0,t.jsx)(e.p,{children:(0,t.jsx)(e.em,{children:\\"The release and timing of any features or functionality described in this post remain at Elastic\'s sole discretion. Any features or functionality not currently available may not be delivered on time or at all.\\"})})]})}function h(o={}){let{wrapper:e}=o.components||{};return e?(0,t.jsx)(e,{...o,children:(0,t.jsx)(d,{...o})}):d(o)}return v(E);})();\\n;return Component;"},"_id":"articles/3-models-logging-opentelemetry-elastic.mdx","_raw":{"sourceFilePath":"articles/3-models-logging-opentelemetry-elastic.mdx","sourceFileName":"3-models-logging-opentelemetry-elastic.mdx","sourceFileDir":"articles","contentType":"mdx","flattenedPath":"articles/3-models-logging-opentelemetry-elastic"},"type":"Article","imageUrl":"/assets/images/3-models-logging-opentelemetry/log_infrastructure_apm_synthetics-monitoring.jpeg","readingTime":"14 min read","url":"/3-models-logging-opentelemetry","headings":[{"level":2,"title":"OpenTelemetry logging models","href":"#opentelemetry-logging-models"},{"level":2,"title":"Logging vs. span events","href":"#logging-vs-span-events"},{"level":2,"title":"Polyfill appender","href":"#polyfill-appender"},{"level":2,"title":"Elastic Common Schema","href":"#elastic-common-schema"},{"level":2,"title":"Getting started","href":"#getting-started"},{"level":2,"title":"Model 1: Logging via OpenTelemetry instrumentation","href":"#model-1-logging-via-opentelemetry-instrumentation"},{"level":3,"title":"Architecture","href":"#architecture"},{"level":3,"title":"Pros","href":"#pros"},{"level":3,"title":"Cons","href":"#cons"},{"level":3,"title":"Demo","href":"#demo"},{"level":2,"title":"Model 2: Logging via the OpenTelemetry Collector","href":"#model-2-logging-via-the-opentelemetry-collector"},{"level":3,"title":"Architecture","href":"#architecture-1"},{"level":3,"title":"Pros","href":"#pros-1"},{"level":3,"title":"Cons","href":"#cons-1"},{"level":3,"title":"Demo","href":"#demo-1"},{"level":2,"title":"Model 3: Logging via Elastic Agent (or Filebeat)","href":"#model-3-logging-via-elastic-agent-or-filebeat"},{"level":2,"title":"Architecture","href":"#architecture-2"},{"level":3,"title":"Pros","href":"#pros-2"},{"level":3,"title":"Cons","href":"#cons-2"},{"level":3,"title":"Demo","href":"#demo-2"},{"level":2,"title":"Recommendations","href":"#recommendations"},{"level":2,"title":"Extracting more value from your logs","href":"#extracting-more-value-from-your-logs"}]},{"title":"Adding free and open Elastic APM as part of your Elastic Observability deployment","slug":"free-open-elastic-apm-observability-deployment","date":"2024-02-28","description":"Learn how to gather application trace data and store it alongside the logs and metrics from your applications and infrastructure with Elastic Observability and Elastic APM.","image":"blog-thumb-release-apm.png","author":[{"slug":"david-hope","type":"Author","_raw":{}}],"tags":[{"slug":"apm","type":"Tag","_raw":{}},{"slug":"opentelemetry","type":"Tag","_raw":{}}],"body":{"raw":"\\nIn a recent post, we showed you [how to get started with the free and open tier of Elastic Observability](https://www.elastic.co/blog/getting-started-with-free-and-open-elastic-observability). Below, we\'ll walk through what you need to do to expand your deployment so you can start gathering metrics from application performance monitoring (APM) or \\"tracing\\" data in your observability cluster, for free.\\n\\n## What is APM?\\n\\nApplication performance monitoring lets you see where your applications spend their time, what they are doing, what other applications or services they are calling, and what errors or exceptions they are encountering.\\n\\n![](/assets/images/free-open-elastic-apm-observability-deployment/screenshot-serverless-distributed-trace.png)\\n\\nIn addition, APM also lets you see history and trends for key performance indicators, such as latency and throughput, as well as transaction and dependency information:\\n\\n![](/assets/images/free-open-elastic-apm-observability-deployment/ruby-overview.png)\\n\\nWhether you\'re setting up alerts for SLA breaches, trying to gauge the impact of your latest release, or deciding where to make the next improvement, APM can help with your root-cause analysis to help improve your users\' experience and drive your mean time to resolution (MTTR) toward zero.\\n\\n## Logical architecture\\n\\nElastic APM relies on the APM Integration inside Elastic Agent, which forwards application trace and metric data from applications instrumented with APM agents to an Elastic Observability cluster. Elastic APM supports multiple agent flavors:\\n\\n- Native Elastic APM Agents, available for [multiple languages](https://www.elastic.co/guide/en/apm/agent/index.html), including Java, .NET, Go, Ruby, Python, Node.js, PHP, and client-side JavaScript\\n- Code instrumented with [OpenTelemetry](https://www.elastic.co/guide/en/apm/get-started/current/open-telemetry-elastic.html)\\n- Code instrumented with [OpenTracing](https://www.elastic.co/guide/en/apm/get-started/current/opentracing.html)\\n- Code instrumented with [Jaeger](https://www.elastic.co/guide/en/apm/server/current/jaeger.html)\\n\\n![](/assets/images/free-open-elastic-apm-observability-deployment/blog-elastic-observability-instrumented-services.png)\\n\\nIn this blog, we\'ll provide a quick example of how to instrument code with the native Elastic APM Python agent, but the overall steps are similar for other languages.\\n\\nPlease note that there is a strong distinction between the **Elastic APM Agent** and the **Elastic Agent**. These are very different components, as you can see in the diagram above, so it\'s important not to confuse them.\\n\\n## Install the Elastic Agent\\n\\nThe first step is to install the Elastic Agent. You either need Fleet [installed first](https://www.elastic.co/guide/en/fleet/current/add-a-fleet-server.html), or you can install the Elastic Agent standalone. Install the Elastic Agent somewhere by [following this guide](https://www.elastic.co/guide/en/fleet/master/elastic-agent-installation.html). This will give you an APM Integration endpoint you can hit. Note that this step is not necessary in Elastic Cloud, as we host the APM Integration for you. Check Elastic Agent is up by running:\\n\\n```bash\\ncurl :8200\\n```\\n\\n## Instrumenting sample code with an Elastic APM agent\\n\\nThe instructions for the various language agents differ based on the programming language, but at a high level they have a similar flow. First, you add the dependency for the agent in the language\'s native spec, then you configure the agent to let it know how to find the APM Integration.\\n\\nYou can try out any flavor you\'d like, but I am going to walk through the Python instructions using this Python example that [I created](https://github.com/davidgeorgehope/PythonElasticAPMExample).\\n\\n### Get the sample code (or use your own)\\n\\nTo get started, I clone the GitHub repository then change to the directory:\\n\\n```python\\ngit clone https://github.com/davidgeorgehope/PythonElasticAPMExample\\ncd PythonElasticAPMExample\\n```\\n\\n### How to add the dependency\\n\\nAdding the Elastic APM Dependency is simple — check the app.py file from [the github repo](https://github.com/davidgeorgehope/PythonElasticAPMExample/blob/main/app.py) and you will notice the following lines of code.\\n\\n```python\\nimport elasticapm\\nfrom elasticapm import Client\\n\\napp = Flask(__name__)\\napp.config[\\"ELASTIC_APM\\"] = { \\"SERVICE_NAME\\": os.environ.get(\\"APM_SERVICE_NAME\\", \\"flask-app\\"), \\"SECRET_TOKEN\\": os.environ.get(\\"APM_SECRET_TOKEN\\", \\"\\"), \\"SERVER_URL\\": os.environ.get(\\"APM_SERVER_URL\\", \\"https://localhost:8200\\"),}\\nelasticapm.instrumentation.control.instrument()\\nclient = Client(app.config[\\"ELASTIC_APM\\"])\\n```\\n\\nThe Python library for Flask is capable of auto detecting transactions, but you can also start transactions in code as per the following, as we have done in this example:\\n\\n```python\\n@app.route(\\"/\\")\\ndef hello():\\n client.begin_transaction(\'demo-transaction\')\\n client.end_transaction(\'demo-transaction\', \'success\')\\n```\\n\\n### Configure the agent\\n\\nThe agents need to send application trace data to the APM Integration, and to do this it has to be reachable. I configured the Elastic Agent to listen on my local host\'s IP, so anything in my subnet can send data to it. As you can see from the code below, we use docker-compose.yml to pass in the config via environment variables. Please edit these variables for your own Elastic installation.\\n\\n```yaml\\n# docker-compose.yml\\nversion: \\"3.9\\"\\nservices:\\n flask_app:\\n build: .\\n ports:\\n - \\"5001:5001\\"\\n environment:\\n - PORT=5001\\n - APM_SERVICE_NAME=flask-app\\n - APM_SECRET_TOKEN=your_secret_token\\n - APM_SERVER_URL=https://host.docker.internal:8200\\n```\\n\\nSome commentary on the above:\\n\\n- **service_name:** If you leave this out it will just default to the application\'s name, but you can override that here.\\n- **secret_token:** [Secret tokens](https://www.elastic.co/guide/en/apm/server/current/secret-token.html) allow you to authorize requests to the APM Server, but they require that the APM Server is set up with SSL/TLS and that a secret token has been set up. We\'re not using HTTPS between the agents and the APM Server, so we\'ll comment this one out.\\n- **server_url:** This is how the agent can reach the APM Integration inside Elastic Agent. Replace this with the name or IP of your host running Elastic Agent.\\n\\nNow that the Elastic APM side of the configuration is done, we simply follow the steps from the [README](https://github.com/davidgeorgehope/PythonElasticAPMExample/blob/main/README.md) to start up.\\n\\n```bash\\ndocker-compose up --build -d\\n```\\n\\nThe build step will take several minutes.\\n\\nYou can navigate to the running sample application by visiting https://localhost:5001. There\'s not a lot to the sample, but it does generate some APM data. To generate a bit of a load, you can reload them a few times or run a quick little script:\\n\\n```bash\\n#!/bin/bash\\n# load_test.sh\\nurl=\\"https://localhost:5001\\"\\nfor i in {1..1000}\\ndo\\n curl -s -o /dev/null $url\\n sleep 1\\ndone\\n```\\n\\nThis will just reload the pages every second.\\n\\nBack in Kibana, navigate back to the APM app (hamburger icon, then select **APM** ) and you should see our new flask-app service (I let mine run so it shows a bit more history):\\n\\n![](/assets/images/free-open-elastic-apm-observability-deployment/blog-elastic-observability-services.png)\\n\\nThe Service Overview page provides an at-a-glance summary of the health of a service in one place. If you\'re a developer or an SRE, this is the page that will help you answer questions like:\\n\\n- How did a new deployment impact performance?\\n- What are the top impacted transactions?\\n- How does performance correlate with underlying infrastructure?\\n\\nThis view provides a list of all of the applications that have sent application trace data to Elastic APM in the specified period of time (in this case, the last 15 minutes). There are also sparklines showing mini graphs of latency, throughput, and error rate. Clicking on **flask-app** takes us to the **service overview** page, which shows the various transactions within the service (recall that my script is hitting the / endpoint, as seen in the **Transactions** section). We get bigger graphs for **Latency** , **Throughput** , **Errors** , and **Error Rates**.\\n\\n![](/assets/images/free-open-elastic-apm-observability-deployment/blog-elastic-observability-flask-app.png)\\n\\nWhen you\'re instrumenting real applications, under real load, you\'ll see a lot more connectivity (and errors!)\\n\\nClicking on a transaction in the transaction view, in this case, our sample app\'s demo-transaction transaction, we can see exactly what operations were called:\\n\\n![](/assets/images/free-open-elastic-apm-observability-deployment/blog-elastic-observability-flask-app-demo-transaction.png)\\n\\nThis includes detailed information about calls to external services, such as database queries:\\n\\n![](/assets/images/free-open-elastic-apm-observability-deployment/blog-elastic-observability-span-details.png)\\n\\n## What\'s next?\\n\\nNow that you\'ve got your Elastic Observability cluster up and running and collecting out-of-the-box application trace data, explore the public APIs for the languages that your applications are using, which allow you to take your APM data to the next level. The APIs allow you to add custom metadata, define business transactions, create custom spans, and more. You can find the public API specs for the various APM agents (such as [Java](https://www.elastic.co/guide/en/apm/agent/java/current/public-api.html), [Ruby](https://www.elastic.co/guide/en/apm/agent/ruby/current/api.html), [Python](https://www.elastic.co/guide/en/apm/agent/python/current/index.html), and more) on the APM agent [documentation pages](https://www.elastic.co/guide/en/apm/agent/index.html).\\n\\nIf you\'d like to learn more about Elastic APM, check out [our webinar on Elastic APM in the shift to cloud native](https://www.elastic.co/webinars/introduction-to-elastic-apm-in-the-shift-to-cloud-native) to see other ways that Elastic APM can help you in your ecosystem.\\n\\nIf you decide that you\'d rather have us host your observability cluster, you can sign up for a free trial of the [Elasticsearch Service on Elastic Cloud](https://www.elastic.co/cloud/) and change your agents to point to your new cluster.\\n\\n_Originally published May 5, 2021; updated April 6, 2023._\\n","code":"var Component=(()=>{var p=Object.create;var o=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var m=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var y=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports),f=(n,e)=>{for(var a in e)o(n,a,{get:e[a],enumerable:!0})},l=(n,e,a,r)=>{if(e&&typeof e==\\"object\\"||typeof e==\\"function\\")for(let i of g(e))!w.call(n,i)&&i!==a&&o(n,i,{get:()=>e[i],enumerable:!(r=u(e,i))||r.enumerable});return n};var b=(n,e,a)=>(a=n!=null?p(m(n)):{},l(e||!n||!n.__esModule?o(a,\\"default\\",{value:n,enumerable:!0}):a,n)),v=n=>l(o({},\\"__esModule\\",{value:!0}),n);var h=y((M,s)=>{s.exports=_jsx_runtime});var A={};f(A,{default:()=>d,frontmatter:()=>E});var t=b(h()),E={title:\\"Adding free and open Elastic APM as part of your Elastic Observability deployment\\",slug:\\"free-open-elastic-apm-observability-deployment\\",date:\\"2024-02-28\\",description:\\"Learn how to gather application trace data and store it alongside the logs and metrics from your applications and infrastructure with Elastic Observability and Elastic APM.\\",author:[{slug:\\"david-hope\\"}],image:\\"blog-thumb-release-apm.png\\",tags:[{slug:\\"apm\\"},{slug:\\"opentelemetry\\"}]};function c(n){let e={a:\\"a\\",code:\\"code\\",em:\\"em\\",h2:\\"h2\\",h3:\\"h3\\",img:\\"img\\",li:\\"li\\",p:\\"p\\",pre:\\"pre\\",strong:\\"strong\\",ul:\\"ul\\",...n.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(e.p,{children:[\\"In a recent post, we showed you \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/blog/getting-started-with-free-and-open-elastic-observability\\",rel:\\"nofollow\\",children:\\"how to get started with the free and open tier of Elastic Observability\\"}),`. Below, we\'ll walk through what you need to do to expand your deployment so you can start gathering metrics from application performance monitoring (APM) or \\"tracing\\" data in your observability cluster, for free.`]}),`\\n`,(0,t.jsx)(e.h2,{id:\\"what-is-apm\\",children:\\"What is APM?\\"}),`\\n`,(0,t.jsx)(e.p,{children:\\"Application performance monitoring lets you see where your applications spend their time, what they are doing, what other applications or services they are calling, and what errors or exceptions they are encountering.\\"}),`\\n`,(0,t.jsx)(e.p,{children:(0,t.jsx)(e.img,{src:\\"/assets/images/free-open-elastic-apm-observability-deployment/screenshot-serverless-distributed-trace.png\\",alt:\\"\\",width:\\"1920\\",height:\\"1080\\"})}),`\\n`,(0,t.jsx)(e.p,{children:\\"In addition, APM also lets you see history and trends for key performance indicators, such as latency and throughput, as well as transaction and dependency information:\\"}),`\\n`,(0,t.jsx)(e.p,{children:(0,t.jsx)(e.img,{src:\\"/assets/images/free-open-elastic-apm-observability-deployment/ruby-overview.png\\",alt:\\"\\",width:\\"1920\\",height:\\"1080\\"})}),`\\n`,(0,t.jsx)(e.p,{children:\\"Whether you\'re setting up alerts for SLA breaches, trying to gauge the impact of your latest release, or deciding where to make the next improvement, APM can help with your root-cause analysis to help improve your users\' experience and drive your mean time to resolution (MTTR) toward zero.\\"}),`\\n`,(0,t.jsx)(e.h2,{id:\\"logical-architecture\\",children:\\"Logical architecture\\"}),`\\n`,(0,t.jsx)(e.p,{children:\\"Elastic APM relies on the APM Integration inside Elastic Agent, which forwards application trace and metric data from applications instrumented with APM agents to an Elastic Observability cluster. Elastic APM supports multiple agent flavors:\\"}),`\\n`,(0,t.jsxs)(e.ul,{children:[`\\n`,(0,t.jsxs)(e.li,{children:[\\"Native Elastic APM Agents, available for \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/guide/en/apm/agent/index.html\\",rel:\\"nofollow\\",children:\\"multiple languages\\"}),\\", including Java, .NET, Go, Ruby, Python, Node.js, PHP, and client-side JavaScript\\"]}),`\\n`,(0,t.jsxs)(e.li,{children:[\\"Code instrumented with \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/guide/en/apm/get-started/current/open-telemetry-elastic.html\\",rel:\\"nofollow\\",children:\\"OpenTelemetry\\"})]}),`\\n`,(0,t.jsxs)(e.li,{children:[\\"Code instrumented with \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/guide/en/apm/get-started/current/opentracing.html\\",rel:\\"nofollow\\",children:\\"OpenTracing\\"})]}),`\\n`,(0,t.jsxs)(e.li,{children:[\\"Code instrumented with \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/guide/en/apm/server/current/jaeger.html\\",rel:\\"nofollow\\",children:\\"Jaeger\\"})]}),`\\n`]}),`\\n`,(0,t.jsx)(e.p,{children:(0,t.jsx)(e.img,{src:\\"/assets/images/free-open-elastic-apm-observability-deployment/blog-elastic-observability-instrumented-services.png\\",alt:\\"\\",width:\\"877\\",height:\\"391\\"})}),`\\n`,(0,t.jsx)(e.p,{children:\\"In this blog, we\'ll provide a quick example of how to instrument code with the native Elastic APM Python agent, but the overall steps are similar for other languages.\\"}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"Please note that there is a strong distinction between the \\",(0,t.jsx)(e.strong,{children:\\"Elastic APM Agent\\"}),\\" and the \\",(0,t.jsx)(e.strong,{children:\\"Elastic Agent\\"}),\\". These are very different components, as you can see in the diagram above, so it\'s important not to confuse them.\\"]}),`\\n`,(0,t.jsx)(e.h2,{id:\\"install-the-elastic-agent\\",children:\\"Install the Elastic Agent\\"}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"The first step is to install the Elastic Agent. You either need Fleet \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/guide/en/fleet/current/add-a-fleet-server.html\\",rel:\\"nofollow\\",children:\\"installed first\\"}),\\", or you can install the Elastic Agent standalone. Install the Elastic Agent somewhere by \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/guide/en/fleet/master/elastic-agent-installation.html\\",rel:\\"nofollow\\",children:\\"following this guide\\"}),\\". This will give you an APM Integration endpoint you can hit. Note that this step is not necessary in Elastic Cloud, as we host the APM Integration for you. Check Elastic Agent is up by running:\\"]}),`\\n`,(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:\\"language-bash\\",children:`curl :8200\\n`})}),`\\n`,(0,t.jsx)(e.h2,{id:\\"instrumenting-sample-code-with-an-elastic-apm-agent\\",children:\\"Instrumenting sample code with an Elastic APM agent\\"}),`\\n`,(0,t.jsx)(e.p,{children:\\"The instructions for the various language agents differ based on the programming language, but at a high level they have a similar flow. First, you add the dependency for the agent in the language\'s native spec, then you configure the agent to let it know how to find the APM Integration.\\"}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"You can try out any flavor you\'d like, but I am going to walk through the Python instructions using this Python example that \\",(0,t.jsx)(e.a,{href:\\"https://github.com/davidgeorgehope/PythonElasticAPMExample\\",rel:\\"nofollow\\",children:\\"I created\\"}),\\".\\"]}),`\\n`,(0,t.jsx)(e.h3,{id:\\"get-the-sample-code-or-use-your-own\\",children:\\"Get the sample code (or use your own)\\"}),`\\n`,(0,t.jsx)(e.p,{children:\\"To get started, I clone the GitHub repository then change to the directory:\\"}),`\\n`,(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:\\"language-python\\",children:`git clone https://github.com/davidgeorgehope/PythonElasticAPMExample\\ncd PythonElasticAPMExample\\n`})}),`\\n`,(0,t.jsx)(e.h3,{id:\\"how-to-add-the-dependency\\",children:\\"How to add the dependency\\"}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"Adding the Elastic APM Dependency is simple \\\\u2014 check the app.py file from \\",(0,t.jsx)(e.a,{href:\\"https://github.com/davidgeorgehope/PythonElasticAPMExample/blob/main/app.py\\",rel:\\"nofollow\\",children:\\"the github repo\\"}),\\" and you will notice the following lines of code.\\"]}),`\\n`,(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:\\"language-python\\",children:`import elasticapm\\nfrom elasticapm import Client\\n\\napp = Flask(__name__)\\napp.config[\\"ELASTIC_APM\\"] = { \\"SERVICE_NAME\\": os.environ.get(\\"APM_SERVICE_NAME\\", \\"flask-app\\"), \\"SECRET_TOKEN\\": os.environ.get(\\"APM_SECRET_TOKEN\\", \\"\\"), \\"SERVER_URL\\": os.environ.get(\\"APM_SERVER_URL\\", \\"https://localhost:8200\\"),}\\nelasticapm.instrumentation.control.instrument()\\nclient = Client(app.config[\\"ELASTIC_APM\\"])\\n`})}),`\\n`,(0,t.jsx)(e.p,{children:\\"The Python library for Flask is capable of auto detecting transactions, but you can also start transactions in code as per the following, as we have done in this example:\\"}),`\\n`,(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:\\"language-python\\",children:`@app.route(\\"/\\")\\ndef hello():\\n client.begin_transaction(\'demo-transaction\')\\n client.end_transaction(\'demo-transaction\', \'success\')\\n`})}),`\\n`,(0,t.jsx)(e.h3,{id:\\"configure-the-agent\\",children:\\"Configure the agent\\"}),`\\n`,(0,t.jsx)(e.p,{children:\\"The agents need to send application trace data to the APM Integration, and to do this it has to be reachable. I configured the Elastic Agent to listen on my local host\'s IP, so anything in my subnet can send data to it. As you can see from the code below, we use docker-compose.yml to pass in the config via environment variables. Please edit these variables for your own Elastic installation.\\"}),`\\n`,(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:\\"language-yaml\\",children:`# docker-compose.yml\\nversion: \\"3.9\\"\\nservices:\\n flask_app:\\n build: .\\n ports:\\n - \\"5001:5001\\"\\n environment:\\n - PORT=5001\\n - APM_SERVICE_NAME=flask-app\\n - APM_SECRET_TOKEN=your_secret_token\\n - APM_SERVER_URL=https://host.docker.internal:8200\\n`})}),`\\n`,(0,t.jsx)(e.p,{children:\\"Some commentary on the above:\\"}),`\\n`,(0,t.jsxs)(e.ul,{children:[`\\n`,(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.strong,{children:\\"service_name:\\"}),\\" If you leave this out it will just default to the application\'s name, but you can override that here.\\"]}),`\\n`,(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.strong,{children:\\"secret_token:\\"}),\\" \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/guide/en/apm/server/current/secret-token.html\\",rel:\\"nofollow\\",children:\\"Secret tokens\\"}),\\" allow you to authorize requests to the APM Server, but they require that the APM Server is set up with SSL/TLS and that a secret token has been set up. We\'re not using HTTPS between the agents and the APM Server, so we\'ll comment this one out.\\"]}),`\\n`,(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.strong,{children:\\"server_url:\\"}),\\" This is how the agent can reach the APM Integration inside Elastic Agent. Replace this with the name or IP of your host running Elastic Agent.\\"]}),`\\n`]}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"Now that the Elastic APM side of the configuration is done, we simply follow the steps from the \\",(0,t.jsx)(e.a,{href:\\"https://github.com/davidgeorgehope/PythonElasticAPMExample/blob/main/README.md\\",rel:\\"nofollow\\",children:\\"README\\"}),\\" to start up.\\"]}),`\\n`,(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:\\"language-bash\\",children:`docker-compose up --build -d\\n`})}),`\\n`,(0,t.jsx)(e.p,{children:\\"The build step will take several minutes.\\"}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"You can navigate to the running sample application by visiting \\",(0,t.jsx)(e.a,{href:\\"https://localhost:5001\\",rel:\\"nofollow\\",children:\\"https://localhost:5001\\"}),\\". There\'s not a lot to the sample, but it does generate some APM data. To generate a bit of a load, you can reload them a few times or run a quick little script:\\"]}),`\\n`,(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:\\"language-bash\\",children:`#!/bin/bash\\n# load_test.sh\\nurl=\\"https://localhost:5001\\"\\nfor i in {1..1000}\\ndo\\n curl -s -o /dev/null $url\\n sleep 1\\ndone\\n`})}),`\\n`,(0,t.jsx)(e.p,{children:\\"This will just reload the pages every second.\\"}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"Back in Kibana, navigate back to the APM app (hamburger icon, then select \\",(0,t.jsx)(e.strong,{children:\\"APM\\"}),\\" ) and you should see our new flask-app service (I let mine run so it shows a bit more history):\\"]}),`\\n`,(0,t.jsx)(e.p,{children:(0,t.jsx)(e.img,{src:\\"/assets/images/free-open-elastic-apm-observability-deployment/blog-elastic-observability-services.png\\",alt:\\"\\",width:\\"1591\\",height:\\"515\\"})}),`\\n`,(0,t.jsx)(e.p,{children:\\"The Service Overview page provides an at-a-glance summary of the health of a service in one place. If you\'re a developer or an SRE, this is the page that will help you answer questions like:\\"}),`\\n`,(0,t.jsxs)(e.ul,{children:[`\\n`,(0,t.jsx)(e.li,{children:\\"How did a new deployment impact performance?\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"What are the top impacted transactions?\\"}),`\\n`,(0,t.jsx)(e.li,{children:\\"How does performance correlate with underlying infrastructure?\\"}),`\\n`]}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"This view provides a list of all of the applications that have sent application trace data to Elastic APM in the specified period of time (in this case, the last 15 minutes). There are also sparklines showing mini graphs of latency, throughput, and error rate. Clicking on \\",(0,t.jsx)(e.strong,{children:\\"flask-app\\"}),\\" takes us to the \\",(0,t.jsx)(e.strong,{children:\\"service overview\\"}),\\" page, which shows the various transactions within the service (recall that my script is hitting the / endpoint, as seen in the \\",(0,t.jsx)(e.strong,{children:\\"Transactions\\"}),\\" section). We get bigger graphs for \\",(0,t.jsx)(e.strong,{children:\\"Latency\\"}),\\" , \\",(0,t.jsx)(e.strong,{children:\\"Throughput\\"}),\\" , \\",(0,t.jsx)(e.strong,{children:\\"Errors\\"}),\\" , and \\",(0,t.jsx)(e.strong,{children:\\"Error Rates\\"}),\\".\\"]}),`\\n`,(0,t.jsx)(e.p,{children:(0,t.jsx)(e.img,{src:\\"/assets/images/free-open-elastic-apm-observability-deployment/blog-elastic-observability-flask-app.png\\",alt:\\"\\",width:\\"1080\\",height:\\"1141\\"})}),`\\n`,(0,t.jsx)(e.p,{children:\\"When you\'re instrumenting real applications, under real load, you\'ll see a lot more connectivity (and errors!)\\"}),`\\n`,(0,t.jsx)(e.p,{children:\\"Clicking on a transaction in the transaction view, in this case, our sample app\'s demo-transaction transaction, we can see exactly what operations were called:\\"}),`\\n`,(0,t.jsx)(e.p,{children:(0,t.jsx)(e.img,{src:\\"/assets/images/free-open-elastic-apm-observability-deployment/blog-elastic-observability-flask-app-demo-transaction.png\\",alt:\\"\\",width:\\"1079\\",height:\\"903\\"})}),`\\n`,(0,t.jsx)(e.p,{children:\\"This includes detailed information about calls to external services, such as database queries:\\"}),`\\n`,(0,t.jsx)(e.p,{children:(0,t.jsx)(e.img,{src:\\"/assets/images/free-open-elastic-apm-observability-deployment/blog-elastic-observability-span-details.png\\",alt:\\"\\",width:\\"1213\\",height:\\"677\\"})}),`\\n`,(0,t.jsx)(e.h2,{id:\\"whats-next\\",children:\\"What\'s next?\\"}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"Now that you\'ve got your Elastic Observability cluster up and running and collecting out-of-the-box application trace data, explore the public APIs for the languages that your applications are using, which allow you to take your APM data to the next level. The APIs allow you to add custom metadata, define business transactions, create custom spans, and more. You can find the public API specs for the various APM agents (such as \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/guide/en/apm/agent/java/current/public-api.html\\",rel:\\"nofollow\\",children:\\"Java\\"}),\\", \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/guide/en/apm/agent/ruby/current/api.html\\",rel:\\"nofollow\\",children:\\"Ruby\\"}),\\", \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/guide/en/apm/agent/python/current/index.html\\",rel:\\"nofollow\\",children:\\"Python\\"}),\\", and more) on the APM agent \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/guide/en/apm/agent/index.html\\",rel:\\"nofollow\\",children:\\"documentation pages\\"}),\\".\\"]}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"If you\'d like to learn more about Elastic APM, check out \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/webinars/introduction-to-elastic-apm-in-the-shift-to-cloud-native\\",rel:\\"nofollow\\",children:\\"our webinar on Elastic APM in the shift to cloud native\\"}),\\" to see other ways that Elastic APM can help you in your ecosystem.\\"]}),`\\n`,(0,t.jsxs)(e.p,{children:[\\"If you decide that you\'d rather have us host your observability cluster, you can sign up for a free trial of the \\",(0,t.jsx)(e.a,{href:\\"https://www.elastic.co/cloud/\\",rel:\\"nofollow\\",children:\\"Elasticsearch Service on Elastic Cloud\\"}),\\" and change your agents to point to your new cluster.\\"]}),`\\n`,(0,t.jsx)(e.p,{children:(0,t.jsx)(e.em,{children:\\"Originally published May 5, 2021; updated April 6, 2023.\\"})})]})}function d(n={}){let{wrapper:e}=n.components||{};return e?(0,t.jsx)(e,{...n,children:(0,t.jsx)(c,{...n})}):c(n)}return v(A);})();\\n;return Component;"},"_id":"articles/adding-free-and-open-elastic-apm-as-part-of-your-elastic-observability-deployment.mdx","_raw":{"sourceFilePath":"articles/adding-free-and-open-elastic-apm-as-part-of-your-elastic-observability-deployment.mdx","sourceFileName":"adding-free-and-open-elastic-apm-as-part-of-your-elastic-observability-deployment.mdx","sourceFileDir":"articles","contentType":"mdx","flattenedPath":"articles/adding-free-and-open-elastic-apm-as-part-of-your-elastic-observability-deployment"},"type":"Article","imageUrl":"/assets/images/free-open-elastic-apm-observability-deployment/blog-thumb-release-apm.png","readingTime":"8 min read","url":"/free-open-elastic-apm-observability-deployment","headings":[{"level":2,"title":"What is APM?","href":"#what-is-apm"},{"level":2,"title":"Logical architecture","href":"#logical-architecture"},{"level":2,"title":"Install the Elastic Agent","href":"#install-the-elastic-agent"},{"level":2,"title":"Instrumenting sample code with an Elastic APM agent","href":"#instrumenting-sample-code-with-an-elastic-apm-agent"},{"level":3,"title":"Get the sample code (or use your own)","href":"#get-the-sample-code-or-use-your-own"},{"level":3,"title":"How to add the dependency","href":"#how-to-add-the-dependency"},{"level":3,"title":"Configure the agent","href":"#configure-the-agent"},{"level":2,"title":"What\'s next?","href":"#whats-next"}]},{"title":"Bringing observability insights from Elastic AI Assistant to the world of GitHub Copilot","slug":"ai-assistant-to-github-copilot","date":"2024-05-23","description":"GitHub announced GitHub Copilot Extensions this week at Microsoft Build. We are working with the GitHub team to bring observability insights from Elastic AI Assistant to GitHub Copilot users.","image":"githubcopilot-aiassistant-C-2x.png","author":[{"slug":"jeff-vestal","type":"Author","_raw":{}},{"slug":"hemant-malik","type":"Author","_raw":{}}],"tags":[{"slug":"ai-assistant","type":"Tag","_raw":{}},{"slug":"genai","type":"Tag","_raw":{}},{"slug":"azure","type":"Tag","_raw":{}}],"body":{"raw":"\\nGitHub [announced](https://github.blog/2024-05-21-introducing-github-copilot-extensions/) GitHub Copilot Extensions this week at Microsoft Build. We are working with the GitHub team in the Limited Beta Program to explore bringing observability insights from Elastic AI Assistant to GitHub Copilot users. \\n\\nElastic’s GitHub Copilot Extension aims to combine the capabilities of GitHub Copilot and Elastic AI Assistant for Observability. This could enable developers to access critical insights from Elastic AI Assistant from GitHub Copilot Chat on GitHub.com, Visual Studio, GitHub.com, Visual Studio, and VS Code - places where they write their code.\\n\\nDevelopers will be able ask questions such as\\n- What errors are active?\\n- What’s the latest stacktrace for my application?\\n- What caused a slowdown in the application after the last push to the dev environment?\\n- How to write an ES|QL for query that my app will send to Elasticsearch?\\n- What runbook from Github has been loaded into Elasticsearch and is related to the issue I’m investigating\\nAnd many more!\\n\\n[Watch Jeff\'s PoC Demo@Microsoft Build 2024](https://build.microsoft.com/en-US/sessions/acc48a7a-b412-4b4f-88a6-53ef4b2cb2bc?source=/schedule)\\n\\n![Elastic\'s Copilot Extension in VSCode](/assets/images/ai-assistant-to-github-copilot/elastic-copilot-vscode.png)\\n\\n_Elastic AI Assistant surfaced in GitHub Copilot Chat from our Extension (Proof of Concept)_\\n\\n## What is the Elastic AI Assistant for Observability\\n\\nThe Elastic Observability AI Assistant for Observability, a user-centric tool, is a game-changer in providing contextual insights and streamlining troubleshooting within the Elastic Observability environment. By harnessing generative AI capabilities, the assistant offers open prompts that decipher error messages and propose remediation actions. It adopts a Retrieval-Augmented Generation (RAG) approach to fetch the most pertinent internal information, such as APM traces, log messages, SLOs, GitHub issues, runbooks, and more. This contextual assistance is a huge leap forward for Site Reliability Engineers (SREs) and operations teams, offering immediate, relevant solutions to issues based on existing documentation and resources, boosting developer productivity.\\n\\nFor more information on setting up and using the AI Assistant for Observability check out the blog [Getting started with the Elastic AI Assistant for Observability and Microsoft Azure OpenAI](https://www.elastic.co/observability-labs/blog/elastic-ai-assistant-observability-microsoft-azure-openai). Additionally, learn how [Elastic Observability AI Assistant uses RAG to help analyze application issues with GitHub issues](https://www.elastic.co/observability-labs/blog/elastic-rag-ai-assistant-application-issues-llm-github).\\n\\nOne unique feature of the AI Assistant is its API support. This allows you to take advantage of all the capabilities provided by the Elastic AI Assistant, and integrate them right into your workflow.\\n\\n## What is a GitHub Copilot Extension\\n\\nGitHub Copilot Extensions, a new addition to GitHub Copilot, revolutionizes the developer experience by integrating a diverse array of tools and services directly into the developer\'s workflow. These unique extensions, crafted by partners, enable developers to interact with various services and tools using natural language within their Integrated Development Environment (IDE) or GitHub.com. This integration eliminates the need for context-switching, allowing developers to maintain their flow state, troubleshoot issues, and deploy solutions with unparalleled efficiency. These extensions will be accessible through GitHub Copilot Chat in the GitHub Marketplace, with options for organizations to create private extensions tailored to their internal tooling.\\n\\n## What’s next\\n\\nWe are participating in the Github Limited Beta Program as a partner and exploring the possibility of bringing Elastic GitHub Copilot Extension to the GitHub Marketplace. We are excited to unlock insights from Elastic Observability to GitHub Copilot users side by side to the code behind those services. Stay tuned!\\n\\nResources:\\n- [Getting Started with Elastic AI Assistant for Observability with Azure OpenAI](https://www.elastic.co/observability-labs/blog/elastic-ai-assistant-observability-microsoft-azure-openai)\\n- [The Elastic AI Assistant for Observability escapes Kibana!](https://ela.st/assistant-escapes)\\n- [Elastic Observability AI Assistant uses RAG to help analyze application issues with GitHub issues](https://www.elastic.co/observability-labs/blog/elastic-rag-ai-assistant-application-issues-llm-github)\\n- [Troubleshooting with Elastic AI Assistant using your organization\'s runbooks](https://www.elastic.co/observability-labs/blog/sre-troubleshooting-ai-assistant-observability-runbooks)\\n- [The AI Assistant Observability documentation](https://www.elastic.co/guide/en/observability/current/obs-ai-assistant.html)\\n- [GitHub Copilot Extensions Blog Announcement](https://github.blog/2024-05-21-introducing-github-copilot-extensions/)\\n- [ES|QL documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/esql.html)\\n\\n","code":"var Component=(()=>{var b=Object.create;var n=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var m=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),w=(e,t)=>{for(var s in t)n(e,s,{get:t[s],enumerable:!0})},l=(e,t,s,a)=>{if(t&&typeof t==\\"object\\"||typeof t==\\"function\\")for(let o of p(t))!f.call(e,o)&&o!==s&&n(e,o,{get:()=>t[o],enumerable:!(a=d(t,o))||a.enumerable});return e};var v=(e,t,s)=>(s=e!=null?b(g(e)):{},l(t||!e||!e.__esModule?n(s,\\"default\\",{value:e,enumerable:!0}):s,e)),y=e=>l(n({},\\"__esModule\\",{value:!0}),e);var c=m((x,r)=>{r.exports=_jsx_runtime});var E={};w(E,{default:()=>u,frontmatter:()=>A});var i=v(c()),A={title:\\"Bringing observability insights from Elastic AI Assistant to the world of GitHub Copilot\\",slug:\\"ai-assistant-to-github-copilot\\",date:\\"2024-05-23\\",description:\\"GitHub announced GitHub Copilot Extensions this week at Microsoft Build. We are working with the GitHub team to bring observability insights from Elastic AI Assistant to GitHub Copilot users.\\",author:[{slug:\\"jeff-vestal\\"},{slug:\\"hemant-malik\\"}],image:\\"githubcopilot-aiassistant-C-2x.png\\",tags:[{slug:\\"ai-assistant\\"},{slug:\\"genai\\"},{slug:\\"azure\\"}]};function h(e){let t={a:\\"a\\",em:\\"em\\",h2:\\"h2\\",img:\\"img\\",li:\\"li\\",p:\\"p\\",ul:\\"ul\\",...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(t.p,{children:[\\"GitHub \\",(0,i.jsx)(t.a,{href:\\"https://github.blog/2024-05-21-introducing-github-copilot-extensions/\\",rel:\\"nofollow\\",children:\\"announced\\"}),\\" GitHub Copilot Extensions this week at Microsoft Build. We are working with the GitHub team in the Limited Beta Program to explore bringing observability insights from Elastic AI Assistant to GitHub Copilot users.\\"]}),`\\n`,(0,i.jsx)(t.p,{children:\\"Elastic\\\\u2019s GitHub Copilot Extension aims to combine the capabilities of GitHub Copilot and Elastic AI Assistant for Observability. This could enable developers to access critical insights from Elastic AI Assistant from GitHub Copilot Chat on GitHub.com, Visual Studio, GitHub.com, Visual Studio, and VS Code - places where they write their code.\\"}),`\\n`,(0,i.jsx)(t.p,{children:\\"Developers will be able ask questions such as\\"}),`\\n`,(0,i.jsxs)(t.ul,{children:[`\\n`,(0,i.jsx)(t.li,{children:\\"What errors are active?\\"}),`\\n`,(0,i.jsx)(t.li,{children:\\"What\\\\u2019s the latest stacktrace for my application?\\"}),`\\n`,(0,i.jsx)(t.li,{children:\\"What caused a slowdown in the application after the last push to the dev environment?\\"}),`\\n`,(0,i.jsx)(t.li,{children:\\"How to write an ES|QL for query that my app will send to Elasticsearch?\\"}),`\\n`,(0,i.jsx)(t.li,{children:`What runbook from Github has been loaded into Elasticsearch and is related to the issue I\\\\u2019m investigating\\nAnd many more!`}),`\\n`]}),`\\n`,(0,i.jsx)(t.p,{children:(0,i.jsx)(t.a,{href:\\"https://build.microsoft.com/en-US/sessions/acc48a7a-b412-4b4f-88a6-53ef4b2cb2bc?source=/schedule\\",rel:\\"nofollow\\",children:\\"Watch Jeff\'s PoC Demo@Microsoft Build 2024\\"})}),`\\n`,(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{src:\\"/assets/images/ai-assistant-to-github-copilot/elastic-copilot-vscode.png\\",alt:\\"Elastic\'s Copilot Extension in VSCode\\",width:\\"3093\\",height:\\"1931\\"})}),`\\n`,(0,i.jsx)(t.p,{children:(0,i.jsx)(t.em,{children:\\"Elastic AI Assistant surfaced in GitHub Copilot Chat from our Extension (Proof of Concept)\\"})}),`\\n`,(0,i.jsx)(t.h2,{id:\\"what-is-the-elastic-ai-assistant-for-observability\\",children:\\"What is the Elastic AI Assistant for Observability\\"}),`\\n`,(0,i.jsx)(t.p,{children:\\"The Elastic Observability AI Assistant for Observability, a user-centric tool, is a game-changer in providing contextual insights and streamlining troubleshooting within the Elastic Observability environment. By harnessing generative AI capabilities, the assistant offers open prompts that decipher error messages and propose remediation actions. It adopts a Retrieval-Augmented Generation (RAG) approach to fetch the most pertinent internal information, such as APM traces, log messages, SLOs, GitHub issues, runbooks, and more. This contextual assistance is a huge leap forward for Site Reliability Engineers (SREs) and operations teams, offering immediate, relevant solutions to issues based on existing documentation and resources, boosting developer productivity.\\"}),`\\n`,(0,i.jsxs)(t.p,{children:[\\"For more information on setting up and using the AI Assistant for Observability check out the blog \\",(0,i.jsx)(t.a,{href:\\"https://www.elastic.co/observability-labs/blog/elastic-ai-assistant-observability-microsoft-azure-openai\\",rel:\\"nofollow\\",children:\\"Getting started with the Elastic AI Assistant for Observability and Microsoft Azure OpenAI\\"}),\\". Additionally, learn how \\",(0,i.jsx)(t.a,{href:\\"https://www.elastic.co/observability-labs/blog/elastic-rag-ai-assistant-application-issues-llm-github\\",rel:\\"nofollow\\",children:\\"Elastic Observability AI Assistant uses RAG to help analyze application issues with GitHub issues\\"}),\\".\\"]}),`\\n`,(0,i.jsx)(t.p,{children:\\"One unique feature of the AI Assistant is its API support. This allows you to take advantage of all the capabilities provided by the Elastic AI Assistant, and integrate them right into your workflow.\\"}),`\\n`,(0,i.jsx)(t.h2,{id:\\"what-is-a-github-copilot-extension\\",children:\\"What is a GitHub Copilot Extension\\"}),`\\n`,(0,i.jsx)(t.p,{children:\\"GitHub Copilot Extensions, a new addition to GitHub Copilot, revolutionizes the developer experience by integrating a diverse array of tools and services directly into the developer\'s workflow. These unique extensions, crafted by partners, enable developers to interact with various services and tools using natural language within their Integrated Development Environment (IDE) or GitHub.com. This integration eliminates the need for context-switching, allowing developers to maintain their flow state, troubleshoot issues, and deploy solutions with unparalleled efficiency. These extensions will be accessible through GitHub Copilot Chat in the GitHub Marketplace, with options for organizations to create private extensions tailored to their internal tooling.\\"}),`\\n`,(0,i.jsx)(t.h2,{id:\\"whats-next\\",children:\\"What\\\\u2019s next\\"}),`\\n`,(0,i.jsx)(t.p,{children:\\"We are participating in the Github Limited Beta Program as a partner and exploring the possibility of bringing Elastic GitHub Copilot Extension to the GitHub Marketplace. We are excited to unlock insights from Elastic Observability to GitHub Copilot users side by side to the code behind those services. Stay tuned!\\"}),`\\n`,(0,i.jsx)(t.p,{children:\\"Resources:\\"}),`\\n`,(0,i.jsxs)(t.ul,{children:[`\\n`,(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:\\"https://www.elastic.co/observability-labs/blog/elastic-ai-assistant-observability-microsoft-azure-openai\\",rel:\\"nofollow\\",children:\\"Getting Started with Elastic AI Assistant for Observability with Azure OpenAI\\"})}),`\\n`,(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:\\"https://ela.st/assistant-escapes\\",rel:\\"nofollow\\",children:\\"The Elastic AI Assistant for Observability escapes Kibana!\\"})}),`\\n`,(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:\\"https://www.elastic.co/observability-labs/blog/elastic-rag-ai-assistant-application-issues-llm-github\\",rel:\\"nofollow\\",children:\\"Elastic Observability AI Assistant uses RAG to help analyze application issues with GitHub issues\\"})}),`\\n`,(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:\\"https://www.elastic.co/observability-labs/blog/sre-troubleshooting-ai-assistant-observability-runbooks\\",rel:\\"nofollow\\",children:\\"Troubleshooting with Elastic AI Assistant using your organization\'s runbooks\\"})}),`\\n`,(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:\\"https://www.elastic.co/guide/en/observability/current/obs-ai-assistant.html\\",rel:\\"nofollow\\",children:\\"The AI Assistant Observability documentation\\"})}),`\\n`,(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:\\"https://github.blog/2024-05-21-introducing-github-copilot-extensions/\\",rel:\\"nofollow\\",children:\\"GitHub Copilot Extensions Blog Announcement\\"})}),`\\n`,(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:\\"https://www.elastic.co/guide/en/elasticsearch/reference/current/esql.html\\",rel:\\"nofollow\\",children:\\"ES|QL documentation\\"})}),`\\n`]})]})}function u(e={}){let{wrapper:t}=e.components||{};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}return y(E);})();\\n;return Component;"},"_id":"articles/ai-assistant-to-github-copilot.mdx","_raw":{"sourceFilePath":"articles/ai-assistant-to-github-copilot.mdx","sourceFileName":"ai-assistant-to-github-copilot.mdx","sourceFileDir":"articles","contentType":"mdx","flattenedPath":"articles/ai-assistant-to-github-copilot"},"type":"Article","imageUrl":"/assets/images/ai-assistant-to-github-copilot/githubcopilot-aiassistant-C-2x.png","readingTime":"4 min read","url":"/ai-assistant-to-github-copilot","headings":[{"level":2,"title":"What is the Elastic AI Assistant for Observability","href":"#what-is-the-elastic-ai-assistant-for-observability"},{"level":2,"title":"What is a GitHub Copilot Extension","href":"#what-is-a-github-copilot-extension"},{"level":2,"title":"What’s next","href":"#whats-next"}]},{"title":"Analyzing OpenTelemetry apps with Elastic AI Assistant and APM","slug":"analyzing-opentelemetry-apps-elastic-ai-assistant-apm","date":"2024-03-12","description":"Elastic Observability provides native OpenTelemetry support, but analyzing applications logs, metrics, and traces can be daunting. Elastic Observability not only provides AIOps features but also an AI Assistant (co-pilot) to help get to MTTR faster.","image":"ecs-otel-announcement-3.jpeg","author":[{"slug":"bahubali-shetti","type":"Author","_raw":{}}],"tags":[{"slug":"ai-assistant","type":"Tag","_raw":{}},{"slug":"apm","type":"Tag","_raw":{}},{"slug":"genai","type":"Tag","_raw":{}},{"slug":"apm","type":"Tag","_raw":{}},{"slug":"opentelemetry","type":"Tag","_raw":{}}],"body":{"raw":"\\nOpenTelemetry is rapidly becoming the most expansive project within the Cloud Native Computing Foundation (CNCF), boasting as many commits as Kubernetes and garnering widespread support from customers. Numerous companies are adopting OpenTelemetry and integrating it into their applications. Elastic\xae offers detailed [guides](https://www.elastic.co/blog/getting-started-opentelemetry-instrumentation-sample-app) on implementing OpenTelemetry for applications. However, like many applications, pinpointing and resolving issues can be time-consuming.\\n\\nThe [Elastic AI Assistant](https://www.elastic.co/blog/context-aware-insights-elastic-ai-assistant-observability) significantly enhances the process, not only in identifying but also in resolving issues. This is further enhanced by Elastic’s new Service Level Objective (SLO) capability, allowing you to streamline your entire site reliability engineering (SRE) process from detecting potential issues to enhancing the overall customer experience.\\n\\nIn this blog, we will demonstrate how you, as an SRE, can detect issues in a service equipped with OpenTelemetry. We will explore problem identification using Elastic APM, Elastic’s AIOps capabilities, and the Elastic AI Assistant.\\n\\nWe will illustrate this using the [OpenTelemetry demo](https://github.com/elastic/opentelemetry-demo), with a [feature flag (cartService)](https://opentelemetry.io/docs/demo/feature-flags/) that is activated.\\n\\nOur walkthrough will encompass two scenarios:\\n\\n1. When the SLO for cart service becomes noncompliant, we will analyze the error through Elastic APM. The Elastic AI Assistant will assist by providing a runbook and a GitHub issue to facilitate issue analysis.\\n\\n2. Should the SLO for the cart service be noncompliant, we will examine the trace that indicates a high failure rate. We will employ AIOps for failure correlation and the AI Assistant to analyze logs and Kubernetes metrics directly from the Assistant.\\n\\n## Prerequisites and config\\n\\nIf you plan on following this blog, here are some of the components and details we used to set up the configuration:\\n\\n- Ensure you have an account on [Elastic Cloud](https://cloud.elastic.co/) and a deployed stack ([see instructions here](https://www.elastic.co/guide/en/elastic-stack/current/installing-elastic-stack.html)).\\n\\n- We used the OpenTelemetry Demo. Directions for using Elastic with OpenTelemetry Demo are [here](https://github.com/elastic/opentelemetry-demo).\\n\\n- Additionally you will need to connect your AI Assistant to your favorite LLM. We used Azure OpenAI GPT-4.\\n\\n- We also ran the OpenTelemetry Demo on Kubernetes, specifically on GKE.\\n\\n## SLO noncompliance\\n\\nElastic APM recently released the SLO (Service Level Objectives) feature in [8.12](https://www.elastic.co/guide/en/observability/8.12/slo.html). This feature enables setting measurable performance targets for services, such as [availability, latency, traffic, errors, and saturation or define your own](https://sre.google/sre-book/monitoring-distributed-systems/). Key components include:\\n\\n- Defining and monitoring SLIs (Service Level Indicators)\\n\\n- Monitoring error budgets indicating permissible performance shortfalls\\n\\n- Alerting on burn rates showing error budget consumption\\n\\nWe set up two SLOs for cart service:\\n\\n- **Availability SLO** , which monitors its availability by ensuring that transactions succeed. We set up the feature flag in the OpenTelemetry application, which generates an error for EmptyCart transactions 10% of the time.\\n\\n- **Latency SLO** to ensure transactions are not going below a specific latency, which will reduce customer experiences.\\n\\n![1 - SLOs](/assets/images/analyzing-opentelemetry-apps-elastic-ai-assistant-apm/image1.png)\\n\\nBecause of the OTel cartservice feature flag, the availability SLO is triggered, and within the SLO details, we see that over a seven-day period the availability is well below our target of 99.9, at 95.5. Additionally all the error budget that was available is also exhausted.\\n\\n![2 - cart service otel](/assets/images/analyzing-opentelemetry-apps-elastic-ai-assistant-apm/image2.png)\\n\\nWith SLO, you can easily identify when issues with customer experience occur, or when potential issues with services arise before they become potentially worse.\\n\\n## Scenario 1: Analyzing APM trace and logs with AI Assistant\\n\\nOnce the SLO is found as non-compliant, we can dive into cart service to investigate in Elastic APM. The following walks through the set of steps you can take in Elastic APM and how to use the AI Assistant to analyze the issue:\\n\\n