654 lines
369 KiB
HTML
654 lines
369 KiB
HTML
<!DOCTYPE html><!-- Minimal inline styling for MathJax --><html lang="en" data-tags="postgresql, database" data-blog-type="engineering"> <head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><!-- Temporary: redirect raw Amplify domain to canonical. Remove once CF injects X-Canonical-Host. --><script>
|
||
if (window.location.hostname === 'main.d2372vaejiu5h9.amplifyapp.com') {
|
||
var u = new URL(window.location.href);
|
||
u.hostname = 'www.datadoghq.com';
|
||
window.location.replace(u.toString());
|
||
}
|
||
</script><!-- Preload required fonts --><link rel="preload" href="/fonts/web-fonts/NationalWeb-Book.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="/fonts/web-fonts/NationalWeb-Medium.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="/fonts/web-fonts/NationalWeb-Semibold.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="/fonts/web-fonts/NationalWeb-Bold.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="/fonts/web-fonts/RobotoMono-Regular.ttf" as="font" type="font/ttf" crossorigin><!-- Preconnect to required resources --><link rel="dns-prefetch preconnect" href="https://blog.dd-static.net"><link rel="dns-prefetch preconnect" href="https://www.googletagmanager.com"><link rel="dns-prefetch preconnect" href="https://consent.trustarc.com"><link rel="dns-prefetch preconnect" href="https://browser-intake-datadoghq.com"><link rel="dns-prefetch preconnect" href="https://gk6e3zbyuntvc5dap.a1.typesense.net"><title>When upserts don’t update but still write: Debugging Postgres performance at scale | Datadog</title><meta name="description" content="When a high-volume upsert doubled disk writes, Datadog engineers traced the issue to Postgres WAL behavior and rewrote the query to eliminate hidden costs."><meta name="robots" content="index, follow"><link rel="canonical" href="https://www.datadoghq.com/blog/engineering/debugging-postgres-performance/"><meta name="date" content="2026-03-23"><!-- RSS Feed --><link rel="alternate" type="application/rss+xml" title="Datadog | The Monitor blog" href="https://www.datadoghq.com/blog/index.xml"><!-- Hreflang alternates --><link rel="alternate" hreflang="en" href="https://www.datadoghq.com/blog/engineering/debugging-postgres-performance/"><link rel="alternate" hreflang="x-default" href="https://www.datadoghq.com/blog/engineering/debugging-postgres-performance/"><!-- Additional head content from child layouts --><script type="application/ld+json">{"@context":"https://schema.org","@type":"Article","author":[{"@type":"Person","name":"Anthonin Bonnefoy"}],"datePublished":"2026-03-23T00:00:00.000Z","description":"When a high-volume upsert doubled disk writes, Datadog engineers traced the issue to Postgres WAL behavior and rewrote the query to eliminate hidden costs.","headline":"When upserts don’t update but still write: Debugging Postgres performance at scale","image":"https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png","inLanguage":"en-US","mainEntityOfPage":{"@type":"WebPage","@id":"https://www.datadoghq.com/blog/engineering/debugging-postgres-performance/"},"publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"https://blog.dd-static.net/img/dd_logo_n_70x75.png"},"name":"Datadog","sameAs":["https://twitter.com/datadoghq","https://www.instagram.com/datadoghq/","https://en.wikipedia.org/wiki/Datadog","https://www.facebook.com/datadoghq/","https://www.linkedin.com/company/datadog","https://github.com/DataDog","https://www.youtube.com/channel/UCPO2QgTCReBAThZca6MB9jg"],"url":"https://www.datadoghq.com/"},"keywords":"postgresql, database"}</script><meta name="keywords" content="postgresql, database"><meta name="author" content="Anthonin Bonnefoy"><!-- Open Graph Tags --><meta property="og:title" content="When upserts don’t update but still write: Debugging Postgres performance at scale | Datadog"><meta property="og:description" content="When a high-volume upsert doubled disk writes, Datadog engineers traced the issue to Postgres WAL behavior and rewrote the query to eliminate hidden costs."><meta property="og:image" content="https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png"><meta property="og:type" content="article"><meta property="og:url" content="https://www.datadoghq.com/blog/engineering/debugging-postgres-performance/"><meta property="og:site_name" content="Datadog"><meta property="og:locale" content="en"><!-- Twitter Tags --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="When upserts don’t update but still write: Debugging Postgres performance at scale | Datadog"><meta name="twitter:description" content="When a high-volume upsert doubled disk writes, Datadog engineers traced the issue to Postgres WAL behavior and rewrote the query to eliminate hidden costs."><meta name="twitter:image" content="https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png"><meta name="twitter:url" content="https://www.datadoghq.com/blog/engineering/debugging-postgres-performance/"><meta name="twitter:site" content="@datadoghq"><meta name="twitter:creator" content="@datadoghq"><!-- Preconnect to required resources --><link rel="preconnect" href="https://www.googletagmanager.com" crossorigin><link rel="preconnect" href="https://webops-gtm.datadoghq.com" crossorigin><link rel="preconnect" href="https://browser-intake-datadoghq.com" crossorigin><!--- Google Tag Manager -->
|
||
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-WDC8G6" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
||
<script>(function(){const gtmContainerId = "GTM-WDC8G6";
|
||
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
||
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
|
||
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
|
||
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
|
||
})(window,document,'script','dataLayer',`${gtmContainerId}`);})();</script>
|
||
<!-- End Google Tag Manager --><link rel="stylesheet" href="/blog/_astro/Base.BdRXlyCZ.css"><link rel="stylesheet" href="/blog/_astro/index.DlKsH7qy.css"><script type="module" src="/blog/_astro/page.Bc5QPW76.js"></script></head> <body> <script type="module">document.querySelectorAll("dialog[id]").forEach(r=>{const e=r;if(e.__dialogInitialized)return;e.__dialogInitialized=!0;const n=e.id,l=e.querySelector(`#${n}-close`),t=document.querySelector("body"),o="overflow-hidden",d=()=>{e.close(),t.classList.remove(o),t.style.overflow=""},a=()=>{e.showModal(),t.classList.add(o)};e.addEventListener("click",i=>{const c=e.firstElementChild?.getBoundingClientRect()||e.getBoundingClientRect();(i.clientX<c.left||i.clientX>c.right||i.clientY<c.top||i.clientY>c.bottom)&&d()}),l&&l.addEventListener("click",()=>{d()}),e.addEventListener("keydown",i=>{i.key==="Escape"&&d()}),e.__openDialog=a,e.__closeDialog=d});document.querySelectorAll("[data-dialog-trigger]").forEach(r=>{const e=r;if(e.__triggerInitialized)return;e.__triggerInitialized=!0;const n=e.dataset.dialogTrigger;if(!n)return;const l=document.getElementById(n);if(!l)return;const t=l.__openDialog;e.addEventListener("click",()=>{t()}),e.addEventListener("keydown",o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),t())})});</script> <div class="absolute top-0"><html><head></head><body><div class="announcement-banner text-center fixed top-0 z-[200] h-[30px] w-full flex items-center justify-center bg-[#632ca6] bg-gradient-to-r from-[#632ca6] to-[#2f80ed] text-center text-white font-semibold font-national text-20"><a class="fw-semibold text-nowrap" href="https://www.datadoghq.com/resources/gartner-magic-quadrant-observability-platforms-2026/?utm_source=inbound&utm_medium=corpsite-display&utm_campaign=dg-apm-ww-announcement-corpsite-announcement-gartnermq2026-obsplat"><span class="d-none d-md-block hidden banner-title-desktop tablet:block">Datadog named a Leader in the Gartner® Magic Quadrant™ for Observability Platforms
|
||
</span><span class="d-block d-md-none block tablet:hidden banner-title-mobile">Leader in the Gartner® Magic Quadrant™
|
||
</span></a><script>function getGeotarget(){const o=!1,t={webinars:[{codes:["US","CA"],desktop_title:null,end_date:null,link:null,mobile_title:null,start_date:null,supported_language:"en"},{codes:["UK","US","CA","GB","IE","BE","NL","PL","DK","SE",!1,"LU","IL","FI","GR","LI","CZ","ZA","IL","ES","DE","FR","IT","CH"],desktop_title:"Datadog Detect is back! Register for the virtual mini-conference on Oct 30, 12PM ET",end_date:"2025-10-30",link:"https://www.datadoghq.com/event/datadog-detect-q425/?utm_source=inbound&utm_medium=corpsite-display&utm_campaign=dg-security-ww-banner-corpsite",mobile_title:"Join us for Datadog Detect on Oct 30, 12PM ET",start_date:"2025-10-22",supported_language:"en"},{codes:["ES"],desktop_title:"Webinar de Datadog: Crea experiencias digitales impecables con monitorización End-to-End",end_date:"2025-05-06",link:"https://www.datadoghq.com/es/dg/webinars/uxdem-spain-2025/?utm_source=inbound&utm_medium=corpsite-display&utm_campaign=dg-dem-emea-livewebinar-202505uxdemsp",mobile_title:"Crea experiencias digitales impecables con monitorización End-to-End",start_date:"2025-04-22",supported_language:"es"},{codes:["JP"],desktop_title:"Datadog ウェビナー: エンドツーエンドの監視によって生み出されるシームレスな DX",end_date:"2025-05-14",link:"https://www.datadoghq.com/ja/dg/webinars/uxdem-japan-2025/?utm_source=inbound&utm_medium=corpsite-display&utm_campaign=dg-dem-japan-livewebinar-202505uxdemjp",mobile_title:"ウェビナー: エンドツーエンドの監視によって生み出されるシームレスな DX",start_date:"2025-05-01",supported_language:"ja"},{codes:["SG","NZ","AU","IN","PH","TW","VN","ID","TH","MY"],desktop_title:"Register Now: Create Seamless Digital Experiences with End-to-End Monitoring",end_date:"2025-04-24",link:"https://www.datadoghq.com/dg/webinars/uxdem-anz-2025/?utm_source=inbound&utm_medium=corpsite-display&utm_campaign=dg-dem-apac-livewebinar-202504uxdemanz",mobile_title:"Create Seamless Digital Experiences with End-to-End Monitoring",start_date:"2025-04-10",supported_language:"en"},{codes:["MX","AR","CO","PE","VE"],desktop_title:"Webinar de Datadog: Crea experiencias digitales fluidas con el monitoreo punto a punto",end_date:"2025-04-10",link:"https://www.datadoghq.com/es/dg/webinars/uxdem-es-2025/?utm_source=inbound&utm_medium=corpsite-display&utm_campaign=dg-dem-latam-livewebinar-202504uxdemes",mobile_title:"Crea experiencias digitales fluidas con el monitoreo punto a punto",start_date:"2025-04-01",supported_language:"es"},{codes:["FR","BE","CH","CA"],desktop_title:"Webinar Datadog: Créez des expériences numériques fluides grâce à la surveillance de bout en bout ",end_date:"2025-04-30",link:"https://www.datadoghq.com/fr/dg/webinars/uxdem-france-2025/?utm_source=inbound&utm_medium=corpsite-display&utm_campaign=dg-dem-emea-livewebinar-202504uxdemfr",mobile_title:"Créez des expériences numériques fluides grâce à la surveillance de bout en bout",start_date:"2025-04-16",supported_language:"fr"},{codes:["IT","CH"],desktop_title:"Webinar di Datadog: Creare digital experience impeccabili con il monitoraggio end-to-end",end_date:"2025-04-29",link:"https://www.datadoghq.com/it/dg/webinars/uxdem-italy-2025/?utm_source=inbound&utm_medium=corpsite-display&utm_campaign=dg-dem-emea-livewebinar-202504uxdemit",mobile_title:"Creare digital experience impeccabili con il monitoraggio end-to-end",start_date:"2025-04-15",supported_language:"it"},{codes:["KR"],desktop_title:"Datadog 웨비나 | 인프라 & 쿠버네티스 모니터링 쉽게 마스터하기! 2/21 (금) 2PM",end_date:"2025-02-20",link:"https://www.datadoghq.com/ko/dg/webinars/infra-korea-2025/?utm_source=inbound&utm_medium=corpsite-display&utm_campaign=dg-infra-korea-corpsite-banner-livewebinar-202502infrakr",mobile_title:"인프라 & 쿠버네티스 모니터링 쉽게 마스터하기! 2/21",start_date:"2025-01-30",supported_language:"ko"},{codes:["BR","PT"],desktop_title:"Webinar da Datadog: Crie experiências digitais perfeitas com monitoramento de ponta a ponta",end_date:"2025-04-09",link:"https://www.datadoghq.com/pt/dg/webinars/uxdem-pt-2025/?utm_source=inbound&utm_medium=corpsite-display&utm_campaign=dg-dem-latam-livewebinar-202504uxdempt",mobile_title:"Crie experiências digitais perfeitas com monitoramento de ponta a ponta",start_date:"2025-04-01",supported_language:"pt"},{codes:["DE","AT","CH"],desktop_title:"Datadog-Webinar: Schaffen Sie eine nahtlose digitale Experience mit End-to-End-Monitoring",end_date:"2025-04-09",link:"https://www.datadoghq.com/de/dg/webinars/uxdem-dach-2025/?utm_source=inbound&utm_medium=corpsite-display&utm_campaign=dg-dem-emea-livewebinar-202504uxdemdach",mobile_title:"Schaffen Sie eine nahtlose digitale Experience mit End-to-End-Monitoring",start_date:"2025-04-01",supported_language:"de"}]};let e="US";function n(e,t,n){const s=Date.now(),o={value:t,timestamp:s+n};localStorage.setItem(e,JSON.stringify(o))}function s(){const t=window.document.URL.match("(www|docs).datadoghq.com")?"https://www.datadoghq.com/locate":"https://corpsite-staging.datadoghq.com/locate";return fetch(t).then(e=>e.json()).then(t=>{e=t.country,n("country",e,6048e5)}).catch(n("country",e,0))}const i=()=>{try{const n=localStorage.getItem("country"),t=JSON.parse(n);if(Date.now()<t.timestamp)return e=t.value,e;s()}catch{s()}return e};if(t&&!o){i();let n=!1;t.webinars.forEach(t=>{t.codes.includes(e)&&(updateBanner(t),t.lp_link?n=!0:n=!1)})}}getGeotarget();function getLanguage(){const e=window.DD_RUM?.getUser?.().preferred_lang||navigator.language||"en",t=e.split("-");return t[0]}function populateBanner(e){document.querySelector(".banner-title-desktop").innerHTML=e.desktop_title,document.querySelector(".banner-title-mobile").innerHTML=e.mobile_title,document.querySelector(".announcement-banner > a").href=e.link}function updateBanner(e){const t=new Date,s=new Date(e.start_date),o=new Date(e.end_date),n=getLanguage(),{env:i}=document.documentElement.dataset;i!=="live"&&e.hasOwnProperty("test_message")&&e.test_message&&n===e.supported_language&&populateBanner(e),t>=s&&t<=o&&n===e.supported_language&&populateBanner(e)}</script></div><div id="main-nav-wrapper" x-data="{
|
||
mobileOpen: false,
|
||
dropdownOpen: 'none',
|
||
navScrolled: false,
|
||
hasAnnouncementBanner: true,
|
||
handleScroll() {
|
||
this.navScrolled = window.scrollY > 30;
|
||
},
|
||
handleResize() {
|
||
if (window.innerWidth >= 1024) {
|
||
this.mobileOpen = false;
|
||
this.dropdownOpen = 'none';
|
||
}
|
||
},
|
||
checkAnnouncementBanner() {
|
||
const announcementBanner = document.querySelector('.announcement-banner') || document.querySelector('.announcement-banner--large');
|
||
if (announcementBanner) {
|
||
this.hasAnnouncementBanner = true;
|
||
} else {
|
||
this.hasAnnouncementBanner = false;
|
||
}
|
||
}
|
||
}" x-init="checkAnnouncementBanner()" x-on:scroll.window="handleScroll" x-on:resize.window="handleResize"><nav class="main-nav h-[60px] desktop-sm:h-[130px] flex fixed right-0 left-0 items-center bg-white z-[200] font-normal mt-[30px]" :class="[navScrolled ? 'main-nav-scrolled desktop-sm:!h-[65px]' : '', hasAnnouncementBanner ? 'mt-[30px]' : '']" style="box-shadow:0 0 8px 8px rgba(0,0,0,7%)"><div class="container flex relative w-full justify-between desktop-sm:justify-start"><div class="hidden desktop-sm:flex justify-between w-full"><ul x-data="{ mouseOver: 'none' }" class="flex flex-row items-center list-none m-0 grow justify-start basis-0"><li x-on:mouseover="mouseOver = 'product'" x-on:mouseout="mouseOver = 'none'" class="dropdown relative product-dropdown"><a class="dropdown relative block pt-[8.5px] px-2 desktop-lg:px-3 pb-[9.5px] desktop-lg:px-3 text-18 font-semibold font-national uppercase text-[#555] hover:text-[#70f]" href="https://www.datadoghq.com/product/">Product</a><div x-show="mouseOver === 'product'" x-cloak="" class="dropdown-menu product-menu absolute z-40 bg-white min-h-[630px] w-[1300px] p-0 left-[13px] top-[42px] border-t-[3px] border-t-[#632ca6]" style="box-shadow:0 8px 10px rgba(0,0,0,7%)" x-data="{
|
||
openCategory: 'observability',
|
||
timeoutID: null,
|
||
setCategory(category) {
|
||
this.timeoutID = setTimeout(() => {
|
||
this.openCategory = category;
|
||
const productMenu = document.querySelector('.product-menu');
|
||
window.DD_RUM?.onReady(function() {
|
||
if (productMenu.classList.contains('show')) {
|
||
window.DD_RUM.addAction(`Product Category ${category} Hover`)
|
||
}
|
||
})
|
||
}, 160);
|
||
},
|
||
clearCategory() {
|
||
clearTimeout(this.timeoutID);
|
||
}
|
||
}" x-init="
|
||
const menu = document.querySelector('.product-menu');
|
||
var observer = new MutationObserver(function(mutations) {
|
||
mutations.forEach(function(mutation) {
|
||
if (mutation.attributeName === 'class' && !mutation.target.classList.contains('show')) {
|
||
openCategory = 'observability';
|
||
}
|
||
});
|
||
});
|
||
observer.observe(menu, { attributes: true });
|
||
"><div class="grid grid-cols-12"><div class="col-span-4 category-toggle-list-column border-r border-r-[#e2e2e2] p-10"><p class="product-hype px-3 py-7 font-bold font-national text-28 leading-32">The integrated platform for monitoring & security</p><ul class="category-toggle-list pr-5 mb-15"><li><button x-on:mouseover="setCategory('observability')" x-on:mouseout="clearCategory()" class="flex items-center gap-2 w-full font-bold font-national text-22 leading-24 text-left px-3 py-2.5 align-middle hover:text-[#70f] hover:[&_svg]:fill-[#70f] hover:bg-black/5 rounded h-12" :class="openCategory === 'observability' ? 'text-[#632ca6] [&_svg]:fill-[#632ca6]' : ''">
|
||
<svg class="w-[22px] h-auto" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 192 192" width="192" height="192">
|
||
<path d="M96,136a40,40,0,1,1,40-40A40.045,40.045,0,0,1,96,136Zm0-64a24,24,0,1,0,24,24A24.028,24.028,0,0,0,96,72Zm0,92C35.749,164,4.16,102.208,2.845,99.578L1.056,96l1.789-3.578C4.16,89.792,35.749,28,96,28s91.84,61.792,93.155,64.422L190.944,96l-1.789,3.578C187.84,102.208,156.252,164,96,164ZM19.165,96C26.457,108.305,53.3,148,96,148s69.544-39.7,76.836-52C165.551,83.708,138.706,44,96,44S26.457,83.7,19.165,96Z"></path>
|
||
</svg>
|
||
Observability</button></li><li><button x-on:mouseover="setCategory('security')" x-on:mouseout="clearCategory()" class="flex items-center gap-2 w-full font-bold font-national text-22 leading-24 text-left px-3 py-2.5 align-middle hover:text-[#70f] hover:[&_svg]:fill-[#70f] hover:bg-black/5 rounded h-12" :class="openCategory === 'security' ? 'text-[#632ca6] [&_svg]:fill-[#632ca6]' : ''">
|
||
<svg class="w-[22px] h-auto" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
|
||
<title>security-platform</title>
|
||
<path d="M16 0.793l-12 6.938v9.604c0.007 4.42 2.392 8.281 5.944 10.372l0.056 0.031 6 3.468 6-3.469c3.608-2.122 5.993-5.983 6-10.402v-9.605zM6.667 10.811l8 4.625v4.42l-8-4.625zM7.997 8.5l6.669-3.856v7.711zM6.723 18.343l7.944 4.593v4.42l-3.333-1.926c-2.521-1.484-4.269-4.050-4.607-7.044l-0.004-0.043zM25.333 17.335c-0.005 3.439-1.86 6.443-4.623 8.070l-0.044 0.024-3.333 1.927v-22.712l8 4.625z"></path>
|
||
</svg>
|
||
Security</button></li><li><button x-on:mouseover="setCategory('digital-experience')" x-on:mouseout="clearCategory()" class="flex items-center gap-2 w-full font-bold font-national text-22 leading-24 text-left px-3 py-2.5 align-middle hover:text-[#70f] hover:[&_svg]:fill-[#70f] hover:bg-black/5 rounded h-12" :class="openCategory === 'digital-experience' ? 'text-[#632ca6] [&_svg]:fill-[#632ca6]' : ''">
|
||
<svg class="w-[22px] h-auto" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
|
||
<title>rum</title>
|
||
<path d="M8.728 32h-8.728v-14.544h8.728v14.544zM2.912 29.088h2.912v-8.728h-2.912v8.728zM18.908 29.088h-7.269v-2.912h4.364v-14.544h-10.187v2.912h-2.905v-5.816h16.003v20.361zM32 20.361h-10.18v-2.912h7.276v-14.544h-20.367v2.912h-2.912v-5.816h26.184v20.361z"></path>
|
||
</svg>
|
||
Digital Experience</button></li><li><button x-on:mouseover="setCategory('software-delivery')" x-on:mouseout="clearCategory()" class="flex items-center gap-2 w-full font-bold font-national text-22 leading-24 text-left px-3 py-2.5 align-middle hover:text-[#70f] hover:[&_svg]:fill-[#70f] hover:bg-black/5 rounded h-12" :class="openCategory === 'software-delivery' ? 'text-[#632ca6] [&_svg]:fill-[#632ca6]' : ''">
|
||
<svg class="w-[22px] h-auto" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
|
||
<title>ci</title>
|
||
<path d="M30.667 22.625v0.087c-0.006 4.392-3.565 7.95-7.956 7.955h-0.085c-3.937-0.005-7.205-2.864-7.845-6.62l-0.007-0.047h-3.107l4.333-4.333 4.333 4.333h-2.833c0.6 2.315 2.669 3.998 5.131 4h0.087c2.916-0.009 5.278-2.373 5.282-5.29v-0.085c-0.003-2.921-2.369-5.288-5.29-5.292h-13.42c-4.393-0.004-7.954-3.565-7.957-7.958v-0.087c0.006-4.392 3.565-7.95 7.956-7.955h0.085c4.393 0.004 7.954 3.564 7.958 7.956v2.044h-2.667v-2.043c-0.004-2.921-2.371-5.287-5.291-5.29h-0.087c-2.919 0.005-5.285 2.371-5.288 5.29v0.085c0.003 2.921 2.369 5.288 5.29 5.292h13.42c4.393 0.004 7.954 3.565 7.957 7.958v0z"></path>
|
||
</svg>
|
||
Software Delivery</button></li><li><button x-on:mouseover="setCategory('service-management')" x-on:mouseout="clearCategory()" class="flex items-center gap-2 w-full font-bold font-national text-22 leading-24 text-left px-3 py-2.5 align-middle hover:text-[#70f] hover:[&_svg]:fill-[#70f] hover:bg-black/5 rounded h-12" :class="openCategory === 'service-management' ? 'text-[#632ca6] [&_svg]:fill-[#632ca6]' : ''">
|
||
<svg class="w-[22px] h-auto" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 192 192" width="192" height="192">
|
||
<path d="M88,188.38V91.38l84-48.5v96.99l-84,48.51Zm16-87.76v60.04l52-30.02v-60.04l-52,30.02Zm-50-28.87v97l16-9.24V80.99l52-30.02,16-9.24V23.25L54,71.75ZM20,52.12v97l16-9.24V61.36l52-30.02,16-9.24V3.62L20,52.12Z"></path>
|
||
</svg>
|
||
Service Management</button></li><li><button x-on:mouseover="setCategory('ai')" x-on:mouseout="clearCategory()" class="flex items-center gap-2 w-full font-bold font-national text-22 leading-24 text-left px-3 py-2.5 align-middle hover:text-[#70f] hover:[&_svg]:fill-[#70f] hover:bg-black/5 rounded h-12" :class="openCategory === 'ai' ? 'text-[#632ca6] [&_svg]:fill-[#632ca6]' : ''">
|
||
<svg class="w-[22px] h-auto" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" fill="" viewBox="0 0 192 192" style="enable-background:new 0 0 192 192;" xml:space="preserve"><g id="Layer_7"><g><linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="89.0192" y1="122.732" x2="142.9808" y2="29.268"><stop offset="0" style="stop-color:#5500FF"></stop><stop offset="0.1715" style="stop-color:#4D09FF"></stop><stop offset="0.4511" style="stop-color:#3821FF"></stop><stop offset="0.802" style="stop-color:#1649FF"></stop><stop offset="1" style="stop-color:#0062FF"></stop></linearGradient><path class="st5" d="M120,16h-8c0,30.88-25.12,56-56,56v8c30.88,0,56,25.12,56,56h8c0-30.88,25.12-56,56-56v-8 C145.12,72,120,46.88,120,16z"></path><linearGradient id="SVGID_00000049207151058930698180000011839073544639225000_" gradientUnits="userSpaceOnUse" x1="35.4115" y1="168.7311" x2="68.5885" y2="111.267"><stop offset="0" style="stop-color:#5500FF"></stop><stop offset="0.1715" style="stop-color:#4D09FF"></stop><stop offset="0.4511" style="stop-color:#3821FF"></stop><stop offset="0.802" style="stop-color:#1649FF"></stop><stop offset="1" style="stop-color:#0062FF"></stop></linearGradient><path d="M56,104h-4c0,0,0,0,0,0c0,0,0,0,0,0h-4 c0,17.64-14.35,32-32,32v8c17.65,0,32,14.36,32,32h8c0-17.64,14.35-32,32-32v-8C70.35,136,56,121.64,56,104z"></path></g></g></svg>AI</button></li><li><button x-on:mouseover="setCategory('platform')" x-on:mouseout="clearCategory()" class="flex items-center gap-2 w-full font-bold font-national text-22 leading-24 text-left px-3 py-2.5 align-middle hover:text-[#70f] hover:[&_svg]:fill-[#70f] hover:bg-black/5 rounded h-12" :class="openCategory === 'platform' ? 'text-[#632ca6] [&_svg]:fill-[#632ca6]' : ''">
|
||
<svg class="w-[22px] h-auto" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
|
||
<title>dashboard</title>
|
||
<path d="M32 24.876v1.79h-32v-21.333h1.988v19.543h30.012zM26.009 10.679l3.976 12.432h-25.982v-8.006l6.999-7.981 8.987 7.981 6.020-4.426z"></path>
|
||
</svg>
|
||
Platform Capabilities</button></li></ul><a href="https://www.datadoghq.com/pricing/" class="pricing-link group flex items-center gap-[5px] font-bold font-national text-[#632ca6] uppercase ml-3 text-16 absolute bottom-10 hover:text-[#70f]">View pricing<svg class="w-2 h-auto -tw-mb-px fill-[#632ca6] group-hover:fill-[#70f]" version="1.1" xmlns="http://www.w3.org/2000/svg" width="683" height="1024" viewBox="0 0 683 1024">
|
||
<title></title>
|
||
<g id="icomoon-ignore">
|
||
</g>
|
||
<path d="M391.327 512.001l-366.327-366.327 120.679-120.679 487.007 487.006-487.007 487.005-120.679-120.678 366.327-366.327z"></path>
|
||
</svg></a></div><div class="col-span-8"><div class="product-category h-full flex flex-col p-10 pl-[25px]" id="observability-detail" x-show="openCategory === 'observability'" x-cloak=""><div class="category-description p-7 rounded flex mb-10 text-white [background:var(--cta-bg)]" style="--cta-bg:linear-gradient(90deg, #8000FF 0%, #FF0080 100%)"><div class="category-description-main flex gap-5 flex-1 min-w-0 items-center"><svg class="w-12 h-auto fill-white shrink-0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 192 192" width="192" height="192">
|
||
<path d="M96,136a40,40,0,1,1,40-40A40.045,40.045,0,0,1,96,136Zm0-64a24,24,0,1,0,24,24A24.028,24.028,0,0,0,96,72Zm0,92C35.749,164,4.16,102.208,2.845,99.578L1.056,96l1.789-3.578C4.16,89.792,35.749,28,96,28s91.84,61.792,93.155,64.422L190.944,96l-1.789,3.578C187.84,102.208,156.252,164,96,164ZM19.165,96C26.457,108.305,53.3,148,96,148s69.544-39.7,76.836-52C165.551,83.708,138.706,44,96,44S26.457,83.7,19.165,96Z"></path>
|
||
</svg><div class="info"><p class="category-header font-bold font-national text-28 leading-24 pb-[5px]">Observability</p><p class="category-tagline text-18 leading-22 m-0 font-medium">End-to-end, simplified visibility into your stack’s health & performance</p></div></div></div><div class="category-details flex justify-between gap-5"><div class="product-subcategory w-1/3"><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">Infrastructure</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/infrastructure-monitoring/" data-dd-action-name="infrastructure_monitoring in observability">Infrastructure Monitoring</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/metrics/" data-dd-action-name="metrics in observability">Metrics</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/network-monitoring/" data-dd-action-name="network_monitoring in observability">Network Monitoring</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/container-monitoring/" data-dd-action-name="container_monitoring in observability">Container Monitoring</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/kubernetes-autoscaling/" data-dd-action-name="kubernetes_autoscaling in observability">Kubernetes Autoscaling</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/serverless-monitoring/" data-dd-action-name="serverless in observability">Serverless</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/cloud-cost-management/" data-dd-action-name="cloud_cost_management in observability">Cloud Cost Management</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/cloudcraft/" data-dd-action-name="cloudcraft in observability">Cloudcraft</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/storage-management/" data-dd-action-name="storage_management in observability">Storage Management</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/gpu-monitoring/" data-dd-action-name="gpu_monitoring in observability">GPU Monitoring</a></li></ul></div><div class="product-subcategory w-1/3"><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">Applications</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/apm/" data-dd-action-name="application_performance_monitoring in observability">Application Performance Monitoring</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/universal-service-monitoring/" data-dd-action-name="universal_service_monitoring in observability">Universal Service Monitoring</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/code-profiling/" data-dd-action-name="continuous_profiler in observability">Continuous Profiler</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/dynamic-instrumentation/" data-dd-action-name="dynamic_instrumentation in observability">Dynamic Instrumentation</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/products/ai/agent-observability/" data-dd-action-name="agent_observability in observability">Agent Observability</a></li></ul><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">Data</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/database-monitoring/" data-dd-action-name="database_monitoring in observability">Database Monitoring</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/products/observability/data-observability/" data-dd-action-name="data_observability in observability">Data Observability</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/data-streams-monitoring/" data-dd-action-name="data_streams_monitoring in observability">Data Streams Monitoring</a></li></ul></div><div class="product-subcategory w-1/3"><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">Logs</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/log-management/" data-dd-action-name="log_management in observability">Log Management</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/sensitive-data-scanner/" data-dd-action-name="sensitive_data_scanner in observability">Sensitive Data Scanner</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/audit-trail/" data-dd-action-name="audit_trail in observability">Audit Trail</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/observability-pipelines/" data-dd-action-name="observability_pipelines in observability">Observability Pipelines</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/error-tracking/" data-dd-action-name="error_tracking in observability">Error Tracking</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/byoc-logs/" data-dd-action-name="byoc_logs in observability">BYOC Log Management</a></li></ul></div></div></div><div class="product-category h-full flex flex-col p-10 pl-[25px]" id="infra-detail" x-show="openCategory === 'infra'" x-cloak=""><div class="category-description p-7 rounded flex mb-10 text-white [background:var(--cta-bg)]" style="--cta-bg:linear-gradient(90deg, %!s(<nil>) 0%, %!s(<nil>) 100%)"><div class="category-description-main flex gap-5 flex-1 min-w-0 items-center"><svg class="w-12 h-auto fill-white shrink-0" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
|
||
<title>host-map</title>
|
||
<path d="M14.214 13.103l-7.107 4.103-7.107-4.103v-8.206l7.107-4.103 7.107 4.103zM32 4.897v8.206l-7.107 4.103-7.107-4.103v-8.206l7.107-4.103zM29.333 6.436l-4.44-2.563-4.44 2.563v5.127l4.44 2.563 4.44-2.563zM9.037 19.98v8.040l6.963 4.020 6.962-4.020v-8.040l-6.963-4.020z"></path>
|
||
</svg><div class="info"><p class="category-header font-bold font-national text-28 leading-24 pb-[5px]">Infrastructure</p><p class="category-tagline text-18 leading-22 m-0 font-medium"></p></div></div></div><div class="category-details flex justify-between gap-5"></div></div><div class="product-category h-full flex flex-col p-10 pl-[25px]" id="apps-detail" x-show="openCategory === 'apps'" x-cloak=""><div class="category-description p-7 rounded flex mb-10 text-white [background:var(--cta-bg)]" style="--cta-bg:linear-gradient(90deg, %!s(<nil>) 0%, %!s(<nil>) 100%)"><div class="category-description-main flex gap-5 flex-1 min-w-0 items-center"><svg class="w-12 h-auto fill-white shrink-0" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
|
||
<title>apm</title>
|
||
<path d="M0 2.667h32v3.81h-32v-3.81zM0 10.286h6v3.81h-6v-3.81zM10 10.286h22v3.81h-22v-3.81zM10 17.905h12v3.81h-12v-3.81zM26 17.905h6v3.81h-6v-3.81zM16 25.524h6v3.81h-6v-3.81z"></path>
|
||
</svg><div class="info"><p class="category-header font-bold font-national text-28 leading-24 pb-[5px]">Applications</p><p class="category-tagline text-18 leading-22 m-0 font-medium"></p></div></div></div><div class="category-details flex justify-between gap-5"></div></div><div class="product-category h-full flex flex-col p-10 pl-[25px]" id="data-detail" x-show="openCategory === 'data'" x-cloak=""><div class="category-description p-7 rounded flex mb-10 text-white [background:var(--cta-bg)]" style="--cta-bg:linear-gradient(90deg, %!s(<nil>) 0%, %!s(<nil>) 100%)"><div class="category-description-main flex gap-5 flex-1 min-w-0 items-center"><svg class="w-12 h-auto fill-white shrink-0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 192 192" width="192" height="192">
|
||
<path d="M96,8C50.393,8,16,25.2,16,48v96c0,22.8,34.393,40,80,40s80-17.2,80-40V48C176,25.2,141.607,8,96,8ZM48.337,32.683C60.936,27.083,77.863,24,96,24c39.068,0,64,14.214,64,24,0,4.969-6.26,10.838-16.337,15.317C131.064,68.917,114.138,72,96,72,56.932,72,32,57.786,32,48,32,43.031,38.26,37.162,48.337,32.683Zm95.326,126.633C131.064,164.916,114.137,168,96,168c-39.068,0-64-14.215-64-24V120.577C46.356,130.075,69.242,136,96,136s49.644-5.925,64-15.423V144C160,148.969,153.74,154.838,143.663,159.316Zm0-48C131.064,116.916,114.137,120,96,120c-39.068,0-64-14.215-64-24V72.577C46.356,82.075,69.242,88,96,88s49.644-5.925,64-15.423V96C160,100.969,153.74,106.838,143.663,111.316ZM96,95.86a151.433,151.433,0,0,0,16-.83v16.1c-5.14.48-10.49.73-16,.73Zm47.66-8.69c.12-.05.23-.1.34-.15v17.27a113.137,113.137,0,0,1-16,4.47V92.34A90.144,90.144,0,0,0,143.66,87.17ZM96,144a151.433,151.433,0,0,0,16-.83v16.1c-5.14.48-10.49.73-16,.73Zm47.66-8.69c.12-.05.23-.1.34-.15v17.27a113.137,113.137,0,0,1-16,4.47v-16.42A90.144,90.144,0,0,0,143.66,135.312Z"></path>
|
||
</svg><div class="info"><p class="category-header font-bold font-national text-28 leading-24 pb-[5px]">Data</p><p class="category-tagline text-18 leading-22 m-0 font-medium"></p></div></div></div><div class="category-details flex justify-between gap-5"></div></div><div class="product-category h-full flex flex-col p-10 pl-[25px]" id="Logs-detail" x-show="openCategory === 'Logs'" x-cloak=""><div class="category-description p-7 rounded flex mb-10 text-white [background:var(--cta-bg)]" style="--cta-bg:linear-gradient(90deg, %!s(<nil>) 0%, %!s(<nil>) 100%)"><div class="category-description-main flex gap-5 flex-1 min-w-0 items-center"><svg class="w-12 h-auto fill-white shrink-0" width="48" height="48" viewBox="0 0 48 48" fill="" xmlns="http://www.w3.org/2000/svg">
|
||
<g id="Logs">
|
||
<path id="Vector" d="M28.1375 9.81131C21.6141 10.8028 16.3957 15.6567 14.7773 22.1801C13.4723 27.085 14.7773 31.678 17.0742 35.2269L9.87276 42.4283C8.56785 43.7333 8.56785 45.7163 9.87276 47.0212C11.1777 48.3262 13.1608 48.3262 14.4658 47.0212L21.6161 39.8198C25.2176 42.1167 29.809 43.4213 34.6629 42.1167C40.8728 40.4472 45.7792 34.9153 46.7707 28.3917C48.0737 17.6397 38.9403 8.50641 28.1375 9.81131ZM30.4344 37.5219C24.2245 37.5219 19.0063 32.3035 19.0063 26.0938C19.0063 19.9364 24.2247 14.7165 30.4344 14.7165C36.6441 14.7165 41.8625 19.9349 41.8625 26.0938C41.8638 32.3035 36.6439 37.5219 30.434 37.5219H30.4344ZM23.9106 6.52341H14.1518V0H23.9106V6.52341ZM36.9574 6.52341H27.1985V0H36.9574V6.52341ZM11.8553 32.617H1.10498V26.0936H10.8638C10.8638 28.39 11.1773 30.6865 11.8553 32.617ZM15.7702 13.0468C14.1518 15.0297 12.8483 17.3262 11.8568 19.5702H1.10498V13.0468H15.7702ZM10.8638 6.52341H1.10498V0H10.8638V6.52341ZM35.3404 29.3812H25.8951C25.8951 29.3812 25.5295 28.3897 25.5295 27.7627C25.3495 24.2183 28.5039 21.2393 32.0529 21.2393C33.3578 21.2393 34.3498 21.5528 35.3408 22.1783L35.3404 29.3812Z"></path>
|
||
</g>
|
||
</svg><div class="info"><p class="category-header font-bold font-national text-28 leading-24 pb-[5px]">Logs</p><p class="category-tagline text-18 leading-22 m-0 font-medium"></p></div></div></div><div class="category-details flex justify-between gap-5"></div></div><div class="product-category h-full flex flex-col p-10 pl-[25px]" id="security-detail" x-show="openCategory === 'security'" x-cloak=""><a class="category-description category-description-cta group p-7 rounded flex justify-between items-end mb-10 text-white no-underline [background:var(--cta-bg)] transition-[outline-color,box-shadow,background] duration-200 ease-in-out hover:[background:var(--cta-bg-hover,var(--cta-bg))] hover:outline hover:outline-2 hover:outline-[#8BD0FF] hover:outline-offset-[-1px] hover:shadow-[0_4px_16px_rgba(0,0,0,0.2)]" href="https://www.datadoghq.com/products/security/" data-dd-action-name="Category Banner security" style="--cta-bg:linear-gradient(90deg, #0060FF 0%, #0032A0 100%);--cta-bg-hover:linear-gradient(90deg, #0060FF 0%, #0032A0 50%, #001B58 100%)"><div class="category-description-main flex gap-5 flex-1 min-w-0 items-center"><svg class="w-12 h-auto fill-white shrink-0" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
|
||
<title>security-platform</title>
|
||
<path d="M16 0.793l-12 6.938v9.604c0.007 4.42 2.392 8.281 5.944 10.372l0.056 0.031 6 3.468 6-3.469c3.608-2.122 5.993-5.983 6-10.402v-9.605zM6.667 10.811l8 4.625v4.42l-8-4.625zM7.997 8.5l6.669-3.856v7.711zM6.723 18.343l7.944 4.593v4.42l-3.333-1.926c-2.521-1.484-4.269-4.050-4.607-7.044l-0.004-0.043zM25.333 17.335c-0.005 3.439-1.86 6.443-4.623 8.070l-0.044 0.024-3.333 1.927v-22.712l8 4.625z"></path>
|
||
</svg><div class="info"><p class="category-header font-bold font-national text-28 leading-24 pb-[5px]">Security</p><p class="category-tagline text-18 leading-22 m-0 font-medium">Outpace AI-powered attacks with unified security and observability</p></div></div><span class="category-cta inline-flex items-center gap-2 transition-[gap] duration-200 ease-in-out group-hover:gap-3 pb-1.5 text-18 leading-18 font-bold font-national uppercase tracking-1 whitespace-nowrap text-white"><span class="category-cta-label">Learn more</span><svg class="w-2 h-auto fill-white" version="1.1" xmlns="http://www.w3.org/2000/svg" width="683" height="1024" viewBox="0 0 683 1024">
|
||
<title></title>
|
||
<g id="icomoon-ignore">
|
||
</g>
|
||
<path d="M391.327 512.001l-366.327-366.327 120.679-120.679 487.007 487.006-487.007 487.005-120.679-120.678 366.327-366.327z"></path>
|
||
</svg></span></a><div class="category-details flex justify-between gap-5"><div class="product-subcategory w-1/3"><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">Code Security</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/code-security/" data-dd-action-name="code_security in security">Code Security</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/software-composition-analysis/" data-dd-action-name="software_composition_analysis in security">Software Composition Analysis</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/sast/" data-dd-action-name="sast in security">Static Code Analysis (SAST)</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/iast/" data-dd-action-name="iast in security">Runtime Code Analysis (IAST)</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/iac-security" data-dd-action-name="iac_security in security">IaC Security</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/secret-scanning/" data-dd-action-name="secret_scanning in security">Secret Scanning</a></li></ul></div><div class="product-subcategory w-1/3"><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">Cloud Security</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/cloud-security/" data-dd-action-name="cloud_security in security">Cloud Security</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/cloud-security/#posture-management" data-dd-action-name="cloud_security_posture_management in security">Cloud Security Posture Management</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/cloud-security/#entitlement-management" data-dd-action-name="identity_and_entitlement_management in security">Cloud Infrastructure Entitlement Management</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/cloud-security/#vulnerability-management" data-dd-action-name="vulnerability_management in security">Vulnerability Management</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/cloud-security/#compliance" data-dd-action-name="compliance in security">Compliance</a></li></ul></div><div class="product-subcategory w-1/3"><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">Threat Management</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/cloud-siem/" data-dd-action-name="cloud_siem in security">Cloud SIEM</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/workload-protection/" data-dd-action-name="workload_protection in security">Workload Protection</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/app-and-api-protection/" data-dd-action-name="app_and_api_protection in security">App and API Protection</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/sensitive-data-scanner/" data-dd-action-name="sensitive_data_scanner in security">Sensitive Data Scanner</a></li></ul><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">Security Labs</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://securitylabs.datadoghq.com/" data-dd-action-name="security_labs_research in security">Security Labs Research</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://opensource.datadoghq.com/" data-dd-action-name="open_source_projects in security">Open Source Projects</a></li></ul></div></div></div><div class="product-category h-full flex flex-col p-10 pl-[25px]" id="digital-experience-detail" x-show="openCategory === 'digital-experience'" x-cloak=""><div class="category-description p-7 rounded flex mb-10 text-white [background:var(--cta-bg)]" style="--cta-bg:linear-gradient(90deg, #00B765 0%, #00BBED 100%)"><div class="category-description-main flex gap-5 flex-1 min-w-0 items-center"><svg class="w-12 h-auto fill-white shrink-0" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
|
||
<title>rum</title>
|
||
<path d="M8.728 32h-8.728v-14.544h8.728v14.544zM2.912 29.088h2.912v-8.728h-2.912v8.728zM18.908 29.088h-7.269v-2.912h4.364v-14.544h-10.187v2.912h-2.905v-5.816h16.003v20.361zM32 20.361h-10.18v-2.912h7.276v-14.544h-20.367v2.912h-2.912v-5.816h26.184v20.361z"></path>
|
||
</svg><div class="info"><p class="category-header font-bold font-national text-28 leading-24 pb-[5px]">Digital Experience</p><p class="category-tagline text-18 leading-22 m-0 font-medium">Optimize front-end performance and enhance user experiences</p></div></div></div><div class="category-details flex justify-between gap-5"><div class="product-subcategory w-1/3"><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">Digital Experience</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/real-user-monitoring/" data-dd-action-name="browser_real_user_monitoring in digital_experience">Browser Real User Monitoring</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/real-user-monitoring/mobile-rum/" data-dd-action-name="mobile_real_user_monitoring in digital_experience">Mobile Real User Monitoring</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/product-analytics/" data-dd-action-name="product_analytics in digital_experience">Product Analytics</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/experiments/" data-dd-action-name="experiments in digital_experience">Experiments</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/real-user-monitoring/session-replay/" data-dd-action-name="session_replay in digital_experience">Session Replay</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/synthetic-monitoring/" data-dd-action-name="synthetic_monitoring in digital_experience">Synthetic Monitoring</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/mobile-app-testing/" data-dd-action-name="mobile_app_testing in digital_experience">Mobile App Testing</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/error-tracking/" data-dd-action-name="error_tracking in digital_experience">Error Tracking</a></li></ul></div><div class="product-subcategory w-1/3 related pl-2 border-l border-l-[#e2e2e2]"><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">Related Products</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/continuous-testing/" data-dd-action-name="continuous_testing in digital_experience">Continuous Testing</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/platform/dashboards/" data-dd-action-name="dashboards in digital_experience">Dashboards</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/apm/" data-dd-action-name="application_performance_monitoring in digital_experience">Application Performance Monitoring</a></li></ul></div></div></div><div class="product-category h-full flex flex-col p-10 pl-[25px]" id="software-delivery-detail" x-show="openCategory === 'software-delivery'" x-cloak=""><div class="category-description p-7 rounded flex mb-10 text-white [background:var(--cta-bg)]" style="--cta-bg:linear-gradient(90deg, #6300D4 0%, #9C43FE 100%)"><div class="category-description-main flex gap-5 flex-1 min-w-0 items-center"><svg class="w-12 h-auto fill-white shrink-0" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
|
||
<title>ci</title>
|
||
<path d="M30.667 22.625v0.087c-0.006 4.392-3.565 7.95-7.956 7.955h-0.085c-3.937-0.005-7.205-2.864-7.845-6.62l-0.007-0.047h-3.107l4.333-4.333 4.333 4.333h-2.833c0.6 2.315 2.669 3.998 5.131 4h0.087c2.916-0.009 5.278-2.373 5.282-5.29v-0.085c-0.003-2.921-2.369-5.288-5.29-5.292h-13.42c-4.393-0.004-7.954-3.565-7.957-7.958v-0.087c0.006-4.392 3.565-7.95 7.956-7.955h0.085c4.393 0.004 7.954 3.564 7.958 7.956v2.044h-2.667v-2.043c-0.004-2.921-2.371-5.287-5.291-5.29h-0.087c-2.919 0.005-5.285 2.371-5.288 5.29v0.085c0.003 2.921 2.369 5.288 5.29 5.292h13.42c4.393 0.004 7.954 3.565 7.957 7.958v0z"></path>
|
||
</svg><div class="info"><p class="category-header font-bold font-national text-28 leading-24 pb-[5px]">Software Delivery</p><p class="category-tagline text-18 leading-22 m-0 font-medium">Build, test, secure and ship quality code faster</p></div></div></div><div class="category-details flex justify-between gap-5"><div class="product-subcategory w-1/3"><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">Software Delivery</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/internal-developer-portal/" data-dd-action-name="internal_developer_portal in software_delivery">Internal Developer Portal</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/ci-cd-monitoring/" data-dd-action-name="ci_visibility in software_delivery">CI Visibility</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/test-optimization/" data-dd-action-name="test_optimization in software_delivery">Test Optimization</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/continuous-testing/" data-dd-action-name="continuous_testing in software_delivery">Continuous Testing</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/platform/ides/" data-dd-action-name="ide_plugins in software_delivery">IDE Plugins</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/platform/dora-metrics/" data-dd-action-name="dora_metrics in software_delivery">DORA Metrics</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/feature-flags/" data-dd-action-name="feature_flags in software_delivery">Feature Flags</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/code-coverage/" data-dd-action-name="code_coverage in software_delivery">Code Coverage</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/software-delivery/ai-impact/" data-dd-action-name="ai_impact in software_delivery">AI Impact</a></li></ul></div><div class="product-subcategory w-1/3 related pl-2 border-l border-l-[#e2e2e2]"><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">Related Products</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/software-composition-analysis/" data-dd-action-name="software_composition_analysis in software_delivery">Software Composition Analysis</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/apm/" data-dd-action-name="application_performance_monitoring in software_delivery">Application Performance Monitoring</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/synthetic-monitoring/" data-dd-action-name="synthetic_monitoring in software_delivery">Synthetic Monitoring</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/real-user-monitoring/" data-dd-action-name="browser_real_user_monitoring in software_delivery">Browser Real User Monitoring</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/workflow-automation/" data-dd-action-name="workflow_automation in software_delivery">Workflow Automation</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/platform/integrations/" data-dd-action-name="integrations in software_delivery">Integrations</a></li></ul></div></div></div><div class="product-category h-full flex flex-col p-10 pl-[25px]" id="service-management-detail" x-show="openCategory === 'service-management'" x-cloak=""><div class="category-description p-7 rounded flex mb-10 text-white [background:var(--cta-bg)]" style="--cta-bg:linear-gradient(90deg, #FF0080 0%, #FF5E00 100%)"><div class="category-description-main flex gap-5 flex-1 min-w-0 items-center"><svg class="w-12 h-auto fill-white shrink-0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 192 192" width="192" height="192">
|
||
<path d="M88,188.38V91.38l84-48.5v96.99l-84,48.51Zm16-87.76v60.04l52-30.02v-60.04l-52,30.02Zm-50-28.87v97l16-9.24V80.99l52-30.02,16-9.24V23.25L54,71.75ZM20,52.12v97l16-9.24V61.36l52-30.02,16-9.24V3.62L20,52.12Z"></path>
|
||
</svg><div class="info"><p class="category-header font-bold font-national text-28 leading-24 pb-[5px]">Service Management</p><p class="category-tagline text-18 leading-22 m-0 font-medium">Integrated, streamlined workflows for faster time-to-resolution</p></div></div></div><div class="category-details flex justify-between gap-5"><div class="product-subcategory w-1/3"><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">Service Management</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/incident-response/" data-dd-action-name="incident_response in service_management">Incident Response</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/software-catalog/" data-dd-action-name="software_catalog in service_management">Software Catalog</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/service-level-objectives/" data-dd-action-name="service_level_objectives in service_management">Service Level Objectives</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/case-management/" data-dd-action-name="case_management in service_management">Case Management</a></li></ul></div><div class="product-subcategory w-1/3"><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">Actions</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/workflow-automation/" data-dd-action-name="workflow_automation in service_management">Workflow Automation</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/app-builder/" data-dd-action-name="app_builder in service_management">App Builder</a></li></ul></div><div class="product-subcategory w-1/3"><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">Agentic & Embedded</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/ai/bits-investigation/" data-dd-action-name="bits_investigation in service_management">Bits Investigation</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/platform/watchdog/" data-dd-action-name="watchdog in service_management">Watchdog</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/event-management/" data-dd-action-name="event_management in service_management">Event Management</a></li></ul></div></div></div><div class="product-category h-full flex flex-col p-10 pl-[25px]" id="ai-detail" x-show="openCategory === 'ai'" x-cloak=""><div class="category-description p-7 rounded flex mb-10 text-white [background:var(--cta-bg)]" style="--cta-bg:linear-gradient(90deg, #0060FF 0%, #8000FF 100%)"><div class="category-description-main flex gap-5 flex-1 min-w-0 items-center"><svg class="w-12 h-auto fill-white shrink-0" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" fill="" viewBox="0 0 192 192" style="enable-background:new 0 0 192 192;" xml:space="preserve"><g id="Layer_7"><g><linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="89.0192" y1="122.732" x2="142.9808" y2="29.268"><stop offset="0" style="stop-color:#5500FF"></stop><stop offset="0.1715" style="stop-color:#4D09FF"></stop><stop offset="0.4511" style="stop-color:#3821FF"></stop><stop offset="0.802" style="stop-color:#1649FF"></stop><stop offset="1" style="stop-color:#0062FF"></stop></linearGradient><path class="st5" d="M120,16h-8c0,30.88-25.12,56-56,56v8c30.88,0,56,25.12,56,56h8c0-30.88,25.12-56,56-56v-8 C145.12,72,120,46.88,120,16z"></path><linearGradient id="SVGID_00000049207151058930698180000011839073544639225000_" gradientUnits="userSpaceOnUse" x1="35.4115" y1="168.7311" x2="68.5885" y2="111.267"><stop offset="0" style="stop-color:#5500FF"></stop><stop offset="0.1715" style="stop-color:#4D09FF"></stop><stop offset="0.4511" style="stop-color:#3821FF"></stop><stop offset="0.802" style="stop-color:#1649FF"></stop><stop offset="1" style="stop-color:#0062FF"></stop></linearGradient><path d="M56,104h-4c0,0,0,0,0,0c0,0,0,0,0,0h-4 c0,17.64-14.35,32-32,32v8c17.65,0,32,14.36,32,32h8c0-17.64,14.35-32,32-32v-8C70.35,136,56,121.64,56,104z"></path></g></g></svg><div class="info"><p class="category-header font-bold font-national text-28 leading-24 pb-[5px]">AI</p><p class="category-tagline text-18 leading-22 m-0 font-medium">Monitor and improve model performance. Pinpoint root causes and detect anomalies</p></div></div></div><div class="category-details flex justify-between gap-5"><div class="product-subcategory w-1/3"><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">AI Observability</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/products/ai/agent-observability/" data-dd-action-name="agent_observability in ai">Agent Observability</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/gpu-monitoring/" data-dd-action-name="gpu_monitoring in ai">GPU Monitoring</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/platform/integrations/#cat-aiml" data-dd-action-name="ai_integrations in ai">AI Integrations</a></li></ul></div><div class="product-subcategory w-1/3"><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">Agentic & Embedded</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/ai/bits-ai-agents/" data-dd-action-name="bits_ai_agents in ai">Bits AI Agents</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/ai/bits-chat/" data-dd-action-name="bits_chat in ai">Bits Chat</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/ai/bits-agent-builder/" data-dd-action-name="bits_agent_builder in ai">Bits Agent Builder</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/ai/bits-code/" data-dd-action-name="bits_code in ai">Bits Code</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/ai/bits-investigation/" data-dd-action-name="bits_investigation in ai">Bits Investigation</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/ai/bits-security-analyst/" data-dd-action-name="bits_security_analyst in ai">Bits Security Analyst</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/ai/mcp-server/" data-dd-action-name="mcp_server in ai">MCP Server</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/ai/mcp-server/" data-dd-action-name="pup_cli in ai">Pup CLI</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/ai/agent-directory/" data-dd-action-name="agent_directory in ai">Agent Directory</a></li></ul></div><div class="product-subcategory w-1/3 related pl-2 border-l border-l-[#e2e2e2]"><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">Related Products</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/incident-response/" data-dd-action-name="incident_response in ai">Incident Response</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/workflow-automation/" data-dd-action-name="workflow_automation in ai">Workflow Automation</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/apm/" data-dd-action-name="application_performance_monitoring in ai">Application Performance Monitoring</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/universal-service-monitoring/" data-dd-action-name="universal_service_monitoring in ai">Universal Service Monitoring</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/log-management/" data-dd-action-name="log_management in ai">Log Management</a></li></ul></div></div></div><div class="product-category h-full flex flex-col p-10 pl-[25px]" id="platform-detail" x-show="openCategory === 'platform'" x-cloak=""><div class="category-description p-7 rounded flex mb-10 text-white [background:var(--cta-bg)]" style="--cta-bg:linear-gradient(90deg, #8000FF 0%, #4300B0 100%)"><div class="category-description-main flex gap-5 flex-1 min-w-0 items-center"><svg class="w-12 h-auto fill-white shrink-0" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
|
||
<title>dashboard</title>
|
||
<path d="M32 24.876v1.79h-32v-21.333h1.988v19.543h30.012zM26.009 10.679l3.976 12.432h-25.982v-8.006l6.999-7.981 8.987 7.981 6.020-4.426z"></path>
|
||
</svg><div class="info"><p class="category-header font-bold font-national text-28 leading-24 pb-[5px]">Platform Capabilities</p><p class="category-tagline text-18 leading-22 m-0 font-medium">Built-in features & integrations that power the Datadog platform</p></div></div></div><div class="category-details flex justify-between gap-5"><div class="product-subcategory w-1/3"><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">Built-in Features</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/ai/bits-ai-agents/" data-dd-action-name="bits_ai_agents in platform_capabilities">Bits AI Agents</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/ai/bits-agent-builder/" data-dd-action-name="bits_agent_builder in platform_capabilities">Bits Agent Builder</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/ai/bits-chat/" data-dd-action-name="bits_chat in platform_capabilities">Bits Chat</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/metrics/" data-dd-action-name="metrics in platform_capabilities">Metrics</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/platform/watchdog/" data-dd-action-name="watchdog in platform_capabilities">Watchdog</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/platform/alerts/" data-dd-action-name="alerts in platform_capabilities">Alerts</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/platform/dashboards/" data-dd-action-name="dashboards in platform_capabilities">Dashboards</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://docs.datadoghq.com/notebooks/" data-dd-action-name="notebooks in platform_capabilities">Notebooks</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://docs.datadoghq.com/service_management/mobile/?tab=ios" data-dd-action-name="mobile_app in platform_capabilities">Mobile App</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/fleet-automation/" data-dd-action-name="fleet_automation in platform_capabilities">Fleet Automation</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/governance-console/" data-dd-action-name="governance_console in platform_capabilities">Governance Console</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://docs.datadoghq.com/account_management/rbac/?tab=datadogapplication" data-dd-action-name="access_control in platform_capabilities">Access Control</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/platform/dora-metrics/" data-dd-action-name="dora_metrics in platform_capabilities">DORA Metrics</a></li></ul></div><div class="product-subcategory w-1/3"><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">Workflows & Collaboration</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/incident-response/" data-dd-action-name="incident_response in platform_capabilities">Incident Response</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/case-management/" data-dd-action-name="case_management in platform_capabilities">Case Management</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/event-management/" data-dd-action-name="event_management in platform_capabilities">Event Management</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/workflow-automation/" data-dd-action-name="workflow_automation in platform_capabilities">Workflow Automation</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/app-builder/" data-dd-action-name="app_builder in platform_capabilities">App Builder</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/cloudcraft/" data-dd-action-name="cloudcraft in platform_capabilities">Cloudcraft</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://docs.datadoghq.com/account_management/teams/" data-dd-action-name="teams in platform_capabilities">Teams</a></li></ul></div><div class="product-subcategory w-1/3"><p class="subcategory-header font-bold font-national uppercase text-16 leading-18 p-3">Extensibility</p><ul class="product-list"><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/solutions/opentelemetry/" data-dd-action-name="opentelemetry in platform_capabilities">OpenTelemetry</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/platform/integrations/" data-dd-action-name="integrations in platform_capabilities">Integrations</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/platform/ides/" data-dd-action-name="ide_plugins in platform_capabilities">IDE Plugins</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/ai/mcp-server/" data-dd-action-name="mcp_server in platform_capabilities">MCP Server</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/ai/mcp-server/" data-dd-action-name="pup_cli in platform_capabilities">Pup CLI</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/product/ai/agent-directory/" data-dd-action-name="agent_directory in platform_capabilities">Agent Directory</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://docs.datadoghq.com/api/" data-dd-action-name="api in platform_capabilities">API</a></li><li><a class="block p-3 text-18 leading-18 text-wrap capitalize hover:text-[#70f] hover:bg-black/5 rounded" href="https://www.datadoghq.com/marketplacepartners/" data-dd-action-name="marketplace in platform_capabilities">Marketplace</a></li></ul></div></div></div></div></div></div></li><li><a class="customers-menu block pt-[8.5px] px-2 desktop-lg:px-3 pb-[9.5px] desktop-lg:px-3 text-18 font-semibold font-national uppercase text-[#555] hover:text-[#70f]" href="https://www.datadoghq.com/customers/"><span>Customers</span></a></li><li><a class="pricing-menu block pt-[8.5px] px-2 desktop-lg:px-3 pb-[9.5px] desktop-lg:px-3 text-18 font-semibold font-national uppercase text-[#555] hover:text-[#70f]" href="https://www.datadoghq.com/pricing/"><span>Pricing</span></a></li><li x-on:mouseover="mouseOver = 'solutions'" x-on:mouseout="mouseOver = 'none'" class="dropdown relative solutions-dropdown"><a class="dropdown relative block pt-[8.5px] px-2 desktop-lg:px-3 pb-[9.5px] desktop-lg:px-3 text-18 font-semibold font-national uppercase text-[#555] hover:text-[#70f]" href="https://www.datadoghq.com/">Solutions</a><ul x-show="mouseOver === 'solutions'" x-cloak="" class="dropdown-menu solutions-menu absolute z-40 bg-white w-[820px] p-5 left-[9px] top-[42px] border-t-[3px] border-t-[#632ca6]" style="box-shadow:0 8px 10px rgba(0,0,0,7%)"><div class="grid grid-cols-3 gap-[30px]"><div><p class="font-semibold font-national text-black text-14 leading-18 tablet:text-16 tablet:leading-20 uppercase mb-0 py-2 px-[11px]">Industry</p><ul class="list-none mt-0"><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/financial-services/" data-dd-action-name="financial_services in Solutions"><span class="inline-flex">Financial Services</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/manufacturing-logistics/" data-dd-action-name="manufacturing_and_logistics in Solutions"><span class="inline-flex">Manufacturing & Logistics</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/healthcare/" data-dd-action-name="healthcare_and_life_sciences in Solutions"><span class="inline-flex">Healthcare/Life Sciences</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/retail-ecommerce/" data-dd-action-name="retail_and_ecommerce in Solutions"><span class="inline-flex">Retail/E-Commerce</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/government/" data-dd-action-name="government in Solutions"><span class="inline-flex">Government</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/education/" data-dd-action-name="education in Solutions"><span class="inline-flex">Education</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/media-entertainment/" data-dd-action-name="media_and_entertainment in Solutions"><span class="inline-flex">Media & Entertainment</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/technology/" data-dd-action-name="technology in Solutions"><span class="inline-flex">Technology</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/gaming/" data-dd-action-name="gaming in Solutions"><span class="inline-flex">Gaming</span></a></li></ul></div><div><p class="font-semibold font-national text-black text-14 leading-18 tablet:text-16 tablet:leading-20 uppercase mb-0 py-2 px-[11px]">Technology</p><ul class="list-none mt-0"><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/aws/" data-dd-action-name="amazon_web_services_monitoring in Solutions"><span class="inline-flex">Amazon Web Services Monitoring</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/azure/" data-dd-action-name="azure_monitoring in Solutions"><span class="inline-flex">Azure Monitoring</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/googlecloud/" data-dd-action-name="google_cloud_monitoring in Solutions"><span class="inline-flex">Google Cloud Monitoring</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/oci-monitoring/" data-dd-action-name="oci_monitoring in Solutions"><span class="inline-flex">Oracle Cloud Monitoring</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/kubernetes/" data-dd-action-name="kubernetes_monitoring in Solutions"><span class="inline-flex">Kubernetes Monitoring</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/openshift/" data-dd-action-name="red_hat_openshift in Solutions"><span class="inline-flex">Red Hat OpenShift</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/pivotal-platform/" data-dd-action-name="pivotal_platform in Solutions"><span class="inline-flex">Pivotal Platform</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/openai/" data-dd-action-name="openai in Solutions"><span class="inline-flex">OpenAI</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/sap-monitoring/" data-dd-action-name="sap_monitoring in Solutions"><span class="inline-flex">SAP Monitoring</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/opentelemetry/" data-dd-action-name="opentelemetry in Solutions"><span class="inline-flex">OpenTelemetry</span></a></li></ul></div><div><p class="font-semibold font-national text-black text-14 leading-18 tablet:text-16 tablet:leading-20 uppercase mb-0 py-2 px-[11px]">Use Case</p><ul class="list-none mt-0"><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/application-security/" data-dd-action-name="application_security in Solutions"><span class="inline-flex">Application Security</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/cloud-migration/" data-dd-action-name="cloud_migration in Solutions"><span class="inline-flex">Cloud Migration</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/monitoring-consolidation/" data-dd-action-name="monitoring_consolidation in Solutions"><span class="inline-flex">Monitoring Consolidation</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/unified-commerce-monitoring/" data-dd-action-name="unified_commerce_monitoring in Solutions"><span class="inline-flex">Unified Commerce Monitoring</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/soar/" data-dd-action-name="soar in Solutions"><span class="inline-flex">SOAR</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/devops/" data-dd-action-name="devops in Solutions"><span class="inline-flex">DevOps</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/finops/" data-dd-action-name="finops in Solutions"><span class="inline-flex">FinOps</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/shift-left-testing/" data-dd-action-name="shift_left_testing in Solutions"><span class="inline-flex">Shift-Left Testing</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/digital-experience-monitoring/" data-dd-action-name="digital_experience_monitoring in Solutions"><span class="inline-flex">Digital Experience Monitoring</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/security-analytics/" data-dd-action-name="security_analytics in Solutions"><span class="inline-flex">Security Analytics</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/security/cis-benchmarks/aws/" data-dd-action-name="compliance_for_cis_benchmarks in Solutions"><span class="inline-flex">Compliance for CIS Benchmarks</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/hybrid-cloud-monitoring/" data-dd-action-name="hybrid_cloud_monitoring in Solutions"><span class="inline-flex">Hybrid Cloud Monitoring</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/iot-monitoring/" data-dd-action-name="iot_monitoring in Solutions"><span class="inline-flex">Edge Device Monitoring</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/real-time-business-intelligence/" data-dd-action-name="real_time_bi in Solutions"><span class="inline-flex">Real-Time BI</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/on-premises-monitoring/" data-dd-action-name="on_premises_monitoring in Solutions"><span class="inline-flex">On-Premises Monitoring</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/log-analysis-and-correlation/" data-dd-action-name="log_analysis_and_correlation in Solutions"><span class="inline-flex">Log Analysis & Correlation</span></a></li><li><a class="block whitespace-nowrap capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18" href="https://www.datadoghq.com/solutions/cnapp/" data-dd-action-name="cnapp in Solutions"><span class="inline-flex">CNAPP</span></a></li></ul></div></div></ul></li><li><a class="docs-menu block pt-[8.5px] px-2 desktop-lg:px-3 pb-[9.5px] desktop-lg:px-3 text-18 font-semibold font-national uppercase text-[#555] hover:text-[#70f]" href="https://docs.datadoghq.com/"><span>Docs</span></a></li></ul><div><a href="https://www.datadoghq.com/" class="js-logo-download hidden desktop-sm:flex flex-col items-center justify-center relative"><img height="75" class="bits-logo-lg max-w-full transition-all h-[75px]" :class="navScrolled ? '!h-[50px]' : ''" src="https://corp.dd-static.net/img/dd_logo_n_70x75.png?ch=Width,DPR&fit=max&auto=format&w=70&h=75" srcset="https://corp.dd-static.net/img/dd_logo_n_70x75.png?ch=Width,DPR&fit=max&auto=format&w=70&h=75 1x, https://corp.dd-static.net/img/dd_logo_n_70x75.png?ch=Width,DPR&fit=max&auto=format&w=70&h=75&dpr=2 2x" alt="DataDog">
|
||
<img class="datadog-text-logo-lg w-[93px] mt-[5px] h-auto max-w-full block" :class="navScrolled ? 'hidden' : ''" height="14" src="https://corp.dd-static.net/img/dd-logo-n-200.png?ch=Width,DPR&fit=max&auto=format&h=14&auto=format&w=807" srcset="https://corp.dd-static.net/img/dd-logo-n-200.png?ch=Width,DPR&fit=max&auto=format&h=14&auto=format&w=807 1x, https://corp.dd-static.net/img/dd-logo-n-200.png?ch=Width,DPR&fit=max&auto=format&h=14&auto=format&w=807&dpr=2 2x" alt="DataDog"></a></div><ul x-data="{ mouseOver: 'none' }" class="flex flex-row items-center list-none m-0 justify-end grow basis-0"><li x-on:mouseover="mouseOver = 'about'" x-on:mouseout="mouseOver = 'none'" class="dropdown relative"><a href="https://www.datadoghq.com/about/leadership/" class="dropdown block pt-[8.5px] px-2 desktop-lg:px-3 pb-[9.5px] desktop-lg:px-3 font-semibold font-national text-18 uppercase text-[#555] hover:text-[#70f]">About</a><ul x-show="mouseOver === 'about'" x-cloak="" class="dropdown-menu absolute z-40 bg-white p-5 left-[9px] top-[42px] border-t-[3px] border-t-[#632ca6]" style="box-shadow:0 8px 10px rgba(0,0,0,7%)" aria-labelledby="dropdownMenuButton"><li><a class="block capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18 text-nowrap" href="https://www.datadoghq.com/about/contact/"><span>Contact</span></a></li><li><a class="block capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18 text-nowrap" href="https://www.datadoghq.com/partner/network/"><span>Partners</span></a></li><li><a class="block capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18 text-nowrap" href="https://www.datadoghq.com/about/latest-news/press-releases/"><span>Newsroom</span></a></li><li><a class="block capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18 text-nowrap" href="https://www.datadoghq.com/events-webinars/"><span>Events & Webinars</span></a></li><li><a class="block capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18 text-nowrap" href="https://www.datadoghq.com/about/leadership/"><span>Leadership</span></a></li><li><a class="block capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18 text-nowrap" href="https://careers.datadoghq.com/"><span>Careers</span></a></li><li><a class="block capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18 text-nowrap" href="https://www.datadoghq.com/about/analyst/"><span>Analyst Reports</span></a></li><li><a class="block capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18 text-nowrap" href="https://investors.datadoghq.com/"><span>Investor Relations</span></a></li><li><a class="block capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18 text-nowrap" href="https://www.datadoghq.com/esg-report/"><span>ESG Report</span></a></li><li><a class="block capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18 text-nowrap" href="https://www.datadoghq.com/trust/"><span>Trust Hub</span></a></li></ul></li><li x-on:mouseover="mouseOver = 'blog'" x-on:mouseout="mouseOver = 'none'" class="dropdown relative"><a href="https://www.datadoghq.com/blog/" class="dropdown block pt-[8.5px] px-2 desktop-lg:px-3 pb-[9.5px] desktop-lg:px-3 font-semibold font-national text-18 uppercase text-[#555] hover:text-[#70f]">Blog</a><ul x-show="mouseOver === 'blog'" x-cloak="" class="dropdown-menu absolute z-40 bg-white p-5 left-[9px] top-[42px] border-t-[3px] border-t-[#632ca6]" style="box-shadow:0 8px 10px rgba(0,0,0,7%)" aria-labelledby="dropdownMenuButton"><li><a class="block capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18 text-nowrap" href="https://www.datadoghq.com/blog/"><span>The Monitor</span></a></li><li><a class="block capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18 text-nowrap" href="https://www.datadoghq.com/blog/engineering/"><span>Engineering</span></a></li><li><a class="block capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18 text-nowrap" href="https://www.datadoghq.com/blog/ai/"><span>AI</span></a></li><li><a class="block capitalize px-[11px] py-[7px] hover:text-[#70f] hover:bg-black/5 rounded text-18 text-nowrap" href="https://securitylabs.datadoghq.com/"><span>Security Labs</span></a></li></ul></li><li class="final"><a class="font-semibold font-national block pt-[8.5px] px-2 desktop-lg:px-3 pb-[9.5px] desktop-lg:px-3 text-18 uppercase text-[#555] hover:text-[#70f] transition-all" href="https://app.datadoghq.com/" data-event-category="Signup" data-event-action="Step 1 Top Right Initiated" data-event-label=" {{url path}}" style="position:relative"><span>Login</span></a></li><li class="final"><a class="font-semibold font-national sign-up-trigger btn btn-gradient js-cta-topRight pt-[8.5px] px-7 pb-[9.5px] block text-18 text-[#555] uppercase border-none border-0 border-[transparent] bg-white rounded min-w-[120px] ml-2.5 hover:text-white transition-all" href="https://www.datadoghq.com/" data-event-category="Signup" data-event-action="Step 1 Top Right Initiated" data-event-label=" {{url path}}" style="position:relative"><span class="hidden desktop-sm:block">GET STARTED FREE</span>
|
||
<span class="block desktop-sm:hidden">Free Trial</span></a></li></ul></div><div class="flex desktop-sm:hidden items-center justify-center"><a href="https://www.datadoghq.com/"><img src="https://corp.dd-static.net/img/datadog_rbg_n_2x.png?format=png" class="bits-logo-mobile d-inline-block" alt="Datadog Logo" width="157" height="40"></a></div><button x-on:click="mobileOpen = !mobileOpen" type="button" class="navbar-toggler flex flex-col gap-1 desktop-sm:hidden relative my-3 px-2.5 py-[9px] border border-[transparent]" data-bs-toggle="" data-bs-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
|
||
<span class="visually-hidden sr-only">Toggle navigation</span>
|
||
<span class="icon-bar transition-all block w-[22px] h-0.5 bg-[#555]" :class="mobileOpen ? 'rotate-45 translate-x-1.5 translate-y-1.5' : ''"></span>
|
||
<span class="icon-bar transition-all block w-[22px] h-0.5 bg-[#555]" :class="mobileOpen ? 'opacity-0' : 'opacity-100'"></span>
|
||
<span class="icon-bar transition-all block w-[22px] h-0.5 bg-[#555]" :class="mobileOpen ? '-rotate-45 translate-x-1.5 -translate-y-1.5' : ''"></span></button></div></nav><div x-show="mobileOpen" x-cloak="" @click="mobileOpen = false" id="mobile-nav-bg" class="desktop-sm:hidden transition-all fixed top-0 left-0 w-full h-full bg-black z-50" :class="mobileOpen ? 'opacity-25' : 'opacity-0'"></div><div x-cloak="" id="mobile-nav" class="desktop-sm:hidden transition-all w-[400px] pt-[90px] bg-white fixed top-0 overflow-y-auto h-full z-60 pb-5 font-normal" :class="mobileOpen ? 'right-0' : 'right-[-500px]'"><ul><li x-on:click="dropdownOpen === 'product' ? dropdownOpen = 'none' : dropdownOpen = 'product'" class="border-b border-b-[#c7c7c7] text-18 dropdown"><a href="#" data-astro-reload="" :class="dropdownOpen === 'product' ? 'text-[#632ca6]' : 'text-[#555]'" class="dropdown-toggle block font-semibold font-national uppercase text-[#555] hover:text-[#632ca6] whitespace-nowrap" data-bs-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="true" data-dd-action-name="Product Dropdown on Mobile"><div class="nav-menu-item ml-5 py-3 pl-[14px]">Product
|
||
<span class="caret absolute right-[22px] inline-flex h-[25px]"><svg viewBox="0 0 17.78 10.51" width="18px" class="inline-block transition-all" :class="dropdownOpen === 'product' ? 'rotate-180' : 'rotate-0'">
|
||
<polyline class="dropdown-arrow fill-none stroke-[#555]" style="stroke-width: 2px;" points="16.92 1.14 8.92 9.14 0.92 1.14"></polyline>
|
||
</svg></span></div></a><ul x-cloak="" x-show="dropdownOpen === 'product'" class="dropdown-menu" id="product-mobile-menu"><li><p class="mobile-product-category sticky top-0 bg-white flex items-center gap-2 pt-[13px] pb-[5px] pl-[19px] font-bold font-national text-22 leading-24 ml-5"><svg class="w-[22px] h-auto" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
|
||
<title>host-map</title>
|
||
<path d="M14.214 13.103l-7.107 4.103-7.107-4.103v-8.206l7.107-4.103 7.107 4.103zM32 4.897v8.206l-7.107 4.103-7.107-4.103v-8.206l7.107-4.103zM29.333 6.436l-4.44-2.563-4.44 2.563v5.127l4.44 2.563 4.44-2.563zM9.037 19.98v8.040l6.963 4.020 6.962-4.020v-8.040l-6.963-4.020z"></path>
|
||
</svg>
|
||
Infrastructure</p><ul class="mb-[5px] pb-2.5"><li><a href="https://www.datadoghq.com/product/infrastructure-monitoring/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Infrastructure Monitoring</a></li><li><a href="https://www.datadoghq.com/product/metrics/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Metrics</a></li><li><a href="https://www.datadoghq.com/product/container-monitoring/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Container Monitoring</a></li><li><a href="https://www.datadoghq.com/product/kubernetes-autoscaling/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Kubernetes Autoscaling</a></li><li><a href="https://www.datadoghq.com/product/network-monitoring/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Network Monitoring</a></li><li><a href="https://www.datadoghq.com/product/serverless-monitoring/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Serverless</a></li><li><a href="https://www.datadoghq.com/product/cloud-cost-management/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Cloud Cost Management</a></li><li><a href="https://www.datadoghq.com/product/cloudcraft/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Cloudcraft</a></li><li><a href="https://www.datadoghq.com/product/storage-management/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Storage Management</a></li><li><a href="https://www.datadoghq.com/product/gpu-monitoring/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">GPU Monitoring</a></li></ul></li><li><p class="mobile-product-category sticky top-0 bg-white flex items-center gap-2 pt-[13px] pb-[5px] pl-[19px] font-bold font-national text-22 leading-24 ml-5"><svg class="w-[22px] h-auto" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
|
||
<title>apm</title>
|
||
<path d="M0 2.667h32v3.81h-32v-3.81zM0 10.286h6v3.81h-6v-3.81zM10 10.286h22v3.81h-22v-3.81zM10 17.905h12v3.81h-12v-3.81zM26 17.905h6v3.81h-6v-3.81zM16 25.524h6v3.81h-6v-3.81z"></path>
|
||
</svg>
|
||
Applications</p><ul class="mb-[5px] pb-2.5"><li><a href="https://www.datadoghq.com/product/apm/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Application Performance Monitoring</a></li><li><a href="https://www.datadoghq.com/product/universal-service-monitoring/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Universal Service Monitoring</a></li><li><a href="https://www.datadoghq.com/product/code-profiling/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Continuous Profiler</a></li><li><a href="https://www.datadoghq.com/product/dynamic-instrumentation/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Dynamic Instrumentation</a></li><li><a href="https://www.datadoghq.com/products/ai/agent-observability/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Agent Observability</a></li></ul></li><li><p class="mobile-product-category sticky top-0 bg-white flex items-center gap-2 pt-[13px] pb-[5px] pl-[19px] font-bold font-national text-22 leading-24 ml-5"><svg class="w-[22px] h-auto" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 192 192" width="192" height="192">
|
||
<path d="M96,8C50.393,8,16,25.2,16,48v96c0,22.8,34.393,40,80,40s80-17.2,80-40V48C176,25.2,141.607,8,96,8ZM48.337,32.683C60.936,27.083,77.863,24,96,24c39.068,0,64,14.214,64,24,0,4.969-6.26,10.838-16.337,15.317C131.064,68.917,114.138,72,96,72,56.932,72,32,57.786,32,48,32,43.031,38.26,37.162,48.337,32.683Zm95.326,126.633C131.064,164.916,114.137,168,96,168c-39.068,0-64-14.215-64-24V120.577C46.356,130.075,69.242,136,96,136s49.644-5.925,64-15.423V144C160,148.969,153.74,154.838,143.663,159.316Zm0-48C131.064,116.916,114.137,120,96,120c-39.068,0-64-14.215-64-24V72.577C46.356,82.075,69.242,88,96,88s49.644-5.925,64-15.423V96C160,100.969,153.74,106.838,143.663,111.316ZM96,95.86a151.433,151.433,0,0,0,16-.83v16.1c-5.14.48-10.49.73-16,.73Zm47.66-8.69c.12-.05.23-.1.34-.15v17.27a113.137,113.137,0,0,1-16,4.47V92.34A90.144,90.144,0,0,0,143.66,87.17ZM96,144a151.433,151.433,0,0,0,16-.83v16.1c-5.14.48-10.49.73-16,.73Zm47.66-8.69c.12-.05.23-.1.34-.15v17.27a113.137,113.137,0,0,1-16,4.47v-16.42A90.144,90.144,0,0,0,143.66,135.312Z"></path>
|
||
</svg>
|
||
Data</p><ul class="mb-[5px] pb-2.5"><li><a href="https://www.datadoghq.com/product/database-monitoring/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Database Monitoring</a></li><li><a href="https://www.datadoghq.com/products/observability/data-observability/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Data Observability</a></li><li><a href="https://www.datadoghq.com/product/data-streams-monitoring/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Data Streams Monitoring</a></li></ul></li><li><p class="mobile-product-category sticky top-0 bg-white flex items-center gap-2 pt-[13px] pb-[5px] pl-[19px] font-bold font-national text-22 leading-24 ml-5"><svg class="w-[22px] h-auto" width="48" height="48" viewBox="0 0 48 48" fill="" xmlns="http://www.w3.org/2000/svg">
|
||
<g id="Logs">
|
||
<path id="Vector" d="M28.1375 9.81131C21.6141 10.8028 16.3957 15.6567 14.7773 22.1801C13.4723 27.085 14.7773 31.678 17.0742 35.2269L9.87276 42.4283C8.56785 43.7333 8.56785 45.7163 9.87276 47.0212C11.1777 48.3262 13.1608 48.3262 14.4658 47.0212L21.6161 39.8198C25.2176 42.1167 29.809 43.4213 34.6629 42.1167C40.8728 40.4472 45.7792 34.9153 46.7707 28.3917C48.0737 17.6397 38.9403 8.50641 28.1375 9.81131ZM30.4344 37.5219C24.2245 37.5219 19.0063 32.3035 19.0063 26.0938C19.0063 19.9364 24.2247 14.7165 30.4344 14.7165C36.6441 14.7165 41.8625 19.9349 41.8625 26.0938C41.8638 32.3035 36.6439 37.5219 30.434 37.5219H30.4344ZM23.9106 6.52341H14.1518V0H23.9106V6.52341ZM36.9574 6.52341H27.1985V0H36.9574V6.52341ZM11.8553 32.617H1.10498V26.0936H10.8638C10.8638 28.39 11.1773 30.6865 11.8553 32.617ZM15.7702 13.0468C14.1518 15.0297 12.8483 17.3262 11.8568 19.5702H1.10498V13.0468H15.7702ZM10.8638 6.52341H1.10498V0H10.8638V6.52341ZM35.3404 29.3812H25.8951C25.8951 29.3812 25.5295 28.3897 25.5295 27.7627C25.3495 24.2183 28.5039 21.2393 32.0529 21.2393C33.3578 21.2393 34.3498 21.5528 35.3408 22.1783L35.3404 29.3812Z"></path>
|
||
</g>
|
||
</svg>
|
||
Logs</p><ul class="mb-[5px] pb-2.5"><li><a href="https://www.datadoghq.com/product/log-management/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Log Management</a></li><li><a href="https://www.datadoghq.com/product/sensitive-data-scanner/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Sensitive Data Scanner</a></li><li><a href="https://www.datadoghq.com/product/audit-trail/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Audit Trail</a></li><li><a href="https://www.datadoghq.com/product/observability-pipelines/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Observability Pipelines</a></li></ul></li><li><p class="mobile-product-category sticky top-0 bg-white flex items-center gap-2 pt-[13px] pb-[5px] pl-[19px] font-bold font-national text-22 leading-24 ml-5"><svg class="w-[22px] h-auto" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
|
||
<title>security-platform</title>
|
||
<path d="M16 0.793l-12 6.938v9.604c0.007 4.42 2.392 8.281 5.944 10.372l0.056 0.031 6 3.468 6-3.469c3.608-2.122 5.993-5.983 6-10.402v-9.605zM6.667 10.811l8 4.625v4.42l-8-4.625zM7.997 8.5l6.669-3.856v7.711zM6.723 18.343l7.944 4.593v4.42l-3.333-1.926c-2.521-1.484-4.269-4.050-4.607-7.044l-0.004-0.043zM25.333 17.335c-0.005 3.439-1.86 6.443-4.623 8.070l-0.044 0.024-3.333 1.927v-22.712l8 4.625z"></path>
|
||
</svg>
|
||
Security</p><ul class="mb-[5px] pb-2.5"><li><a href="https://www.datadoghq.com/products/security/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Overview</a></li><li><a href="https://www.datadoghq.com/product/code-security/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Code Security</a></li><li><a href="https://www.datadoghq.com/product/software-composition-analysis/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Software Composition Analysis</a></li><li><a href="https://www.datadoghq.com/product/sast/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Static Code Analysis (SAST)</a></li><li><a href="https://www.datadoghq.com/product/iast/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Runtime Code Analysis (IAST)</a></li><li><a href="https://www.datadoghq.com/product/iac-security" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">IaC Security</a></li><li><a href="https://www.datadoghq.com/product/cloud-security/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Cloud Security</a></li><li><a href="https://www.datadoghq.com/product/cloud-security/#posture-management" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Cloud Security Posture Management</a></li><li><a href="https://www.datadoghq.com/product/cloud-security/#entitlement-management" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Cloud Infrastructure Entitlement Management</a></li><li><a href="https://www.datadoghq.com/product/cloud-security/#vulnerability-management" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Vulnerability Management</a></li><li><a href="https://www.datadoghq.com/product/cloud-security/#compliance" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Compliance</a></li><li><a href="https://www.datadoghq.com/product/cloud-siem/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Cloud SIEM</a></li><li><a href="https://www.datadoghq.com/product/workload-protection/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Workload Protection</a></li><li><a href="https://www.datadoghq.com/product/app-and-api-protection/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">App and API Protection</a></li><li><a href="https://www.datadoghq.com/product/sensitive-data-scanner/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Sensitive Data Scanner</a></li><li><a href="https://securitylabs.datadoghq.com/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Security Labs Research</a></li><li><a href="https://opensource.datadoghq.com/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Open Source Projects</a></li><li><a href="https://www.datadoghq.com/product/secret-scanning/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Secret Scanning</a></li></ul></li><li><p class="mobile-product-category sticky top-0 bg-white flex items-center gap-2 pt-[13px] pb-[5px] pl-[19px] font-bold font-national text-22 leading-24 ml-5"><svg class="w-[22px] h-auto" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
|
||
<title>rum</title>
|
||
<path d="M8.728 32h-8.728v-14.544h8.728v14.544zM2.912 29.088h2.912v-8.728h-2.912v8.728zM18.908 29.088h-7.269v-2.912h4.364v-14.544h-10.187v2.912h-2.905v-5.816h16.003v20.361zM32 20.361h-10.18v-2.912h7.276v-14.544h-20.367v2.912h-2.912v-5.816h26.184v20.361z"></path>
|
||
</svg>
|
||
Digital Experience</p><ul class="mb-[5px] pb-2.5"><li><a href="https://www.datadoghq.com/product/real-user-monitoring/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Browser Real User Monitoring</a></li><li><a href="https://www.datadoghq.com/product/real-user-monitoring/mobile-rum/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Mobile Real User Monitoring</a></li><li><a href="https://www.datadoghq.com/product/product-analytics/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Product Analytics</a></li><li><a href="https://www.datadoghq.com/product/experiments/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Experiments</a></li><li><a href="https://www.datadoghq.com/product/real-user-monitoring/session-replay/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Session Replay</a></li><li><a href="https://www.datadoghq.com/product/synthetic-monitoring/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Synthetic Monitoring</a></li><li><a href="https://www.datadoghq.com/product/mobile-app-testing/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Mobile App Testing</a></li><li><a href="https://www.datadoghq.com/product/error-tracking/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Error Tracking</a></li><li><a href="https://www.datadoghq.com/product/byoc-logs/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">BYOC Log Management</a></li></ul></li><li><p class="mobile-product-category sticky top-0 bg-white flex items-center gap-2 pt-[13px] pb-[5px] pl-[19px] font-bold font-national text-22 leading-24 ml-5"><svg class="w-[22px] h-auto" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
|
||
<title>ci</title>
|
||
<path d="M30.667 22.625v0.087c-0.006 4.392-3.565 7.95-7.956 7.955h-0.085c-3.937-0.005-7.205-2.864-7.845-6.62l-0.007-0.047h-3.107l4.333-4.333 4.333 4.333h-2.833c0.6 2.315 2.669 3.998 5.131 4h0.087c2.916-0.009 5.278-2.373 5.282-5.29v-0.085c-0.003-2.921-2.369-5.288-5.29-5.292h-13.42c-4.393-0.004-7.954-3.565-7.957-7.958v-0.087c0.006-4.392 3.565-7.95 7.956-7.955h0.085c4.393 0.004 7.954 3.564 7.958 7.956v2.044h-2.667v-2.043c-0.004-2.921-2.371-5.287-5.291-5.29h-0.087c-2.919 0.005-5.285 2.371-5.288 5.29v0.085c0.003 2.921 2.369 5.288 5.29 5.292h13.42c4.393 0.004 7.954 3.565 7.957 7.958v0z"></path>
|
||
</svg>
|
||
Software Delivery</p><ul class="mb-[5px] pb-2.5"><li><a href="https://www.datadoghq.com/product/internal-developer-portal/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Internal Developer Portal</a></li><li><a href="https://www.datadoghq.com/product/ci-cd-monitoring/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">CI Visibility</a></li><li><a href="https://www.datadoghq.com/product/test-optimization/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Test Optimization</a></li><li><a href="https://www.datadoghq.com/product/continuous-testing/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Continuous Testing</a></li><li><a href="https://www.datadoghq.com/product/platform/ides/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">IDE Plugins</a></li><li><a href="https://www.datadoghq.com/product/feature-flags/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Feature Flags</a></li><li><a href="https://www.datadoghq.com/product/code-coverage/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Code Coverage</a></li><li><a href="https://www.datadoghq.com/product/software-delivery/ai-impact/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">AI Impact</a></li></ul></li><li><p class="mobile-product-category sticky top-0 bg-white flex items-center gap-2 pt-[13px] pb-[5px] pl-[19px] font-bold font-national text-22 leading-24 ml-5"><svg class="w-[22px] h-auto" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 192 192" width="192" height="192">
|
||
<path d="M88,188.38V91.38l84-48.5v96.99l-84,48.51Zm16-87.76v60.04l52-30.02v-60.04l-52,30.02Zm-50-28.87v97l16-9.24V80.99l52-30.02,16-9.24V23.25L54,71.75ZM20,52.12v97l16-9.24V61.36l52-30.02,16-9.24V3.62L20,52.12Z"></path>
|
||
</svg>
|
||
Service Management</p><ul class="mb-[5px] pb-2.5"><li><a href="https://www.datadoghq.com/product/event-management/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Event Management</a></li><li><a href="https://www.datadoghq.com/product/software-catalog/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Software Catalog</a></li><li><a href="https://www.datadoghq.com/product/service-level-objectives/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Service Level Objectives</a></li><li><a href="https://www.datadoghq.com/product/incident-response/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Incident Response</a></li><li><a href="https://www.datadoghq.com/product/case-management/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Case Management</a></li><li><a href="https://www.datadoghq.com/product/workflow-automation/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Workflow Automation</a></li><li><a href="https://www.datadoghq.com/product/app-builder/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">App Builder</a></li><li><a href="https://www.datadoghq.com/product/ai/bits-investigation/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Bits Investigation</a></li><li><a href="https://www.datadoghq.com/product/platform/watchdog/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Watchdog</a></li></ul></li><li><p class="mobile-product-category sticky top-0 bg-white flex items-center gap-2 pt-[13px] pb-[5px] pl-[19px] font-bold font-national text-22 leading-24 ml-5"><svg class="w-[22px] h-auto" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" fill="" viewBox="0 0 192 192" style="enable-background:new 0 0 192 192;" xml:space="preserve"><g id="Layer_7"><g><linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="89.0192" y1="122.732" x2="142.9808" y2="29.268"><stop offset="0" style="stop-color:#5500FF"></stop><stop offset="0.1715" style="stop-color:#4D09FF"></stop><stop offset="0.4511" style="stop-color:#3821FF"></stop><stop offset="0.802" style="stop-color:#1649FF"></stop><stop offset="1" style="stop-color:#0062FF"></stop></linearGradient><path class="st5" d="M120,16h-8c0,30.88-25.12,56-56,56v8c30.88,0,56,25.12,56,56h8c0-30.88,25.12-56,56-56v-8 C145.12,72,120,46.88,120,16z"></path><linearGradient id="SVGID_00000049207151058930698180000011839073544639225000_" gradientUnits="userSpaceOnUse" x1="35.4115" y1="168.7311" x2="68.5885" y2="111.267"><stop offset="0" style="stop-color:#5500FF"></stop><stop offset="0.1715" style="stop-color:#4D09FF"></stop><stop offset="0.4511" style="stop-color:#3821FF"></stop><stop offset="0.802" style="stop-color:#1649FF"></stop><stop offset="1" style="stop-color:#0062FF"></stop></linearGradient><path d="M56,104h-4c0,0,0,0,0,0c0,0,0,0,0,0h-4 c0,17.64-14.35,32-32,32v8c17.65,0,32,14.36,32,32h8c0-17.64,14.35-32,32-32v-8C70.35,136,56,121.64,56,104z"></path></g></g></svg>AI</p><ul class="mb-[5px] pb-2.5"><li><a href="https://www.datadoghq.com/products/ai/agent-observability/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Agent Observability</a></li><li><a href="https://www.datadoghq.com/product/gpu-monitoring/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">GPU Monitoring</a></li><li><a href="https://www.datadoghq.com/product/platform/integrations/#cat-aiml" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">AI Integrations</a></li><li><a href="https://www.datadoghq.com/product/ai/bits-ai-agents/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Bits AI Agents</a></li><li><a href="https://www.datadoghq.com/product/ai/bits-chat/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Bits Chat</a></li><li><a href="https://www.datadoghq.com/product/ai/bits-agent-builder/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Bits Agent Builder</a></li><li><a href="https://www.datadoghq.com/product/ai/bits-code/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Bits Code</a></li><li><a href="https://www.datadoghq.com/product/ai/bits-investigation/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Bits Investigation</a></li><li><a href="https://www.datadoghq.com/product/ai/bits-security-analyst/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Bits Security Analyst</a></li><li><a href="https://www.datadoghq.com/product/ai/mcp-server/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">MCP Server</a></li><li><a href="https://www.datadoghq.com/product/ai/mcp-server/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Pup CLI</a></li><li><a href="https://www.datadoghq.com/product/ai/agent-directory/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Agent Directory</a></li></ul></li><li><p class="mobile-product-category sticky top-0 bg-white flex items-center gap-2 pt-[13px] pb-[5px] pl-[19px] font-bold font-national text-22 leading-24 ml-5"><svg class="w-[22px] h-auto" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
|
||
<title>dashboard</title>
|
||
<path d="M32 24.876v1.79h-32v-21.333h1.988v19.543h30.012zM26.009 10.679l3.976 12.432h-25.982v-8.006l6.999-7.981 8.987 7.981 6.020-4.426z"></path>
|
||
</svg>
|
||
Platform Capabilities</p><ul class="mb-[5px] pb-2.5"><li><a href="https://www.datadoghq.com/product/ai/bits-ai-agents/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Bits AI Agents</a></li><li><a href="https://www.datadoghq.com/product/metrics/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Metrics</a></li><li><a href="https://www.datadoghq.com/product/platform/watchdog/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Watchdog</a></li><li><a href="https://www.datadoghq.com/product/platform/alerts/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Alerts</a></li><li><a href="https://www.datadoghq.com/product/platform/dashboards/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Dashboards</a></li><li><a href="https://docs.datadoghq.com/notebooks/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Notebooks</a></li><li><a href="https://docs.datadoghq.com/service_management/mobile/?tab=ios" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Mobile App</a></li><li><a href="https://www.datadoghq.com/product/fleet-automation/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Fleet Automation</a></li><li><a href="https://www.datadoghq.com/product/governance-console/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Governance Console</a></li><li><a href="https://docs.datadoghq.com/account_management/rbac/?tab=datadogapplication" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Access Control</a></li><li><a href="https://www.datadoghq.com/product/incident-response/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Incident Response</a></li><li><a href="https://www.datadoghq.com/product/case-management/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Case Management</a></li><li><a href="https://www.datadoghq.com/product/event-management/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Event Management</a></li><li><a href="https://www.datadoghq.com/product/workflow-automation/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Workflow Automation</a></li><li><a href="https://www.datadoghq.com/product/app-builder/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">App Builder</a></li><li><a href="https://www.datadoghq.com/product/cloudcraft/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Cloudcraft</a></li><li><a href="https://docs.datadoghq.com/account_management/teams/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Teams</a></li><li><a href="https://www.datadoghq.com/solutions/opentelemetry/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">OpenTelemetry</a></li><li><a href="https://www.datadoghq.com/product/platform/integrations/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Integrations</a></li><li><a href="https://www.datadoghq.com/product/platform/ides/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">IDE Plugins</a></li><li><a href="https://www.datadoghq.com/product/ai/mcp-server/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">MCP Server</a></li><li><a href="https://www.datadoghq.com/product/ai/mcp-server/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Pup CLI</a></li><li><a href="https://www.datadoghq.com/product/ai/agent-directory/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Agent Directory</a></li><li><a href="https://docs.datadoghq.com/api/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">API</a></li><li><a href="https://www.datadoghq.com/marketplacepartners/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">Marketplace</a></li><li><a href="https://www.datadoghq.com/product/platform/dora-metrics/" class="block pt-[9px] pb-2 pl-[70px] hover:text-[#632ca6]">DORA Metrics</a></li></ul></li></ul></li><li class="border-b border-b-[#c7c7c7] text-18"><a href="https://www.datadoghq.com/customers/" class="block font-semibold font-national uppercase text-[#555] hover:text-[#632ca6]"><div class="nav-menu-item ml-5 py-3 pl-[14px]">Customers</div></a></li><li class="border-b border-b-[#c7c7c7] text-18"><a href="https://www.datadoghq.com/pricing/" class="block font-semibold font-national uppercase text-[#555] hover:text-[#632ca6]"><div class="nav-menu-item ml-5 py-3 pl-[14px]">Pricing</div></a></li><li x-on:click="dropdownOpen === 'solutions' ? dropdownOpen = 'none' : dropdownOpen = 'solutions'" class="border-b border-b-[#c7c7c7] text-18 dropdown"><a href="#" data-astro-reload="" :class="dropdownOpen === 'solutions' ? 'text-[#632ca6]' : 'text-[#555]'" class="dropdown-toggle block font-semibold font-national uppercase text-[#555] hover:text-[#632ca6] whitespace-nowrap" data-bs-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="true" data-dd-action-name="Solutions Dropdown on Mobile"><div class="nav-menu-item ml-5 py-3 pl-[14px]">Solutions
|
||
<span class="caret absolute right-[22px] inline-flex h-[25px]"><svg viewBox="0 0 17.78 10.51" width="18px" class="inline-block transition-all" :class="dropdownOpen === 'solutions' ? 'rotate-180' : 'rotate-0'">
|
||
<polyline class="dropdown-arrow fill-none stroke-[#555]" style="stroke-width: 2px;" points="16.92 1.14 8.92 9.14 0.92 1.14"></polyline>
|
||
</svg></span></div></a><ul x-cloak="" x-show="dropdownOpen === 'solutions'" class="dropdown-menu mb-[5px] pb-2.5" id="solutions-mobile-menu"><p class="pl-15 py-2.5 font-semibold font-national text-16 leading-18 uppercase sticky top-0 bg-white">Industry</p><li><a href="https://www.datadoghq.com/solutions/financial-services/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Financial Services</div></a></li><li><a href="https://www.datadoghq.com/solutions/manufacturing-logistics/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Manufacturing & Logistics</div></a></li><li><a href="https://www.datadoghq.com/solutions/healthcare/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Healthcare/Life Sciences</div></a></li><li><a href="https://www.datadoghq.com/solutions/retail-ecommerce/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Retail/E-Commerce</div></a></li><li><a href="https://www.datadoghq.com/solutions/government/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Government</div></a></li><li><a href="https://www.datadoghq.com/solutions/education/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Education</div></a></li><li><a href="https://www.datadoghq.com/solutions/media-entertainment/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Media & Entertainment</div></a></li><li><a href="https://www.datadoghq.com/solutions/technology/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Technology</div></a></li><li><a href="https://www.datadoghq.com/solutions/gaming/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Gaming</div></a></li><p class="pl-15 py-2.5 font-semibold font-national text-16 leading-18 uppercase sticky top-0 bg-white mt-3">Technology</p><li><a href="https://www.datadoghq.com/solutions/aws/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Amazon Web Services Monitoring</div></a></li><li><a href="https://www.datadoghq.com/solutions/azure/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Azure Monitoring</div></a></li><li><a href="https://www.datadoghq.com/solutions/googlecloud/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Google Cloud Monitoring</div></a></li><li><a href="https://www.datadoghq.com/solutions/oci-monitoring/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Oracle Cloud Monitoring</div></a></li><li><a href="https://www.datadoghq.com/solutions/kubernetes/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Kubernetes Monitoring</div></a></li><li><a href="https://www.datadoghq.com/solutions/openshift/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Red Hat OpenShift</div></a></li><li><a href="https://www.datadoghq.com/solutions/pivotal-platform/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Pivotal Platform</div></a></li><li><a href="https://www.datadoghq.com/solutions/openai/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">OpenAI</div></a></li><li><a href="https://www.datadoghq.com/solutions/sap-monitoring/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">SAP Monitoring</div></a></li><li><a href="https://www.datadoghq.com/solutions/opentelemetry/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">OpenTelemetry</div></a></li><p class="pl-15 py-2.5 font-semibold font-national text-16 leading-18 uppercase sticky top-0 bg-white mt-3">Use Case</p><li><a href="https://www.datadoghq.com/solutions/application-security/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Application Security</div></a></li><li><a href="https://www.datadoghq.com/solutions/cloud-migration/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Cloud Migration</div></a></li><li><a href="https://www.datadoghq.com/solutions/monitoring-consolidation/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Monitoring Consolidation</div></a></li><li><a href="https://www.datadoghq.com/solutions/unified-commerce-monitoring/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Unified Commerce Monitoring</div></a></li><li><a href="https://www.datadoghq.com/solutions/soar/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">SOAR</div></a></li><li><a href="https://www.datadoghq.com/solutions/devops/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">DevOps</div></a></li><li><a href="https://www.datadoghq.com/solutions/finops/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">FinOps</div></a></li><li><a href="https://www.datadoghq.com/solutions/shift-left-testing/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Shift-Left Testing</div></a></li><li><a href="https://www.datadoghq.com/solutions/digital-experience-monitoring/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Digital Experience Monitoring</div></a></li><li><a href="https://www.datadoghq.com/solutions/security-analytics/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Security Analytics</div></a></li><li><a href="https://www.datadoghq.com/solutions/security/cis-benchmarks/aws/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Compliance for CIS Benchmarks</div></a></li><li><a href="https://www.datadoghq.com/solutions/hybrid-cloud-monitoring/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Hybrid Cloud Monitoring</div></a></li><li><a href="https://www.datadoghq.com/solutions/iot-monitoring/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Edge Device Monitoring</div></a></li><li><a href="https://www.datadoghq.com/solutions/real-time-business-intelligence/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Real-Time BI</div></a></li><li><a href="https://www.datadoghq.com/solutions/on-premises-monitoring/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">On-Premises Monitoring</div></a></li><li><a href="https://www.datadoghq.com/solutions/log-analysis-and-correlation/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Log Analysis & Correlation</div></a></li><li><a href="https://www.datadoghq.com/solutions/cnapp/"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">CNAPP</div></a></li></ul></li><li x-on:click="dropdownOpen === 'about' ? dropdownOpen = 'none' : dropdownOpen = 'about'" class="border-b border-b-[#c7c7c7] text-18 dropdown"><a href="#" data-astro-reload="" :class="dropdownOpen === 'about' ? 'text-[#632ca6]' : 'text-[#555]'" class="dropdown-toggle block font-semibold font-national uppercase text-[#555] hover:text-[#632ca6] whitespace-nowrap" data-bs-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="true" data-dd-action-name="About Dropdown on Mobile"><div class="nav-menu-item ml-5 py-3 pl-[14px]">About
|
||
<span class="caret absolute right-[22px] inline-flex h-[25px]"><svg viewBox="0 0 17.78 10.51" width="18px" class="inline-block transition-all" :class="dropdownOpen === 'about' ? 'rotate-180' : 'rotate-0'">
|
||
<polyline class="dropdown-arrow fill-none stroke-[#555]" style="stroke-width: 2px;" points="16.92 1.14 8.92 9.14 0.92 1.14"></polyline>
|
||
</svg></span></div></a><ul x-cloak="" x-show="dropdownOpen === 'about'" class="dropdown-menu mb-[5px] pb-2.5"><li><a href="https://www.datadoghq.com/about/contact/" class="block"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Contact</div></a></li><li><a href="https://www.datadoghq.com/partner/network/" class="block"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Partners</div></a></li><li><a href="https://www.datadoghq.com/about/latest-news/press-releases/" class="block"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Newsroom</div></a></li><li><a href="https://www.datadoghq.com/events-webinars/" class="block"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Events & Webinars</div></a></li><li><a href="https://www.datadoghq.com/about/leadership/" class="block"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Leadership</div></a></li><li><a href="https://careers.datadoghq.com/" class="block"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Careers</div></a></li><li><a href="https://www.datadoghq.com/about/analyst/" class="block"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Analyst Reports</div></a></li><li><a href="https://investors.datadoghq.com/" class="block"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Investor Relations</div></a></li><li><a href="https://www.datadoghq.com/esg-report/" class="block"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">ESG Report</div></a></li><li><a href="https://www.datadoghq.com/trust/" class="block"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Trust Hub</div></a></li></ul></li><li x-on:click="dropdownOpen === 'blog' ? dropdownOpen = 'none' : dropdownOpen = 'blog'" class="border-b border-b-[#c7c7c7] text-18 dropdown"><a href="#" data-astro-reload="" :class="dropdownOpen === 'blog' ? 'text-[#632ca6]' : 'text-[#555]'" class="dropdown-toggle block font-semibold font-national uppercase text-[#555] hover:text-[#632ca6] whitespace-nowrap" data-bs-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="true" data-dd-action-name="Blog Dropdown on Mobile"><div class="nav-menu-item ml-5 py-3 pl-[14px]">Blog
|
||
<span class="caret absolute right-[22px] inline-flex h-[25px]"><svg viewBox="0 0 17.78 10.51" width="18px" class="inline-block transition-all" :class="dropdownOpen === 'blog' ? 'rotate-180' : 'rotate-0'">
|
||
<polyline class="dropdown-arrow fill-none stroke-[#555]" style="stroke-width: 2px;" points="16.92 1.14 8.92 9.14 0.92 1.14"></polyline>
|
||
</svg></span></div></a><ul x-cloak="" x-show="dropdownOpen === 'blog'" class="dropdown-menu mb-[5px] pb-2.5"><li><a href="https://www.datadoghq.com/blog/" class="block"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">The Monitor</div></a></li><li><a href="https://www.datadoghq.com/blog/engineering/" class="block"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Engineering</div></a></li><li><a href="https://www.datadoghq.com/blog/ai/" class="block"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">AI</div></a></li><li><a href="https://securitylabs.datadoghq.com/" class="block"><div class="nav-menu-item-children block pt-[9px] pb-2 pl-15 hover:text-[#632ca6]">Security Labs</div></a></li></ul></li><li class="border-b border-b-[#c7c7c7] text-18 final"><a href="https://docs.datadoghq.com/" class="block font-semibold font-national uppercase text-[#555] hover:text-[#632ca6]" aria-label="Docs link"><div class="nav-menu-item ml-5 py-3 pl-[14px]">Docs</div></a></li><li class="border-b border-b-[#c7c7c7] text-18 final"><a href="https://app.datadoghq.com/" class="block font-semibold font-national uppercase text-[#555] hover:text-[#632ca6]" aria-label="Login link"><div class="nav-menu-item ml-5 py-3 pl-[14px]">Login</div></a></li><li class="flex justify-center text-center final"><a href="https://www.datadoghq.com/" class="block font-semibold font-national uppercase btn btn-default btn-info btn-outline outline knockout-around sign-up sign-up sign-up-trigger rounded text-white border-0 w-[89%] mt-5 bg-[transparent] hover:bg-opacity-70 px-5 pt-[11px] pb-3" data-event-category="Signup" data-event-action="Step 1 Top Right Initiated" data-event-label=" {{url path}}" aria-label="Get Started link" style="position:relative"><div class="nav-menu-item py-[5px] pl-0">Get Started</div></a></li></ul><style>.knockout-around:before{top:-1px;left:-1px;right:-1px;bottom:-1px;border-radius:5px;background-image:-webkit-gradient(linear,left top,right top,from(#3023ae),to(#c024b6));background-image:linear-gradient(to right,#3023ae,#c024b6);z-index:-2;content:'';position:absolute}.knockout-around:after{top:0;left:0;bottom:0;right:0;border-radius:3px;z-index:-1;content:'';position:absolute}</style></div><style>.btn-gradient:before{content:'';position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;border-radius:5px;background-image:-webkit-gradient(linear,left top,right top,from(#3023ae),to(#c024b6));background-image:linear-gradient(to right,#3023ae,#c024b6);z-index:-2}.btn-gradient:hover{background:linear-gradient(45deg,#c024b6 0%,#3023ae 100%)}.main-nav-scrolled .btn-gradient{background:linear-gradient(45deg,#3023ae 0%,#c024b6 100%);color:#fff}</style></div></body></html></div> <dialog id="signUpModal" class="container my-auto border-0 bg-transparent flex w-full justify-center backdrop:bg-black/70 backdrop:backdrop-blur-[2px]" data-astro-cid-c75odnku> <div class="relative w-full h-auto overflow-y-auto bg-white rounded-8 overflow-hidden max-w-[542px]" data-astro-cid-c75odnku> <div class="flex items-center py-3 px-5" data-astro-cid-c75odnku> <h3 class="h3 font-normal w-full text-center text-purple-600" data-astro-cid-c75odnku>Get Started with Datadog</h3> <button id="signUpModal-close" class=" transition-default group flex cursor-pointer justify-center items-center w-max" title="Close modal" data-dd-action-name="dialog: button: close" aria-label="Close modal" data-astro-cid-kc6kmszz><span class="sr-only" data-astro-cid-kc6kmszz>Close modal</span><svg aria-hidden="true" focusable="false" width="32" height="32" viewBox="0 0 32 32" fill xmlns="http://www.w3.org/2000/svg" data-astro-cid-kc6kmszz="true" class="transition-default h-5 w-auto fill-black order-2">
|
||
<path d="M7.6029 5.72327L5.71729 7.60889L24.3849 26.2765L26.2705 24.3909L7.6029 5.72327Z"></path>
|
||
<path d="M24.3849 5.7235L5.71729 24.3911L7.6029 26.2767L26.2705 7.60911L24.3849 5.7235Z"></path>
|
||
</svg></button> </div> <iframe title="DD Signup" width="500px" height="auto" frameborder="0" loading="lazy" class="js-signup-frame h-[815px] w-full max-w-[542px]" style="border: none;" sandbox="allow-scripts allow-forms allow-same-origin allow-top-navigation"></iframe> </div> </dialog> <main class="mt-[90px] desktop-sm:mt-[160px]"> <header class="container desktop:py-15 tablet:py-12 py-9"><div class="flex tablet:flex-row flex-col flex-nowrap justify-between desktop:gap-x-10 tablet:gap-6 tablet:gap-y-0 gap-y-9 tablet:grid tablet:grid-cols-12"><div class="flex flex-col flex-nowrap tablet:col-span-9 desktop-lg:col-span-10"><a href="/blog/engineering/" aria-label="Go to Engineering page" class="eyebrow-h1 bg-gradient-to-r hover:text-purple-600 from-purple-600 from-0% to-cyan-400 to-100% text-transparent bg-clip-text block w-max">Engineering</a><div class="mb-2 tablet:mb-3 desktop:mb-4"></div><h1 class="h1">When upserts don’t update but still write: Debugging Postgres performance at scale</h1><div class="desktop:mb-9 tablet:mb-7 mb-5"></div><div class="flex flex-wrap gap-2"><a title="postgresql" aria-label="postgresql" data-value="postgresql" href="/blog/search/?tag=postgresql" class="flex items-center gap-1 tablet:gap-1.5 desktop-sm:gap-2 h-fit group
|
||
hover:text-white bg-grey-200 shadow-100 hover:bg-black active:bg-black rounded py-1 px-2 w-max button-roboto-mono"><span class="block false">postgresql</span></a><a title="database" aria-label="database" data-value="database" href="/blog/search/?tag=database" class="flex items-center gap-1 tablet:gap-1.5 desktop-sm:gap-2 h-fit group
|
||
hover:text-white bg-grey-200 shadow-100 hover:bg-black active:bg-black rounded py-1 px-2 w-max button-roboto-mono"><span class="block false">database</span></a></div></div><div id="listen-rail-column" class="tablet:col-span-3 desktop-lg:col-span-2"><div class="flex flex-col border-t border-t-grey-400 pt-1 tablet:pt-1.5 desktop:pt-2"><!-- Published --><div class="flex flex-row justify-between items-center"><p class="p-roboto-mono-small text-grey-700 uppercase">Published</p><time class="p-small font-bold font-national" datetime="2026-03-23"> Mar 23, 2026 </time></div><div class="flex flex-row justify-between items-center border-t border-t-grey-400 pt-1 tablet:pt-1.5 desktop:pt-2 mt-1 tablet:mt-1.5 desktop:mt-2"><p class="p-roboto-mono-small text-grey-700 uppercase">Read time</p><p class="p-small font-bold font-national lining-nums">10m</p></div></div></div></div><div class="desktop:mb-12 tablet:mb-9 mb-7"></div><div class="content-image-component"> <!-- Render an image with optional popup functionality and caption --> <figure class> <picture><source media="(max-width: 767px)" srcset="https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=677&height=344&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=677&height=344&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=677&height=344&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=677&height=344&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=677&height=344&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=677&height=344&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=677&height=344&dpr=4 4x"><source media="(min-width: 768px) and (max-width: 1024px)" srcset="https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=934&height=474&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=934&height=474&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=934&height=474&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=934&height=474&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=934&height=474&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=934&height=474&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=934&height=474&dpr=4 4x"><source media="(min-width: 1025px)" srcset="https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=1400&height=711&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=1400&height=711&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=1400&height=711&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=1400&height=711&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=1400&height=711&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=1400&height=711&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=1400&height=711&dpr=4 4x"><img loading="eager" fetchpriority="high" class="h-auto rounded tablet:rounded-md desktop:rounded-lg w-full aspect-[380/193] object-cover" id="1776351334-debugging-postgres-performance-debugging-postgres-performance-hero" src="https://web-assets.dd-static.net/42588/1776351334-debugging-postgres-performance-debugging-postgres-performance-hero.png?format=auto&fit=crop&quality=75&disable=upscale&width=1400&height=711&dpr=1" alt="When upserts don’t update but still write: Debugging Postgres performance at scale" title="When upserts don’t update but still write: Debugging Postgres performance at scale" width="1400" height="711"></picture><script type="module">window.matchMedia("(prefers-reduced-motion: reduce)").matches&&document.querySelectorAll("video").forEach(e=>{e.autoplay=!1,e.controls=!0});</script> </figure> <!-- TODO: Update src with widths related to dialog size constraints + make img src dynamic (to avoid load unless requested via click) --> </div></header><div class="container desktop-sm:grid desktop-sm:grid-cols-12 desktop-sm:gap-10"><!-- Main Content — first in DOM so it streams before the sidebar --><section class="article-content desktop-sm:col-span-9 desktop-sm:col-start-4 desktop-sm:grid desktop-sm:grid-cols-9 desktop-sm:h-fit desktop:text-20 desktop:leading-28 tablet:text-18 tablet:leading-26"><div class="desktop-sm:col-span-6 grid grid-cols-1 mobile-lg:grid-cols-2 desktop-sm:gap-x-10 tablet:gap-x-6 tablet:gap-y-4 gap-y-2"><div class="flex tablet:h-12 gap-4 items-center"><div class="content-image-component"> <!-- Render an image with optional popup functionality and caption --> <figure class> <picture><source media="(max-width: 767px)" srcset="https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=4 4x"><source media="(min-width: 768px) and (max-width: 1024px)" srcset="https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=4 4x"><source media="(min-width: 1025px)" srcset="https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=48&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=48&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=48&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=48&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=48&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=48&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=48&dpr=4 4x"><img loading="eager" fetchpriority="high" class="h-auto rounded-full w-12 h-12" id="1776351329-anthonin-bonnefoy" src="https://web-assets.dd-static.net/42588/1776351329-anthonin-bonnefoy.png?format=auto&fit=bounds&quality=75&disable=upscale&width=48&dpr=1" alt="Anthonin Bonnefoy" title="Anthonin Bonnefoy" width="48" height></picture> </figure> <!-- TODO: Update src with widths related to dialog size constraints + make img src dynamic (to avoid load unless requested via click) --> </div><div class="flex flex-col"><p class="p-small font-bold font-national">Anthonin Bonnefoy</p></div></div></div><div class="desktop-sm:col-span-full desktop-sm:mb-9 tablet:mb-7 mb-5"></div><div class="tablet:col-span-full tablet:grid tablet:grid-cols-12 tablet:gap-x-6 desktop-sm:grid-cols-9 desktop-sm:gap-x-10 markdown-content [&>*:not(.content-image-wrapper)]:tablet:col-span-12 [&>*:not(.content-image-wrapper)]:desktop-sm:col-span-7 [&>.interactive-diagram-component]:tablet:col-span-12 [&>.interactive-diagram-component]:desktop-sm:col-span-8 [&>form-wrapper]:tablet:col-span-12 [&>form-wrapper]:desktop-sm:col-span-8 [&>.expressive-code]:tablet:col-span-12 [&>.expressive-code]:desktop-sm:col-span-8 [&>.table-component]:tablet:col-span-12 [&>.table-component]:desktop-sm:col-span-8 [&>.dato-code-block-wrapper]:tablet:col-span-12 [&>.dato-code-block-wrapper]:desktop-sm:col-span-8 [&>.dast-content]:col-span-full"><div class="dast-content tablet:grid tablet:grid-cols-subgrid [&>*:not(.content-image-wrapper)]:tablet:col-span-12 [&>*:not(.content-image-wrapper)]:desktop-sm:col-span-7 [&>.dato-code-block-wrapper]:desktop-sm:col-span-8 [&>.table-component]:desktop-sm:col-span-8 [&>.iframe-block-wrapper]:desktop-sm:col-span-8" data-astro-cid-twmmywjp> <p>At Datadog, we track the life cycle of millions of ephemeral hosts that report telemetry data to our platform. When a host stops emitting data, we eventually need to clean it up to avoid bloating our metadata store.</p>
|
||
<p>To detect inactive hosts, the Datadog team that manages the host metadata store introduced a new upsert to track the last time a host was seen. We expected this new query to have minimal impact. Each host would be updated at most once a day, so even at 25,000 upserts per second, most queries should have been no-ops.</p>
|
||
<p>But when we rolled out the new query, disk writes doubled and <a href="https://www.postgresql.org/docs/current/wal-intro.html" target="_blank" rel="noopener noreferrer">Write-Ahead Logging</a> (WAL) syncs quadrupled. We discovered that even when an upsert doesn’t change any values, it still locks the conflicting row, which is recorded in the WAL. Given that a Postgres cluster can only have a single writer, there’s a hard limit to how many writes it can handle. The increase in disk writes introduced by the new query was consuming too much of this limited budget and had to be fixed.</p>
|
||
<p>In this post, we’ll walk through how we diagnosed the unexpected overhead by inspecting Postgres’s WAL and how we rewrote the query to eliminate the cost without sacrificing correctness.</p>
|
||
<h2 id="designing-a-low-overhead-upsert-in-postgres"><a href="#designing-a-low-overhead-upsert-in-postgres">Designing a low-overhead upsert in Postgres</a></h2>
|
||
<p>When the <a href="https://docs.datadoghq.com/agent/?tab=Host-based">Datadog Agent</a> runs, it collects host metadata—such as <code>host_id</code>, availability zone, and tags—and sends it to Datadog, where we store it in a Postgres database. Because hosts have a limited lifetime, they eventually terminate and stop emitting metrics. At that point, we can safely delete them from the database to keep it from growing indefinitely.</p>
|
||
<p>However, we don’t have a specific signal when a host has been terminated, other than the fact that it has stopped sending data. We decided that if a host hasn’t emitted metrics for 7 days, we can safely delete it. To support that, we needed a way to track the last time a host was seen. Updating a row every time we see a host is prohibitively expensive: In our largest data centers, this means <strong>more than 25,000 updates per second</strong>.</p>
|
||
<p>We needed to design our table and queries to avoid overloading our database, with three constraints in mind:</p>
|
||
<ul><li><p><strong>Reduce update cost.</strong> Postgres uses <a href="https://www.postgresql.org/docs/current/mvcc-intro.html" target="_blank" rel="noopener noreferrer">MultiVersion Concurrency Control</a> (MVCC), so every update creates a new row version. Adding a <code>last_ingested</code> column to the existing host table would copy all host metadata on each update. Moving this field to a dedicated table will reduce the amount of data written per update.</p></li><li><p><strong>Minimize write amplification by relying on </strong><a href="https://www.postgresql.org/docs/current/storage-hot.html" target="_blank" rel="noopener noreferrer"><strong>Heap-Only Tuples</strong></a><strong> (HOT) updates.</strong> By default, updates add entries to all indexes on the table. If an update does not modify indexed columns and there is enough free space on the page, Postgres can apply a HOT update, avoiding index writes and making updates significantly cheaper.</p></li><li><p><strong>Accept coarse-grained freshness.</strong> We only need to know whether a host has emitted data within the past 7 days, so 1-day granularity is sufficient.</p></li></ul>
|
||
<p>With those constraints, we created the following table:</p>
|
||
<div class="dato-code-block-wrapper" data-astro-cid-twmmywjp> <div class="expressive-code"><link rel="stylesheet" href="/blog/_astro/ec.cd55k.css"><script type="module" src="/blog/_astro/ec.0vx5m.js"></script><figure class="frame"><figcaption class="header"></figcaption><pre data-language="sql"><code><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">1</div></div><div class="code"><span style="--0:#0000FF">CREATE</span><span style="--0:#000000"> </span><span style="--0:#0000FF">TABLE</span><span style="--0:#000000"> </span><span style="--0:#795E26">host_last_ingested</span><span style="--0:#000000"> (</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">2</div></div><div class="code"><span class="indent"><span style="--0:#000000"> </span></span><span style="--0:#000000">host_id </span><span style="--0:#0000FF">BIGINT</span><span style="--0:#000000"> </span><span style="--0:#0000FF">PRIMARY KEY</span><span style="--0:#000000">,</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">3</div></div><div class="code"><span class="indent"><span style="--0:#000000"> </span></span><span style="--0:#000000">last_ingested </span><span style="--0:#0000FF">TIMESTAMP WITH TIME ZONE</span><span style="--0:#000000"> </span><span style="--0:#0000FF">NOT NULL</span><span style="--0:#000000"> </span><span style="--0:#0000FF">default</span><span style="--0:#000000"> </span><span style="--0:#0000FF">now</span><span style="--0:#000000">()</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">4</div></div><div class="code"><span style="--0:#000000">) </span><span style="--0:#0000FF">WITH</span><span style="--0:#000000"> (fillfactor=</span><span style="--0:#08774E">80</span><span style="--0:#000000">);</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="CREATE TABLE host_last_ingested ( host_id BIGINT PRIMARY KEY, last_ingested TIMESTAMP WITH TIME ZONE NOT NULL default now()) WITH (fillfactor=80);"><div></div></button></div></figure></div> </div>
|
||
<p>We didn’t create an index on the <code>last_ingested</code> column so that updates only modify unindexed columns, allowing Postgres to apply HOT updates. We also set the table’s <code>fillfactor</code> to 80%. This means inserts will only fill 80% of an 8 kB page, leaving free space on each page so that subsequent updates can stay on the same page and qualify for HOT updates.</p>
|
||
<p>For the query, we used this upsert:</p>
|
||
<div class="dato-code-block-wrapper" data-astro-cid-twmmywjp> <div class="expressive-code"><figure class="frame"><figcaption class="header"></figcaption><pre data-language="sql"><code><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">1</div></div><div class="code"><span style="--0:#0000FF">INSERT INTO</span><span style="--0:#000000"> host_last_ingested </span><span style="--0:#0000FF">as</span><span style="--0:#000000"> t</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">2</div></div><div class="code"><span class="indent"> </span><span style="--0:#0000FF">VALUES</span><span style="--0:#000000">($</span><span style="--0:#08774E">1</span><span style="--0:#000000">, </span><span style="--0:#0000FF">now</span><span style="--0:#000000">())</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">3</div></div><div class="code"><span class="indent"> </span><span style="--0:#0000FF">ON</span><span style="--0:#000000"> CONFLICT (host_id)</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">4</div></div><div class="code"><span class="indent"><span style="--0:#000000"> </span></span><span style="--0:#000000">DO </span><span style="--0:#0000FF">UPDATE</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">5</div></div><div class="code"><span class="indent"> </span><span style="--0:#0000FF">SET</span><span style="--0:#000000"> last_ingested = EXCLUDED.last_ingested</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">6</div></div><div class="code"><span class="indent"> </span><span style="--0:#0000FF">WHERE</span><span style="--0:#000000"> t.last_ingested < EXCLUDED.last_ingested - </span><span style="--0:#A31515">'1 day'</span><span style="--0:#000000">::interval;</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="INSERT INTO host_last_ingested as t VALUES($1, now()) ON CONFLICT (host_id) DO UPDATE SET last_ingested = EXCLUDED.last_ingested WHERE t.last_ingested < EXCLUDED.last_ingested - '1 day'::interval;"><div></div></button></div></figure></div> </div>
|
||
<p>This is a standard <code>ON CONFLICT DO UPDATE</code> upsert. If the host doesn’t exist, we insert it. Otherwise, we run the update. The <code>WHERE</code> condition limits updates to a host to once a day.</p>
|
||
<p>If we run the query twice on a nonexistent host:</p>
|
||
<div class="dato-code-block-wrapper" data-astro-cid-twmmywjp> <div class="expressive-code"><figure class="frame"><figcaption class="header"></figcaption><pre data-language="text"><code><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">1</div></div><div class="code"><span style="--0:#000000"><query></span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">2</div></div><div class="code"><span style="--0:#000000">INSERT 0 1</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">3</div></div><div class="code"><span style="--0:#000000"><query></span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">4</div></div><div class="code"><span style="--0:#000000">INSERT 0 0</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="<query>INSERT 0 1<query>INSERT 0 0"><div></div></button></div></figure></div> </div>
|
||
<p>The <code>INSERT</code> command outputs the number of <code>processed_rows</code> in the second integer (the first one is always 0). The first query inserts 1 row, and the second reports 0 processed rows because the <code>WHERE</code> condition prevents the update from being applied.</p>
|
||
<p>With this query, we expected that most upserts would behave like no-ops. But that assumption turned out to be false.</p>
|
||
<h2 id="what-we-saw-when-we-rolled-out-the-upsert-writes-without-updates"><a href="#what-we-saw-when-we-rolled-out-the-upsert-writes-without-updates">What we saw when we rolled out the upsert: Writes without updates</a></h2>
|
||
<p>The new upsert was gradually rolled out on our smaller data centers until we reached about 500 upserts per second:</p>
|
||
<div class="content-image-wrapper tablet:col-span-12 desktop-sm:col-span-8"> <div class="content-image-component"> <!-- Render an image with optional popup functionality and caption --> <figure class> <picture><source media="(max-width: 767px)" srcset="https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=4 4x"><source media="(min-width: 768px) and (max-width: 1024px)" srcset="https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=4 4x"><source media="(min-width: 1025px)" srcset="https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=4 4x"><img loading="lazy" class="h-auto max-w-full tablet:cursor-zoom-in" id="open-popup--1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2" src="https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1" alt="Query rate for upserts reaching about 500 queries/s after rollout." title="Query rate for upserts reaching about 500 queries/s after rollout." width="2487" height="486"></picture> </figure> <!-- TODO: Update src with widths related to dialog size constraints + make img src dynamic (to avoid load unless requested via click) --> <dialog-wrapper data-id="dialog-popup--1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2" data-trigger-id="open-popup--1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2" data-disable-mobile-popup="true" data-astro-cid-d4yttbaw="true"> <dialog id="dialog-popup--1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2" class="container h-full content-center bg-transparent backdrop:bg-black/70 backdrop:backdrop-blur-[2px]" data-astro-cid-d4yttbaw> <span class="relative mx-auto [&>*:first-child]:bg-white block tablet:p-9 desktop-sm:p-12 rounded-3xl bg-white max-h-[calc(100vh-6rem)] overflow-y-auto" data-astro-cid-d4yttbaw> <figure class="content-image-component overflow-scroll max-h-[calc(100vh-12rem)]"> <img loading="lazy" class="w-full h-auto" srcset="https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=4 4x" src="https://web-assets.dd-static.net/42588/1776351339-debugging-postgres-performance-debugging-postgres-performance-f1-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1" alt="Query rate for upserts reaching about 500 queries/s after rollout." width="1026"> </figure> <div class="desktop-sm:p-6 absolute top-0 right-0 z-10 p-3" data-astro-cid-d4yttbaw> <button title="Close dialog" aria-label="Close dialog" data-dd-action-name="dialog: icon: close dialog" class="flex items-center gap-1 tablet:gap-1.5 desktop-sm:gap-2 h-fit group
|
||
|
||
"><span class="sr-only">Close dialog</span><svg aria-hidden="true" focusable="false" width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 fill-grey-400 hover:fill-purple-300 order-2 transition-default">
|
||
<path d="M7.6029 5.72327L5.71729 7.60889L24.3849 26.2765L26.2705 24.3909L7.6029 5.72327Z"></path>
|
||
<path d="M24.3849 5.7235L5.71729 24.3911L7.6029 26.2767L26.2705 7.60911L24.3849 5.7235Z"></path>
|
||
</svg></button> </div> </span> </dialog> </dialog-wrapper> <script type="module">class c extends HTMLElement{constructor(){super();const s=this.dataset.id,r=this.dataset.triggerId,e=document.getElementById(s),n=e?.querySelector("button"),o=document.getElementById(r),d=document.querySelector("body");if(!e||!n||!o)return;e.addEventListener("close",()=>{d.style.overflow=""}),e.addEventListener("click",t=>{const i=e.firstElementChild?.getBoundingClientRect()||e.getBoundingClientRect();(t.clientX<i.left||t.clientX>i.right||t.clientY<i.top||t.clientY>i.bottom)&&e.close()}),n.addEventListener("click",()=>{e.close()});let l=this.dataset.disableMobilePopup==="true"&&window.innerWidth<1025;window.addEventListener("resize",()=>{l=this.dataset.disableMobilePopup==="true"&&window.innerWidth<1025}),o.addEventListener("click",()=>{l||(e.showModal(),d.style.overflow="hidden")})}}customElements.define("dialog-wrapper",c);</script> </div> </div>
|
||
<p>We saw an initial spike in insertions and no updated rows, which matched our expectation that most upserts would be no-ops:</p>
|
||
<div class="content-image-wrapper tablet:col-span-12 desktop-sm:col-span-8"> <div class="content-image-component"> <!-- Render an image with optional popup functionality and caption --> <figure class> <picture><source media="(max-width: 767px)" srcset="https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=4 4x"><source media="(min-width: 768px) and (max-width: 1024px)" srcset="https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=4 4x"><source media="(min-width: 1025px)" srcset="https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=4 4x"><img loading="lazy" class="h-auto max-w-full tablet:cursor-zoom-in" id="open-popup--1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2" src="https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1" alt="Postgres rows inserted vs. updated showing insert spike and no change in update rate." title="Postgres rows inserted vs. updated showing insert spike and no change in update rate." width="2451" height="449"></picture> </figure> <!-- TODO: Update src with widths related to dialog size constraints + make img src dynamic (to avoid load unless requested via click) --> <dialog-wrapper data-id="dialog-popup--1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2" data-trigger-id="open-popup--1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2" data-disable-mobile-popup="true" data-astro-cid-d4yttbaw="true"> <dialog id="dialog-popup--1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2" class="container h-full content-center bg-transparent backdrop:bg-black/70 backdrop:backdrop-blur-[2px]" data-astro-cid-d4yttbaw> <span class="relative mx-auto [&>*:first-child]:bg-white block tablet:p-9 desktop-sm:p-12 rounded-3xl bg-white max-h-[calc(100vh-6rem)] overflow-y-auto" data-astro-cid-d4yttbaw> <figure class="content-image-component overflow-scroll max-h-[calc(100vh-12rem)]"> <img loading="lazy" class="w-full h-auto" srcset="https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=4 4x" src="https://web-assets.dd-static.net/42588/1776351343-debugging-postgres-performance-debugging-postgres-performance-f2-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1" alt="Postgres rows inserted vs. updated showing insert spike and no change in update rate." width="1026"> </figure> <div class="desktop-sm:p-6 absolute top-0 right-0 z-10 p-3" data-astro-cid-d4yttbaw> <button title="Close dialog" aria-label="Close dialog" data-dd-action-name="dialog: icon: close dialog" class="flex items-center gap-1 tablet:gap-1.5 desktop-sm:gap-2 h-fit group
|
||
|
||
"><span class="sr-only">Close dialog</span><svg aria-hidden="true" focusable="false" width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 fill-grey-400 hover:fill-purple-300 order-2 transition-default">
|
||
<path d="M7.6029 5.72327L5.71729 7.60889L24.3849 26.2765L26.2705 24.3909L7.6029 5.72327Z"></path>
|
||
<path d="M24.3849 5.7235L5.71729 24.3911L7.6029 26.2767L26.2705 7.60911L24.3849 5.7235Z"></path>
|
||
</svg></button> </div> </span> </dialog> </dialog-wrapper> </div> </div>
|
||
<p>However, the number of write IOPS more than doubled, even though the update rate remained flat:</p>
|
||
<div class="content-image-wrapper tablet:col-span-12 desktop-sm:col-span-8"> <div class="content-image-component"> <!-- Render an image with optional popup functionality and caption --> <figure class> <picture><source media="(max-width: 767px)" srcset="https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=4 4x"><source media="(min-width: 768px) and (max-width: 1024px)" srcset="https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=4 4x"><source media="(min-width: 1025px)" srcset="https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=4 4x"><img loading="lazy" class="h-auto max-w-full tablet:cursor-zoom-in" id="open-popup--1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2" src="https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1" alt="IOPS chart showing increase in write operations per second after rollout." title="IOPS chart showing increase in write operations per second after rollout." width="2437" height="478"></picture> </figure> <!-- TODO: Update src with widths related to dialog size constraints + make img src dynamic (to avoid load unless requested via click) --> <dialog-wrapper data-id="dialog-popup--1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2" data-trigger-id="open-popup--1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2" data-disable-mobile-popup="true" data-astro-cid-d4yttbaw="true"> <dialog id="dialog-popup--1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2" class="container h-full content-center bg-transparent backdrop:bg-black/70 backdrop:backdrop-blur-[2px]" data-astro-cid-d4yttbaw> <span class="relative mx-auto [&>*:first-child]:bg-white block tablet:p-9 desktop-sm:p-12 rounded-3xl bg-white max-h-[calc(100vh-6rem)] overflow-y-auto" data-astro-cid-d4yttbaw> <figure class="content-image-component overflow-scroll max-h-[calc(100vh-12rem)]"> <img loading="lazy" class="w-full h-auto" srcset="https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=4 4x" src="https://web-assets.dd-static.net/42588/1776351347-debugging-postgres-performance-debugging-postgres-performance-f3-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1" alt="IOPS chart showing increase in write operations per second after rollout." width="1026"> </figure> <div class="desktop-sm:p-6 absolute top-0 right-0 z-10 p-3" data-astro-cid-d4yttbaw> <button title="Close dialog" aria-label="Close dialog" data-dd-action-name="dialog: icon: close dialog" class="flex items-center gap-1 tablet:gap-1.5 desktop-sm:gap-2 h-fit group
|
||
|
||
"><span class="sr-only">Close dialog</span><svg aria-hidden="true" focusable="false" width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 fill-grey-400 hover:fill-purple-300 order-2 transition-default">
|
||
<path d="M7.6029 5.72327L5.71729 7.60889L24.3849 26.2765L26.2705 24.3909L7.6029 5.72327Z"></path>
|
||
<path d="M24.3849 5.7235L5.71729 24.3911L7.6029 26.2767L26.2705 7.60911L24.3849 5.7235Z"></path>
|
||
</svg></button> </div> </span> </dialog> </dialog-wrapper> </div> </div>
|
||
<p>Thankfully, it was a small data center and 500 IOPS was still within manageable limits. More importantly, WAL syncs increased by roughly the same amount:</p>
|
||
<div class="content-image-wrapper tablet:col-span-12 desktop-sm:col-span-8"> <div class="content-image-component"> <!-- Render an image with optional popup functionality and caption --> <figure class> <picture><source media="(max-width: 767px)" srcset="https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=4 4x"><source media="(min-width: 768px) and (max-width: 1024px)" srcset="https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=4 4x"><source media="(min-width: 1025px)" srcset="https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=4 4x"><img loading="lazy" class="h-auto max-w-full tablet:cursor-zoom-in" id="open-popup--1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2" src="https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1" alt="WAL sync chart showing significant increase in syncs per second." title="WAL sync chart showing significant increase in syncs per second." width="2451" height="473"></picture> </figure> <!-- TODO: Update src with widths related to dialog size constraints + make img src dynamic (to avoid load unless requested via click) --> <dialog-wrapper data-id="dialog-popup--1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2" data-trigger-id="open-popup--1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2" data-disable-mobile-popup="true" data-astro-cid-d4yttbaw="true"> <dialog id="dialog-popup--1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2" class="container h-full content-center bg-transparent backdrop:bg-black/70 backdrop:backdrop-blur-[2px]" data-astro-cid-d4yttbaw> <span class="relative mx-auto [&>*:first-child]:bg-white block tablet:p-9 desktop-sm:p-12 rounded-3xl bg-white max-h-[calc(100vh-6rem)] overflow-y-auto" data-astro-cid-d4yttbaw> <figure class="content-image-component overflow-scroll max-h-[calc(100vh-12rem)]"> <img loading="lazy" class="w-full h-auto" srcset="https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=4 4x" src="https://web-assets.dd-static.net/42588/1776351351-debugging-postgres-performance-debugging-postgres-performance-f4-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1" alt="WAL sync chart showing significant increase in syncs per second." width="1026"> </figure> <div class="desktop-sm:p-6 absolute top-0 right-0 z-10 p-3" data-astro-cid-d4yttbaw> <button title="Close dialog" aria-label="Close dialog" data-dd-action-name="dialog: icon: close dialog" class="flex items-center gap-1 tablet:gap-1.5 desktop-sm:gap-2 h-fit group
|
||
|
||
"><span class="sr-only">Close dialog</span><svg aria-hidden="true" focusable="false" width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 fill-grey-400 hover:fill-purple-300 order-2 transition-default">
|
||
<path d="M7.6029 5.72327L5.71729 7.60889L24.3849 26.2765L26.2705 24.3909L7.6029 5.72327Z"></path>
|
||
<path d="M24.3849 5.7235L5.71729 24.3911L7.6029 26.2767L26.2705 7.60911L24.3849 5.7235Z"></path>
|
||
</svg></button> </div> </span> </dialog> </dialog-wrapper> </div> </div>
|
||
<p>In Postgres, all changes—such as inserting rows or modifying indexes—are recorded in the WAL. When a transaction commits, the WAL is flushed to disk to ensure durability, while table and index pages are flushed later by the background writer or during checkpoints. If a crash occurs, Postgres can replay changes from the WAL to restore consistency. The WAL sync metric reports the number of times these logs are flushed to disk.</p>
|
||
<p>Since the only change we’d introduced was the new query, it was likely the source of the WAL syncs, even though the rows weren’t actually being updated. To understand why, we needed to look deeper into what the upsert was writing to the WAL.</p>
|
||
<h2 id="digging-into-postgres-wal-to-explain-the-iops-spike"><a href="#digging-into-postgres-wal-to-explain-the-iops-spike">Digging into Postgres WAL to explain the IOPS spike</a></h2>
|
||
<p>Starting in Postgres 15, the <a href="https://www.postgresql.org/docs/current/pgwalinspect.html" target="_blank" rel="noopener noreferrer">pg_walinspect</a> extension provides debugging functions to inspect the WAL. Since our metrics were pointing squarely at WAL activity, this was the most direct way to see what the upsert was actually doing. We installed the extension with:</p>
|
||
<div class="dato-code-block-wrapper" data-astro-cid-twmmywjp> <div class="expressive-code"><figure class="frame"><figcaption class="header"></figcaption><pre data-language="sql"><code><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">1</div></div><div class="code"><span style="--0:#0000FF">CREATE</span><span style="--0:#000000"> EXTENSION pg_walinspect;</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="CREATE EXTENSION pg_walinspect;"><div></div></button></div></figure></div> </div>
|
||
<p>Once installed, the extension exposes the <code>pg_get_wal_records_info</code> function, which returns all WAL records between two log sequence numbers (LSNs). To make the extension easier to work with, we added the following shortcuts to our <code>~/.psqlrc</code>:</p>
|
||
<div class="dato-code-block-wrapper" data-astro-cid-twmmywjp> <div class="expressive-code"><figure class="frame"><figcaption class="header"></figcaption><pre data-language="sql"><code><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">1</div></div><div class="code"><span style="--0:#000000">\</span><span style="--0:#0000FF">set</span><span style="--0:#000000"> wal_lsn_start </span><span style="--0:#A31515">'SELECT pg_current_wal_lsn() \\gset'</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">2</div></div><div class="code"><span style="--0:#000000">\</span><span style="--0:#0000FF">set</span><span style="--0:#000000"> wal_records </span><span style="--0:#A31515">'SELECT * FROM pg_get_wal_records_info(:''pg_current_wal_lsn'', ''FFFFFFFF/FFFFFFFF'');'</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="\set wal_lsn_start 'SELECT pg_current_wal_lsn() \\gset'\set wal_records 'SELECT * FROM pg_get_wal_records_info(:''pg_current_wal_lsn'', ''FFFFFFFF/FFFFFFFF'');'"><div></div></button></div></figure></div> </div>
|
||
<ul><li><p><code>:wal_lsn_start</code> saves the current LSN to the <code>pg_current_wal_lsn</code> variable.</p></li><li><p><code>:wal_records</code> displays all WAL records between the saved LSN and the WAL end, using <code>FFFFFFFF/FFFFFFFF</code> as the upper bound (the maximum valid LSN value).</p></li></ul>
|
||
<p>With those shortcuts available, we could reproduce the upsert and check whether it was generating WAL records:</p>
|
||
<div class="dato-code-block-wrapper" data-astro-cid-twmmywjp> <div class="expressive-code"><figure class="frame"><figcaption class="header"></figcaption><pre data-language="sql"><code><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">1</div></div><div class="code"><span style="--0:#000000">:wal_lsn_start</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">2</div></div><div class="code"><span style="--0:#0000FF">INSERT INTO</span><span style="--0:#000000"> host_last_ingested </span><span style="--0:#0000FF">as</span><span style="--0:#000000"> t</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">3</div></div><div class="code"><span class="indent"> </span><span style="--0:#0000FF">VALUES</span><span style="--0:#000000">(</span><span style="--0:#08774E">1</span><span style="--0:#000000">, </span><span style="--0:#0000FF">now</span><span style="--0:#000000">())</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">4</div></div><div class="code"><span class="indent"> </span><span style="--0:#0000FF">ON</span><span style="--0:#000000"> CONFLICT (host_id)</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">5</div></div><div class="code"><span class="indent"><span style="--0:#000000"> </span></span><span style="--0:#000000">DO </span><span style="--0:#0000FF">UPDATE</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">6</div></div><div class="code"><span class="indent"> </span><span style="--0:#0000FF">SET</span><span style="--0:#000000"> last_ingested = EXCLUDED.last_ingested</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">7</div></div><div class="code"><span class="indent"> </span><span style="--0:#0000FF">WHERE</span><span style="--0:#000000"> t.last_ingested < EXCLUDED.last_ingested - </span><span style="--0:#A31515">'1 day'</span><span style="--0:#000000">::interval;</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">8</div></div><div class="code"><span style="--0:#0000FF">INSERT</span><span style="--0:#000000"> </span><span style="--0:#08774E">0</span><span style="--0:#000000"> </span><span style="--0:#08774E">0</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">9</div></div><div class="code"><span style="--0:#000000">:wal_records</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code=":wal_lsn_startINSERT INTO host_last_ingested as t VALUES(1, now()) ON CONFLICT (host_id) DO UPDATE SET last_ingested = EXCLUDED.last_ingested WHERE t.last_ingested < EXCLUDED.last_ingested - '1 day'::interval;INSERT 0 0:wal_records"><div></div></button></div></figure></div> </div>
|
||
<p>The query didn’t update any rows, but <code>pg_walinspect</code> still showed WAL activity:</p>
|
||
<div class="dato-code-block-wrapper" data-astro-cid-twmmywjp> <div class="expressive-code"><figure class="frame"><figcaption class="header"></figcaption><pre data-language="text"><code><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">1</div></div><div class="code"><span style="--0:#000000">-[ RECORD 1 ]----+-----------------------------------------------------------------</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">2</div></div><div class="code"><span style="--0:#000000">start_lsn | 0/02469D30</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">3</div></div><div class="code"><span style="--0:#000000">end_lsn | 0/02469D68</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">4</div></div><div class="code"><span style="--0:#000000">prev_lsn | 0/02469CF8</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">5</div></div><div class="code"><span style="--0:#000000">xid | 818</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">6</div></div><div class="code"><span style="--0:#000000">resource_manager | Heap</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">7</div></div><div class="code"><span style="--0:#000000">record_type | LOCK</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">8</div></div><div class="code"><span style="--0:#000000">record_length | 54</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">9</div></div><div class="code"><span style="--0:#000000">main_data_length | 8</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">10</div></div><div class="code"><span style="--0:#000000">fpi_length | 0</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">11</div></div><div class="code"><span style="--0:#000000">description | xmax: 818, off: 2, infobits: [LOCK_ONLY, EXCL_LOCK], flags: 0x00</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">12</div></div><div class="code"><span style="--0:#000000">block_ref | blkref #0: rel 1663/5/16426 fork main blk 0</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">13</div></div><div class="code"><span style="--0:#000000">-[ RECORD 2 ]----+-----------------------------------------------------------------</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">14</div></div><div class="code"><span style="--0:#000000">start_lsn | 0/02469D68</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">15</div></div><div class="code"><span style="--0:#000000">end_lsn | 0/02469D98</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">16</div></div><div class="code"><span style="--0:#000000">prev_lsn | 0/02469D30</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">17</div></div><div class="code"><span style="--0:#000000">xid | 818</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">18</div></div><div class="code"><span style="--0:#000000">resource_manager | Transaction</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">19</div></div><div class="code"><span style="--0:#000000">record_type | COMMIT</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">20</div></div><div class="code"><span style="--0:#000000">record_length | 46</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">21</div></div><div class="code"><span style="--0:#000000">main_data_length | 20</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">22</div></div><div class="code"><span style="--0:#000000">fpi_length | 0</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">23</div></div><div class="code"><span style="--0:#000000">description | 2025-10-16 15:33:10.406748+00</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">24</div></div><div class="code"><span style="--0:#000000">block_ref | <null></span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="-[ RECORD 1 ]----+-----------------------------------------------------------------start_lsn | 0/02469D30end_lsn | 0/02469D68prev_lsn | 0/02469CF8xid | 818resource_manager | Heaprecord_type | LOCKrecord_length | 54main_data_length | 8fpi_length | 0description | xmax: 818, off: 2, infobits: [LOCK_ONLY, EXCL_LOCK], flags: 0x00block_ref | blkref #0: rel 1663/5/16426 fork main blk 0-[ RECORD 2 ]----+-----------------------------------------------------------------start_lsn | 0/02469D68end_lsn | 0/02469D98prev_lsn | 0/02469D30xid | 818resource_manager | Transactionrecord_type | COMMITrecord_length | 46main_data_length | 20fpi_length | 0description | 2025-10-16 15:33:10.406748+00block_ref | <null>"><div></div></button></div></figure></div> </div>
|
||
<p>Two WAL records were written:</p>
|
||
<ul><li><p>A <code>Heap LOCK</code> record indicates a row lock on the relation <code>16426</code>, which happens to be our new <code>host_last_ingested</code> table.</p></li><li><p>A <code>COMMIT record</code> is written because a transaction ID (<code>xid</code>) was assigned to the transaction, and it must either be committed or rolled back.</p></li></ul>
|
||
<p>To confirm what was generating the <code>LOCK</code> record, we attached a debugger to the Postgres backend process (<code>lldb -p $backend_pid</code>) and added a breakpoint on <code>WALInsertLockAcquire</code>. The backtrace (abridged) showed:</p>
|
||
<div class="dato-code-block-wrapper" data-astro-cid-twmmywjp> <div class="expressive-code"><figure class="frame"><figcaption class="header"></figcaption><pre data-language="text"><code><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">1</div></div><div class="code"><span style="--0:#000000">#0: postgres`WALInsertLockAcquire at xlog.c:1391:6</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">2</div></div><div class="code"><span style="--0:#000000">#1: postgres`XLogInsertRecord(...) at xlog.c:823:3</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">3</div></div><div class="code"><span style="--0:#000000">#2: postgres`XLogInsert(...) at xloginsert.c:524:12</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">4</div></div><div class="code"><span style="--0:#000000">#3: postgres`heap_lock_tuple(...) at heapam.c:5244:12</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">5</div></div><div class="code"><span style="--0:#000000">#4: postgres`heapam_tuple_lock(...) at heapam_handler.c:380:11</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">6</div></div><div class="code"><span style="--0:#000000">#5: postgres`table_tuple_lock(...) at tableam.h:1554:9</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">7</div></div><div class="code"><span style="--0:#000000">#6: postgres`ExecOnConflictUpdate(...) at nodeModifyTable.c:2749:9</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">8</div></div><div class="code"><span style="--0:#000000">#7: postgres`ExecInsert(...) at nodeModifyTable.c:1152:10</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="#0: postgres`WALInsertLockAcquire at xlog.c:1391:6#1: postgres`XLogInsertRecord(...) at xlog.c:823:3#2: postgres`XLogInsert(...) at xloginsert.c:524:12#3: postgres`heap_lock_tuple(...) at heapam.c:5244:12#4: postgres`heapam_tuple_lock(...) at heapam_handler.c:380:11#5: postgres`table_tuple_lock(...) at tableam.h:1554:9#6: postgres`ExecOnConflictUpdate(...) at nodeModifyTable.c:2749:9#7: postgres`ExecInsert(...) at nodeModifyTable.c:1152:10"><div></div></button></div></figure></div> </div>
|
||
<p>Looking at the code around the backtrace, we could trace what happens:</p>
|
||
<ul><li><p>The upsert <a href="https://github.com/postgres/postgres/blob/b7cc6474e930d4429b15657d6910e1e32066de5e/src/backend/executor/nodeModifyTable.c#L1121-L1154" target="_blank" rel="noopener noreferrer">checks for the existence of the tuple</a>.</p></li><li><p>The tuple exists, so <a href="https://github.com/postgres/postgres/blob/b7cc6474e930d4429b15657d6910e1e32066de5e/src/backend/executor/nodeModifyTable.c#L2743-L2754" target="_blank" rel="noopener noreferrer">ExecOnConflictUpdate</a> runs and locks the row.</p></li><li><p>Locking the row modifies its metadata to include the locking transaction ID, assigning a transaction ID (<code>xid</code>).</p></li><li><p>A <a href="https://github.com/postgres/postgres/blob/b7cc6474e930d4429b15657d6910e1e32066de5e/src/backend/access/heap/heapam.c#L5215-L5247" target="_blank" rel="noopener noreferrer">LOCK</a> record is written to the WAL.</p></li><li><p>The <code>WHERE</code> condition evaluates to false, so the row is not updated.</p></li><li><p>Because a <a href="https://github.com/postgres/postgres/blob/b7cc6474e930d4429b15657d6910e1e32066de5e/src/backend/access/transam/xact.c#L1350-L1355" target="_blank" rel="noopener noreferrer">transaction ID was assigned</a>, the transaction must be committed</p></li><li><p>A <code>COMMIT</code> record is written, and the WAL is flushed to disk.</p></li></ul>
|
||
<p>Postgres’s <code>INSERT</code> documentation explicitly confirms this <a href="https://www.postgresql.org/docs/current/sql-insert.html" target="_blank" rel="noopener noreferrer">lock behavior</a> for <code>ON CONFLICT DO UPDATE</code>:</p>
|
||
<blockquote><p>Only rows for which this expression returns true will be updated, although all rows will be locked when the <code>ON CONFLICT DO UPDATE</code> action is taken. Note that <code>condition</code> is evaluated last, after a conflict has been identified as a candidate to update.</p></blockquote>
|
||
<p>This explains the surge in IOPS and WAL syncs we saw. Each upsert triggers a WAL sync, and each sync writes an 8 kB page to disk. With 500 upserts per second, we had 500 WAL syncs per second using 500 IOPS.</p>
|
||
<p>There’s only a limited amount of sync a disk can handle. We used <a href="https://www.postgresql.org/docs/current/pgtestfsync.html" target="_blank" rel="noopener noreferrer">pg_test_fsync</a> to estimate how many WAL syncs per second the hardware could sustain. On a gp3 EBS disk, we reach around 1,000 syncs per second using 8 kB writes. Once that limit is reached, Postgres starts batching commits, which introduces latency.</p>
|
||
<p>This particular cluster handled 500 upserts per second just fine. But our biggest clusters will add 25,000 upserts per second. That would overwhelm the sync capacity for a query that was expected to behave like a no-op.</p>
|
||
<p>We needed to change our approach to avoid this overhead.</p>
|
||
<h2 id="rewriting-the-query-to-avoid-upsert-overhead"><a href="#rewriting-the-query-to-avoid-upsert-overhead">Rewriting the query to avoid upsert overhead</a></h2>
|
||
<p>We couldn’t rely on <code>ON CONFLICT DO UPDATE</code>, but we still needed to track each host’s last ingested time. The application also has strict latency requirements, so everything needs to happen in a single query. To do that, we emulated an upsert by using a <a href="https://www.postgresql.org/docs/current/queries-with.html#QUERIES-WITH-MODIFYING" target="_blank" rel="noopener noreferrer">data-modifying Common Table Expression</a> (CTE).</p>
|
||
<p>Here’s how it works:</p>
|
||
<ul><li><p>The CTE attempts to insert the row using <code>ON CONFLICT DO NOTHING</code>, which avoids locking existing rows.</p></li><li><p>If the insertion succeeds, the CTE returns the inserted row.</p></li><li><p>If no insertion occurs, the CTE returns nothing.</p></li><li><p>The outer <code>UPDATE</code> uses the presence (or absence) of a returned row to decide whether to run.</p></li></ul>
|
||
<div class="dato-code-block-wrapper" data-astro-cid-twmmywjp> <div class="expressive-code"><figure class="frame"><figcaption class="header"></figcaption><pre data-language="sql"><code><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">1</div></div><div class="code"><span style="--0:#0000FF">WITH</span><span style="--0:#000000"> insert_attempt </span><span style="--0:#0000FF">AS</span><span style="--0:#000000"> (</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">2</div></div><div class="code"><span class="indent"> </span><span style="--0:#007A00">-- Try to insert</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">3</div></div><div class="code"><span class="indent"> </span><span style="--0:#0000FF">INSERT INTO</span><span style="--0:#000000"> host_last_ingested (host_id)</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">4</div></div><div class="code"><span class="indent"> </span><span style="--0:#007A00">-- Values to insert</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">5</div></div><div class="code"><span class="indent"> </span><span style="--0:#0000FF">VALUES</span><span style="--0:#000000"> (:host_id)</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">6</div></div><div class="code"><span class="indent"> </span><span style="--0:#007A00">-- Only try to insert if row doesn't already exist</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">7</div></div><div class="code"><span class="indent"> </span><span style="--0:#0000FF">ON</span><span style="--0:#000000"> CONFLICT DO NOTHING</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">8</div></div><div class="code"><span class="indent"><span style="--0:#000000"> </span></span><span style="--0:#000000">RETURNING *</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">9</div></div><div class="code"><span style="--0:#000000">)</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">10</div></div><div class="code"><span style="--0:#007A00">-- Do the update</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">11</div></div><div class="code"><span style="--0:#0000FF">UPDATE</span><span style="--0:#000000"> host_last_ingested</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">12</div></div><div class="code"><span class="indent"> </span><span style="--0:#0000FF">SET</span><span style="--0:#000000"> last_ingested=</span><span style="--0:#0000FF">now</span><span style="--0:#000000">() </span><span style="--0:#0000FF">WHERE</span><span style="--0:#000000"> host_id=:host_id</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">13</div></div><div class="code"><span class="indent"> </span><span style="--0:#007A00">-- Only modify if last_ingested is older than 1 day</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">14</div></div><div class="code"><span class="indent"> </span><span style="--0:#0000FF">AND</span><span style="--0:#000000"> last_ingested < </span><span style="--0:#0000FF">now</span><span style="--0:#000000">() - </span><span style="--0:#A31515">'1 day'</span><span style="--0:#000000">::interval</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">15</div></div><div class="code"><span class="indent"> </span><span style="--0:#007A00">-- And only if no insertion was done</span></div></div><div class="ec-line"><div class="gutter"><div class="ln" aria-hidden="true">16</div></div><div class="code"><span class="indent"> </span><span style="--0:#0000FF">AND</span><span style="--0:#000000"> </span><span style="--0:#0000FF">NOT</span><span style="--0:#000000"> </span><span style="--0:#0000FF">EXISTS</span><span style="--0:#000000"> (</span><span style="--0:#0000FF">SELECT</span><span style="--0:#000000"> * </span><span style="--0:#0000FF">FROM</span><span style="--0:#000000"> insert_attempt);</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="WITH insert_attempt AS ( -- Try to insert INSERT INTO host_last_ingested (host_id) -- Values to insert VALUES (:host_id) -- Only try to insert if row doesn't already exist ON CONFLICT DO NOTHING RETURNING *)-- Do the updateUPDATE host_last_ingested SET last_ingested=now() WHERE host_id=:host_id -- Only modify if last_ingested is older than 1 day AND last_ingested < now() - '1 day'::interval -- And only if no insertion was done AND NOT EXISTS (SELECT * FROM insert_attempt);"><div></div></button></div></figure></div> </div>
|
||
<p>Compared to <code>ON CONFLICT DO UPDATE</code>, this version introduces potential race conditions. For example:</p>
|
||
<ul><li><p><strong>Tx1</strong>: The insert attempt fails because the row already exists.</p></li><li><p><strong>Tx2</strong>: Deletes the row.</p></li><li><p><strong>Tx1</strong>: Attempts to update the row that was deleted.</p></li></ul>
|
||
<p>This happens because we’re not locking the row. This trade-off is acceptable for our use case: Host tracking can be imprecise, and the likelihood of seeing a host again after 7 days of inactivity is low.</p>
|
||
<p>We then checked the WAL records generated by this query to confirm that it behaved as expected.</p>
|
||
<h3 id="wal-record-behavior"><a href="#wal-record-behavior">WAL record behavior</a></h3>
|
||
<p>If the row <strong>doesn’t exist</strong>, we see the following records:</p>
|
||
<div class="table-component" data-astro-cid-twmmywjp> <div class="table-component-box" data-astro-cid-twmmywjp> <div class="table-component-box-inner" data-astro-cid-twmmywjp> <table class="table default w-full"> <thead> <tr> <th class="bg-grey-700 text-left font-bold font-national uppercase text-grey-200 tracking-[0.24px] tablet:tracking-[0.28px] desktop-sm:tracking-[0.32px] text-12 leading-16 tablet:text-14 tablet:leading-20 desktop-sm:text-16 px-4 py-3 desktop-sm:py-3.5">xid</th><th class="bg-grey-700 text-left font-bold font-national uppercase text-grey-200 tracking-[0.24px] tablet:tracking-[0.28px] desktop-sm:tracking-[0.32px] text-12 leading-16 tablet:text-14 tablet:leading-20 desktop-sm:text-16 px-4 py-3 desktop-sm:py-3.5">resource_manager</th><th class="bg-grey-700 text-left font-bold font-national uppercase text-grey-200 tracking-[0.24px] tablet:tracking-[0.28px] desktop-sm:tracking-[0.32px] text-12 leading-16 tablet:text-14 tablet:leading-20 desktop-sm:text-16 px-4 py-3 desktop-sm:py-3.5">record_type</th> </tr> </thead> <tbody> <tr> <td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">798</td><td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">Heap</td><td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">INSERT+INIT</td> </tr><tr> <td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">798</td><td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">Btree</td><td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">NEWROOT</td> </tr><tr> <td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">798</td><td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">Btree</td><td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">INSERT_LEAF</td> </tr><tr> <td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">798</td><td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">Heap</td><td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">HEAP_CONFIRM</td> </tr><tr> <td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">798</td><td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">Transaction</td><td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">COMMIT</td> </tr> </tbody> </table> </div> </div> </div>
|
||
<p>Those WAL records add a new row to the table (<code>Heap INSERT+INIT</code>) and a new entry in the index (<code>Btree NEWROOT + INSERT_LEAF</code>). Because the insert uses <code>ON CONFLICT DO NOTHING</code>, it is performed speculatively and needs to be confirmed via the <code>HEAP_CONFIRM</code> WAL record.</p>
|
||
<p>If the row <strong>already exists</strong> and <code>last_ingested</code> is older than 1 day, we see the following records:</p>
|
||
<div class="table-component" data-astro-cid-twmmywjp> <div class="table-component-box" data-astro-cid-twmmywjp> <div class="table-component-box-inner" data-astro-cid-twmmywjp> <table class="table default w-full"> <thead> <tr> <th class="bg-grey-700 text-left font-bold font-national uppercase text-grey-200 tracking-[0.24px] tablet:tracking-[0.28px] desktop-sm:tracking-[0.32px] text-12 leading-16 tablet:text-14 tablet:leading-20 desktop-sm:text-16 px-4 py-3 desktop-sm:py-3.5">xid</th><th class="bg-grey-700 text-left font-bold font-national uppercase text-grey-200 tracking-[0.24px] tablet:tracking-[0.28px] desktop-sm:tracking-[0.32px] text-12 leading-16 tablet:text-14 tablet:leading-20 desktop-sm:text-16 px-4 py-3 desktop-sm:py-3.5">resource_manager</th><th class="bg-grey-700 text-left font-bold font-national uppercase text-grey-200 tracking-[0.24px] tablet:tracking-[0.28px] desktop-sm:tracking-[0.32px] text-12 leading-16 tablet:text-14 tablet:leading-20 desktop-sm:text-16 px-4 py-3 desktop-sm:py-3.5">record_type</th> </tr> </thead> <tbody> <tr> <td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">800</td><td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">Heap</td><td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">HOT_UPDATE</td> </tr><tr> <td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">800</td><td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">Transaction</td><td class="border-t border-purple-300 px-4 py-3 desktop-sm:py-3.5 text-16 leading-24 tablet:text-18 tablet:leading-26 desktop-sm:text-20 desktop-sm:leading-28">COMMIT</td> </tr> </tbody> </table> </div> </div> </div>
|
||
<p>In this case, the update qualifies as a HOT update and does not require any index changes.</p>
|
||
<p>And if the row exists and <code>last_ingested</code> age is less than 1 day, no WAL records are generated.</p>
|
||
<p>After confirming that the new query avoided unnecessary WAL records, we rolled it out again to our small data center:</p>
|
||
<div class="content-image-wrapper tablet:col-span-12 desktop-sm:col-span-8"> <div class="content-image-component"> <!-- Render an image with optional popup functionality and caption --> <figure class> <picture><source media="(max-width: 767px)" srcset="https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=4 4x"><source media="(min-width: 768px) and (max-width: 1024px)" srcset="https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=4 4x"><source media="(min-width: 1025px)" srcset="https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=4 4x"><img loading="lazy" class="h-auto max-w-full tablet:cursor-zoom-in" id="open-popup--1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2" src="https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1" alt="CTE-based upsert query rollout with 428 queries/s." title="CTE-based upsert query rollout with 428 queries/s." width="2448" height="470"></picture> </figure> <!-- TODO: Update src with widths related to dialog size constraints + make img src dynamic (to avoid load unless requested via click) --> <dialog-wrapper data-id="dialog-popup--1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2" data-trigger-id="open-popup--1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2" data-disable-mobile-popup="true" data-astro-cid-d4yttbaw="true"> <dialog id="dialog-popup--1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2" class="container h-full content-center bg-transparent backdrop:bg-black/70 backdrop:backdrop-blur-[2px]" data-astro-cid-d4yttbaw> <span class="relative mx-auto [&>*:first-child]:bg-white block tablet:p-9 desktop-sm:p-12 rounded-3xl bg-white max-h-[calc(100vh-6rem)] overflow-y-auto" data-astro-cid-d4yttbaw> <figure class="content-image-component overflow-scroll max-h-[calc(100vh-12rem)]"> <img loading="lazy" class="w-full h-auto" srcset="https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=4 4x" src="https://web-assets.dd-static.net/42588/1776351356-debugging-postgres-performance-debugging-postgres-performance-f5-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1" alt="CTE-based upsert query rollout with 428 queries/s." width="1026"> </figure> <div class="desktop-sm:p-6 absolute top-0 right-0 z-10 p-3" data-astro-cid-d4yttbaw> <button title="Close dialog" aria-label="Close dialog" data-dd-action-name="dialog: icon: close dialog" class="flex items-center gap-1 tablet:gap-1.5 desktop-sm:gap-2 h-fit group
|
||
|
||
"><span class="sr-only">Close dialog</span><svg aria-hidden="true" focusable="false" width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 fill-grey-400 hover:fill-purple-300 order-2 transition-default">
|
||
<path d="M7.6029 5.72327L5.71729 7.60889L24.3849 26.2765L26.2705 24.3909L7.6029 5.72327Z"></path>
|
||
<path d="M24.3849 5.7235L5.71729 24.3911L7.6029 26.2767L26.2705 7.60911L24.3849 5.7235Z"></path>
|
||
</svg></button> </div> </span> </dialog> </dialog-wrapper> </div> </div>
|
||
<p>We saw the expected spike in update queries during the rollout:</p>
|
||
<div class="content-image-wrapper tablet:col-span-12 desktop-sm:col-span-8"> <div class="content-image-component"> <!-- Render an image with optional popup functionality and caption --> <figure class> <picture><source media="(max-width: 767px)" srcset="https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=4 4x"><source media="(min-width: 768px) and (max-width: 1024px)" srcset="https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=4 4x"><source media="(min-width: 1025px)" srcset="https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=4 4x"><img loading="lazy" class="h-auto max-w-full tablet:cursor-zoom-in" id="open-popup--1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2" src="https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1" alt="Postgres rows updated chart showing 37.68 rows/s during rollout." title="Postgres rows updated chart showing 37.68 rows/s during rollout." width="2447" height="452"></picture> </figure> <!-- TODO: Update src with widths related to dialog size constraints + make img src dynamic (to avoid load unless requested via click) --> <dialog-wrapper data-id="dialog-popup--1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2" data-trigger-id="open-popup--1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2" data-disable-mobile-popup="true" data-astro-cid-d4yttbaw="true"> <dialog id="dialog-popup--1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2" class="container h-full content-center bg-transparent backdrop:bg-black/70 backdrop:backdrop-blur-[2px]" data-astro-cid-d4yttbaw> <span class="relative mx-auto [&>*:first-child]:bg-white block tablet:p-9 desktop-sm:p-12 rounded-3xl bg-white max-h-[calc(100vh-6rem)] overflow-y-auto" data-astro-cid-d4yttbaw> <figure class="content-image-component overflow-scroll max-h-[calc(100vh-12rem)]"> <img loading="lazy" class="w-full h-auto" srcset="https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=4 4x" src="https://web-assets.dd-static.net/42588/1776351360-debugging-postgres-performance-debugging-postgres-performance-f6-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1" alt="Postgres rows updated chart showing 37.68 rows/s during rollout." width="1026"> </figure> <div class="desktop-sm:p-6 absolute top-0 right-0 z-10 p-3" data-astro-cid-d4yttbaw> <button title="Close dialog" aria-label="Close dialog" data-dd-action-name="dialog: icon: close dialog" class="flex items-center gap-1 tablet:gap-1.5 desktop-sm:gap-2 h-fit group
|
||
|
||
"><span class="sr-only">Close dialog</span><svg aria-hidden="true" focusable="false" width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 fill-grey-400 hover:fill-purple-300 order-2 transition-default">
|
||
<path d="M7.6029 5.72327L5.71729 7.60889L24.3849 26.2765L26.2705 24.3909L7.6029 5.72327Z"></path>
|
||
<path d="M24.3849 5.7235L5.71729 24.3911L7.6029 26.2767L26.2705 7.60911L24.3849 5.7235Z"></path>
|
||
</svg></button> </div> </span> </dialog> </dialog-wrapper> </div> </div>
|
||
<p>This time, the increase in WAL syncs closely matched the actual row updates. When no rows were modified, the WAL sync rate remained steady:</p>
|
||
<div class="content-image-wrapper tablet:col-span-12 desktop-sm:col-span-8"> <div class="content-image-component"> <!-- Render an image with optional popup functionality and caption --> <figure class> <picture><source media="(max-width: 767px)" srcset="https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=767&dpr=4 4x"><source media="(min-width: 768px) and (max-width: 1024px)" srcset="https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1024&dpr=4 4x"><source media="(min-width: 1025px)" srcset="https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=4 4x"><img loading="lazy" class="h-auto max-w-full tablet:cursor-zoom-in" id="open-popup--1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2" src="https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1" alt="WAL sync rate stays flat during periods with no updates." title="WAL sync rate stays flat during periods with no updates." width="2446" height="473"></picture> </figure> <!-- TODO: Update src with widths related to dialog size constraints + make img src dynamic (to avoid load unless requested via click) --> <dialog-wrapper data-id="dialog-popup--1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2" data-trigger-id="open-popup--1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2" data-disable-mobile-popup="true" data-astro-cid-d4yttbaw="true"> <dialog id="dialog-popup--1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2" class="container h-full content-center bg-transparent backdrop:bg-black/70 backdrop:backdrop-blur-[2px]" data-astro-cid-d4yttbaw> <span class="relative mx-auto [&>*:first-child]:bg-white block tablet:p-9 desktop-sm:p-12 rounded-3xl bg-white max-h-[calc(100vh-6rem)] overflow-y-auto" data-astro-cid-d4yttbaw> <figure class="content-image-component overflow-scroll max-h-[calc(100vh-12rem)]"> <img loading="lazy" class="w-full h-auto" srcset="https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=1 1x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=2 2x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=3 3x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1026&dpr=4 4x" src="https://web-assets.dd-static.net/42588/1776351364-debugging-postgres-performance-debugging-postgres-performance-f7-v2.png?format=auto&fit=bounds&quality=75&disable=upscale&width=1400&dpr=1" alt="WAL sync rate stays flat during periods with no updates." width="1026"> </figure> <div class="desktop-sm:p-6 absolute top-0 right-0 z-10 p-3" data-astro-cid-d4yttbaw> <button title="Close dialog" aria-label="Close dialog" data-dd-action-name="dialog: icon: close dialog" class="flex items-center gap-1 tablet:gap-1.5 desktop-sm:gap-2 h-fit group
|
||
|
||
"><span class="sr-only">Close dialog</span><svg aria-hidden="true" focusable="false" width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 fill-grey-400 hover:fill-purple-300 order-2 transition-default">
|
||
<path d="M7.6029 5.72327L5.71729 7.60889L24.3849 26.2765L26.2705 24.3909L7.6029 5.72327Z"></path>
|
||
<path d="M24.3849 5.7235L5.71729 24.3911L7.6029 26.2767L26.2705 7.60911L24.3849 5.7235Z"></path>
|
||
</svg></button> </div> </span> </dialog> </dialog-wrapper> </div> </div>
|
||
<h2 id="lessons-learned-wal-and-query-optimization"><a href="#lessons-learned-wal-and-query-optimization">Lessons learned: WAL and query optimization</a></h2>
|
||
<p>By using <code>pg_walinspect</code>, we were able to pinpoint the source of our unexpected overhead: During conflict resolution, an upsert locks the row, even if it doesn’t update anything. That lock modifies the row’s metadata with a transaction ID. Once a transaction ID is allocated, the transaction must be committed—even if no row was updated—triggering a WAL sync.</p>
|
||
<p>Thanks to this information, we:</p>
|
||
<ul><li><p><strong>Rewrote the query to avoid the implicit row lock</strong></p></li><li><p><strong>Validated the new behavior by inspecting the resulting WAL records</strong></p></li><li><p><strong>Successfully removed the unnecessary overhead while preserving correctness</strong></p></li></ul>
|
||
<p>Postgres’s WAL tooling has broader applications, too. For example, <a href="https://www.postgresql.org/docs/current/pgwalinspect.html#PGWALINSPECT-FUNCS-PG-GET-WAL-STATS" target="_blank" rel="noopener noreferrer">pg_get_wal_stats</a> provides insight into the types and sizes of WAL records, which can help quantify the cost of index maintenance or the impact of <a href="https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-FULL-PAGE-WRITES" target="_blank" rel="noopener noreferrer">full page images</a>.</p>
|
||
<p>When you’re operating databases at scale, even “no-ops” queries can turn into performance surprises. Tools like <code>pg_walinspect</code> help make those surprises visible and fixable.</p>
|
||
<p>If you enjoy digging into systems like this to uncover hidden performance costs and building scalable solutions to fix them, we’re hiring! Explore <a href="https://careers.datadoghq.com/all-jobs/?parent_department_Engineering%5B0%5D=Engineering&child_department_Engineering%5B0%5D=Backend&utm_source=engblog&utm_medium=corpsite&utm_campaign=engcommunity-2025--postgresql&gh_src=hm4uekgj1us"><strong>open roles on our engineering team</strong></a>.</p> </div></div><div class="desktop-sm:col-span-full desktop-sm:mb-12 mb-9"></div><div class="print:hidden"><ul class="inline-flex gap-2"> <li> <a href="https://twitter.com/intent/tweet?url=https://www.datadoghq.com/blog/engineering/debugging-postgres-performance/" aria-label="Share on X" target="_blank" rel="noopener noreferrer" class="group" data-dd-action-name="share: link: x"> <svg aria-hidden="true" focusable="false" width="36" height="36" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" class="[&>g>rect]:fill-grey-500 [&_path]:!fill-white w-7 h-7 tablet:w-8 tablet:h-8 desktop-sm:w-9 desktop-sm:h-9 group-hover:[&>g>rect]:fill-black">
|
||
<g id="_atom_social-icons">
|
||
<rect width="36" height="36" rx="18" fill=""></rect>
|
||
<path id="Vector" d="M19.5222 16.5277L25.4785 9H24.0671L18.8952 15.5362L14.7644 9H10L16.2466 18.8839L10 26.7778H11.4115L16.8732 19.8753L21.2356 26.7778H26L19.5222 16.5277ZM17.5889 18.9709L16.956 17.9867L11.9201 10.1553H14.0882L18.1522 16.4755L18.7851 17.4597L24.0677 25.675H21.8997L17.5889 18.9709Z" fill=""></path>
|
||
</g>
|
||
</svg> </a> </li><li> <a href="https://www.reddit.com/submit?url=https://www.datadoghq.com/blog/engineering/debugging-postgres-performance/" aria-label="Share on Reddit" target="_blank" rel="noopener noreferrer" class="group" data-dd-action-name="share: link: reddit"> <svg aria-hidden="true" focusable="false" width="36" height="36" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" class="[&>g>rect]:fill-grey-500 [&_path]:!fill-white w-7 h-7 tablet:w-8 tablet:h-8 desktop-sm:w-9 desktop-sm:h-9 group-hover:[&>g>rect]:fill-[#FF4500]">
|
||
<g id="_atom_social-icons">
|
||
<rect width="36" height="36" rx="18" fill=""></rect>
|
||
<path id="Vector" d="M15.7419 20.129C15.1613 20.129 14.7097 19.6774 14.7097 19.0968C14.7097 18.5161 15.1613 18.0645 15.7419 18.0645C16.3226 18.0645 16.7742 18.5161 16.7742 19.0968C16.7742 19.6129 16.2581 20.129 15.7419 20.129ZM20.129 21.4194C19.6774 21.871 18.6452 22 18 22C17.3548 22 16.3226 21.8065 15.871 21.4194C15.7419 21.2903 15.6129 21.2903 15.4839 21.4194C15.3548 21.5484 15.3548 21.6774 15.4839 21.8065C16.1935 22.5161 17.5484 22.5806 18 22.5806C18.3871 22.5806 19.8065 22.5161 20.5161 21.8065C20.6452 21.6774 20.6452 21.5484 20.5161 21.4194C20.3871 21.3548 20.1935 21.3548 20.129 21.4194ZM20.2581 18C19.6774 18 19.2258 18.4516 19.2258 19.0323C19.2258 19.6129 19.6774 20.0645 20.2581 20.0645C20.8387 20.0645 21.2903 19.6129 21.2903 19.0323C21.3548 18.4516 20.9032 18 20.2581 18ZM28 18C28 23.4839 23.4839 28 18 28C12.5161 28 8 23.4839 8 18C8 12.5161 12.5161 8 18 8C23.4839 8 28 12.5161 28 18ZM24.6452 18C24.6452 17.2258 24 16.5806 23.2258 16.5806C22.8387 16.5806 22.5161 16.7742 22.2581 16.9677C21.2903 16.2581 19.871 15.8065 18.3871 15.7419L19.0323 12.6452L21.2258 13.0968C21.2258 13.6774 21.7419 14.0645 22.3226 14.0645C22.9032 14.0645 23.2903 13.5484 23.2903 12.9677C23.2903 12.3871 22.7742 11.9355 22.1935 11.9355C21.8065 11.9355 21.4839 12.129 21.2903 12.5161L18.8387 12C18.7742 12 18.7097 12 18.6452 12.0645C18.5806 12.129 18.5161 12.1935 18.5161 12.2581L17.8065 15.7419C16.2581 15.8065 14.8387 16.2581 13.871 16.9677C13.2903 16.3871 12.3871 16.4516 11.8065 17.0323C11.2258 17.6129 11.2903 18.5161 11.871 19.0968C12 19.2258 12.0645 19.2903 12.2581 19.3548C12.2581 19.5484 12.1935 19.6129 12.1935 19.8065C12.1935 22 14.7742 23.871 18 23.871C21.2258 23.871 23.8065 22.0645 23.8065 19.8065C23.8065 19.6129 23.8065 19.5484 23.7419 19.3548C24.3226 19.0968 24.6452 18.5806 24.6452 18Z" fill=""></path>
|
||
</g>
|
||
</svg> </a> </li><li> <a href="https://www.linkedin.com/shareArticle?url=https://www.datadoghq.com/blog/engineering/debugging-postgres-performance/" aria-label="Share on LinkedIn" target="_blank" rel="noopener noreferrer" class="group" data-dd-action-name="share: link: linkedin"> <svg aria-hidden="true" focusable="false" width="36" height="36" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" class="[&>g>rect]:fill-grey-500 [&_path]:!fill-white w-7 h-7 tablet:w-8 tablet:h-8 desktop-sm:w-9 desktop-sm:h-9 group-hover:[&>g>rect]:fill-[#0A66C2]">
|
||
<g id="_atom_social-icons">
|
||
<rect width="36" height="36" rx="18" fill=""></rect>
|
||
<g id="Group">
|
||
<path id="Vector" fill-rule="evenodd" clip-rule="evenodd" d="M24.9355 9H11C9.90323 9 9 9.90323 9 11V25C9 26.0968 9.90323 27 11 27H25C26.0968 27 27 26.0968 27 25V11.0645C27 9.90323 26.0968 9 24.9355 9ZM14.4194 24.5484H11.7097V15.8387H14.4194V24.5484ZM13.0645 14.7419C12.1613 14.7419 11.5161 14.0323 11.5161 13.1935C11.5161 12.2903 12.2258 11.5806 13.0645 11.5806C13.9032 11.5806 14.6129 12.2903 14.6129 13.1935C14.6129 14.0968 13.9032 14.7419 13.0645 14.7419ZM24.4839 24.5484H21.7742V19.9677C21.7742 18.7419 21.3226 17.9677 20.2903 17.9677C19.1935 17.9677 18.6774 18.6774 18.6774 19.9677V24.5484H16.0968V15.8387H18.6774V17C18.6774 17 19.4516 15.5806 21.3226 15.5806C23.1935 15.5806 24.4839 16.6774 24.4839 19V24.5484Z" fill=""></path>
|
||
</g>
|
||
</g>
|
||
</svg> </a> </li> </ul></div></section><!-- Sidebar — second in DOM; CSS Grid places it visually left on desktop --><div class="desktop-sm:col-span-3 desktop-sm:col-start-1 desktop-sm:row-start-1 hidden desktop-sm:flex flex-col justify-between desktop-sm:pr-10 print:hidden"><aside class="aside-toc desktop-sm:block desktop-sm:sticky desktop-sm:top-[115px] hidden font-national-book border-t border-t-purple-600"> <nav class="toc desktop-sm:pt-4"> <p class="desktop-sm:mb-4 font-bold font-national text-16 leading-20">When upserts don’t update but still write: Debugging Postgres performance at scale</p> <ul class="flex flex-col gap-1">
|
||
<li class="leading-20 group">
|
||
<a href="#designing-a-low-overhead-upsert-in-postgres" data-dd-action-name="toc: heading: Designing a low-overhead upsert in Postgres" class="inline-block font-national font-normal border-l-2 hover:text-purple-700 border-grey-300 desktop-sm:pl-3 hover:border-purple-300 [.active>&]:border-purple-600 active:border-purple-600 [.active>&]:text-purple-600 group-has-[.active]:text-purple-600 group-has-[.active]:border-purple-600 active:text-purple-800 [.active>&]:font-bold group-has-[.active]:font-bold group-has-[.active]:hover:border-purple-700 group-has-[.active]:hover:text-purple-700 [.active]:hover:border-purple-700 [.active>&]:hover:text-purple-700 [.active]:active:border-purple-800 [.active>&]:active:text-purple-800">
|
||
Designing a low-overhead upsert in Postgres
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="leading-20 group">
|
||
<a href="#what-we-saw-when-we-rolled-out-the-upsert-writes-without-updates" data-dd-action-name="toc: heading: What we saw when we rolled out the upsert: Writes without updates" class="inline-block font-national font-normal border-l-2 hover:text-purple-700 border-grey-300 desktop-sm:pl-3 hover:border-purple-300 [.active>&]:border-purple-600 active:border-purple-600 [.active>&]:text-purple-600 group-has-[.active]:text-purple-600 group-has-[.active]:border-purple-600 active:text-purple-800 [.active>&]:font-bold group-has-[.active]:font-bold group-has-[.active]:hover:border-purple-700 group-has-[.active]:hover:text-purple-700 [.active]:hover:border-purple-700 [.active>&]:hover:text-purple-700 [.active]:active:border-purple-800 [.active>&]:active:text-purple-800">
|
||
What we saw when we rolled out the upsert: Writes without updates
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="leading-20 group">
|
||
<a href="#digging-into-postgres-wal-to-explain-the-iops-spike" data-dd-action-name="toc: heading: Digging into Postgres WAL to explain the IOPS spike" class="inline-block font-national font-normal border-l-2 hover:text-purple-700 border-grey-300 desktop-sm:pl-3 hover:border-purple-300 [.active>&]:border-purple-600 active:border-purple-600 [.active>&]:text-purple-600 group-has-[.active]:text-purple-600 group-has-[.active]:border-purple-600 active:text-purple-800 [.active>&]:font-bold group-has-[.active]:font-bold group-has-[.active]:hover:border-purple-700 group-has-[.active]:hover:text-purple-700 [.active]:hover:border-purple-700 [.active>&]:hover:text-purple-700 [.active]:active:border-purple-800 [.active>&]:active:text-purple-800">
|
||
Digging into Postgres WAL to explain the IOPS spike
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="leading-20 group">
|
||
<a href="#rewriting-the-query-to-avoid-upsert-overhead" data-dd-action-name="toc: heading: Rewriting the query to avoid upsert overhead" class="inline-block font-national font-normal border-l-2 hover:text-purple-700 border-grey-300 desktop-sm:pl-3 hover:border-purple-300 [.active>&]:border-purple-600 active:border-purple-600 [.active>&]:text-purple-600 group-has-[.active]:text-purple-600 group-has-[.active]:border-purple-600 active:text-purple-800 [.active>&]:font-bold group-has-[.active]:font-bold group-has-[.active]:hover:border-purple-700 group-has-[.active]:hover:text-purple-700 [.active]:hover:border-purple-700 [.active>&]:hover:text-purple-700 [.active]:active:border-purple-800 [.active>&]:active:text-purple-800">
|
||
Rewriting the query to avoid upsert overhead
|
||
</a>
|
||
<ul class="flex-col gap-1 font-normal pl-9 my-1 hidden [.active_&]:flex has-[.active]:flex has-[.active]:font-bold"><li class="leading-4 hover:text-purple-300"><a href="#wal-record-behavior" data-dd-action-name="toc: heading: WAL record behavior" class="inline-block font-national font-normal border-l-2 [.active]:font-bold hover:text-purple-700 border-grey-300 desktop-sm:pl-3 hover:border-purple-300 [.active>&]:border-purple-600 active:border-purple-600 [.active>&]:text-purple-600 active:text-purple-800 [.active>&]:font-bold [.active]:hover:border-purple-700 [.active>&]:hover:text-purple-700 [.active]:active:border-purple-800 [.active>&]:active:text-purple-8000">WAL record behavior</a></li></ul>
|
||
</li>
|
||
|
||
<li class="leading-20 group">
|
||
<a href="#lessons-learned-wal-and-query-optimization" data-dd-action-name="toc: heading: Lessons learned: WAL and query optimization" class="inline-block font-national font-normal border-l-2 hover:text-purple-700 border-grey-300 desktop-sm:pl-3 hover:border-purple-300 [.active>&]:border-purple-600 active:border-purple-600 [.active>&]:text-purple-600 group-has-[.active]:text-purple-600 group-has-[.active]:border-purple-600 active:text-purple-800 [.active>&]:font-bold group-has-[.active]:font-bold group-has-[.active]:hover:border-purple-700 group-has-[.active]:hover:text-purple-700 [.active]:hover:border-purple-700 [.active>&]:hover:text-purple-700 [.active]:active:border-purple-800 [.active>&]:active:text-purple-800">
|
||
Lessons learned: WAL and query optimization
|
||
</a>
|
||
|
||
</li>
|
||
</ul> </nav> <div x-data="{ activeButton: null, cardVisible: true, headerText: 'Did you find this article helpful?' }" x-show="cardVisible" x-transition:leave="transition ease-out duration-500" x-transition:leave-start="opacity-100 transform scale-100" x-transition:leave-end="opacity-0 transform scale-95" class="article-feedback-card w-[-webkit-fill-available] desktop-sm:-ml-8 relative opacity-0 transition-opacity duration-500 ease-in-out mt-12"> <div class="absolute top-3 -right-6"> <button title="Close feedback prompt" aria-label="Close feedback prompt" data-dd-action-name="side-nav: card: close feedback prompt" x-on:click="cardVisible = false" class="flex items-center gap-1 tablet:gap-1.5 desktop-sm:gap-2 h-fit group
|
||
|
||
"><span class="sr-only">Close feedback prompt</span><svg aria-hidden="true" focusable="false" width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 fill-grey-400 hover:fill-purple-300 order-2 transition-default">
|
||
<path d="M7.6029 5.72327L5.71729 7.60889L24.3849 26.2765L26.2705 24.3909L7.6029 5.72327Z"></path>
|
||
<path d="M24.3849 5.7235L5.71729 24.3911L7.6029 26.2767L26.2705 7.60911L24.3849 5.7235Z"></path>
|
||
</svg></button> </div> <div class="flex flex-col gap-3 bg-white rounded shadow desktop-sm:p-9 desktop-sm:-mr-10"> <p x-text="headerText" class="p text-purple-neue italic">Did you find this article helpful?</p> <div class="article-feedback-button-container flex gap-4"> <button title="Article thumbs up" aria-label="Article thumbs up" data-dd-action-name="side-nav: card: article thumbs up" x-on:click="activeButton = 0; headerText = 'Thank you for your feedback'" x-bind:class="activeButton === 0 ? 'bg-purple-600 border-purple-600 [&_svg]:fill-white hover:bg-purple-600 cursor-default pointer-events-none' : ''" class="flex items-center gap-1 tablet:gap-1.5 desktop-sm:gap-2 h-fit group
|
||
|
||
group p-2 rounded border border-grey-400 hover:bg-grey-200 active:bg-grey-400"><span class="sr-only">Article thumbs up</span><svg aria-hidden="true" focusable="false" width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 fill-black order-2 transition-default">
|
||
<g clip-path="url(#clip0_1206_6)">
|
||
<path d="M23.05 7.275C22.6625 6.7875 22.0875 6.5 21.475 6.5H14.7875L15.7875 2.4875C15.9375 1.8875 15.8 1.2625 15.425 0.775C15.0375 0.2875 14.4625 0 13.85 0H10.9875C10.2375 0 9.5625 0.4125 9.2125 1.075L6.3875 6.5H1.5V20.5H6H8H18.975C19.9 20.5 20.6875 19.875 20.9125 18.9875L23.4125 8.9875C23.5625 8.3875 23.425 7.7625 23.05 7.275ZM6 18.5H3.5V8.5H6V18.5ZM21.475 8.5L18.975 18.5H8V7.75L10.9875 2H13.85L12.225 8.5H21.475Z" fill=""></path>
|
||
</g>
|
||
<defs>
|
||
<clipPath id="clip0_1206_6">
|
||
<rect width="24" height="24" fill=""></rect>
|
||
</clipPath>
|
||
</defs>
|
||
</svg></button> <button title="Article thumbs down" aria-label="Article thumbs down" data-dd-action-name="side-nav: card: article thumbs down" x-on:click="activeButton = 1; headerText = 'Thank you for your feedback'" x-bind:class="activeButton === 1 ? 'bg-purple-600 border-purple-600 [&_svg]:fill-white hover:bg-purple-600 cursor-default pointer-events-none' : ''" class="flex items-center gap-1 tablet:gap-1.5 desktop-sm:gap-2 h-fit group
|
||
|
||
group p-2 rounded border border-grey-400 hover:bg-grey-200 active:bg-grey-400"><span class="sr-only">Article thumbs down</span><svg aria-hidden="true" focusable="false" width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 fill-black order-2 transition-default">
|
||
<path d="M0.95 16.725C1.3375 17.2125 1.9125 17.5 2.525 17.5H9.2125L8.2125 21.5125C8.0625 22.1125 8.2 22.7375 8.575 23.225C8.9625 23.7125 9.5375 24 10.15 24H13.0125C13.7625 24 14.4375 23.5875 14.7875 22.925L17.6 17.5H22.5V3.5H18H16H5.025C4.1 3.5 3.3125 4.125 3.0875 5.0125L0.5875 15.0125C0.4375 15.6125 0.575 16.2375 0.95 16.725ZM18 5.5H20.5V15.5H18V5.5ZM2.525 15.5L5.025 5.5H16V16.25L13.0125 22H10.15L11.775 15.5H2.525Z" fill=""></path>
|
||
</svg></button> </div> </div> </div> </aside> <script type="module">const o=new IntersectionObserver(e=>{e.forEach(t=>{const n=t.target.getAttribute("id"),r=document.querySelector(`nav.toc li a[href="#${n}"]`);r&&t.isIntersecting&&(document.querySelectorAll("nav.toc li").forEach(c=>{c.classList.remove("active")}),r.parentElement.classList.add("active"))})},{root:null,rootMargin:"0px 0px -33% 0px",threshold:[1]});document.querySelectorAll(".article-content h1, .article-content h2, .article-content h3").forEach(e=>{o.observe(e)});</script><div class="further-reading-card border-2 border-purple-300 rounded-lg desktop-sm:mt-auto desktop-sm:p-9 desktop-sm:-mr-10 desktop-sm:-ml-8"> <p class="h5 uppercase"> Further reading </p> <div class="desktop-sm:mb-2"></div> <p class="h4 text-purple-600">Datadog Platform Datasheet</p> <div class="desktop-sm:mb-4"></div> <picture class> <source srcset="https://web-assets.dd-static.net/42588/1777497550-thumbnail-datadog-platform-datasheet_updated.png?format=auto&fit=bounds&quality=90&disable=upscale&width=276&dpr=1 1x, https://web-assets.dd-static.net/42588/1777497550-thumbnail-datadog-platform-datasheet_updated.png?format=auto&fit=bounds&quality=90&disable=upscale&width=276&dpr=1.5 1.5x, https://web-assets.dd-static.net/42588/1777497550-thumbnail-datadog-platform-datasheet_updated.png?format=auto&fit=bounds&quality=90&disable=upscale&width=276&dpr=2 2x, https://web-assets.dd-static.net/42588/1777497550-thumbnail-datadog-platform-datasheet_updated.png?format=auto&fit=bounds&quality=90&disable=upscale&width=276&dpr=2.5 2.5x, https://web-assets.dd-static.net/42588/1777497550-thumbnail-datadog-platform-datasheet_updated.png?format=auto&fit=bounds&quality=90&disable=upscale&width=276&dpr=3 3x, https://web-assets.dd-static.net/42588/1777497550-thumbnail-datadog-platform-datasheet_updated.png?format=auto&fit=bounds&quality=90&disable=upscale&width=276&dpr=3.5 3.5x, https://web-assets.dd-static.net/42588/1777497550-thumbnail-datadog-platform-datasheet_updated.png?format=auto&fit=bounds&quality=90&disable=upscale&width=276&dpr=4 4x"> <img src="https://web-assets.dd-static.net/42588/1777497550-thumbnail-datadog-platform-datasheet_updated.png?format=auto&fit=bounds&quality=90&disable=upscale&width=276&dpr=1" alt="Datadog Platform Datasheet" loading="lazy" fetchpriority="low" class="w-full"> </picture> <div class="desktop-sm:mb-4"></div> <p class="p-small">Learn about the key components, capabilities, and features of the Datadog platform.</p> <div class="desktop-sm:mb-6"></div> <a title="Download to learn more" aria-label="Download to learn more" href="https://www.datadoghq.com/resources/datadog-datasheet/?utm_source=inbound&utm_medium=corpsite-display&utm_campaign=dg-coreplatform-ww-blog-toc-datasheet-datadog" class="flex items-center gap-1 tablet:gap-1.5 desktop-sm:gap-2 h-fit group
|
||
text-white bg-purple-neue hover:bg-purple-secondary active:bg-purple-neue rounded py-1.5 px-3 w-fit button-roboto-mono"><span class="block false">Download to learn more</span></a> </div></div></div><div class="print:hidden"><div class="desktop:mb-[120px] tablet:mb-24 mb-[72px]"></div><!-- Related Posts (client-side, fetched from Typesense) --><div id="related-posts" data-tags="["postgresql","database"]" data-current-id="/blog/engineering/debugging-postgres-performance/" data-lang="en" data-path-to-home="/blog/"></div> <script type="module" src="/blog/_astro/RelatedPosts.astro_astro_type_script_index_0_lang.jg5bITdA.js"></script><!-- Related Jobs --><div id="related-jobs-section" data-tags="["postgresql","database"]" data-related-job-ids="[]"> <div id="related-jobs-sentinel" class="h-px" aria-hidden="true"></div> <div id="related-jobs-content" class="hidden"> <div class="desktop-sm:mb-[76px] tablet:mb-15 mb-12"></div> <section class="container"> <h2 class="h1">Related jobs at Datadog</h2> <div class="desktop-sm:mb-4 tablet:mb-3 mb-2"></div> <h3 class="subheader3">We're always looking for talented people to collaborate with</h3> <div class="desktop-sm:mb-12 tablet:mb-9 mb-7"></div> <p class="p-small font-bold font-national uppercase">Featured positions</p> <div class="desktop-sm:mb-6 tablet:mb-5 mb-3"></div> <div id="related-jobs-table"> <table class="table job-listing w-full"> <tbody> </tbody> </table> </div> <div class="desktop-sm:mt-9 tablet:mb-7 mb-5"></div> <div class="flex flex-col"> <div id="total-jobs-count" class="hidden"> <p class="subheader3">
|
||
We have <span class="text-purple-neue" id="jobs-count"></span> positions
|
||
</p> <div class="desktop-sm:mb-6 tablet:mb-5 mb-3"></div> </div> <div id="view-all-button-container"> <button title="View all" aria-label="View all" class="flex items-center gap-1 tablet:gap-1.5 desktop-sm:gap-2 h-fit group
|
||
|
||
text-purple-600 hover:bg-purple-200 active:bg-purple-400 rounded py-1.5 px-2.5 tablet:py-2 tablet:px-4 desktop-sm:py-2.5 desktop-sm:px-6 w-fit border-2 border-purple-60 button-text"><span class="block false">View all</span></button> </div> </div> </section> </div> </div> <script type="module" src="/blog/_astro/RelatedJobs.astro_astro_type_script_index_0_lang.Duc5wx_Q.js"></script><div class="desktop:mb-[76px] tablet:mb-[68px] mb-12"></div><div class="bg-gradient-to-r from-purple-600 from-0% to-purple-800 to-100%"> <div class="flex flex-col tablet:flex-row justify-between tablet:items-center gap-4 tablet:gap-0 py-7 px-4.5 tablet:py-9 tablet:px-[45px] desktop-sm:p-12 desktop-lg:px-14 desktop-lg:max-w-screen-desktop-lg mx-auto"> <h2 class="text-white font-bold font-national tracking-[-0.24px] tablet:tracking-[-0.28px] desktop-sm:tracking-[-0.34px] text-24 leading-24 tablet:text-28 tablet:leading-28 desktop-sm:text-34 desktop-sm:leading-34"> Start monitoring your metrics in minutes </h2> <button title="find out how" aria-label="find out how" class="flex items-center gap-1 tablet:gap-1.5 desktop-sm:gap-2 h-fit group
|
||
signup-trigger
|
||
bg-white text-purple-600 hover:bg-purple-200 active:bg-purple-400 rounded py-2 px-4 tablet:py-2.5 tablet:px-6 desktop-sm:py-3 desktop-sm:px-[26px] w-fit button-text"><span class="block false">find out how</span></button> </div> </div></div> </main> <div><html><head></head><body><footer x-data="{
|
||
openSection: 'resources',
|
||
desktop: true,
|
||
reactOnResize() {
|
||
if (window.innerWidth >= 992) {
|
||
this.desktop = true;
|
||
} else {
|
||
this.desktop = false;
|
||
}
|
||
}
|
||
}" x-init="reactOnResize()" @resize.window.throttle.200ms="reactOnResize()" class="bg-black"><div class="py-[30px] tablet:py-9 desktop-sm:pt-[50px] desktop-sm:pb-4"><div class="container desktop-sm:pb-[30px]"><div class="row grid grid-cols-12"><div class="order-1 col-span-12 px-[15px] desktop-sm:col-span-3"><a href="#" target="_blank" class="flex w-full items-center justify-center text-center rounded mb-5 px-4 py-[13px] bg-none border border-solid border-white text-white whitespace-nowrap desktop-sm:px-6 desktop-sm:py-4 desktop-sm:w-[165px] desktop-sm:mb-10 hover:bg-white hover:border-white hover:text-purple-600 focus:bg-white focus:border-white focus:text-purple-600 active:bg-white active:border-white active:text-purple-600 signup-trigger" data-event-category="Signup" data-event-action="Step 1 Footer Initiated" data-event-label="url path"><span class="uppercase font-semibold font-national text-[16px] leading-[16px] tracking-normal desktop-sm:text-[18px] desktop-sm:leading-[18px]">Free Trial</span></a><p class="download-app my-0 pb-2.5 text-center font-semibold font-national text-[#88838C] text-[16px] leading-[20px] desktop-sm:text-start">Download mobile app</p><div class="flex justify-center desktop-sm:justify-start desktop-sm:items-end"><a href="https://apps.apple.com/app/datadog/id1391380318" aria-label="Apple Store Link"><span class="inline-block mr-2.5 desktop-sm:hidden"><svg class="<nil>" width="135" height="40" viewBox="0 0 135 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<rect x="0.5" y="0.5" width="134" height="39" rx="4.5" fill="#110617" stroke="#979797"></rect>
|
||
<path d="M27.8389 19.3013C27.8496 18.4666 28.072 17.6483 28.4851 16.9223C28.8983 16.1964 29.4889 15.5864 30.202 15.1492C29.749 14.5041 29.1514 13.9731 28.4566 13.5986C27.7619 13.224 26.9891 13.0162 26.1997 12.9916C24.5157 12.8153 22.8832 13.9964 22.0251 13.9964C21.1504 13.9964 19.8292 13.0091 18.4064 13.0383C17.4862 13.0679 16.5893 13.3348 15.8033 13.8128C15.0172 14.2909 14.3687 14.9638 13.921 15.7661C11.9815 19.1145 13.4282 24.0356 15.286 26.7422C16.2155 28.0676 17.3018 29.548 18.7232 29.4955C20.1142 29.438 20.6337 28.611 22.3127 28.611C23.9761 28.611 24.4635 29.4955 25.9138 29.4621C27.4063 29.438 28.3467 28.1309 29.2436 26.793C29.9115 25.8486 30.4254 24.8049 30.7663 23.7005C29.8992 23.3347 29.1592 22.7226 28.6386 21.9403C28.118 21.158 27.8399 20.2402 27.8389 19.3013Z" fill="white"></path>
|
||
<path d="M25.0994 11.2113C25.9132 10.2371 26.3142 8.98494 26.2171 7.7207C24.9738 7.85092 23.8253 8.44348 23.0005 9.38031C22.5972 9.83798 22.2884 10.3704 22.0916 10.9472C21.8948 11.524 21.8139 12.1337 21.8536 12.7417C22.4754 12.7481 23.0907 12.6137 23.6529 12.3486C24.2151 12.0835 24.7097 11.6946 25.0994 11.2113Z" fill="white"></path>
|
||
<path d="M49.4215 26.1397H44.6748L43.5349 29.4961H41.5244L46.0204 17.0781H48.1093L52.6052 29.4961H50.5604L49.4215 26.1397ZM45.1664 24.5908H48.929L47.0742 19.1436H47.0223L45.1664 24.5908Z" fill="white"></path>
|
||
<path d="M62.315 24.9695C62.315 27.7829 60.8049 29.5905 58.5261 29.5905C57.9488 29.6207 57.3747 29.4881 56.8695 29.2079C56.3643 28.9278 55.9484 28.5114 55.6694 28.0065H55.6263V32.4909H53.7627V20.4421H55.5666V21.948H55.6009C55.8927 21.4455 56.3156 21.0313 56.8246 20.7495C57.3337 20.4676 57.9098 20.3287 58.4918 20.3474C60.796 20.3474 62.315 22.1638 62.315 24.9695ZM60.3995 24.9695C60.3995 23.1365 59.4495 21.9314 58.0002 21.9314C56.5763 21.9314 55.6185 23.1618 55.6185 24.9695C55.6185 26.7937 56.5763 28.0154 58.0002 28.0154C59.4495 28.0154 60.3995 26.8191 60.3995 24.9695Z" fill="white"></path>
|
||
<path d="M72.3081 24.9694C72.3081 27.7829 70.7981 29.5905 68.5192 29.5905C67.942 29.6206 67.3678 29.488 66.8626 29.2079C66.3574 28.9278 65.9415 28.5114 65.6626 28.0065H65.6195V32.4909H63.7559V20.4421H65.5597V21.948H65.594C65.8858 21.4455 66.3087 21.0313 66.8177 20.7495C67.3268 20.4676 67.903 20.3287 68.4849 20.3474C70.7892 20.3474 72.3081 22.1638 72.3081 24.9694ZM70.3926 24.9694C70.3926 23.1364 69.4427 21.9314 67.9933 21.9314C66.5694 21.9314 65.6117 23.1618 65.6117 24.9694C65.6117 26.7937 66.5694 28.0153 67.9933 28.0153C69.4427 28.0153 70.3926 26.8191 70.3926 24.9694H70.3926Z" fill="white"></path>
|
||
<path d="M78.9126 26.0362C79.0507 27.2676 80.2503 28.0762 81.8897 28.0762C83.4605 28.0762 84.5906 27.2676 84.5906 26.1572C84.5906 25.1934 83.909 24.6162 82.2951 24.2207L80.6812 23.833C78.3946 23.2822 77.333 22.2158 77.333 20.4854C77.333 18.3428 79.2054 16.8711 81.8642 16.8711C84.4956 16.8711 86.2995 18.3428 86.3602 20.4854H84.4789C84.3663 19.2461 83.339 18.4981 81.8378 18.4981C80.3365 18.4981 79.3092 19.2549 79.3092 20.3565C79.3092 21.2344 79.9653 21.751 81.5704 22.1465L82.9424 22.4824C85.4974 23.0849 86.559 24.1084 86.559 25.9248C86.559 28.248 84.7032 29.7031 81.7516 29.7031C78.9899 29.7031 77.1253 28.2822 77.0049 26.0361L78.9126 26.0362Z" fill="white"></path>
|
||
<path d="M90.5802 18.2998V20.4424H92.3067V21.9141H90.5802V26.9053C90.5802 27.6807 90.9259 28.042 91.6849 28.042C91.8898 28.0384 92.0945 28.0241 92.2979 27.999V29.4619C91.9567 29.5255 91.6099 29.5543 91.2628 29.5478C89.4246 29.5478 88.7078 28.8593 88.7078 27.1035V21.9141H87.3877V20.4424H88.7078V18.2998H90.5802Z" fill="white"></path>
|
||
<path d="M93.3066 24.9697C93.3066 22.1211 94.9891 20.3311 97.6126 20.3311C100.245 20.3311 101.92 22.1211 101.92 24.9697C101.92 27.8262 100.254 29.6084 97.6126 29.6084C94.9724 29.6084 93.3066 27.8262 93.3066 24.9697ZM100.021 24.9697C100.021 23.0156 99.1227 21.8623 97.6126 21.8623C96.1025 21.8623 95.2055 23.0244 95.2055 24.9697C95.2055 26.9316 96.1025 28.0762 97.6126 28.0762C99.1227 28.0762 100.021 26.9316 100.021 24.9697H100.021Z" fill="white"></path>
|
||
<path d="M103.457 20.442H105.234V21.983H105.278C105.398 21.5017 105.681 21.0764 106.078 20.7785C106.476 20.4806 106.964 20.3284 107.461 20.3473C107.676 20.3465 107.89 20.3698 108.1 20.4166V22.1549C107.829 22.0723 107.546 22.0343 107.263 22.0426C106.992 22.0316 106.722 22.0792 106.471 22.1821C106.221 22.285 105.996 22.4408 105.811 22.6386C105.627 22.8365 105.487 23.0719 105.403 23.3286C105.318 23.5852 105.29 23.8571 105.321 24.1256V29.4957H103.457L103.457 20.442Z" fill="white"></path>
|
||
<path d="M116.692 26.8369C116.441 28.4805 114.836 29.6084 112.782 29.6084C110.141 29.6084 108.502 27.8437 108.502 25.0127C108.502 22.1729 110.15 20.3311 112.704 20.3311C115.216 20.3311 116.796 22.0518 116.796 24.7969V25.4336H110.383V25.5459C110.354 25.8791 110.395 26.2148 110.506 26.5306C110.616 26.8464 110.793 27.1352 111.024 27.3778C111.255 27.6203 111.535 27.8111 111.846 27.9374C112.156 28.0637 112.49 28.1226 112.826 28.1103C113.266 28.1515 113.708 28.0498 114.086 27.8203C114.463 27.5909 114.757 27.246 114.922 26.8369L116.692 26.8369ZM110.392 24.1348H114.931C114.948 23.8352 114.902 23.5354 114.797 23.2541C114.692 22.9729 114.53 22.7164 114.321 22.5006C114.112 22.2849 113.86 22.1145 113.582 22.0003C113.304 21.8861 113.005 21.8305 112.704 21.8369C112.401 21.8351 112.1 21.8933 111.819 22.008C111.538 22.1227 111.283 22.2918 111.068 22.5054C110.853 22.7191 110.683 22.973 110.567 23.2527C110.451 23.5323 110.391 23.8321 110.392 24.1348V24.1348Z" fill="white"></path>
|
||
<path d="M44.9328 8.73138C45.3235 8.70342 45.7156 8.76228 46.0807 8.90371C46.4458 9.04515 46.7749 9.26563 47.0443 9.54925C47.3136 9.83288 47.5165 10.1726 47.6382 10.5438C47.76 10.9151 47.7976 11.3087 47.7483 11.6962C47.7483 13.6025 46.7151 14.6982 44.9328 14.6982H42.7715V8.73138H44.9328ZM43.7008 13.8544H44.829C45.1082 13.871 45.3876 13.8254 45.6468 13.7208C45.9061 13.6161 46.1387 13.4552 46.3277 13.2496C46.5168 13.0441 46.6574 12.7991 46.7395 12.5324C46.8216 12.2658 46.8431 11.9843 46.8023 11.7084C46.8401 11.4335 46.8165 11.1538 46.7331 10.8891C46.6498 10.6244 46.5088 10.3814 46.3202 10.1775C46.1316 9.97358 45.9001 9.81378 45.6423 9.70954C45.3845 9.6053 45.1068 9.55922 44.829 9.57459H43.7008V13.8544Z" fill="white"></path>
|
||
<path d="M48.7982 12.4448C48.7698 12.1489 48.8037 11.8503 48.8978 11.5682C48.9919 11.2862 49.1441 11.0268 49.3446 10.8068C49.5451 10.5868 49.7895 10.4111 50.0621 10.2908C50.3347 10.1705 50.6296 10.1084 50.9277 10.1084C51.2258 10.1084 51.5206 10.1705 51.7932 10.2908C52.0658 10.4111 52.3102 10.5868 52.5107 10.8068C52.7112 11.0268 52.8634 11.2862 52.9575 11.5682C53.0516 11.8503 53.0855 12.1489 53.0572 12.4448C53.0861 12.741 53.0525 13.04 52.9587 13.3225C52.8648 13.605 52.7127 13.8648 52.5122 14.0853C52.3116 14.3057 52.067 14.4818 51.7942 14.6023C51.5213 14.7229 51.2261 14.7851 50.9277 14.7851C50.6292 14.7851 50.334 14.7229 50.0612 14.6023C49.7883 14.4818 49.5437 14.3057 49.3431 14.0853C49.1426 13.8648 48.9905 13.605 48.8966 13.3225C48.8028 13.04 48.7692 12.741 48.7982 12.4448ZM52.1405 12.4448C52.1405 11.4687 51.7008 10.8979 50.9291 10.8979C50.1545 10.8979 49.7187 11.4687 49.7187 12.4448C49.7187 13.4287 50.1545 13.9951 50.9291 13.9951C51.7008 13.9951 52.1405 13.4248 52.1405 12.4448H52.1405Z" fill="white"></path>
|
||
<path d="M58.7181 14.6982H57.7937L56.8604 11.3818H56.7899L55.8605 14.6982H54.9449L53.7002 10.1953H54.6041L55.413 13.6313H55.4796L56.408 10.1953H57.2629L58.1913 13.6313H58.2618L59.0668 10.1953H59.9579L58.7181 14.6982Z" fill="white"></path>
|
||
<path d="M61.0049 10.1949H61.8628V10.9102H61.9293C62.0423 10.6533 62.2329 10.4379 62.4744 10.2941C62.716 10.1503 62.9965 10.0852 63.2769 10.1079C63.4966 10.0915 63.7172 10.1245 63.9224 10.2046C64.1275 10.2847 64.312 10.4098 64.4621 10.5707C64.6122 10.7315 64.7241 10.924 64.7895 11.1338C64.8549 11.3436 64.8721 11.5654 64.8398 11.7827V14.6977H63.9487V12.0059C63.9487 11.2823 63.6333 10.9224 62.9743 10.9224C62.8251 10.9155 62.6762 10.9408 62.5377 10.9966C62.3993 11.0525 62.2746 11.1375 62.1722 11.2459C62.0698 11.3543 61.9921 11.4834 61.9444 11.6246C61.8967 11.7657 61.8802 11.9154 61.896 12.0635V14.6978H61.0049L61.0049 10.1949Z" fill="white"></path>
|
||
<path d="M66.2598 8.4375H67.1509V14.6982H66.2598V8.4375Z" fill="white"></path>
|
||
<path d="M68.3899 12.4449C68.3616 12.1489 68.3955 11.8503 68.4897 11.5683C68.5838 11.2862 68.736 11.0268 68.9365 10.8068C69.137 10.5869 69.3815 10.4111 69.6541 10.2908C69.9267 10.1705 70.2216 10.1084 70.5197 10.1084C70.8178 10.1084 71.1126 10.1705 71.3853 10.2908C71.6579 10.4111 71.9023 10.5869 72.1028 10.8068C72.3034 11.0268 72.4556 11.2862 72.5497 11.5683C72.6438 11.8503 72.6778 12.1489 72.6494 12.4449C72.6783 12.7411 72.6447 13.0401 72.5508 13.3226C72.457 13.6051 72.3048 13.8649 72.1043 14.0853C71.9037 14.3058 71.6591 14.4819 71.3862 14.6024C71.1133 14.7229 70.8181 14.7852 70.5197 14.7852C70.2212 14.7852 69.926 14.7229 69.6531 14.6024C69.3802 14.4819 69.1356 14.3058 68.9351 14.0853C68.7345 13.8649 68.5824 13.6051 68.4885 13.3226C68.3946 13.0401 68.361 12.7411 68.3899 12.4449ZM71.7323 12.4449C71.7323 11.4688 71.2926 10.898 70.5209 10.898C69.7463 10.898 69.3105 11.4688 69.3105 12.4449C69.3105 13.4288 69.7463 13.9952 70.5209 13.9952C71.2926 13.9952 71.7323 13.4248 71.7323 12.4449H71.7323Z" fill="white"></path>
|
||
<path d="M73.5879 13.4248C73.5879 12.6142 74.1931 12.147 75.2674 12.0806L76.4906 12.0102V11.6216C76.4906 11.146 76.1752 10.8774 75.5661 10.8774C75.0686 10.8774 74.7239 11.0596 74.625 11.3779H73.7622C73.8533 10.6045 74.5829 10.1084 75.6072 10.1084C76.7393 10.1084 77.3778 10.6704 77.3778 11.6216V14.6982H76.5199V14.0654H76.4494C76.3063 14.2924 76.1053 14.4775 75.867 14.6017C75.6288 14.7259 75.3617 14.7848 75.0931 14.7724C74.9035 14.7921 74.7119 14.7719 74.5307 14.7132C74.3494 14.6545 74.1825 14.5586 74.0407 14.4316C73.8988 14.3047 73.7853 14.1495 73.7073 13.9761C73.6293 13.8026 73.5886 13.6149 73.5879 13.4248ZM76.4906 13.04V12.6636L75.3879 12.7339C74.766 12.7754 74.4839 12.9863 74.4839 13.3833C74.4839 13.7886 74.8365 14.0244 75.3213 14.0244C75.4633 14.0387 75.6068 14.0244 75.7432 13.9823C75.8796 13.9403 76.0061 13.8712 76.1152 13.7794C76.2243 13.6876 76.3137 13.5748 76.3782 13.4477C76.4427 13.3207 76.4809 13.1821 76.4906 13.04Z" fill="white"></path>
|
||
<path d="M78.5488 12.4448C78.5488 11.022 79.2823 10.1206 80.4232 10.1206C80.7054 10.1077 80.9855 10.1751 81.2307 10.315C81.4759 10.4548 81.6761 10.6615 81.808 10.9106H81.8746V8.4375H82.7657V14.6982H81.9118V13.9868H81.8413C81.6993 14.2343 81.4921 14.4383 81.2421 14.5768C80.9922 14.7153 80.709 14.783 80.4232 14.7724C79.2745 14.7725 78.5488 13.8711 78.5488 12.4448ZM79.4694 12.4448C79.4694 13.3999 79.9209 13.9746 80.6759 13.9746C81.427 13.9746 81.8912 13.3916 81.8912 12.4487C81.8912 11.5103 81.4221 10.919 80.6759 10.919C79.9257 10.919 79.4694 11.4976 79.4694 12.4448H79.4694Z" fill="white"></path>
|
||
<path d="M86.4525 12.4448C86.4241 12.1489 86.458 11.8503 86.5521 11.5682C86.6462 11.2862 86.7984 11.0268 86.9989 10.8068C87.1994 10.5868 87.4438 10.4111 87.7164 10.2908C87.989 10.1705 88.2838 10.1084 88.582 10.1084C88.8801 10.1084 89.1749 10.1705 89.4475 10.2908C89.7201 10.4111 89.9645 10.5868 90.165 10.8068C90.3655 11.0268 90.5177 11.2862 90.6118 11.5682C90.7059 11.8503 90.7398 12.1489 90.7114 12.4448C90.7404 12.741 90.7068 13.04 90.613 13.3225C90.5191 13.605 90.367 13.8648 90.1665 14.0853C89.9659 14.3057 89.7213 14.4818 89.4485 14.6023C89.1756 14.7229 88.8804 14.7851 88.582 14.7851C88.2835 14.7851 87.9883 14.7229 87.7154 14.6023C87.4426 14.4818 87.198 14.3057 86.9974 14.0853C86.7969 13.8648 86.6448 13.605 86.5509 13.3225C86.4571 13.04 86.4235 12.741 86.4525 12.4448ZM89.7948 12.4448C89.7948 11.4687 89.3551 10.8979 88.5834 10.8979C87.8088 10.8979 87.373 11.4687 87.373 12.4448C87.373 13.4287 87.8088 13.9951 88.5834 13.9951C89.3551 13.9951 89.7948 13.4248 89.7948 12.4448Z" fill="white"></path>
|
||
<path d="M91.9072 10.1949H92.7651V10.9102H92.8317C92.9447 10.6533 93.1352 10.4379 93.3768 10.2941C93.6183 10.1503 93.8988 10.0852 94.1792 10.1079C94.3989 10.0915 94.6196 10.1245 94.8247 10.2046C95.0299 10.2847 95.2144 10.4098 95.3645 10.5707C95.5146 10.7315 95.6265 10.924 95.6919 11.1338C95.7572 11.3436 95.7744 11.5654 95.7422 11.7827V14.6977H94.851V12.0059C94.851 11.2823 94.5357 10.9224 93.8766 10.9224C93.7274 10.9155 93.5785 10.9408 93.4401 10.9966C93.3016 11.0525 93.1769 11.1375 93.0745 11.2459C92.9721 11.3543 92.8944 11.4834 92.8467 11.6246C92.7991 11.7657 92.7826 11.9154 92.7984 12.0635V14.6978H91.9072V10.1949Z" fill="white"></path>
|
||
<path d="M100.778 9.07422V10.2158H101.756V10.9644H100.778V13.2798C100.778 13.7515 100.973 13.958 101.416 13.958C101.53 13.9576 101.643 13.9508 101.756 13.9375V14.6777C101.596 14.7063 101.434 14.7215 101.272 14.7231C100.28 14.7231 99.8858 14.3755 99.8858 13.5073V10.9643H99.1689V10.2158H99.8858V9.07422H100.778Z" fill="white"></path>
|
||
<path d="M102.974 8.4375H103.857V10.919H103.927C104.046 10.6596 104.242 10.443 104.488 10.2987C104.734 10.1543 105.019 10.0893 105.304 10.1123C105.523 10.1004 105.741 10.1368 105.944 10.2189C106.147 10.3009 106.329 10.4266 106.478 10.5869C106.626 10.7473 106.738 10.9383 106.804 11.1465C106.87 11.3546 106.889 11.5747 106.859 11.791V14.6982H105.967V12.0103C105.967 11.291 105.631 10.9268 105.002 10.9268C104.849 10.9142 104.695 10.9352 104.55 10.9883C104.406 11.0413 104.275 11.1252 104.167 11.2339C104.059 11.3426 103.976 11.4737 103.923 11.6178C103.871 11.7619 103.851 11.9157 103.865 12.0683V14.6982H102.974L102.974 8.4375Z" fill="white"></path>
|
||
<path d="M112.056 13.4825C111.935 13.894 111.673 14.25 111.315 14.4882C110.957 14.7263 110.527 14.8315 110.099 14.7852C109.802 14.7931 109.506 14.7362 109.233 14.6187C108.96 14.5012 108.715 14.3258 108.517 14.1046C108.318 13.8835 108.171 13.6219 108.084 13.3381C107.997 13.0543 107.973 12.755 108.013 12.461C107.974 12.1661 107.998 11.8662 108.085 11.5815C108.172 11.2969 108.319 11.0341 108.516 10.811C108.714 10.5879 108.957 10.4098 109.229 10.2886C109.502 10.1674 109.797 10.1059 110.095 10.1085C111.352 10.1085 112.11 10.9645 112.11 12.3785V12.6886H108.921V12.7384C108.907 12.9036 108.928 13.0699 108.982 13.2267C109.037 13.3834 109.123 13.5271 109.236 13.6486C109.35 13.7701 109.487 13.8666 109.64 13.932C109.793 13.9974 109.958 14.0302 110.124 14.0284C110.337 14.0539 110.553 14.0156 110.744 13.9184C110.936 13.8212 111.094 13.6694 111.198 13.4825L112.056 13.4825ZM108.921 12.0313H111.202C111.213 11.8802 111.193 11.7284 111.142 11.5857C111.09 11.443 111.01 11.3125 110.905 11.2026C110.801 11.0928 110.674 11.006 110.534 10.9478C110.393 10.8896 110.242 10.8613 110.09 10.8648C109.936 10.8629 109.783 10.8917 109.641 10.9497C109.498 11.0076 109.368 11.0935 109.259 11.2022C109.15 11.3109 109.064 11.4403 109.006 11.5827C108.948 11.7251 108.919 11.8776 108.921 12.0313H108.921Z" fill="white"></path>
|
||
</svg>
|
||
</span><span class="hidden mr-5 desktop-sm:inline-block"><svg class="<nil>" width="26" height="31" viewBox="0 0 26 31" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<path d="M20.8866 16.3001C20.9017 15.1253 21.2147 13.9734 21.7962 12.9516C22.3778 11.9297 23.2091 11.0712 24.2129 10.4559C23.5752 9.54776 22.734 8.80043 21.7561 8.27322C20.7782 7.74602 19.6904 7.45346 18.5793 7.4188C16.209 7.1707 13.9112 8.83315 12.7033 8.83315C11.4721 8.83315 9.61244 7.44343 7.60989 7.48452C6.31458 7.52625 5.05221 7.90186 3.94575 8.57475C2.8393 9.24765 1.92651 10.1949 1.29632 11.3242C-1.43354 16.0372 0.602689 22.9639 3.21767 26.7736C4.52599 28.6391 6.05506 30.723 8.0558 30.6491C10.0136 30.5681 10.7449 29.4041 13.1082 29.4041C15.4495 29.4041 16.1355 30.6491 18.1769 30.6021C20.2778 30.5681 21.6014 28.7283 22.8638 26.8451C23.8039 25.5159 24.5272 24.0468 25.0071 22.4922C23.7865 21.9774 22.745 21.1158 22.0122 20.0146C21.2795 18.9135 20.888 17.6216 20.8866 16.3001Z" fill="white"></path>
|
||
<path d="M17.0298 4.91325C18.1753 3.542 18.7396 1.77948 18.603 0C16.8529 0.183293 15.2364 1.01735 14.0754 2.336C13.5078 2.98019 13.0731 3.72962 12.7961 4.54146C12.5191 5.3533 12.4052 6.21162 12.4611 7.06735C13.3364 7.07634 14.2024 6.88714 14.9938 6.51402C15.7851 6.14089 16.4813 5.59356 17.0298 4.91325Z" fill="white"></path>
|
||
</svg>
|
||
</span></a><a href="https://play.google.com/store/apps/details?id=com.datadog.app" aria-label="Google Play Store Link"><span class="inline-block desktop-sm:hidden"><svg class="<nil>" width="135" height="40" viewBox="0 0 135 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<rect x="0.5" y="0.5" width="134" height="39" rx="4.5" fill="#110617" stroke="#979797"></rect>
|
||
<path d="M47.4196 10.24C47.436 10.6067 47.3781 10.973 47.2492 11.3167C47.1203 11.6604 46.9231 11.9745 46.6696 12.24C46.3855 12.5333 46.0427 12.7633 45.6636 12.9149C45.2845 13.0666 44.8776 13.1364 44.4696 13.12C44.0593 13.1291 43.6514 13.054 43.2713 12.8992C42.8912 12.7444 42.5468 12.5132 42.2596 12.22C41.9633 11.9325 41.7296 11.5869 41.573 11.2049C41.4164 10.8229 41.3404 10.4127 41.3496 9.99997C41.339 9.58557 41.4144 9.17346 41.571 8.78964C41.7276 8.40583 41.9621 8.05864 42.2596 7.76997C42.7051 7.33466 43.2693 7.04071 43.8814 6.92506C44.4934 6.80942 45.126 6.87723 45.6996 7.11997C46.0602 7.26821 46.3819 7.49746 46.6396 7.78997L46.1096 8.31997C45.911 8.08075 45.6594 7.89111 45.3747 7.76613C45.09 7.64114 44.7801 7.58425 44.4696 7.59997C44.1573 7.59844 43.8478 7.66 43.5598 7.78096C43.2718 7.90193 43.0112 8.0798 42.7937 8.30391C42.5761 8.52803 42.406 8.79378 42.2936 9.08522C42.1812 9.37666 42.1288 9.6878 42.1396 9.99997C42.1331 10.4661 42.2647 10.9237 42.518 11.3151C42.7712 11.7065 43.1347 12.0142 43.5626 12.1992C43.9904 12.3843 44.4635 12.4385 44.9222 12.355C45.3808 12.2715 45.8044 12.054 46.1396 11.73C46.448 11.396 46.6286 10.964 46.6496 10.51H44.4696V9.78997H47.3796C47.402 9.93903 47.4153 10.0893 47.4196 10.24Z" fill="white" stroke="white" stroke-width="0.2" stroke-miterlimit="10"></path>
|
||
<path d="M51.9995 7.74H49.2995V9.64H51.7595V10.36H49.2995V12.26H51.9995V13H48.5195V7H51.9995V7.74Z" fill="white" stroke="white" stroke-width="0.2" stroke-miterlimit="10"></path>
|
||
<path d="M55.2801 13H54.5101V7.74H52.8301V7H57.0001V7.74H55.2801V13Z" fill="white" stroke="white" stroke-width="0.2" stroke-miterlimit="10"></path>
|
||
<path d="M59.9395 13V7H60.7095V13H59.9395Z" fill="white" stroke="white" stroke-width="0.2" stroke-miterlimit="10"></path>
|
||
<path d="M64.1297 13H63.3597V7.74H61.6797V7H65.7997V7.74H64.1297V13Z" fill="white" stroke="white" stroke-width="0.2" stroke-miterlimit="10"></path>
|
||
<path d="M73.6097 12.2201C73.3208 12.5092 72.9779 12.7385 72.6004 12.895C72.2229 13.0514 71.8183 13.1319 71.4097 13.1319C71.001 13.1319 70.5964 13.0514 70.2189 12.895C69.8414 12.7385 69.4985 12.5092 69.2097 12.2201C68.9188 11.9301 68.6906 11.5834 68.5392 11.2015C68.3879 10.8196 68.3165 10.4107 68.3297 10.0001C68.3165 9.58957 68.3879 9.18068 68.5392 8.79881C68.6906 8.41694 68.9188 8.07022 69.2097 7.78014C69.4923 7.48294 69.8341 7.24838 70.2131 7.09162C70.592 6.93487 70.9997 6.85941 71.4097 6.87014C71.8191 6.86367 72.2254 6.94106 72.6038 7.09756C72.9821 7.25407 73.3245 7.48636 73.6097 7.78014C73.8972 8.07263 74.1232 8.41978 74.2744 8.80107C74.4255 9.18237 74.4987 9.59008 74.4897 10.0001C74.5028 10.4107 74.4314 10.8196 74.2801 11.2015C74.1287 11.5834 73.9005 11.9301 73.6097 12.2201ZM69.7797 11.7201C69.9927 11.936 70.2465 12.1074 70.5263 12.2244C70.8061 12.3414 71.1064 12.4017 71.4097 12.4017C71.7129 12.4017 72.0132 12.3414 72.293 12.2244C72.5728 12.1074 72.8266 11.936 73.0397 11.7201C73.2612 11.4932 73.4347 11.2239 73.5498 10.9284C73.6649 10.6328 73.7193 10.3171 73.7097 10.0001C73.7141 9.6803 73.6534 9.36289 73.5313 9.06721C73.4093 8.77154 73.2284 8.50376 72.9997 8.28014C72.7866 8.06427 72.5328 7.89286 72.253 7.77586C71.9732 7.65887 71.6729 7.59862 71.3697 7.59862C71.0664 7.59862 70.7661 7.65887 70.4863 7.77586C70.2065 7.89286 69.9527 8.06427 69.7397 8.28014C69.5253 8.51038 69.3592 8.78115 69.251 9.07653C69.1428 9.37191 69.0947 9.68593 69.1097 10.0001C69.1 10.3171 69.1544 10.6328 69.2695 10.9284C69.3846 11.2239 69.5581 11.4932 69.7797 11.7201Z" fill="white" stroke="white" stroke-width="0.2" stroke-miterlimit="10"></path>
|
||
<path d="M75.5801 13V7H76.5101L79.4301 11.67V10.51V7H80.2001V13H79.4001L76.3501 8.11V9.26V13H75.5801Z" fill="white" stroke="white" stroke-width="0.2" stroke-miterlimit="10"></path>
|
||
<path d="M68.1401 21.7499C67.2976 21.7519 66.4745 22.0037 65.7751 22.4734C65.0756 22.9432 64.5312 23.6098 64.2106 24.3889C63.89 25.1681 63.8076 26.0248 63.9739 26.8508C64.1402 27.6768 64.5477 28.4349 65.1449 29.0292C65.7421 29.6236 66.5021 30.0276 67.3288 30.19C68.1556 30.3524 69.0119 30.2661 69.7896 29.9418C70.5672 29.6175 71.2313 29.07 71.6977 28.3683C72.1642 27.6667 72.4121 26.8425 72.4101 25.9999C72.4183 25.4379 72.3132 24.8799 72.1013 24.3593C71.8893 23.8386 71.5748 23.366 71.1764 22.9694C70.7779 22.5729 70.3038 22.2606 69.7822 22.051C69.2606 21.8415 68.7021 21.7391 68.1401 21.7499ZM68.1401 28.5799C67.6237 28.616 67.1083 28.496 66.6611 28.2353C66.2138 27.9747 65.8553 27.5855 65.6321 27.1184C65.409 26.6512 65.3315 26.1278 65.4098 25.6161C65.4881 25.1043 65.7185 24.628 66.0711 24.249C66.4237 23.8699 66.8821 23.6057 67.3869 23.4907C67.8916 23.3757 68.4193 23.4152 68.9013 23.604C69.3833 23.7929 69.7973 24.1223 70.0896 24.5496C70.3819 24.9769 70.5388 25.4822 70.5401 25.9999C70.5562 26.3279 70.5065 26.6559 70.3938 26.9643C70.2812 27.2728 70.1079 27.5556 69.8842 27.7961C69.6606 28.0366 69.391 28.2298 69.0914 28.3644C68.7919 28.499 68.4684 28.5723 68.1401 28.5799ZM58.8201 21.7499C57.9776 21.7519 57.1545 22.0037 56.4551 22.4734C55.7556 22.9432 55.2112 23.6098 54.8906 24.3889C54.57 25.1681 54.4876 26.0248 54.6539 26.8508C54.8202 27.6768 55.2277 28.4349 55.8249 29.0292C56.4221 29.6236 57.1821 30.0276 58.0088 30.19C58.8356 30.3524 59.6919 30.2661 60.4696 29.9418C61.2472 29.6175 61.9113 29.07 62.3777 28.3683C62.8442 27.6667 63.0921 26.8425 63.0901 25.9999C63.0983 25.4379 62.9932 24.8799 62.7813 24.3593C62.5693 23.8386 62.2548 23.366 61.8564 22.9694C61.4579 22.5729 60.9838 22.2606 60.4622 22.051C59.9406 21.8415 59.3821 21.7391 58.8201 21.7499ZM58.8201 28.5799C58.3037 28.616 57.7883 28.496 57.3411 28.2353C56.8938 27.9747 56.5353 27.5855 56.3121 27.1184C56.089 26.6512 56.0115 26.1278 56.0898 25.6161C56.1681 25.1043 56.3985 24.628 56.7511 24.249C57.1037 23.8699 57.5621 23.6057 58.0669 23.4907C58.5716 23.3757 59.0993 23.4152 59.5813 23.604C60.0633 23.7929 60.4773 24.1223 60.7696 24.5496C61.0619 24.9769 61.2188 25.4822 61.2201 25.9999C61.2362 26.3279 61.1865 26.6559 61.0738 26.9643C60.9612 27.2728 60.7879 27.5556 60.5642 27.7961C60.3406 28.0366 60.071 28.2298 59.7714 28.3644C59.4719 28.499 59.1484 28.5723 58.8201 28.5799ZM47.7401 23.0599V24.8599H52.0601C51.9924 25.7077 51.6399 26.5077 51.0601 27.1299C50.6268 27.5714 50.1056 27.9171 49.5302 28.1444C48.9549 28.3718 48.3382 28.4759 47.7201 28.4499C46.4471 28.4499 45.2262 27.9442 44.326 27.044C43.4258 26.1439 42.9201 24.923 42.9201 23.6499C42.9201 22.3769 43.4258 21.156 44.326 20.2558C45.2262 19.3556 46.4471 18.8499 47.7201 18.8499C48.9405 18.8318 50.119 19.2952 51.0001 20.1399L52.2701 18.8699C51.6741 18.2804 50.9664 17.8158 50.1886 17.5033C49.4107 17.1908 48.5783 17.0366 47.7401 17.0499C46.8511 17.0153 45.9643 17.1605 45.1327 17.4769C44.3012 17.7932 43.5421 18.2742 42.9009 18.8909C42.2596 19.5077 41.7495 20.2475 41.4011 21.0661C41.0527 21.8847 40.873 22.7652 40.873 23.6549C40.873 24.5446 41.0527 25.4251 41.4011 26.2437C41.7495 27.0623 42.2596 27.8022 42.9009 28.4189C43.5421 29.0357 44.3012 29.5166 45.1327 29.833C45.9643 30.1493 46.8511 30.2945 47.7401 30.2599C48.5955 30.2941 49.4485 30.1469 50.243 29.8281C51.0375 29.5092 51.7556 29.0259 52.3501 28.4099C53.4002 27.2563 53.9598 25.7391 53.9101 24.1799C53.9137 23.8046 53.8836 23.4298 53.8201 23.0599H47.7401ZM93.0501 24.4599C92.7893 23.6927 92.3016 23.0227 91.6516 22.5388C91.0016 22.0548 90.2199 21.7797 89.4101 21.7499C88.8631 21.7489 88.3217 21.86 87.8193 22.0765C87.317 22.2929 86.8644 22.6101 86.4895 23.0085C86.1146 23.4068 85.8254 23.8778 85.6397 24.3923C85.4541 24.9068 85.3759 25.454 85.4101 25.9999C85.4016 26.9128 85.6885 27.8039 86.2282 28.5402C86.7679 29.2765 87.5313 29.8184 88.4044 30.0851C89.2774 30.3517 90.2134 30.3288 91.0723 30.0196C91.9313 29.7105 92.6672 29.1318 93.1701 28.3699L91.7201 27.3699C91.5039 27.7302 91.1974 28.0277 90.8307 28.2329C90.4641 28.4382 90.0502 28.544 89.6301 28.5399C89.1967 28.5578 88.768 28.4442 88.4003 28.214C88.0327 27.9837 87.7432 27.6477 87.5701 27.2499L93.2601 24.8999L93.0501 24.4599ZM87.2501 25.8799C87.2298 25.5698 87.2718 25.2588 87.3736 24.9651C87.4753 24.6715 87.6348 24.4012 87.8426 24.1701C88.0504 23.939 88.3023 23.7518 88.5835 23.6195C88.8647 23.4873 89.1696 23.4126 89.4801 23.3999C89.8012 23.3794 90.1213 23.4537 90.4005 23.6138C90.6796 23.7738 90.9056 24.0124 91.0501 24.2999L87.2501 25.8799ZM82.6301 29.9999H84.5001V17.4999H82.6301V29.9999ZM79.5701 22.6999H79.5001C79.2162 22.3909 78.8694 22.1462 78.483 21.9823C78.0966 21.8185 77.6796 21.7392 77.2601 21.7499C76.1673 21.8029 75.1367 22.2743 74.3821 23.0665C73.6274 23.8587 73.2064 24.9108 73.2064 26.0049C73.2064 27.099 73.6274 28.1512 74.3821 28.9433C75.1367 29.7355 76.1673 30.2069 77.2601 30.2599C77.6841 30.2684 78.1047 30.1832 78.4919 30.0103C78.8791 29.8375 79.2234 29.5812 79.5001 29.2599H79.5701V29.8699C79.5701 31.4999 78.7001 32.3699 77.3001 32.3699C76.8324 32.3596 76.3783 32.2106 75.9955 31.9418C75.6127 31.6729 75.3185 31.2964 75.1501 30.8599L73.5301 31.5299C73.8296 32.2822 74.3504 32.9258 75.0235 33.3758C75.6966 33.8257 76.4905 34.0608 77.3001 34.0499C79.4901 34.0499 81.3001 32.7599 81.3001 29.6199V21.9999H79.5701V22.6999ZM77.4201 28.5799C76.7649 28.5391 76.1499 28.25 75.7004 27.7716C75.2509 27.2932 75.0006 26.6614 75.0006 26.0049C75.0006 25.3485 75.2509 24.7167 75.7004 24.2383C76.1499 23.7598 76.7649 23.4708 77.4201 23.4299C77.7403 23.4437 78.0545 23.5218 78.344 23.6596C78.6334 23.7973 78.8922 23.9918 79.1049 24.2316C79.3176 24.4714 79.4799 24.7515 79.5822 25.0553C79.6844 25.3591 79.7245 25.6803 79.7001 25.9999C79.7274 26.3206 79.6893 26.6435 79.5883 26.9491C79.4872 27.2546 79.3252 27.5365 79.1121 27.7777C78.8989 28.0189 78.6391 28.2143 78.3483 28.3522C78.0575 28.4901 77.7417 28.5676 77.4201 28.5799ZM101.81 17.4999H97.3301V29.9999H99.2001V25.2599H101.81C102.343 25.2982 102.878 25.2263 103.382 25.0486C103.886 24.871 104.348 24.5915 104.739 24.2274C105.13 23.8634 105.442 23.4227 105.655 22.9328C105.869 22.4428 105.979 21.9142 105.979 21.3799C105.979 20.8456 105.869 20.317 105.655 19.8271C105.442 19.3372 105.13 18.8965 104.739 18.5324C104.348 18.1684 103.886 17.8888 103.382 17.7112C102.878 17.5336 102.343 17.4616 101.81 17.4999ZM101.81 23.4999H99.2001V19.2399H101.85C102.418 19.2399 102.962 19.4654 103.363 19.8667C103.765 20.268 103.99 20.8124 103.99 21.3799C103.99 21.9475 103.765 22.4918 103.363 22.8931C102.962 23.2945 102.418 23.5199 101.85 23.5199L101.81 23.4999ZM113.35 21.7099C112.669 21.6679 111.991 21.8265 111.399 22.1659C110.807 22.5054 110.328 23.0109 110.02 23.6199L111.67 24.3099C111.837 24.0093 112.087 23.7634 112.39 23.6019C112.694 23.4405 113.038 23.3703 113.38 23.3999C113.617 23.3722 113.858 23.392 114.088 23.4582C114.317 23.5245 114.531 23.6358 114.718 23.7856C114.904 23.9355 115.058 24.1209 115.172 24.3311C115.286 24.5413 115.356 24.7721 115.38 25.0099V25.1299C114.779 24.8138 114.109 24.6491 113.43 24.6499C111.65 24.6499 109.83 25.6499 109.83 27.4699C109.848 27.8568 109.943 28.2361 110.11 28.5855C110.277 28.9348 110.513 29.247 110.803 29.5035C111.093 29.7601 111.432 29.9557 111.799 30.0787C112.166 30.2018 112.554 30.2498 112.94 30.2199C113.409 30.2459 113.877 30.1466 114.295 29.9322C114.714 29.7178 115.067 29.3961 115.32 28.9999H115.38V29.9999H117.18V25.1899C117.18 22.9999 115.52 21.7299 113.39 21.7299L113.35 21.7099ZM113.12 28.5599C112.51 28.5599 111.66 28.2499 111.66 27.4999C111.66 26.4999 112.72 26.1599 113.66 26.1599C114.254 26.1453 114.841 26.2903 115.36 26.5799C115.297 27.123 115.04 27.6249 114.635 27.9926C114.231 28.3604 113.707 28.569 113.16 28.5799L113.12 28.5599ZM123.74 21.9999L121.6 27.4199H121.54L119.32 21.9999H117.32L120.65 29.5799L118.75 33.7899H120.75L125.82 21.9999H123.74ZM106.94 29.9999H108.8V17.4999H106.94V29.9999Z" fill="white"></path>
|
||
<path d="M10.4402 7.5407C10.1214 7.93476 9.96415 8.43514 10.0002 8.9407V31.0607C9.96615 31.5711 10.1351 32.0742 10.4702 32.4607L10.5402 32.5407L22.9002 20.1507V19.8507L10.5102 7.4707L10.4402 7.5407Z" fill="url(#paint0_linear)"></path>
|
||
<path d="M27.0004 24.2807L22.9004 20.1507V19.8507L27.0004 15.7207L27.0904 15.7807L32.0004 18.5607C33.4004 19.3507 33.4004 20.6507 32.0004 21.4507L27.1104 24.2307L27.0004 24.2807Z" fill="url(#paint1_linear)"></path>
|
||
<path d="M27.1195 24.23L22.8995 20L10.4395 32.46C10.722 32.7115 11.0837 32.8562 11.4618 32.869C11.8399 32.8818 12.2105 32.7619 12.5095 32.53L27.1195 24.23Z" fill="url(#paint2_linear)"></path>
|
||
<path d="M27.1195 15.7805L12.5095 7.48046C12.2125 7.24537 11.8421 7.12251 11.4635 7.13349C11.0849 7.14446 10.7223 7.28857 10.4395 7.54046L22.8995 20.0005L27.1195 15.7805Z" fill="url(#paint3_linear)"></path>
|
||
<path opacity="0.2" d="M26.9995 24.1299L12.5095 32.3799C12.2214 32.5973 11.8703 32.7149 11.5095 32.7149C11.1486 32.7149 10.7975 32.5973 10.5095 32.3799L10.4395 32.4499L10.5095 32.5299C10.7975 32.7473 11.1486 32.8649 11.5095 32.8649C11.8703 32.8649 12.2214 32.7473 12.5095 32.5299L27.1195 24.2299L26.9995 24.1299Z" fill="black"></path>
|
||
<path opacity="0.12" d="M10.4399 32.3202C10.1187 31.9235 9.96126 31.4191 9.99988 30.9102V31.0602C9.96585 31.5705 10.1348 32.0737 10.4699 32.4602L10.5399 32.3902L10.4399 32.3202Z" fill="black"></path>
|
||
<path opacity="0.12" d="M32 21.3L27 24.13L27.09 24.23L32 21.44C32.2898 21.3174 32.5413 21.119 32.7278 20.8656C32.9143 20.6122 33.0291 20.3132 33.06 20C32.9975 20.2846 32.869 20.5505 32.6849 20.7763C32.5007 21.0021 32.2662 21.1815 32 21.3Z" fill="black"></path>
|
||
<path opacity="0.25" d="M12.51 7.61998L32 18.7C32.2662 18.8185 32.5007 18.9979 32.6849 19.2237C32.869 19.4495 32.9975 19.7154 33.06 20C33.0291 19.6868 32.9143 19.3878 32.7278 19.1344C32.5413 18.881 32.2898 18.6825 32 18.56L12.51 7.47998C11.12 6.67998 10 7.33998 10 8.93998V9.08998C10 7.48998 11.12 6.82998 12.51 7.61998Z" fill="white"></path>
|
||
<defs>
|
||
<linearGradient id="paint0_linear" x1="21.8002" y1="8.7107" x2="5.02018" y2="25.4907" gradientUnits="userSpaceOnUse">
|
||
<stop stop-color="#00A0FF"></stop>
|
||
<stop offset="0.01" stop-color="#00A1FF"></stop>
|
||
<stop offset="0.26" stop-color="#00BEFF"></stop>
|
||
<stop offset="0.51" stop-color="#00D2FF"></stop>
|
||
<stop offset="0.76" stop-color="#00DFFF"></stop>
|
||
<stop offset="1" stop-color="#00E3FF"></stop>
|
||
</linearGradient>
|
||
<linearGradient id="paint1_linear" x1="33.8304" y1="20.0007" x2="9.64039" y2="20.0007" gradientUnits="userSpaceOnUse">
|
||
<stop stop-color="#FFE000"></stop>
|
||
<stop offset="0.41" stop-color="#FFBD00"></stop>
|
||
<stop offset="0.78" stop-color="#FFA500"></stop>
|
||
<stop offset="1" stop-color="#FF9C00"></stop>
|
||
</linearGradient>
|
||
<linearGradient id="paint2_linear" x1="24.8295" y1="22.3" x2="2.06945" y2="45.05" gradientUnits="userSpaceOnUse">
|
||
<stop stop-color="#FF3A44"></stop>
|
||
<stop offset="1" stop-color="#C31162"></stop>
|
||
</linearGradient>
|
||
<linearGradient id="paint3_linear" x1="7.29945" y1="0.180458" x2="17.4595" y2="10.3405" gradientUnits="userSpaceOnUse">
|
||
<stop stop-color="#32A071"></stop>
|
||
<stop offset="0.07" stop-color="#2DA771"></stop>
|
||
<stop offset="0.48" stop-color="#15CF74"></stop>
|
||
<stop offset="0.8" stop-color="#06E775"></stop>
|
||
<stop offset="1" stop-color="#00F076"></stop>
|
||
</linearGradient>
|
||
</defs>
|
||
</svg>
|
||
</span><span class="hidden desktop-sm:inline-block"><svg class="<nil>" width="25" height="27" viewBox="0 0 25 27" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<path d="M17.8452 17.8161L13.4478 13.4082L0.463867 26.3921C0.758323 26.6542 1.13522 26.805 1.52921 26.8183C1.92319 26.8317 2.30942 26.7067 2.62091 26.4651L17.8452 17.8161Z" fill="url(#paint0_linear4)"></path>
|
||
<path d="M0.463776 0.424506C0.131609 0.835131 -0.0322666 1.35655 0.00527509 1.88337V24.9335C-0.0301817 25.4653 0.145841 25.9897 0.495038 26.3924L0.567982 26.4757L13.4477 13.5647V13.2521L0.53672 0.351562L0.463776 0.424506Z" fill="url(#paint1_linear3)"></path>
|
||
<path d="M17.7197 17.8682L13.4473 13.5645V13.2519L17.7197 8.94824L17.8135 9.01076L22.9299 11.9077C24.3888 12.7309 24.3888 14.0855 22.9299 14.9192L17.8343 17.8161L17.7197 17.8682Z" fill="url(#paint2_linear3)"></path>
|
||
<path d="M17.8452 9.01127L2.62091 0.362264C2.31145 0.117293 1.92552 -0.0107306 1.531 0.000704822C1.13648 0.0121402 0.758621 0.162302 0.463867 0.424787L13.4478 13.4087L17.8452 9.01127Z" fill="url(#paint3_linear3)"></path>
|
||
<defs>
|
||
<linearGradient id="paint0_linear4" x1="15.459" y1="15.8049" x2="-8.25809" y2="39.5115" gradientUnits="userSpaceOnUse">
|
||
<stop stop-color="#FF3A44"></stop>
|
||
<stop offset="1" stop-color="#C31162"></stop>
|
||
</linearGradient>
|
||
<linearGradient id="paint1_linear3" x1="12.3015" y1="1.6437" x2="-5.18413" y2="19.1293" gradientUnits="userSpaceOnUse">
|
||
<stop stop-color="#00A0FF"></stop>
|
||
<stop offset="0.01" stop-color="#00A1FF"></stop>
|
||
<stop offset="0.26" stop-color="#00BEFF"></stop>
|
||
<stop offset="0.51" stop-color="#00D2FF"></stop>
|
||
<stop offset="0.76" stop-color="#00DFFF"></stop>
|
||
<stop offset="1" stop-color="#00E3FF"></stop>
|
||
</linearGradient>
|
||
<linearGradient id="paint2_linear3" x1="24.8369" y1="13.4082" x2="-0.370305" y2="13.4082" gradientUnits="userSpaceOnUse">
|
||
<stop stop-color="#FFE000"></stop>
|
||
<stop offset="0.41" stop-color="#FFBD00"></stop>
|
||
<stop offset="0.78" stop-color="#FFA500"></stop>
|
||
<stop offset="1" stop-color="#FF9C00"></stop>
|
||
</linearGradient>
|
||
<linearGradient id="paint3_linear3" x1="-2.80817" y1="-7.2447" x2="7.77905" y2="3.34252" gradientUnits="userSpaceOnUse">
|
||
<stop stop-color="#32A071"></stop>
|
||
<stop offset="0.07" stop-color="#2DA771"></stop>
|
||
<stop offset="0.48" stop-color="#15CF74"></stop>
|
||
<stop offset="0.8" stop-color="#06E775"></stop>
|
||
<stop offset="1" stop-color="#00F076"></stop>
|
||
</linearGradient>
|
||
</defs>
|
||
</svg></span></a></div><div class="flex pt-10 border-b border-[#88838C] desktop-sm:hidden"></div></div><div class="order-3 col-span-12 px-[15px] pt-3 desktop-sm:order-2 desktop-sm:col-span-4 desktop-sm:pt-0"><p @click="openSection === 'product' ? (openSection = false) : (openSection = 'product')" class="font-bold font-national uppercase text-white text-[18px] leading-[24px] hover:cursor-pointer focus:cursor-pointer desktop-sm:pb-[7px] desktop-sm:text-[16px] desktop-sm:leading-[20px] desktop-sm:hover:cursor-auto desktop-sm:focus:cursor-auto">Product</p><div class="hidden border-b border-[#88838C] desktop-sm:flex"></div><div x-show.important="desktop || openSection === 'product'" class="flex gap-x-7 py-4 desktop-sm:py-2.5"><div class="inline-flex flex-col w-1/2"><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/infrastructure-monitoring/">Infrastructure Monitoring</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/network-monitoring/">Network Monitoring</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/container-monitoring/">Container Monitoring</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/serverless-monitoring/">Serverless</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/cloud-cost-management/">Cloud Cost Management</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/cloudcraft/">Cloudcraft</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/kubernetes-autoscaling/">Kubernetes Autoscaling</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/apm/">Application Performance Monitoring</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/software-catalog/">Software Catalog</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/universal-service-monitoring/">Universal Service Monitoring</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/data-streams-monitoring/">Data Streams Monitoring</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/products/observability/data-observability/">Data Observability</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/database-monitoring/">Database Monitoring</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/code-profiling/">Continuous Profiler</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/dynamic-instrumentation/">Dynamic Instrumentation</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/log-management/">Log Management</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/sensitive-data-scanner/">Sensitive Data Scanner</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/audit-trail/">Audit Trail</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/observability-pipelines/">Observability Pipelines</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/cloud-security/">Cloud Security</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/cloud-security/#posture-management">Cloud Security Posture Management</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/workload-protection/">Workload Protection</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/cloud-security/#entitlement-management">Cloud Infrastructure Entitlement Management</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/cloud-security/#vulnerability-management">Vulnerability Management</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/cloud-security/#compliance">Compliance</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/app-and-api-protection/">App and API Protection</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/software-composition-analysis/">Software Composition Analysis</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/code-security/">Code Security</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/sast/">Static Code Analysis (SAST)</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/iast/">Runtime Code Analysis (IAST)</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/iac-security">IaC Security</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/cloud-siem/">Cloud SIEM</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/real-user-monitoring/">Browser Real User Monitoring</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/real-user-monitoring/mobile-rum/">Mobile Real User Monitoring</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/product-analytics/">Product Analytics</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/experiments/">Experiments</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/real-user-monitoring/session-replay/">Session Replay</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/synthetic-monitoring/">Synthetic Monitoring</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/mobile-app-testing/">Mobile App Testing</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/continuous-testing/">Continuous Testing</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/error-tracking/">Error Tracking</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/byoc-logs/">BYOC Log Management</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/internal-developer-portal/">Internal Developer Portal</a></span></div><div class="inline-flex flex-col w-1/2"><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/ci-cd-monitoring/">CI Visibility</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/test-optimization/">Test Optimization</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/feature-flags/">Feature Flags</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/code-coverage/">Code Coverage</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/software-delivery/ai-impact/">AI Impact</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/service-level-objectives/">Service Level Objectives</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/incident-response/">Incident Response</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/event-management/">Event Management</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/case-management/">Case Management</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/ai/bits-ai-agents/">Bits AI Agents</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/ai/bits-code/">Bits Code</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/ai/bits-investigation/">Bits Investigation</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/ai/bits-security-analyst/">Bits Security Analyst</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/ai/bits-agent-builder/">Bits Agent Builder</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/ai/bits-chat/">Bits Chat</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/ai/mcp-server/">MCP Server</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/ai/mcp-server/">Pup CLI</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/ai/agent-directory/">Agent Directory</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/metrics/">Metrics</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/platform/watchdog/">Watchdog</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/products/ai/agent-observability/">Agent Observability</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/platform/integrations/#cat-aiml">AI Integrations</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/workflow-automation/">Workflow Automation</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/app-builder/">App Builder</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://docs.datadoghq.com/account_management/teams/">Teams</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/platform/dashboards/">Dashboards</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://docs.datadoghq.com/notebooks/">Notebooks</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://docs.datadoghq.com/service_management/mobile/?tab=ios">Mobile App</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/fleet-automation/">Fleet Automation</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/governance-console/">Governance Console</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://docs.datadoghq.com/account_management/rbac/?tab=datadogapplication">Access Control</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/solutions/opentelemetry/">OpenTelemetry</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/platform/alerts/">Alerts</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/platform/integrations/">Integrations</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/platform/ides/">IDE Plugins</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://docs.datadoghq.com/api/">API</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/marketplacepartners/">Marketplace</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://securitylabs.datadoghq.com/">Security Labs Research</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://opensource.datadoghq.com/">Open Source Projects</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/storage-management/">Storage Management</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/gpu-monitoring/">GPU Monitoring</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/platform/dora-metrics/">DORA Metrics</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product/secret-scanning/">Secret Scanning</a></span></div></div><div class="flex pt-3 border-b border-[#88838C] desktop-sm:hidden"></div></div><div class="order-2 col-span-12 px-[15px] pt-3 desktop-sm:order-3 desktop-sm:col-span-2 desktop-sm:pt-0"><p @click="openSection === 'resources' ? (openSection = false) : (openSection = 'resources')" class="font-bold font-national uppercase text-white text-[18px] leading-[24px] hover:cursor-pointer focus:cursor-pointer desktop-sm:pb-[7px] desktop-sm:text-[16px] desktop-sm:leading-[20px] desktop-sm:hover:cursor-auto desktop-sm:focus:cursor-auto">Resources</p><div class="hidden border-b border-[#88838C] desktop-sm:flex"></div><div x-show.important="desktop || openSection === 'resources'" class="flex gap-x-7 py-4 desktop-sm:flex-col desktop-sm:py-2.5"><div class="inline-flex flex-col w-1/2 desktop-sm:w-full"><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/pricing/">Pricing</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://docs.datadoghq.com/">Documentation</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/support/">Support</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/support-services/">Services & Enablement</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/product-preview/">Product Preview Program</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/certification/overview/">Certification</a></span></div><div class="inline-flex flex-col w-1/2 desktop-sm:w-full"><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://opensource.datadoghq.com/">Open Source</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/events-webinars/">Events and Webinars</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/security/">Security</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/privacy/">Privacy Center</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/knowledge-center/">Knowledge Center</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/learn/">Learning Resources</a></span></div></div><div class="flex pt-3 border-b border-[#88838C] desktop-sm:hidden"></div></div><div class="order-4 col-span-12 px-[15px] desktop-sm:col-span-3"><div class="flex flex-col desktop-sm:flex-row desktop-sm:gap-x-7"><div class="flex flex-col basis-3/5 pt-3 desktop-sm:pt-0"><p @click="openSection === 'about' ? (openSection = false) : (openSection = 'about')" class="font-bold font-national uppercase text-white text-[18px] leading-[24px] hover:cursor-pointer focus:cursor-pointer desktop-sm:pb-[7px] desktop-sm:text-[16px] desktop-sm:leading-[20px] desktop-sm:hover:cursor-auto desktop-sm:focus:cursor-auto">About</p><div class="hidden border-b border-[#88838C] desktop-sm:flex"></div><div x-show.important="desktop || openSection === 'about'" class="flex gap-x-7 py-4 desktop-sm:flex-col desktop-sm:py-2.5"><div class="inline-flex flex-col w-1/2 desktop-sm:w-full"><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/about/contact/">Contact Us</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/partner/network/">Partners</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/about/latest-news/press-releases/">Press</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/about/leadership/">Leadership</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://careers.datadoghq.com/">Careers</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/legal/">Legal</a></span></div><div class="inline-flex flex-col w-1/2 desktop-sm:w-full"><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://investors.datadoghq.com/">Investor Relations</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/about/analyst/">Analyst Reports</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/esg-report/">ESG Report</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/vendor-help/">Vendor Help</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/trust/">Trust Hub</a></span></div></div><div class="flex pt-3 border-b border-[#88838C] desktop-sm:hidden"></div></div><div class="flex flex-col basis-2/5 pt-3 desktop-sm:pt-0"><p @click="openSection === 'blog' ? (openSection = false) : (openSection = 'blog')" class="font-bold font-national uppercase text-white text-[18px] leading-[24px] hover:cursor-pointer focus:cursor-pointer desktop-sm:pb-[7px] desktop-sm:text-[16px] desktop-sm:leading-[20px] desktop-sm:hover:cursor-auto desktop-sm:focus:cursor-auto">Blog</p><div class="hidden border-b border-[#88838C] desktop-sm:flex"></div><div x-show.important="desktop || openSection === 'blog'" class="flex gap-x-7 py-4 desktop-sm:flex-col desktop-sm:py-2.5"><div class="inline-flex flex-col w-1/2 desktop-sm:w-full"><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/blog/">The Monitor</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/blog/engineering/">Engineering</a></span></div><div class="inline-flex flex-col w-1/2 desktop-sm:w-full"><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/blog/ai/">AI</a>
|
||
</span><span class="inline-flex py-1.5 desktop-sm:py-1"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://securitylabs.datadoghq.com/">Security Labs</a></span></div></div><div class="flex pt-3 border-b border-[#88838C] desktop-sm:hidden"></div></div></div></div></div></div><div class="hidden border-t border-[#88838C] desktop-sm:flex"></div><div class="container pt-9 desktop-sm:pt-3"><div class="row grid grid-cols-12"><div class="order-3 col-span-12 px-[15px] desktop-sm:order-2 desktop-sm:col-span-2"><div x-data="{ popup_open: false}" class="footer-menu relative flex items-center h-full justify-center desktop-sm:justify-end cursor-pointer w-auto min-w-[120px] max-w-[166px] desktop-sm:w-[166px]"><button type="button" @click="popup_open = !popup_open" @keydown.escape="popup_open = false" :aria-expanded="popup_open" aria-haspopup="listbox" class="flex items-center text-white text-[13px] leading-[18px] [&:lang(ja)]:text-[11px] [&:lang(ko)]:text-[11px] tablet:text-[15px] tablet:leading-[20px] tablet:[&:lang(ja)]:text-[13px] tablet:[&:lang(ko)]:text-[13px] desktop-sm:text-[17px] desktop-sm:leading-[22px] desktop-sm:[&:lang(ja)]:text-[14px] desktop-sm:[&:lang(ko)]:text-[14px] rounded-sm tablet:rounded w-full h-[32px] border border-[#616161] justify-between px-2 py-0.5 hover:bg-[#323232]">
|
||
<span class="flex items-center"><span class="flex items-center mr-2"><svg class="<nil>" width="16px" height="16px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||
<!-- Generator: Sketch 52.6 (67491) - http://www.bohemiancoding.com/sketch -->
|
||
<title>Icon/world</title>
|
||
<desc>Created with Sketch.</desc>
|
||
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||
<path d="M23,18.7142857 L15.1972484,18.7142857 C14.8808707,20.3582799 14.7142857,22.1185995 14.7142857,24 C14.7142857,26.101197 14.9220672,28.0513698 15.3142384,29.8571429 L23,29.8571429 L23,18.7142857 Z M25,18.7142857 L25,29.8571429 L32.6856474,29.8571429 C33.0778185,28.0513698 33.2856,26.101197 33.2856,24 C33.2856,22.1185995 33.119015,20.3582799 32.8026373,18.7142857 L25,18.7142857 Z M23,31.8571429 L15.8410328,31.8571429 C16.6874013,34.5709824 17.9826731,36.9218861 19.6311425,38.9369568 C20.7014808,40.2453264 21.8466701,41.314437 22.9882288,42.1603531 C22.9921555,42.1632629 22.9960793,42.1661678 23,42.1690678 L23,31.8571429 Z M25,31.8571429 L25,42.1689833 C25.0038827,42.1661114 25.0077683,42.1632346 25.0116569,42.1603531 C26.1532156,41.314437 27.298405,40.2453264 28.3687432,38.9369568 C30.0172126,36.9218861 31.3124844,34.5709824 32.1588529,31.8571429 L25,31.8571429 Z M23,16.7142857 L23,5.83093215 C22.9960793,5.83383218 22.9921555,5.83673708 22.9882288,5.83964686 C21.8466701,6.68556302 20.7014808,7.75467359 19.6311425,9.06304321 C17.8680399,11.2182402 16.508965,13.7576013 15.67101,16.7142857 L23,16.7142857 Z M25,16.7142857 L32.3288757,16.7142857 C31.4909207,13.7576013 30.1318458,11.2182402 28.3687432,9.06304321 C27.298405,7.75467359 26.1532156,6.68556302 25.0116569,5.83964686 C25.0077683,5.83676535 25.0038827,5.83388863 25,5.83101669 L25,16.7142857 Z M13.1635581,18.7142857 L5.74490713,18.7142857 C5.25990904,20.3922708 5,22.1657822 5,24 C5,26.043811 5.32270158,28.0122495 5.91993233,29.8571429 L13.2714898,29.8571429 C12.906587,28.0336164 12.7142857,26.0823166 12.7142857,24 C12.7142857,22.1336211 12.8687714,20.3724948 13.1635581,18.7142857 Z M20.4443338,42.6678567 C19.6363334,41.950688 18.8419739,41.130915 18.0831432,40.2033289 C16.1536635,37.8447543 14.6685687,35.0696382 13.7544275,31.8571429 L6.69559884,31.8571429 C9.21247658,37.3914264 14.3062352,41.5058446 20.4443338,42.6678567 Z M20.4443338,5.33214327 C14.0967882,6.53380609 8.86606956,10.8927992 6.44701478,16.7142857 L13.5990681,16.7142857 C14.4953973,13.2582719 16.04017,10.2939789 18.0831432,7.79667107 C18.8419739,6.86908497 19.6363334,6.04931197 20.4443338,5.33214327 Z M34.8363276,18.7142857 C35.1311143,20.3724948 35.2856,22.1336211 35.2856,24 C35.2856,26.0823166 35.0932987,28.0336164 34.7283959,29.8571429 L42.0800677,29.8571429 C42.6772984,28.0122495 43,26.043811 43,24 C43,22.1657822 42.740091,20.3922708 42.2550929,18.7142857 L34.8363276,18.7142857 Z M27.5555209,42.6678842 C33.6936845,41.5059095 38.7875036,37.39147 41.3044012,31.8571429 L34.2454582,31.8571429 C33.3313171,35.0696382 31.8462222,37.8447543 29.9167425,40.2033289 C29.1579022,41.1309269 28.363532,41.950709 27.5555209,42.6678842 Z M27.5555209,5.33211577 C28.363532,6.04929101 29.1579022,6.86907311 29.9167425,7.79667107 C31.9597158,10.2939789 33.5044884,13.2582719 34.4008176,16.7142857 L41.5529852,16.7142857 C39.133912,10.8927548 33.9031319,6.53373958 27.5555209,5.33211577 Z M45,24 C45,35.597999 35.597999,45 24,45 C12.402001,45 3,35.597999 3,24 C3,12.402001 12.402001,3 24,3 C35.597999,3 45,12.402001 45,24 Z" fill="#ffffff" fill-rule="nonzero"></path>
|
||
</g>
|
||
</svg>
|
||
</span><span class="flex items-center mb-0.5 [&:lang(ja)]:break-keep [&:lang(ko)]:break-keep">English
|
||
</span></span><span class="flex items-center transition-transform duration-200" :class="popup_open ? 'rotate-180' : ''"><svg class="<nil>" width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<path d="M0.999547 5.41459L5.24219 1.17195L9.48483 5.41459" stroke="white"></path>
|
||
</svg></span></button><div x-show="popup_open" x-cloak="" @click.outside="popup_open = false" class="absolute bottom-[calc(100%_+_8px)] desktop-sm:bottom-[calc(100%_+_4px)] left-0 w-full bg-[#323232] flex flex-col gap-0.5 p-0.5 tablet:gap-1 tablet:p-1 rounded-sm tablet:rounded-md desktop-sm:rounded-lg z-10"><a class="flex flex-col w-full px-2 py-0.5 tablet:px-3 tablet:py-1 desktop-sm:px-4 desktop-sm:py-1.5 text-white no-underline bg-[#323232] rounded-sm tablet:rounded hover:bg-[#616161] transition-colors" href="https://www.datadoghq.com/?lang_pref=en"><div class="text-[13px] leading-[18px] [&:lang(ja)]:text-[11px] [&:lang(ko)]:text-[11px] tablet:text-[15px] tablet:leading-[20px] tablet:[&:lang(ja)]:text-[13px] tablet:[&:lang(ko)]:text-[13px] desktop-sm:text-[17px] desktop-sm:leading-[22px] desktop-sm:[&:lang(ja)]:text-[14px] desktop-sm:[&:lang(ko)]:text-[14px] font-normal mb-1">English</div><div class="text-[12px] leading-[14px] [&:lang(ja)]:text-[9px] [&:lang(ko)]:text-[9px] tablet:text-[13px] tablet:leading-[16px] tablet:[&:lang(ja)]:text-[10px] tablet:[&:lang(ko)]:text-[10px] desktop-sm:text-[14px] desktop-sm:leading-[18px] desktop-sm:[&:lang(ja)]:text-[11px] desktop-sm:[&:lang(ko)]:text-[11px] text-[#c7c7c7] font-normal">English</div></a><a class="flex flex-col w-full px-2 py-0.5 tablet:px-3 tablet:py-1 desktop-sm:px-4 desktop-sm:py-1.5 text-white no-underline bg-[#323232] rounded-sm tablet:rounded hover:bg-[#616161] transition-colors" href="https://www.datadoghq.com/ja/?lang_pref=ja"><div class="text-[13px] leading-[18px] [&:lang(ja)]:text-[11px] [&:lang(ko)]:text-[11px] tablet:text-[15px] tablet:leading-[20px] tablet:[&:lang(ja)]:text-[13px] tablet:[&:lang(ko)]:text-[13px] desktop-sm:text-[17px] desktop-sm:leading-[22px] desktop-sm:[&:lang(ja)]:text-[14px] desktop-sm:[&:lang(ko)]:text-[14px] font-normal mb-1">日本語</div><div class="text-[12px] leading-[14px] [&:lang(ja)]:text-[9px] [&:lang(ko)]:text-[9px] tablet:text-[13px] tablet:leading-[16px] tablet:[&:lang(ja)]:text-[10px] tablet:[&:lang(ko)]:text-[10px] desktop-sm:text-[14px] desktop-sm:leading-[18px] desktop-sm:[&:lang(ja)]:text-[11px] desktop-sm:[&:lang(ko)]:text-[11px] text-[#c7c7c7] font-normal">Japanese</div></a><a class="flex flex-col w-full px-2 py-0.5 tablet:px-3 tablet:py-1 desktop-sm:px-4 desktop-sm:py-1.5 text-white no-underline bg-[#323232] rounded-sm tablet:rounded hover:bg-[#616161] transition-colors" href="https://www.datadoghq.com/ko/?lang_pref=ko"><div class="text-[13px] leading-[18px] [&:lang(ja)]:text-[11px] [&:lang(ko)]:text-[11px] tablet:text-[15px] tablet:leading-[20px] tablet:[&:lang(ja)]:text-[13px] tablet:[&:lang(ko)]:text-[13px] desktop-sm:text-[17px] desktop-sm:leading-[22px] desktop-sm:[&:lang(ja)]:text-[14px] desktop-sm:[&:lang(ko)]:text-[14px] font-normal mb-1">한국어</div><div class="text-[12px] leading-[14px] [&:lang(ja)]:text-[9px] [&:lang(ko)]:text-[9px] tablet:text-[13px] tablet:leading-[16px] tablet:[&:lang(ja)]:text-[10px] tablet:[&:lang(ko)]:text-[10px] desktop-sm:text-[14px] desktop-sm:leading-[18px] desktop-sm:[&:lang(ja)]:text-[11px] desktop-sm:[&:lang(ko)]:text-[11px] text-[#c7c7c7] font-normal">Korean</div></a></div></div></div><div class="order-1 col-span-12 mb-7 px-[15px] desktop-sm:order-3 desktop-sm:col-span-2 desktop-sm:mb-0"><div class="flex h-full justify-center items-center desktop-sm:justify-end"><span class="flex items-center mr-7 desktop-sm:mr-5"><a class="social-link flex items-center text-white" href="https://twitter.com/datadoghq" aria-label="Twitter link"><i class="icon-twitter-x flex text-[17px]"></i>
|
||
</a></span><span class="flex items-center mr-7 desktop-sm:mr-5"><a class="social-link flex items-center text-white" href="https://www.instagram.com/datadoghq/" aria-label="Instagram link"><i class="icon-instagram flex text-[17px]"></i>
|
||
</a></span><span class="flex items-center mr-7 desktop-sm:mr-5"><a class="social-link flex items-center text-white" href="https://www.youtube.com/user/DatadogHQ" aria-label="Youtube link"><i class="icon-youtube-tetra flex text-[17px]"></i>
|
||
</a></span><span class="flex items-center"><a class="social-link flex items-center text-white" href="https://www.linkedin.com/company/datadog" aria-label="LinkedIn link"><i class="icon-linkedin-new flex text-[17px]"></i></a></span></div></div><div class="px-[15px] order-2 desktop-sm:order-1 col-span-12 desktop-sm:col-span-8 mb-7 desktop-sm:mb-0"><div class="flex h-full justify-center items-center desktop-sm:justify-start"><span class="copyright mr-2 text-[#88838C] text-[14px] leading-[18px] desktop-sm:mr-3 desktop-sm:text-[16px] desktop-sm:leading-[20px]">© Datadog 2026
|
||
</span><span class="flex items-center"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/legal/terms/">Terms</a>
|
||
<span class="font-normal text-white"> |
|
||
</span></span><span class="flex items-center"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/legal/privacy/">Privacy</a>
|
||
<span class="font-normal text-white"> |
|
||
</span></span><span class="flex items-center"><a class="inline-block font-normal text-white text-[16px] leading-[16px] hover:cursor-pointer hover:text-[#88838C] focus:cursor-pointer focus:text-[#88838C] active:cursor-pointer active:text-[#88838C]" href="https://www.datadoghq.com/legal/cookies/">Cookies</a></span></div></div></div></div></div></footer></body></html></div> <datadog-logs-rum data-is-prod="true" data-dd-client-token="pub0b466265cd4de08394d4e1979fb79787" data-dd-application-id="c0bd0f01-a704-40c6-a9ef-b130b5bf397e" data-env="production" data-service="websites-blog"></datadog-logs-rum> <script type="module" src="/blog/_astro/DatadogLogsRum.astro_astro_type_script_index_0_lang.CrAKTPh3.js"></script> <script type="module" src="/blog/_astro/Base.astro_astro_type_script_index_0_lang.TdQLbLHm.js"></script> <script type="module" src="/blog/_astro/Base.astro_astro_type_script_index_1_lang.DABIRTca.js"></script> <script src="/assets/ane-popup-banner.js"></script> <script>
|
||
document.addEventListener('alpine:init', () => {
|
||
Alpine.data('searchbar', () => ({
|
||
search(e) {
|
||
let searchbarValue = '';
|
||
if (e.key === 'Enter') {
|
||
searchbarValue = e.target.value;
|
||
} else {
|
||
searchbarValue = (e.target.nextElementSibling || e.target.previousElementSibling)
|
||
?.value;
|
||
}
|
||
const pageLangPrefix =
|
||
document.documentElement.lang === 'en' ? '' : '/' + document.documentElement.lang;
|
||
const pathName = window.location.pathname;
|
||
let blogType = 'The-Monitor';
|
||
if (pathName.includes('engineering')) blogType = 'Engineering';
|
||
else if (pathName.includes('pup-culture')) blogType = 'Pup-Culture';
|
||
else if (pathName.includes('ai')) blogType = 'AI';
|
||
const blogTypeParam = pageLangPrefix === '' ? '?blog-0=' + blogType : '';
|
||
const searchParam =
|
||
searchbarValue ? (blogTypeParam === '' ? '?' : '&') + 's=' + searchbarValue : '';
|
||
window.location.href = pageLangPrefix + '/blog/search/' + blogTypeParam + searchParam;
|
||
},
|
||
}));
|
||
});
|
||
</script> </body></html><script type="module">const k=()=>{const t=document.querySelector(".aside-toc"),e=document.querySelector(".article-feedback-card"),o=document.querySelector(".further-reading-card");if(!e)return;const s=o?.querySelector("img"),u=()=>{t&&o&&(t.style.marginBottom=`${o.offsetHeight+42}px`)};t&&setTimeout(u,100),s&&(s.complete?u():s.addEventListener("load",u));const f=()=>{window.scrollY>=2e3&&e.classList.remove("opacity-0"),window.scrollY<2e3&&e.classList.add("opacity-0")},c=(p,i,w)=>{const g=e.querySelector(".article-feedback-button-container");if(!g)return;g.querySelectorAll("button").forEach(y=>{y.addEventListener("click",()=>{const L={pageURL:p,feedback:y.dataset.ddActionName},S=w===null?[]:JSON.parse(w);S.push(L),i.setItem("datadogBlogFeedback",JSON.stringify(S)),setTimeout(()=>{e.classList.add("opacity-0","transition-opacity","duration-500","ease-out"),e.addEventListener("transitionend",()=>{e.remove()},{once:!0})},2500)})})},a=window.location.pathname,b=window.localStorage,l=b.getItem("datadogBlogFeedback");let m=!1;if(l&&(m=!!JSON.parse(l).filter(p=>p.pageURL===a).length,m)){e?.remove();return}c(a,b,l),window.addEventListener("scroll",f,{passive:!0})};function O(){const n=document.querySelectorAll(".table-component"),t=e=>{e.scrollWidth>e.clientWidth?e.classList.add("has-scrollbar"):e.classList.remove("has-scrollbar")};n.forEach(e=>{const o=e.querySelector(".table-component-box .table-component-box-inner");if(!o)return;t(o),new ResizeObserver(()=>{t(o)}).observe(o)})}let d=!1,r=null,v=null;function h(){d=!0,r&&(r.disconnect(),r=null),clearTimeout(v),v=setTimeout(()=>{d=!1},3e3)}window.addEventListener("wheel",h,{passive:!0});window.addEventListener("touchstart",h,{passive:!0});window.addEventListener("keydown",n=>{["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"," "].includes(n.key)&&h()},{passive:!0});function E(){const n=document.querySelector("[data-dd-secondary-nav]");if(!n)return 0;const t=getComputedStyle(n);if(t.display==="none"||t.visibility==="hidden")return 0;const e=n.getBoundingClientRect();return e.height<1?0:Math.ceil(e.height)}function C(n){if(typeof n=="number"&&!Number.isNaN(n))return n;const t=typeof window<"u"?window.__FIX_HASH_SCROLL_TOP_OFFSET__:void 0;if(typeof t=="number"&&!Number.isNaN(t))return t;let e=100;const o=document.querySelector("main");if(o){const s=parseFloat(getComputedStyle(o).marginTop);Number.isFinite(s)&&s>=0&&(e=s+4)}return e+E()}function T(n={}){const{maxDuration:t=1e4,stableThreshold:e=3,topOffset:o}=n,s=location.hash;if(!s||d)return;const u=decodeURIComponent(s),f=document.querySelector(u);if(!f)return;r&&r.disconnect();let c=null,a=0;const b=performance.now(),l=()=>{if(d)return;const m=C(o),i=f.getBoundingClientRect().top+window.scrollY-m;window.scrollTo({top:i,behavior:"instant"})};r=new ResizeObserver(()=>{if(d){r.disconnect(),r=null;return}if(performance.now()-b>t){r.disconnect(),r=null;return}const i=f.getBoundingClientRect().top+window.scrollY;if(c===null){c=i,l();return}Math.abs(i-c)<1?(a++,a>=e&&(r.disconnect(),r=null)):(c=i,a=0,l())}),r.observe(document.documentElement)}location.hash&&setTimeout(()=>{T()},100);window.addEventListener("hashchange",()=>{d=!1,location.hash&&setTimeout(()=>{T()},100)});k();O();</script> |