1638 lines
148 KiB
HTML
1638 lines
148 KiB
HTML
<!DOCTYPE html><!-- Last Published: Fri Sep 11 2026 21:27:06 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="www.gremlin.com" data-wf-page="65a84319e1dd4b961519e9c6" data-wf-site="64a5291e7847ac04fe1531ad" lang="en-US" data-wf-collection="65a84319e1dd4b961519e961" data-wf-item-slug="the-kpis-of-improved-reliability"><head><meta charset="utf-8"/><link href="https://cdn.prod.website-files.com" rel="preconnect" crossorigin="anonymous"/><title>The KPIs of improved reliability</title><meta content="This article was originally published on May 5, 2022." name="description"/><meta content="The KPIs of improved reliability" property="og:title"/><meta content="This article was originally published on May 5, 2022." property="og:description"/><meta content="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/6576e68444102d6fbb456ebb_The_KPIs_of_improved_reliability.webp" property="og:image"/><meta content="The KPIs of improved reliability" name="twitter:title"/><meta content="This article was originally published on May 5, 2022." name="twitter:description"/><meta content="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/6576e68444102d6fbb456ebb_The_KPIs_of_improved_reliability.webp" name="twitter:image"/><meta property="og:type" content="website"/><meta content="summary_large_image" name="twitter:card"/><meta content="width=device-width, initial-scale=1" name="viewport"/><meta content="3TY0J0C2xRyc5irMQjPr7cO903_hqKgVYAyJ9pi5PAw" name="google-site-verification"/><link href="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/css/gremlin-x-flowninja.shared.605da2fb7.min.css" rel="stylesheet" type="text/css" integrity="sha384-YF2i+3NVYOnga+HMpSRnDJEb+l4tViwBm/Mxmd9FLRuWx6KE19Y1BulBmfXeVH9m" crossorigin="anonymous"/><link href="https://fonts.googleapis.com" rel="preconnect"/><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin="anonymous"/><script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js" type="text/javascript"></script><script type="text/javascript">WebFont.load({ google: { families: ["Inconsolata:400,700","PT Sans:400,400italic,700,700italic","Inter:100,200,300,400,500,600,700,800,900","Merriweather Sans:300,400,500,600,700"] }});</script><script src="https://use.typekit.net/fue3lxw.js" type="text/javascript"></script><script type="text/javascript">try{Typekit.load();}catch(e){}</script><script type="text/javascript">!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);</script><link href="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/6a315e8c629e5960bd06ad35_Gremlin-Favicon.png" rel="icon" type="image/png" sizes="32x32" media="(prefers-color-scheme: light)"/><link href="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/6a315e8c629e5960bd06ad35_Gremlin-Favicon.png" rel="icon" type="image/png" sizes="32x32" media="(prefers-color-scheme: dark)"/><link href="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/6a315e8c8a07d15517714ef1_Gremlin-Favicon.png" rel="icon" type="image/png" sizes="48x48"/><link href="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/6a315e8c30848854c24efc6e_Gremlin-Favicon.png" rel="apple-touch-icon" sizes="180x180"/><link href="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/6a315e8c6dd1f7a54e8b58c3_Gremlin-Favicon.png" rel="icon" type="image/png" sizes="192x192"/><link href="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/6a315e8c104c9aec66dc48e9_Gremlin-Favicon.png" rel="icon" type="image/png" sizes="512x512"/><link href="https://www.gremlin.com/blog/the-kpis-of-improved-reliability" rel="canonical"/><script type="application/ld+json">
|
||
{
|
||
"@context": "https://schema.org",
|
||
"@type": "BlogPosting",
|
||
"headline": "The KPIs of improved reliability",
|
||
"description": "This article was originally published on May 5, 2022.",
|
||
"image": "https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/6576e68444102d6fbb456eb8_The_KPIs_of_improved_reliability.webp",
|
||
"datePublished": "2025-06-25T19:48:57.442Z",
|
||
"dateModified": "2023-12-27T09:57:45.745Z",
|
||
"author": {
|
||
"@type": "Person",
|
||
"name": "Andre Newman",
|
||
"jobTitle": "Sr. Reliability Specialist",
|
||
"image": "https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/64edd73857be946ecb73f6ca_AndreNewman-Author2.webp",
|
||
"url": "/author/andre-newman"
|
||
},
|
||
"publisher": {
|
||
"@type": "Organization",
|
||
"name": "Gremlin",
|
||
"logo": {
|
||
"@type": "ImageObject",
|
||
"url": "https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/669a939943dcf0b320304fc9_Gremlin-Logo-Primary.svg"
|
||
}
|
||
},
|
||
"mainEntityOfPage": {
|
||
"@type": "WebPage",
|
||
"@id": "/blog/the-kpis-of-improved-reliability"
|
||
},
|
||
"articleBody": "This article was originally published on May 5, 2022.",
|
||
"keywords": "",
|
||
"articleSection": "",
|
||
"timeRequired": "9 min read",
|
||
"inLanguage": "en-US"
|
||
}
|
||
</script><link href="rss.xml" rel="alternate" title="RSS Feed" type="application/rss+xml"/><script>(function(w,i,g){w[g]=w[g]||[];if(typeof w[g].push=='function')w[g].push.apply(w[g],Array.isArray(i)?i:[i]);})(window,['G-NZ4G1TPB4T'],'google_tags_first_party');</script><script async="" src="/haqt6iy0yx2eNjRhNTI5MWU3ODQ3YWMwNGZlMTUzMWFk/36riEIY-B4IyzlmLxr3ke3O1gaE"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('set', 'developer_id.dZGVlNj', true);gtag('set', 'developer_id.dYWYxNW', true);gtag('js', new Date());gtag('config', 'G-NZ4G1TPB4T');</script><script type="application/ld+json">
|
||
{
|
||
"@context": "https://schema.org",
|
||
"@type": "Organization",
|
||
"url": "https://www.gremlin.com/",
|
||
"logo": "https://res.cloudinary.com/gremlin/image/upload/v1667411425/AWS%20re:Invent%20GameDay%202022/Gremlin-Logo-Primary_2x.png",
|
||
"image": "https://res.cloudinary.com/gremlin/image/upload/v1667411425/AWS%20re:Invent%20GameDay%202022/Gremlin-Logo-Primary_2x.png",
|
||
"name": "Gremlin",
|
||
"description": "Gremlin helps engineering teams proactively manage reliability at scale.",
|
||
"email": "hello@gremlin.com",
|
||
"telephone": "+1-408-214-9885",
|
||
"address": {
|
||
"@type": "PostalAddress",
|
||
"streetAddress": "440 N Barranca Ave #3101",
|
||
"addressLocality": "Covina",
|
||
"addressCountry": "US",
|
||
"addressRegion": "CA",
|
||
"postalCode": "91723"
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<!-- Algolia -->
|
||
<script src="https://cdn.jsdelivr.net/npm/@algolia/autocomplete-js"></script>
|
||
<script async src="https://cdn.jsdelivr.net/npm/preact/dist/preact.min.js"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/algoliasearch@4.24.0/dist/algoliasearch-lite.umd.js" integrity="sha256-b2n6oSgG4C1stMT/yc/ChGszs9EY/Mhs6oltEjQbFCQ=" crossorigin="anonymous"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/instantsearch.js@4.78.0/dist/instantsearch.production.min.js" integrity="sha256-TgmjIYtuCzPUUGlHWyK8k1xVPlvPHUAGU7gLz8jwIi0=" crossorigin="anonymous"></script>
|
||
|
||
<script>
|
||
const appId = 'TQAWOMSD2N';
|
||
const apiKey = '519937be570c720e9d09591cee9d20bf';
|
||
const searchClient = algoliasearch(appId, apiKey);
|
||
const indexName = (indexNames = 'webflow');
|
||
</script>
|
||
<!-- End Algolia -->
|
||
|
||
<!-- Finsweet modules -->
|
||
<script defer type="module" src="https://cdn.jsdelivr.net/npm/@finsweet/attributes@2/attributes.js" fs-socialshare fs-toc fs-list fs-queryparam></script>
|
||
<script defer src="https://cdn.jsdelivr.net/npm/@finsweet/attributes-richtext@1/richtext.js"></script>
|
||
|
||
<!-- Global CSS Styles -->
|
||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.30.0/themes/prism-tomorrow.min.css" integrity="sha512-vswe+cgvic/XBoF1OcM/TeJ2FW0OofqAVdCZiEYkd6dwGXthvkSFWOoGGJgS2CW70VK5dQM5Oh+7ne47s74VTg==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||
|
||
<style>
|
||
/* Fixing Font Weight for Browsers */
|
||
body {
|
||
-webkit-font-smoothing: antialiased;
|
||
-moz-osx-font-smoothing: grayscale;
|
||
}
|
||
|
||
/* Brand cards on gremlin.com/kit */
|
||
.brand-asset {
|
||
box-shadow: 0 15px 35px -15px rgba(47, 34, 86, 0.1);
|
||
}
|
||
|
||
/* Blog cards */
|
||
.blog-description {
|
||
display: -webkit-box;
|
||
-webkit-line-clamp: 5;
|
||
line-clamp: 5;
|
||
-webkit-box-orient: vertical;
|
||
overflow: hidden;
|
||
}
|
||
|
||
/* Style Navattic popups */
|
||
.navattic-popup {
|
||
background: none;
|
||
background-color: transparent;
|
||
color: transparent;
|
||
border: none;
|
||
padding: 0;
|
||
}
|
||
|
||
/* Misc styles */
|
||
.comma-list .comma-item:last-child .comma {
|
||
display: none;
|
||
}
|
||
|
||
.hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
/* tables */
|
||
table {
|
||
font-weight: 400;
|
||
font-size: 18px;
|
||
line-height: 1.4;
|
||
border: 1px solid #6633cc;
|
||
width: 100%;
|
||
overflow-x: auto;
|
||
border-radius: 4px;
|
||
box-shadow: 0 3px 8px -1px rgba(47, 34, 86, 0.1);
|
||
display: block;
|
||
table-layout: fixed;
|
||
max-width: max-content;
|
||
}
|
||
|
||
table code {
|
||
padding-top: 2px;
|
||
padding-right: 4px;
|
||
padding-bottom: 2px;
|
||
padding-left: 4px;
|
||
background-color: #f8f8f8;
|
||
color: var(--pink);
|
||
}
|
||
|
||
thead {
|
||
background-color: #ccc0fd;
|
||
display: table-header-group;
|
||
}
|
||
|
||
th {
|
||
font-weight: 600;
|
||
font-size: 14px;
|
||
line-height: 1.2;
|
||
text-align: left;
|
||
background-color: #ccc0fd;
|
||
border-bottom: 1px solid #6633cc;
|
||
}
|
||
|
||
th,
|
||
td {
|
||
padding: 12px;
|
||
vertical-align: top;
|
||
}
|
||
tr:not(:first-of-type) {
|
||
border-top: 1px solid #6633cc;
|
||
}
|
||
tr:nth-child(odd) {
|
||
background-color: #fafafa;
|
||
}
|
||
tr:nth-child(even) {
|
||
background-color: #ffffff;
|
||
}
|
||
|
||
/* Navigation buttons */
|
||
.fs_prevnext_empty {
|
||
flex-direction: column;
|
||
align-items: flex-start;
|
||
display: flex;
|
||
pointer-events: none;
|
||
|
||
[fs-cmsprevnext-element='next'] .hover-name.previous,
|
||
[fs-cmsprevnext-element='previous'] .hover-name.next {
|
||
display: none;
|
||
}
|
||
}
|
||
|
||
/* Inline code */
|
||
|
||
pre {
|
||
position: relative;
|
||
counter-reset: linenumber;
|
||
}
|
||
|
||
pre:not(.w-code-block) {
|
||
padding-left: 3.5rem !important;
|
||
}
|
||
|
||
pre > code {
|
||
position: relative;
|
||
}
|
||
|
||
pre .line-numbers-rows {
|
||
position: absolute;
|
||
pointer-events: none;
|
||
top: 0;
|
||
font-size: 100%;
|
||
left: -3.8em;
|
||
width: 3em; /* works for line-numbers below 1000 lines */
|
||
letter-spacing: -1px;
|
||
border-right: 1px solid #999;
|
||
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.token-function {
|
||
color: red !important;
|
||
}
|
||
|
||
.line-numbers-rows > span {
|
||
pointer-events: none;
|
||
display: block;
|
||
counter-increment: linenumber;
|
||
}
|
||
|
||
.line-numbers-rows > span:before {
|
||
content: counter(linenumber);
|
||
color: #999;
|
||
display: block;
|
||
padding-right: 0.8em;
|
||
text-align: right;
|
||
}
|
||
|
||
/* Chaos Monkey microsite */
|
||
/* This removes all list styling, including numbers */
|
||
:is(.chaos-monkey-post-rich-text, .docs-rich-text, .w-richtext) ol {
|
||
list-style-type: none;
|
||
position: relative;
|
||
margin-top: 0.2rem;
|
||
}
|
||
|
||
/* This forces the step counter below to start incrementing */
|
||
:is(.chaos-monkey-post-rich-text, .docs-rich-text, .w-richtext) ol li {
|
||
margin-left: 0.5rem;
|
||
padding: 4px 0px 4px 0px;
|
||
counter-increment: step-counter;
|
||
font-size: 1.125rem;
|
||
margin-bottom: 0.5rem;
|
||
line-height: 1.3em;
|
||
}
|
||
|
||
.docs-rich-text ol li {
|
||
margin-left: 2.5rem;
|
||
}
|
||
|
||
:is(.chaos-monkey-post-rich-text, .docs-rich-text, .w-richtext) ol ol {
|
||
counter-reset: step-counter 0; /* Reset the counter for nested ordered lists */
|
||
}
|
||
|
||
.docs-rich-text ol ol {
|
||
margin-top: 0.75rem;
|
||
}
|
||
|
||
:is(.chaos-monkey-post-rich-text, .docs-rich-text, .w-richtext) ol ul {
|
||
counter-reset: step-counter 0; /* Reset the counter for nested ordered lists */
|
||
}
|
||
|
||
.docs-rich-text ol ul {
|
||
margin-top: 0.75rem;
|
||
}
|
||
|
||
:is(.chaos-monkey-post-rich-text, .docs-rich-text, .w-richtext) ol.reset-counter {
|
||
counter-reset: step-counter 0; /* Reset the counter for nested ordered lists */
|
||
}
|
||
|
||
/* This adds a step counter before each list item in a numbered list. Also includes styling for the numbers */
|
||
:is(.chaos-monkey-post-rich-text, .docs-rich-text, .w-richtext) ol li::before {
|
||
content: counter(step-counter);
|
||
position: absolute;
|
||
left: 0;
|
||
width: 28px;
|
||
height: 28px;
|
||
font-size: 12px;
|
||
color: white;
|
||
font-weight: 500;
|
||
background-color: #63c;
|
||
border-radius: 99px;
|
||
text-align: center;
|
||
line-height: 28px;
|
||
}
|
||
|
||
/* This removes all list styling, including numbers */
|
||
:is(.chaos-monkey-post-rich-text, .docs-rich-text, .w-richtext) ul {
|
||
list-style-type: none;
|
||
position: relative;
|
||
margin-top: 0.2rem;
|
||
}
|
||
|
||
:is(.chaos-monkey-post-rich-text, .docs-rich-text, .w-richtext) ul li {
|
||
padding: 4px 0px 4px 0px;
|
||
margin-bottom: 0.5rem;
|
||
}
|
||
|
||
.docs-rich-text ul li {
|
||
margin-left: 2rem;
|
||
}
|
||
|
||
/* This adds a step counter before each list item in a numbered list. Also includes styling for the numbers */
|
||
:is(.chaos-monkey-post-rich-text, .docs-rich-text, .w-richtext) ul li::before {
|
||
display: inline-block;
|
||
content: url('https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/6924dbfee26732cfc86aa648_Ellipse-filled.svg');
|
||
position: absolute;
|
||
left: 0;
|
||
width: 8px;
|
||
height: 8px;
|
||
}
|
||
|
||
.native-list-bullets ul {
|
||
list-style-type: disc !important;
|
||
}
|
||
|
||
.native-list-bullets ol {
|
||
list-style-type: decimal !important;
|
||
}
|
||
|
||
.native-list-bullets li::before {
|
||
content: none !important;
|
||
}
|
||
|
||
.native-list-bullets li::marker {
|
||
color: currentColor;
|
||
}
|
||
</style>
|
||
|
||
<!-- Prism.js for code formatting -->
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.30.0/prism.min.js" integrity="sha512-HiD3V4nv8fcjtouznjT9TqDNDm1EXngV331YGbfVGeKUoH+OLkRTCMzA34ecjlgSQZpdHZupdSrqHY+Hz3l6uQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.30.0/plugins/autoloader/prism-autoloader.min.js" integrity="sha512-SkmBfuA2hqjzEVpmnMt/LINrjop3GKWqsuLSSB3e7iBmYK7JuWw4ldmmxwD9mdm2IRTTi0OxSAfEGvgEi0i2Kw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.30.0/components/prism-markup-templating.min.js" integrity="sha512-+8BiRfWso6waiFDv6tEmWF8yfPGgxAtOYLDUB0rRISLwtpxkJ9lpPNUhxwWlikn3qSO+4RQyzDppi62o3ON/AA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||
<!-- Prism customizations -->
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.30.0/plugins/normalize-whitespace/prism-normalize-whitespace.min.js" integrity="sha512-Kit4oPSAREacS6LEF4LGcL6MMlG3O1GqRFDGSX1Vg4JrozGU7hHoMKFkiMWevWq/xmNq8pzMhO2PcZCPHe/gmQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.30.0/plugins/unescaped-markup/prism-unescaped-markup.min.css" integrity="sha512-g33HCZ23fueSK96JEeoy9DelAlu7Ry5mtxqLk+zlEiPj7NIpFI6T9mybOvQxjBN50FALFDCviMXiLqWJcFwzaA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.30.0/plugins/unescaped-markup/prism-unescaped-markup.min.js" integrity="sha512-QaQkFkE1LvUW6IaC7zLY4EsrNHuMWwepQv2RWyg4q/3+KI7K2WwtNEe6IPuYE7ZWkNxdKEnLJRuyuSnvbTUB3Q==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||
<script>
|
||
((Prism.languages.bash = Prism.languages.extend('clike', {
|
||
comment: { pattern: /(^|[^"{\\])(#.*?(\r?\n|$))/, lookbehind: !0 },
|
||
string: {
|
||
pattern: /("|')(\\?[\s\S])*?\1/,
|
||
inside: { property: /\$([a-zA-Z0-9_#\?\-\*!@]+|\{[^\}]+\})/ },
|
||
},
|
||
number: {
|
||
pattern: /([^\w\.])-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/,
|
||
lookbehind: !0,
|
||
},
|
||
function: /\b(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|cut|date|dc|dd|ddrescue|declare|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|echo|egrep|eject|enable|env|ethtool|eval|exec|exit|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|select|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|until|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)\b/,
|
||
keyword: /\b(if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)\b/,
|
||
})),
|
||
(Prism.languages.shell = Prism.languages.bash));
|
||
(Prism.languages.insertBefore('bash', 'keyword', {
|
||
property: /\$([a-zA-Z0-9_#\?\-\*!@]+|\{[^}]+\})/,
|
||
}),
|
||
Prism.languages.insertBefore('bash', 'comment', {
|
||
important: /(^#!\s*\/bin\/bash)|(^#!\s*\/bin\/sh)/,
|
||
}));
|
||
Prism.languages.json = {
|
||
property: {
|
||
pattern: /(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,
|
||
lookbehind: true,
|
||
greedy: true,
|
||
},
|
||
string: {
|
||
pattern: /(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,
|
||
lookbehind: true,
|
||
greedy: true,
|
||
},
|
||
comment: {
|
||
pattern: /\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,
|
||
greedy: true,
|
||
},
|
||
number: /-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,
|
||
punctuation: /[{}[\],]/,
|
||
operator: /:/,
|
||
boolean: /\b(?:false|true)\b/,
|
||
null: {
|
||
pattern: /\bnull\b/,
|
||
alias: 'keyword',
|
||
},
|
||
};
|
||
Prism.languages.webmanifest = Prism.languages.json;
|
||
|
||
Prism.hooks.add('after-highlight', function (e) {
|
||
var t = e.element.parentNode;
|
||
|
||
// Check if this is an XML block. If so, un-escape escaped characters
|
||
var eCls = e.element.classList;
|
||
if (e.element.nodeName.toLowerCase() === 'code' && (eCls.contains('language-xml') || eCls.contains('language-markup'))) {
|
||
e.element.textContent = e.element.textContent
|
||
.replace('<', '<')
|
||
.replace('>', '>')
|
||
.replace('"', '"')
|
||
.replace(''', '\'')
|
||
.replace('&', '&')
|
||
}
|
||
|
||
// Check if the parent is a <pre> element and not a Webflow code element
|
||
if (t && t.nodeName.toLowerCase() === 'pre' && !t.className.toLowerCase().includes('w-code-block')) {
|
||
var a,
|
||
n = 1 + e.code.split('\n').length, // Remove the "+ 1" here
|
||
l = new Array(n);
|
||
l = l.join('<span></span>');
|
||
a = document.createElement('span');
|
||
a.className = 'line-numbers-rows';
|
||
a.innerHTML = l;
|
||
t.hasAttribute('data-start') && (t.style.counterReset = 'linenumber ' + (parseInt(t.getAttribute('data-start'), 10) - 1));
|
||
e.element.appendChild(a);
|
||
}
|
||
});
|
||
|
||
/* Add event listener for copying code */
|
||
document.addEventListener('DOMContentLoaded', function () {
|
||
// Get all elements with the class "copy-icon"
|
||
var copyIcons = document.querySelectorAll('.copy-icon');
|
||
|
||
copyIcons.forEach(function (copyIcon) {
|
||
var copyFeedback = document.createElement('span');
|
||
copyFeedback.className = 'copy-feedback';
|
||
copyFeedback.innerText = 'Copied!';
|
||
|
||
copyIcon.appendChild(copyFeedback);
|
||
|
||
copyIcon.addEventListener('click', function () {
|
||
var parentWrapper = copyIcon.closest('.code-higlight-wrapper');
|
||
|
||
if (!parentWrapper) {
|
||
console.error('Parent wrapper not found');
|
||
return;
|
||
}
|
||
|
||
var codeElement = parentWrapper.querySelector('code[class*="language-"]');
|
||
|
||
if (!codeElement) {
|
||
console.error('Code element not found');
|
||
return;
|
||
}
|
||
|
||
var textToCopy = codeElement.innerText || codeElement.textContent;
|
||
|
||
var tempTextarea = document.createElement('textarea');
|
||
tempTextarea.value = textToCopy;
|
||
|
||
document.body.appendChild(tempTextarea);
|
||
|
||
tempTextarea.select();
|
||
tempTextarea.setSelectionRange(0, 99999);
|
||
|
||
document.execCommand('copy');
|
||
|
||
document.body.removeChild(tempTextarea);
|
||
|
||
copyFeedback.style.opacity = 1;
|
||
|
||
setTimeout(function () {
|
||
copyFeedback.style.opacity = 0;
|
||
}, 1000);
|
||
});
|
||
});
|
||
});
|
||
/* End cody copying code */
|
||
|
||
/* Addtl. event listeners */
|
||
window.addEventListener('hs-form-event:on-submission:success', function (event) {
|
||
var form = HubSpotFormsV4.getFormFromEvent(event);
|
||
window.signals.identify({
|
||
email: form.getFieldValue('0-1/email'),
|
||
});
|
||
});
|
||
</script>
|
||
<style>
|
||
.language-unknown * {
|
||
font-size: 1em !important;
|
||
color: #ccc !important;
|
||
}
|
||
.language-docker * {
|
||
font-size: 1em !important;
|
||
color: #ccc !important;
|
||
}
|
||
.code-highlight-simple {
|
||
padding-left: 0rem !important;
|
||
padding-right: 0rem !important;
|
||
}
|
||
.hover-name {
|
||
pointer-events: none;
|
||
}
|
||
.button-variant-docs:hover ~ .hover-name {
|
||
opacity: 1;
|
||
}
|
||
|
||
.copy-feedback {
|
||
position: absolute;
|
||
font-size: 12px;
|
||
color: #2f2356;
|
||
padding: 0.25rem 0.5rem;
|
||
background-color: white;
|
||
border-radius: 0.5rem;
|
||
left: -34px;
|
||
top: 27px;
|
||
transition: all 0.3s ease;
|
||
opacity: 0;
|
||
z-index: 10;
|
||
}
|
||
|
||
.margin-both-two {
|
||
margin-top: 10px;
|
||
margin-bottom: 10px;
|
||
}
|
||
</style>
|
||
<!-- End Prism.js -->
|
||
|
||
<!-- Format inline code -->
|
||
<style>
|
||
code:not([class*='language-']) {
|
||
color: var(--pink);
|
||
font-family: 'Inconsolata', monospace;
|
||
}
|
||
</style>
|
||
<!-- End inline code -->
|
||
|
||
<!-- Navattic tours -->
|
||
<style>
|
||
.navattic-popup {
|
||
background: none;
|
||
background-color: transparent;
|
||
color: transparent;
|
||
border: none;
|
||
padding: 0;
|
||
}
|
||
.tour-preview {
|
||
border-radius: 40px;
|
||
filter: brightness(70%);
|
||
}
|
||
.tour-button {
|
||
color: #2F2256;
|
||
background-color: #FFFFFF;
|
||
padding: 10px;
|
||
border-radius: 20px;
|
||
border: 1px solid #2F2256;
|
||
font-weight: 600;
|
||
position: absolute;
|
||
top: 45%;
|
||
left: 45%;
|
||
/* transform: translate(-50%, -50%); */
|
||
z-index: 9999;
|
||
transition: all 0.2s ease-in-out;
|
||
}
|
||
|
||
.tour-button:hover {
|
||
transform: scale(1.2);
|
||
};
|
||
</style>
|
||
<!-- End Navattic tours -->
|
||
|
||
<!-- Finsweet Cookie Consent -->
|
||
<script async src="https://cdn.jsdelivr.net/npm/@finsweet/cookie-consent@1/fs-cc.js" fs-cc-mode="opt-out"></script><style>
|
||
/* This removes all list styling, including numbers */
|
||
.blog-rich-text ol {
|
||
list-style-type: none;
|
||
position: relative;
|
||
}
|
||
|
||
/* This forces the step counter below to start incrementing */
|
||
.blog-rich-text ol li {
|
||
counter-increment: step-counter;
|
||
margin-left: 0.5rem;
|
||
}
|
||
|
||
/* This adds a step counter before each list item in a numbered list. Also includes styling for the numbers */
|
||
.blog-rich-text ol li::before {
|
||
content: counter(step-counter);
|
||
position: absolute;
|
||
left: 0;
|
||
width: 28px;
|
||
height: 28px;
|
||
font-size: 12px;
|
||
color: white;
|
||
font-weight: 500;
|
||
background-color: #6633CC;
|
||
border-radius: 99px;
|
||
text-align: center;
|
||
line-height: 28px;
|
||
}
|
||
|
||
.blog-rich-text li {
|
||
margin-bottom: 1rem;
|
||
}
|
||
|
||
/* This removes all list styling, including numbers */
|
||
.blog-rich-text ul {
|
||
list-style-type: none;
|
||
position: relative;
|
||
}
|
||
|
||
/* This forces the step counter below to start incrementing */
|
||
.blog-rich-text ul li {
|
||
margin-left: 24px;
|
||
}
|
||
|
||
/* This adds a step counter before each list item in a numbered list. Also includes styling for the numbers */
|
||
.blog-rich-text ul li::before {
|
||
display: inline-block;
|
||
content: url('https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/64ff1347b5fa37c0eb12ec7e_Ellipse%2015.svg');
|
||
position: absolute;
|
||
left: 0;
|
||
width: 8px;
|
||
height: 8px;
|
||
}
|
||
|
||
/* This styles tables */
|
||
table {
|
||
font-weight: 400;
|
||
font-size: 18px;
|
||
line-height: 1.4;
|
||
border: 1px solid #6633CC;
|
||
width: 100%;
|
||
overflow-x: auto;
|
||
border-radius: 4px;
|
||
box-shadow: 0 3px 8px -1px rgba(47, 34, 86, 0.1);
|
||
display: block;
|
||
table-layout: fixed;
|
||
max-width: max-content;
|
||
}
|
||
|
||
thead {
|
||
background-color: #f8f8f8;
|
||
display: table-header-group;
|
||
}
|
||
|
||
th {
|
||
font-weight: 600;
|
||
font-size: 14px;
|
||
line-height: 1.2;
|
||
text-align: left;
|
||
}
|
||
|
||
th, td {
|
||
padding: 12px;
|
||
vertical-align: top;
|
||
}
|
||
tr:not(:first-of-type) {
|
||
border-top: 1px solid #6633CC;
|
||
}
|
||
/* pre {
|
||
padding: 0 !important;
|
||
padding-left: 1rem !Important;
|
||
margin: 0 !important;
|
||
}
|
||
|
||
pre code.hljs {
|
||
margin: 0 !Important;
|
||
padding: 0 !Important;
|
||
} */
|
||
|
||
.copy-feedback {
|
||
position: absolute;
|
||
font-size: 12px;
|
||
color: #2f2356;
|
||
padding: 0.25rem 0.5rem;
|
||
background-color: white;
|
||
border-radius: 0.5rem;
|
||
left: -34px;
|
||
top: 27px;
|
||
transition: all 0.3s ease;
|
||
opacity: 0;
|
||
z-index: 10;
|
||
}
|
||
.token-function {
|
||
color: red !important;
|
||
}
|
||
.line-numbers-rows > span {
|
||
pointer-events: none;
|
||
display: block;
|
||
counter-increment: linenumber;
|
||
}
|
||
|
||
.line-numbers-rows > span:before {
|
||
content: counter(linenumber);
|
||
color: #999;
|
||
display: block;
|
||
padding-right: 0.8em;
|
||
text-align: right;
|
||
}
|
||
</style><script src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad%2F6544eda5f000985a163a8687%2F69c496533c06033214e943aa%2Ffinsweetcomponentsconfig-1.0.1.js" type="module" async="" siteId="64a5291e7847ac04fe1531ad" finsweet="components"></script><script src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad%2F66ba5a08efe71070f98dd10a%2F66ed9e169fc0a24dfe528dc8%2Fmrkz93t-1.1.1.js" type="text/javascript"></script></head><body><div data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9bfef" data-animation="default" data-collapse="medium" data-duration="400" data-easing="ease" data-easing2="ease" role="banner" class="nav-updated v2 w-nav"><div class="nav-container-wrap"><div class="nav-container-updated v2"><a href="/" class="nav-brand-updated w-nav-brand"><div class="nav-logo-updated w-embed"><svg width="auto" height="100%" viewBox="0 0 113 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<g clip-path="url(#clip0_789_7)">
|
||
<path d="M21.474 6.5602L17.4082 9.1514C17.2289 8.9226 17.068 8.7386 16.9303 8.5394C15.3632 6.2602 13.1718 5.2842 10.4594 5.8122C7.69812 6.3498 5.93491 8.1066 5.23779 10.7962C4.46304 13.7906 5.70681 16.905 8.22876 18.5058C10.1857 19.7482 12.2778 19.8546 14.406 19.0682C15.9075 18.513 16.8495 17.3906 17.401 15.7298H12.1426V11.6626H22.6122C22.8274 13.1874 22.7162 14.6674 22.344 16.1242C21.005 21.3746 16.2941 24.5898 10.7195 24.0794C5.42908 23.5946 1.19514 19.7906 0.207489 14.6314C-1.16274 7.4826 4.63512 0.7962 12.0033 1.0202C15.6882 1.1322 18.6391 2.6258 20.8409 5.5498C21.0618 5.8434 21.2331 6.1738 21.4732 6.561L21.474 6.5602ZM78.3937 23.6746H73.7908C73.7708 23.3138 73.7372 22.9834 73.7372 22.653C73.7324 20.1522 73.7404 17.6506 73.7292 15.1498C73.7268 14.7162 73.7019 14.2706 73.6003 13.8514C73.3138 12.6698 72.4878 11.9954 71.3321 11.937C70.1179 11.8754 69.1174 12.4546 68.7373 13.5738C68.5308 14.1834 68.4363 14.8554 68.4251 15.5018C68.3867 17.8458 68.4043 20.1898 68.4011 22.5338V23.6394H63.7414C63.7246 23.3122 63.6934 22.9818 63.6918 22.6514C63.6878 20.1506 63.6966 17.649 63.6814 15.1482C63.679 14.6842 63.6429 14.2066 63.5229 13.7602C63.2163 12.6162 62.424 11.9986 61.2835 11.9386C60.1133 11.8762 59.1025 12.4226 58.7247 13.4882C58.4902 14.1522 58.3885 14.8882 58.3749 15.5962C58.3309 17.9082 58.3541 20.2226 58.3509 22.5354V23.6394H53.72V8.2258H58.2781L58.4237 9.8162C59.79 8.4298 61.2651 7.7154 63.0803 7.7618C64.9131 7.8082 66.373 8.5298 67.5007 10.0418C67.9457 9.7018 68.3411 9.405 68.7301 9.1026C70.3908 7.8146 72.2885 7.513 74.2942 7.9226C76.8034 8.4354 78.3897 10.4402 78.4329 13.1698C78.4865 16.4826 78.4545 19.797 78.4561 23.1106C78.4561 23.2634 78.4233 23.4162 78.3937 23.6746ZM42.9014 20.041C41.5648 19.625 40.8269 18.6306 40.3987 17.2042H52.1297C52.028 16.0898 52.032 15.1194 51.8399 14.1882C50.681 8.5802 45.9052 6.8386 41.5616 8.1866C38.2105 9.2266 35.9967 12.3962 35.9927 15.9938C35.9887 19.4362 38.2121 22.4914 41.5384 23.6178C45.0496 24.8074 48.8442 23.725 50.9939 20.9138C51.138 20.7266 51.2405 20.509 51.3885 20.2618L48.099 18.0242C46.808 20.0026 45.088 20.721 42.9014 20.0402V20.041ZM44.1596 11.5394C45.9476 11.5258 47.1722 12.4722 47.4723 14.1674H40.7356C40.9742 12.6634 42.4372 11.553 44.1596 11.5394ZM111.98 23.6618H107.398C107.379 23.3394 107.343 23.0114 107.342 22.6842C107.337 20.1858 107.342 17.6874 107.336 15.1882C107.335 14.8154 107.329 14.4346 107.257 14.0714C107.006 12.825 106.222 12.085 105.052 11.9474C103.74 11.7922 102.6 12.365 102.131 13.5394C101.906 14.1026 101.803 14.7474 101.794 15.3562C101.756 17.7602 101.778 20.1658 101.778 22.5706V23.6498H97.1303V8.2234H101.7L101.84 9.7354C102.168 9.4818 102.409 9.3042 102.639 9.1146C104.434 7.6314 106.472 7.4146 108.61 8.1202C110.739 8.8226 112.021 10.7738 112.042 13.2338C112.07 16.4818 112.051 19.7298 112.048 22.9778C112.048 23.189 112.007 23.3994 111.98 23.6618ZM81.592 1.4922H86.1685V23.6626H81.592V1.493V1.4922ZM24.8036 23.6242V8.2002C26.3138 8.0898 27.8065 8.1378 29.3777 8.1826V23.553C28.7494 23.7562 26.205 23.8082 24.8036 23.6242ZM89.3587 23.6602V8.2202H93.9368V23.6602H89.3587ZM94.4434 3.825C94.4298 5.3962 93.1709 6.605 91.5821 6.5746C90.0454 6.545 88.8153 5.321 88.8041 3.8098C88.7921 2.2714 90.0718 1.0106 91.6438 1.0138C93.2341 1.0162 94.4578 2.245 94.4434 3.825ZM33.3299 7.7802C34.9138 7.789 36.1343 9.009 36.1263 10.5746C36.1243 10.9432 36.0491 11.3078 35.9053 11.6472C35.7615 11.9866 35.5518 12.2942 35.2883 12.5522C35.0249 12.8102 34.7129 13.0134 34.3705 13.1502C34.028 13.2869 33.6618 13.3545 33.293 13.349C31.7379 13.337 30.4734 12.0722 30.4838 10.5378C30.4942 8.9962 31.7579 7.7706 33.3299 7.7802Z" fill="currentColor"/>
|
||
</g>
|
||
<defs>
|
||
<clipPath id="clip0_789_7">
|
||
<rect width="112.062" height="24" fill="white" transform="translate(0 0.5)"/>
|
||
</clipPath>
|
||
</defs>
|
||
</svg></div></a><nav role="navigation" class="nav-menu-mask-updated w-nav-menu"><div class="nav-menu-mask-inner"><div class="menu-wrap-left"><div data-hover="false" data-delay="0" class="nav-dropdown-updated w-dropdown"><div class="nav-dropdown-toggle-updated w-dropdown-toggle"><div>Solutions</div><div class="dropdown-arrow-wrap"><div class="dropdown-arrow w-embed"><svg width="8" height="8" viewBox="0 0 8 8" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<path d="M1 3L4 6L7 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
|
||
</svg></div></div></div><nav class="nav-dropdown-list-updated w-dropdown-list"><div class="nav-dropdown-list-inner"><div class="nav-list-cta"><div class="column gap-8px"><div class="nav-list-cta-heading max-custom-copy">Solving reliability in the modern enterprise</div><p class="nav-cta-paragraph">See how Gremlin helps organizations modernize their approach to reliability.</p><a href="/product" class="nav-cta-button top-1rem w-button">PLATFORM OVERVIEW</a></div><div class="w-dyn-list"><div role="list" class="w-dyn-items"><div role="listitem" class="collection-item-5 w-dyn-item"><a href="https://www.gremlin.com/webinars/speed-and-resilience-how-to-build-reliability-guardrails-for-ai-driven-development" class="cta-card-link-wrap w-inline-block"><div class="card-base card-small card-shadow card-gradient-soft nav-cta"><div class="div-block-110"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="-0.75 -0.75 20 20" id="Blank-Calendar--Streamline-Core" height="20" width="20"><desc>Blank Calendar Streamline Icon: https://streamlinehq.com</desc><g id="blank-calendar--blank-calendar-date-day-month-empty"><path id="Vector" stroke="#6633cc" stroke-linecap="round" stroke-linejoin="round" d="M2.642857142857143 3.3035714285714284c-0.3504692857142857 0 -0.6865746428571428 0.13922571428571429 -0.9343953571428572 0.38703321428571424C1.4606542857142855 3.938425357142857 1.3214285714285714 4.2745307142857145 1.3214285714285714 4.625V15.857142857142858c0 0.3504428571428571 0.13922571428571429 0.6866142857142856 0.38703321428571424 0.9343821428571427C1.9562825 17.039292857142858 2.292387857142857 17.178571428571427 2.642857142857143 17.178571428571427h13.214285714285714c0.3504428571428571 0 0.6866142857142856 -0.13927857142857142 0.9343821428571427 -0.38704642857142857S17.178571428571427 16.207585714285713 17.178571428571427 15.857142857142858V4.625c0 -0.3504692857142857 -0.13927857142857142 -0.6865746428571428 -0.38704642857142857 -0.9343953571428572C16.543757142857142 3.442797142857143 16.207585714285713 3.3035714285714284 15.857142857142858 3.3035714285714284H2.642857142857143Z" stroke-width="1.5"></path><path id="Vector_2" stroke="#6633cc" stroke-linecap="round" stroke-linejoin="round" d="M1.3214285714285714 7.928571428571429h15.857142857142858" stroke-width="1.5"></path><path id="Vector_3" stroke="#6633cc" stroke-linecap="round" stroke-linejoin="round" d="M4.625 1.3214285714285714v3.9642857142857144" stroke-width="1.5"></path><path id="Vector_4" stroke="#6633cc" stroke-linecap="round" stroke-linejoin="round" d="M13.875 1.3214285714285714v3.9642857142857144" stroke-width="1.5"></path></g></svg><div class="cta-calendar">Sep 15, 2026</div></div><div class="card-title nav-bar-title">WEBINAR: How to Build Reliability Guardrails for AI-Driven Development</div><p class="card-body cta w-dyn-bind-empty"></p><div class="card-link">Register Now</div></div></a></div></div></div></div><div class="nav-list-link-wrapper"><div class="nav-link-block-holder"><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c05a-70c9bfef" class="nav-link-label"><div>Industry</div></div><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c05d-70c9bfef" class="solutions-nav-industry-collection w-dyn-list"><div role="list" class="solutions-nav-industry-list w-dyn-items"><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c05f-70c9bfef" role="listitem" class="solutions-nav-industry-item w-dyn-item"><a data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c060" href="/solutions/saas" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/6642026fcd4cfc1723363b2b_SaaS%20Icon.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/66420275a1bb6e3828d24921_SaaS%20Hover%20Icon.svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">SaaS</div></div><p class="nav-link-block-paragraph">Improve reliability without slowing down.</p></a></div><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c05f-70c9bfef" role="listitem" class="solutions-nav-industry-item w-dyn-item"><a data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c060" href="/solutions/finserve" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/66420299af4784af848762fa_Finance%20Icon.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/6642029e515616c67f9972c7_Finance%20Hover%20Icon.svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Finance</div></div><p class="nav-link-block-paragraph">Modernize resilience practices and manage cloud compliance.</p></a></div><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c05f-70c9bfef" role="listitem" class="solutions-nav-industry-item w-dyn-item"><a data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c060" href="/solutions/retail" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/664202c6b77f24c4b1e8f28a_Reatil%20Icon.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/664202ca0f5fc4079134d90c_Retail%20Hover%20Icon.svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Retail</div></div><p class="nav-link-block-paragraph">Eliminate revenue-impacting downtime.</p></a></div></div></div></div><div class="nav-link-block-holder"><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c06b-70c9bfef" class="nav-link-label"><div>Use Case</div></div><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c06e-70c9bfef" class="solutions-nav-industry-collection w-dyn-list"><div role="list" class="solutions-nav-industry-list w-dyn-items"><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c070-70c9bfef" role="listitem" class="solutions-nav-industry-item w-dyn-item"><a data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c071" href="/solutions/build-a-reliability-program" class="nav-link-block-updated-variant w-inline-block"><div>Build a Reliability Program</div></a></div><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c070-70c9bfef" role="listitem" class="solutions-nav-industry-item w-dyn-item"><a data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c071" href="/solutions/it-governance-and-compliance" class="nav-link-block-updated-variant w-inline-block"><div>IT Governance & Compliance</div></a></div><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c070-70c9bfef" role="listitem" class="solutions-nav-industry-item w-dyn-item"><a data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c071" href="/solutions/shift-left-reliability-testing" class="nav-link-block-updated-variant w-inline-block"><div>Shift-Left Reliability Testing</div></a></div><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c070-70c9bfef" role="listitem" class="solutions-nav-industry-item w-dyn-item"><a data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c071" href="/solutions/tune-observability" class="nav-link-block-updated-variant w-inline-block"><div>Fine-Tune Monitors & Alerts</div></a></div><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c070-70c9bfef" role="listitem" class="solutions-nav-industry-item w-dyn-item"><a data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c071" href="/solutions/cloud-migrations" class="nav-link-block-updated-variant w-inline-block"><div>De-Risk Cloud Migrations</div></a></div><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c070-70c9bfef" role="listitem" class="solutions-nav-industry-item w-dyn-item"><a data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c071" href="/solutions/validate-runbooks-and-dr" class="nav-link-block-updated-variant w-inline-block"><div>Validate Runbooks & DR Plans</div></a></div><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c070-70c9bfef" role="listitem" class="solutions-nav-industry-item w-dyn-item"><a data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c071" href="/solutions/aws" class="nav-link-block-updated-variant w-inline-block"><div>Resiliency on AWS</div></a></div><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c070-70c9bfef" role="listitem" class="solutions-nav-industry-item w-dyn-item"><a data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c071" href="/solutions/recreate-incidents-and-outages" class="nav-link-block-updated-variant w-inline-block"><div>Recreate Incidents and Outages</div></a></div><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c070-70c9bfef" role="listitem" class="solutions-nav-industry-item w-dyn-item"><a data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c071" href="/solutions/find-outages-before-they-happen" class="nav-link-block-updated-variant w-inline-block"><div>Find Outages Before They Happen</div></a></div><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c070-70c9bfef" role="listitem" class="solutions-nav-industry-item w-dyn-item"><a data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c071" href="/solutions/improve-ai-reliability" class="nav-link-block-updated-variant w-inline-block"><div>Improve AI Reliability</div></a></div></div></div></div></div></div><div class="nav-devider-line-bot"></div><div class="nav-devider-line-top"></div></nav></div><div data-hover="false" data-delay="0" class="nav-dropdown-updated w-dropdown"><div class="nav-dropdown-toggle-updated w-dropdown-toggle"><div>Product</div><div class="dropdown-arrow-wrap"><div class="dropdown-arrow w-embed"><svg width="8" height="8" viewBox="0 0 8 8" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<path d="M1 3L4 6L7 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
|
||
</svg></div></div></div><nav class="nav-dropdown-list-updated w-dropdown-list"><div class="nav-dropdown-list-inner"><div class="nav-list-cta"><div class="column gap-8px"><div class="nav-list-cta-heading max-custom">The Enterprise Reliability Platform</div><p class="nav-cta-paragraph">See how Gremlin helps organizations modernize their approach to reliability.</p><a href="/product" class="nav-cta-button top-1rem w-button">PLATFORM OVERVIEW</a></div><div class="hide w-embed"><style>
|
||
@media only screen and (min-width: 768px) {
|
||
.nav-list-cta {
|
||
background: radial-gradient(100% 400% at 0% 33.19%, #1F1638 0%, #311173 100%);
|
||
}
|
||
}
|
||
</style></div><div class="w-dyn-list"><div role="list" class="w-dyn-items"><div role="listitem" class="collection-item-5 w-dyn-item"><a href="https://www.gremlin.com/webinars/speed-and-resilience-how-to-build-reliability-guardrails-for-ai-driven-development" class="cta-card-link-wrap w-inline-block"><div class="card-base card-small card-shadow card-gradient-soft nav-cta"><div class="div-block-110"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="-0.75 -0.75 20 20" id="Blank-Calendar--Streamline-Core" height="20" width="20"><desc>Blank Calendar Streamline Icon: https://streamlinehq.com</desc><g id="blank-calendar--blank-calendar-date-day-month-empty"><path id="Vector" stroke="#6633cc" stroke-linecap="round" stroke-linejoin="round" d="M2.642857142857143 3.3035714285714284c-0.3504692857142857 0 -0.6865746428571428 0.13922571428571429 -0.9343953571428572 0.38703321428571424C1.4606542857142855 3.938425357142857 1.3214285714285714 4.2745307142857145 1.3214285714285714 4.625V15.857142857142858c0 0.3504428571428571 0.13922571428571429 0.6866142857142856 0.38703321428571424 0.9343821428571427C1.9562825 17.039292857142858 2.292387857142857 17.178571428571427 2.642857142857143 17.178571428571427h13.214285714285714c0.3504428571428571 0 0.6866142857142856 -0.13927857142857142 0.9343821428571427 -0.38704642857142857S17.178571428571427 16.207585714285713 17.178571428571427 15.857142857142858V4.625c0 -0.3504692857142857 -0.13927857142857142 -0.6865746428571428 -0.38704642857142857 -0.9343953571428572C16.543757142857142 3.442797142857143 16.207585714285713 3.3035714285714284 15.857142857142858 3.3035714285714284H2.642857142857143Z" stroke-width="1.5"></path><path id="Vector_2" stroke="#6633cc" stroke-linecap="round" stroke-linejoin="round" d="M1.3214285714285714 7.928571428571429h15.857142857142858" stroke-width="1.5"></path><path id="Vector_3" stroke="#6633cc" stroke-linecap="round" stroke-linejoin="round" d="M4.625 1.3214285714285714v3.9642857142857144" stroke-width="1.5"></path><path id="Vector_4" stroke="#6633cc" stroke-linecap="round" stroke-linejoin="round" d="M13.875 1.3214285714285714v3.9642857142857144" stroke-width="1.5"></path></g></svg><div class="cta-calendar">Sep 15, 2026</div></div><div class="card-title nav-bar-title">WEBINAR: How to Build Reliability Guardrails for AI-Driven Development</div><p class="card-body cta w-dyn-bind-empty"></p><div class="card-link">Register Now</div></div></a></div></div></div></div><div class="nav-list-link-wrapper"><div class="nav-link-block-holder size"><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c009-70c9bfef" class="nav-link-label"><div>Product</div></div><a id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c00c-70c9bfef" data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c00c" href="/product/reliability-management" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661fef557e3b3fdcf81d55fe_Sheet.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/66195ba7ce8e67a898602c2f_Group%205%20(1).png" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Reliability Management</div></div><p class="nav-link-block-paragraph max-custom-desktop">Find and fix reliability risks at enterprise scale.</p></a><a id="w-node-_1f86783c-1863-9d47-ffc6-16cb63221f83-70c9bfef" data-w-id="1f86783c-1863-9d47-ffc6-16cb63221f83" href="/product/foresight" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/6a60da550591a810dcf4fab9_65a9d1f430f841ac1facbc252849cbfc_icon-foresight-inactive.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/6a60da6ce9c99e473db2167a_72c0403ea1257cfe88a01318728d911e_icon-foresight-active.svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">NEW: Foresight AI</div></div><p class="nav-link-block-paragraph max-custom-desktop">Build resilience at AI speed across everything you ship and run.</p></a><a id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c015-70c9bfef" data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c015" href="/product/chaos-engineering" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661fef555f2c92051be1ea03_Bottle.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/6619607b58b636bc4d5bbe54_Group%204%20(1).svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Chaos Engineering</div></div><p class="nav-link-block-paragraph max-custom-desktop">Build trust in complex systems with safe and secure Chaos Engineering.</p></a></div><div class="nav-link-block-holder size fix"><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c01f-70c9bfef" class="nav-link-label"><div>Core Technologies</div></div></div><div class="nav-product-collection w-dyn-list"><div role="list" class="nav-link-block-holder size-copy w-dyn-items"><div role="listitem" class="nav-link-collection-item w-dyn-item"><a data-w-id="0a2e360a-35b0-96d4-18f7-4c9082721085" href="/technologies/fault-injection" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/67be3d98fcd70a64b68117f3_661fef55af548c793e7d81e1_syring.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/67be3d9bb971690c33b5c90b_6619607cef9ad6800af719ce_syringe%402x%20(1).svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Fault Injection</div></div><p class="nav-link-block-paragraph max-custom-desktop">Safely and securely test system robustness by injecting failures.</p></a></div><div role="listitem" class="nav-link-collection-item w-dyn-item"><a data-w-id="0a2e360a-35b0-96d4-18f7-4c9082721085" href="/technologies/reliability-scoring" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/67be3e8a2fcb7fb4beeecc64_661fef56a618d30954d52bf9_%5Bicon%5D%20%20Scoring.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/67be3e86a67aa40dcb219ad8_6619607240f5a77804f29ec1_%5Bicon%5D%20Reliability%20Scoring%20(1).svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Reliability Scoring</div></div><p class="nav-link-block-paragraph max-custom-desktop">Define, measure, and monitor service reliability across the enterprise.</p></a></div><div role="listitem" class="nav-link-collection-item w-dyn-item"><a data-w-id="0a2e360a-35b0-96d4-18f7-4c9082721085" href="/technologies/detected-risks" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/67be3df851b8fb28feef5b6b_661fef5540a826e1844e3647_exclamation.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/67be3dfb7da02da09c8d529f_66196071ce8e67a8986423a2_exclamation-circle%402x%20(1).svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Detected Risks</div></div><p class="nav-link-block-paragraph max-custom-desktop">Continuously monitor systems for critical reliability risks.</p></a></div><div role="listitem" class="nav-link-collection-item w-dyn-item"><a data-w-id="0a2e360a-35b0-96d4-18f7-4c9082721085" href="/technologies/dependency-discovery" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/67be3f06199615571bb04f94_661fef5579870fd1603efde8_%5Bicon%5D%20.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/67be3f003a925e1d5a3783e6_661960717509e38ef59e24bd_%5Bicon%5D%20Dependency%20Discovery%20(1).svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Dependency Discovery</div></div><p class="nav-link-block-paragraph max-custom-desktop">Automatically identify and test your system dependencies.</p></a></div><div role="listitem" class="nav-link-collection-item w-dyn-item"><a data-w-id="0a2e360a-35b0-96d4-18f7-4c9082721085" href="/technologies/failure-flags" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/67be3e442359533f0f3a18c9_66a150c719a52270e832d774_%5Bicon%5D%20code-static.avif" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/67be3e4570e6c7b6f37c4dea_66a150d6c101c63481bf1d44_%5Bicon%5D%20code-hover.avif" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Failure Flags</div></div><p class="nav-link-block-paragraph max-custom-desktop">Test the resiliency of applications and serverless functions.</p></a></div><div role="listitem" class="nav-link-collection-item w-dyn-item"><a data-w-id="0a2e360a-35b0-96d4-18f7-4c9082721085" href="/technologies/gremlin-private-edition" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/67be3f39699f42b165b61843_67ab7992db38684d97e1c827_b7358ef14c18faac313fff5d66594939_server%402x.png" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/67be3f3b7245561c49f200a0_67ab79ad3b7564303b4cba33_server%402x-hover.png" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Private Edition</div></div><p class="nav-link-block-paragraph max-custom-desktop">Deploy a private Gremlin instance in your private network.</p></a></div><div role="listitem" class="nav-link-collection-item w-dyn-item"><a data-w-id="0a2e360a-35b0-96d4-18f7-4c9082721085" href="/technologies/reliability-intelligence" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/689259dd49953af6f9524efc_nav-ri-nohover.png" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/689259e0b88ac6941a66065f_nav-ri-hover.png" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Reliability Intelligence</div></div><p class="nav-link-block-paragraph max-custom-desktop">Empower your teams with custom-tailored reliability analyses, recommendations, and insights.</p></a></div><div role="listitem" class="nav-link-collection-item w-dyn-item"><a data-w-id="0a2e360a-35b0-96d4-18f7-4c9082721085" href="/technologies/disaster-recovery-testing" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/6977d6006a9ea4e73c2465e5_nav-drt-nohover.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/6977d602ff60ebb670bece53_nav-drt-hover.svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Disaster Recovery Testing</div></div><p class="nav-link-block-paragraph max-custom-desktop">Validate region failover processes, disaster recovery plans, incident response procedures, and more.</p></a></div></div></div></div></div><div class="nav-devider-line-bot"></div><div class="nav-devider-line-top"></div></nav></div><a href="/pricing" class="nav-link-updated w-nav-link">Pricing</a><a href="/customers" class="nav-link-updated w-nav-link">Customers</a><div data-hover="false" data-delay="0" class="nav-dropdown-updated w-dropdown"><div class="nav-dropdown-toggle-updated w-dropdown-toggle"><div>Resources</div><div class="dropdown-arrow-wrap"><div class="dropdown-arrow w-embed"><svg width="8" height="8" viewBox="0 0 8 8" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<path d="M1 3L4 6L7 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
|
||
</svg></div></div></div><nav class="nav-dropdown-list-updated w-dropdown-list"><div class="nav-dropdown-list-inner"><div class="nav-list-cta"><div class="column gap-8px"><div class="nav-list-cta-heading max-custom">Looking for something?</div><p class="nav-cta-paragraph">Learn how to build and manage more reliable systems with our latest whitepapers, webinars, blogs and more. All Gremlin resources, right here.</p><a href="/resources" class="nav-cta-button top-1rem w-button">RESOURCE HUB</a></div><div class="w-dyn-list"><div role="list" class="w-dyn-items"><div role="listitem" class="collection-item-5 w-dyn-item"><a href="https://www.gremlin.com/webinars/speed-and-resilience-how-to-build-reliability-guardrails-for-ai-driven-development" class="cta-card-link-wrap w-inline-block"><div class="card-base card-small card-shadow card-gradient-soft nav-cta"><div class="div-block-110"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="-0.75 -0.75 20 20" id="Blank-Calendar--Streamline-Core" height="20" width="20"><desc>Blank Calendar Streamline Icon: https://streamlinehq.com</desc><g id="blank-calendar--blank-calendar-date-day-month-empty"><path id="Vector" stroke="#6633cc" stroke-linecap="round" stroke-linejoin="round" d="M2.642857142857143 3.3035714285714284c-0.3504692857142857 0 -0.6865746428571428 0.13922571428571429 -0.9343953571428572 0.38703321428571424C1.4606542857142855 3.938425357142857 1.3214285714285714 4.2745307142857145 1.3214285714285714 4.625V15.857142857142858c0 0.3504428571428571 0.13922571428571429 0.6866142857142856 0.38703321428571424 0.9343821428571427C1.9562825 17.039292857142858 2.292387857142857 17.178571428571427 2.642857142857143 17.178571428571427h13.214285714285714c0.3504428571428571 0 0.6866142857142856 -0.13927857142857142 0.9343821428571427 -0.38704642857142857S17.178571428571427 16.207585714285713 17.178571428571427 15.857142857142858V4.625c0 -0.3504692857142857 -0.13927857142857142 -0.6865746428571428 -0.38704642857142857 -0.9343953571428572C16.543757142857142 3.442797142857143 16.207585714285713 3.3035714285714284 15.857142857142858 3.3035714285714284H2.642857142857143Z" stroke-width="1.5"></path><path id="Vector_2" stroke="#6633cc" stroke-linecap="round" stroke-linejoin="round" d="M1.3214285714285714 7.928571428571429h15.857142857142858" stroke-width="1.5"></path><path id="Vector_3" stroke="#6633cc" stroke-linecap="round" stroke-linejoin="round" d="M4.625 1.3214285714285714v3.9642857142857144" stroke-width="1.5"></path><path id="Vector_4" stroke="#6633cc" stroke-linecap="round" stroke-linejoin="round" d="M13.875 1.3214285714285714v3.9642857142857144" stroke-width="1.5"></path></g></svg><div class="cta-calendar">Sep 15, 2026</div></div><div class="card-title nav-bar-title">WEBINAR: How to Build Reliability Guardrails for AI-Driven Development</div><p class="card-body cta w-dyn-bind-empty"></p><div class="card-link">Register Now</div></div></a></div></div></div></div><div class="nav-list-link-wrapper"><div class="nav-link-block-holder"><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c08c-70c9bfef" class="nav-link-label"><div>Our resources</div></div><a id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c08f-70c9bfef" data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c08f" href="/blog" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661ff094b019617172373e94_%5Bicon%5D%20Blog-2.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/6619632c01898085360325ae_%5Bicon%5D%20Blog%20(1).svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Blog</div></div><p class="nav-link-block-paragraph">Get the latest Gremlin news and reliability best practices.</p></a><a id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c098-70c9bfef" data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c098" href="/docs" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661ff094c03f25a6ee3536a3_%5Bicon%5D%20Docs-2.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/6619632c82bd247fa7b16d65_%5Bicon%5D%20Docs%20(1).svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Documentation</div></div><p class="nav-link-block-paragraph">Gremlin's software documentation.</p></a><a id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c0aa-70c9bfef" data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c0aa" href="/resources?webflow%5BrefinementList%5D%5BarticleLabel%5D%5B0%5D=Webinars" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/6925f377ebf8982c392b6d6d_22c086110e014298d7e448c84aa916a9_webinar-static.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/6925f3a1183523aa51be8ae7_2208aa01a50a5da4b6f6bceedc1a460a_webinar-active.svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Webinars</div></div><p class="nav-link-block-paragraph">Expert-led webinars with reliability guidance, tips, and insights.</p></a><a id="w-node-dd454d92-ea88-2368-52a4-842ef54b0da5-70c9bfef" data-w-id="dd454d92-ea88-2368-52a4-842ef54b0da5" href="/community/tutorials" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661ff0940f7c60773272d708_%5Bicon%5D%20Tutorials-2.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/6619632c58f3010cd07a6c26_%5Bicon%5D%20Tutorials%20(1).svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">How-to guides</div></div><p class="nav-link-block-paragraph">Step-by-step guides to help you become a reliability expert.</p></a><a id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c0b3-70c9bfef" data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c0b3" href="https://support-site.gremlin.com/" target="_blank" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661ff094999e60987533e9dd_%5Bicon%5D%20Support%20Center-2.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/6619632c3e1bcee0b41808d7_%5Bicon%5D%20Support%20Center%20(1).svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Support Center</div></div><p class="nav-link-block-paragraph">Initiate and manage support requests.</p></a><a id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c0bc-70c9bfef" data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c0bc" href="/demo" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661ff094c88d3676eb86bd66_%5Bicon%5D%20Request%20a%20Demo-2.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661963332264205a73706ac6_%5Bicon%5D%20Request%20a%20Demo%20(1).svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Request demo</div></div><p class="nav-link-block-paragraph">Book a live demo with a Gremlin reliability expert.</p></a><a id="w-node-_63bd6b3f-f208-d81e-dc09-2937e0db161a-70c9bfef" data-w-id="63bd6b3f-f208-d81e-dc09-2937e0db161a" href="/tools/recommended-scenarios" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661fef557e3b3fdcf81d55fe_Sheet.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/66195ba7ce8e67a898602c2f_Group%205%20(1).png" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Recommended Scenarios</div></div><p class="nav-link-block-paragraph">Prebuilt ready-to-run tests for common failure modes.</p></a><a id="w-node-_47383b12-702b-921b-0726-c44a58f53964-70c9bfef" data-w-id="47383b12-702b-921b-0726-c44a58f53964" href="/demo-center" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/67b78ffce6e16ff1d114c6dd_cce96963e82c33a11118cc586afdfa3d_%5Bicon%5D%20product%20tour%20-%20default.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/67b790522a5b21aad7274d81_6b30a8b7d80f9982b6adca431c0a15e4_%5Bicon%5D%20product%20tour%20-%20highlighted.svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Self-guided tours</div></div><p class="nav-link-block-paragraph">Experience Gremlin through interactive, self-guided product tours.</p></a><a id="w-node-f3b5feef-f209-754a-497b-055c7044d23d-70c9bfef" data-w-id="f3b5feef-f209-754a-497b-055c7044d23d" href="/environments" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661960724e5a129a603737ab_%5Bicon%5D%20Dependency%20Discovery.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661960717509e38ef59e24bd_%5Bicon%5D%20Dependency%20Discovery%20(1).svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Testable Environments</div></div><p class="nav-link-block-paragraph">Learn how Gremlin helps you build resilient workloads on cloud services.</p></a></div></div></div><div class="nav-devider-line-top"></div><div class="nav-devider-line-bot"></div></nav></div><div data-hover="false" data-delay="0" class="nav-dropdown-updated w-dropdown"><div class="nav-dropdown-toggle-updated w-dropdown-toggle"><div>Company</div><div class="dropdown-arrow-wrap"><div class="dropdown-arrow w-embed"><svg width="8" height="8" viewBox="0 0 8 8" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<path d="M1 3L4 6L7 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
|
||
</svg></div></div></div><nav class="nav-dropdown-list-updated w-dropdown-list"><div class="nav-dropdown-list-inner"><div class="nav-list-cta"><div class="column gap-8px _100"><div class="nav-list-cta-heading max-custom">Check us out</div><p class="nav-cta-paragraph">We're on a mission to help every company build more reliable software.</p><div class="nav-button-wrap-list"><a id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c0d6-70c9bfef" href="/about" class="nav-cta-button w-button">COMPANY OVERVIEW</a></div></div><div class="w-dyn-list"><div role="list" class="w-dyn-items"><div role="listitem" class="collection-item-5 w-dyn-item"><a href="https://www.gremlin.com/webinars/speed-and-resilience-how-to-build-reliability-guardrails-for-ai-driven-development" class="cta-card-link-wrap w-inline-block"><div class="card-base card-small card-shadow card-gradient-soft nav-cta"><div class="div-block-110"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="-0.75 -0.75 20 20" id="Blank-Calendar--Streamline-Core" height="20" width="20"><desc>Blank Calendar Streamline Icon: https://streamlinehq.com</desc><g id="blank-calendar--blank-calendar-date-day-month-empty"><path id="Vector" stroke="#6633cc" stroke-linecap="round" stroke-linejoin="round" d="M2.642857142857143 3.3035714285714284c-0.3504692857142857 0 -0.6865746428571428 0.13922571428571429 -0.9343953571428572 0.38703321428571424C1.4606542857142855 3.938425357142857 1.3214285714285714 4.2745307142857145 1.3214285714285714 4.625V15.857142857142858c0 0.3504428571428571 0.13922571428571429 0.6866142857142856 0.38703321428571424 0.9343821428571427C1.9562825 17.039292857142858 2.292387857142857 17.178571428571427 2.642857142857143 17.178571428571427h13.214285714285714c0.3504428571428571 0 0.6866142857142856 -0.13927857142857142 0.9343821428571427 -0.38704642857142857S17.178571428571427 16.207585714285713 17.178571428571427 15.857142857142858V4.625c0 -0.3504692857142857 -0.13927857142857142 -0.6865746428571428 -0.38704642857142857 -0.9343953571428572C16.543757142857142 3.442797142857143 16.207585714285713 3.3035714285714284 15.857142857142858 3.3035714285714284H2.642857142857143Z" stroke-width="1.5"></path><path id="Vector_2" stroke="#6633cc" stroke-linecap="round" stroke-linejoin="round" d="M1.3214285714285714 7.928571428571429h15.857142857142858" stroke-width="1.5"></path><path id="Vector_3" stroke="#6633cc" stroke-linecap="round" stroke-linejoin="round" d="M4.625 1.3214285714285714v3.9642857142857144" stroke-width="1.5"></path><path id="Vector_4" stroke="#6633cc" stroke-linecap="round" stroke-linejoin="round" d="M13.875 1.3214285714285714v3.9642857142857144" stroke-width="1.5"></path></g></svg><div class="cta-calendar">Sep 15, 2026</div></div><div class="card-title nav-bar-title">WEBINAR: How to Build Reliability Guardrails for AI-Driven Development</div><p class="card-body cta w-dyn-bind-empty"></p><div class="card-link">Register Now</div></div></a></div></div></div></div><div class="nav-list-link-wrapper-horizontal"><div class="nav-link-block-holder-horizontal"><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c0da-70c9bfef" class="nav-link-label"><div>Get to know us</div></div><a id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c0dd-70c9bfef" data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c0dd" href="/media" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661ff168a52f869965dba6eb_%5Bicon%5D%20Media%20News%20%26%20Resources-2.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661964d388dc7bf83f49df4f_%5Bicon%5D%20Media%20News%20%26%20Resources%20(1).svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Media news & resources</div></div><p class="nav-link-block-paragraph">News, coverage, and resources.</p></a><a id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c0ef-70c9bfef" data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c0ef" href="/contact" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661ff094ff224116c7c8625c_%5Bicon%5D%20Office%20Hours-2.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/6619632c32d34f3039b34b2d_%5Bicon%5D%20Office%20Hours%20(1).svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Contact us</div></div><p class="nav-link-block-paragraph">Get in touch with Gremlin.</p></a><a id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c0f8-70c9bfef" href="#" class="button hide w-button">CONTACT US</a></div><div class="nav-link-block-holder-horizontal"><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c0fb-70c9bfef" class="nav-link-label"><div>Connect with us</div></div><a id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c0fe-70c9bfef" data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c0fe" href="/resources?events=true" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661ff168bab2f334d912edc8_Group%205-2.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661964d3dc909f4e3664082a_Group%204.svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Events</div></div><p class="nav-link-block-paragraph">Workshops, meetups, webinars and more.</p></a><a id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c107-70c9bfef" data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c107" href="https://join.slack.com/t/gremlinusercommunity/shared_invite/zt-2ie2f4fyo-DvVaHh8CgGfxJgJwrAUWSQ" target="_blank" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661ff1686663f4ac5413928a_%5Bicon%5D%20Gremlin%20User%20Community-2.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661964d3fb73fe1b7bcac3cd_%5Bicon%5D%20Gremlin%20User%20Community%20(1).svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Gremlin User Community</div></div><p class="nav-link-block-paragraph">Join our Slack community of Gremlin users and builders.</p></a></div><div class="nav-link-block-holder-horizontal"><div id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c111-70c9bfef" class="nav-link-label"><div>Join us</div></div><a id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c114-70c9bfef" data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c114" href="/partners" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661ff168eb6b66a8939aa7c4_%5Bicon%5D%20Partners-2.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661964d3d56be8530456ebe0_%5Bicon%5D%20Partners%20(1).svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Partners</div></div><p class="nav-link-block-paragraph">Help make the internet more reliable, together.</p></a><a id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c11d-70c9bfef" data-w-id="e644ad4c-2d1f-3e0d-6a23-c35170c9c11d" href="/team" class="nav-link-block-updated w-inline-block"><div class="nav-link-block-title"><div class="nav-link-icon-wrapper"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661ff169bad09ffbc2bed048_%5Bicon%5D%20Careers-2.svg" loading="lazy" alt="" class="nav-link-icon-static"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/661964d2adcffd50847a63e9_%5Bicon%5D%20Careers%20(1).svg" loading="lazy" alt="" class="nav-link-icon-hover"/></div><div class="nav-link-block-title-text">Careers</div></div><p class="nav-link-block-paragraph">Join the team that makes Gremlin.</p></a></div></div></div><div class="nav-devider-line-bot"></div><div class="nav-devider-line-top"></div></nav></div></div><div class="menu-wrap-right"><div id="autocomplete" class="nav-search-2 hide-on-mobile"><div class="absolute-embed-2 w-embed"><svg width="100%" height="100%" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<path d="M9.16667 15.8333C12.8486 15.8333 15.8333 12.8486 15.8333 9.16667C15.8333 5.48477 12.8486 2.5 9.16667 2.5C5.48477 2.5 2.5 5.48477 2.5 9.16667C2.5 12.8486 5.48477 15.8333 9.16667 15.8333Z" stroke="currentcolor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
||
<path d="M17.5 17.5L13.875 13.875" stroke="currentcolor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
||
</svg></div><div class="w-embed w-script"><link
|
||
rel="stylesheet"
|
||
href="https://cdn.jsdelivr.net/npm/@algolia/autocomplete-theme-classic"
|
||
/>
|
||
<style>
|
||
:root {
|
||
--aa-icon-size: 80px;
|
||
}
|
||
</style>
|
||
<script>
|
||
let timerId;
|
||
let timeout = 400;
|
||
|
||
function debouncePromise(fn, time) {
|
||
let timer = undefined;
|
||
|
||
return function debounced(...args) {
|
||
if (timer) {
|
||
clearTimeout(timer); // Clear the timeout first if it's already defined.
|
||
}
|
||
|
||
return new Promise((resolve) => {
|
||
timer = setTimeout(() => resolve(fn(...args)), time);
|
||
});
|
||
};
|
||
}
|
||
|
||
const debounced = debouncePromise((items) => Promise.resolve(items), 400);
|
||
|
||
const { autocomplete, getAlgoliaResults } = window["@algolia/autocomplete-js"];
|
||
const { setIsOpen } = autocomplete({
|
||
container: "#autocomplete",
|
||
placeholder: "Start typing to search resources...",
|
||
detachedMediaQuery: "",
|
||
openOnFocus: true,
|
||
getSources({ query, state }) {
|
||
if (!query) {
|
||
return [];
|
||
}
|
||
|
||
return debounced([
|
||
{
|
||
sourceId: "webflow",
|
||
getItems() {
|
||
return getAlgoliaResults({
|
||
searchClient,
|
||
queries: [
|
||
{
|
||
indexName: indexNames,
|
||
query,
|
||
params: {
|
||
attributesToSnippet: ["name:100", "shortDescription:100"],
|
||
snippetEllipsisText: "…",
|
||
hitsPerPage: 100,
|
||
},
|
||
},
|
||
],
|
||
});
|
||
},
|
||
templates: {
|
||
header() {
|
||
return "SEARCH RESULTS";
|
||
},
|
||
item({ item, components, html }) {
|
||
return html`<a class="aa-ItemLink" href="${item.slug}">
|
||
<div class="return-link-class">
|
||
<div class="aa-ItemContentBody">
|
||
<div class="return-image-holder">
|
||
<div class="hide">
|
||
${components.Highlight({
|
||
hit: item,
|
||
attribute: "articleLabel",
|
||
})}
|
||
</div>
|
||
<div class="return-heading-class">
|
||
${components.Highlight({
|
||
hit: item,
|
||
attribute: "name",
|
||
})}
|
||
</div>
|
||
<div class="return-image-image"></div>
|
||
</div>
|
||
<div class="return-paragraph-class">
|
||
${components.Highlight({
|
||
hit: item,
|
||
attribute: "shortDescription",
|
||
})}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</a>`;
|
||
},
|
||
noResults() {
|
||
return "No posts for this query.";
|
||
},
|
||
},
|
||
getItemUrl({ item }) {
|
||
return "/" + item.slug;
|
||
},
|
||
},
|
||
]);
|
||
},
|
||
});
|
||
|
||
document.addEventListener('keydown', (event) => {
|
||
if (event.metaKey && event.key.toLowerCase() === 'k') {
|
||
setIsOpen(true);
|
||
}
|
||
});
|
||
</script>
|
||
|
||
<script>
|
||
// Function to check for the existence of the element and add class if found
|
||
function checkAndAddClass() {
|
||
var detachedContainer = document.querySelector('.aa-DetachedContainer');
|
||
|
||
// Check if the element exists
|
||
if (detachedContainer) {
|
||
// Add the class if the element exists
|
||
detachedContainer.classList.add('aa-DetachedContainer--modal');
|
||
clearInterval(checkInterval); // Stop the interval once the class is added
|
||
addClassOnResize(); // Call the function to check on every resize
|
||
}
|
||
}
|
||
|
||
// Function to check on every resize with a delay of 100ms
|
||
function addClassOnResize() {
|
||
window.addEventListener('resize', function() {
|
||
setTimeout(function() {
|
||
var detachedContainer = document.querySelector('.aa-DetachedContainer');
|
||
|
||
// Check if the element exists and if it does not have the class
|
||
if (detachedContainer && !detachedContainer.classList.contains('aa-DetachedContainer--modal')) {
|
||
// Add the class on resize if the condition is met
|
||
detachedContainer.classList.add('aa-DetachedContainer--modal');
|
||
}
|
||
}, 100);
|
||
});
|
||
}
|
||
|
||
// Set up an interval to check for the existence of the element
|
||
var checkInterval = setInterval(checkAndAddClass, 100);
|
||
</script></div><div class="hide w-embed w-script"><script>
|
||
// Wrap the code inside an event listener for 'DOMContentLoaded'
|
||
document.addEventListener('DOMContentLoaded', function() {
|
||
// Get the responsive-clicker element
|
||
var responsiveClicker = document.getElementById('responsive-click');
|
||
|
||
// Add a click event listener to the responsive-clicker element
|
||
responsiveClicker.addEventListener('click', function() {
|
||
// Get the element with classname aa-DetachedSearchButton
|
||
var detachedSearchButton = document.querySelector('.aa-DetachedSearchButton');
|
||
|
||
// Check if the element is found
|
||
if (detachedSearchButton) {
|
||
// Click the element with classname aa-DetachedSearchButton
|
||
detachedSearchButton.click();
|
||
} else {
|
||
console.error('Element with classname aa-DetachedSearchButton not found');
|
||
}
|
||
});
|
||
});
|
||
</script>
|
||
|
||
|
||
<style>
|
||
.aa-DetachedSearchButtonQuery{
|
||
display:none !important;
|
||
}
|
||
.aa-DetachedSearchButtonPlaceholder{
|
||
display:none !important;
|
||
}
|
||
.aa-SubmitIcon{
|
||
display: none !important;
|
||
}
|
||
.aa-DetachedSearchButtonIcon{
|
||
display:none !important;
|
||
}
|
||
.aa-DetachedSearchButton{
|
||
width: 32px !important;
|
||
height: 32px !important;
|
||
background: transparent !important;
|
||
border: none !important;
|
||
}
|
||
.aa-DetachedCancelButton{
|
||
display: none !important;
|
||
}
|
||
.aa-Label{
|
||
display: none !important;
|
||
}
|
||
.aa-Input{
|
||
padding-left: 12px !important;
|
||
}
|
||
.aa-DetachedContainer.aa-DetachedContainer--modal{
|
||
max-width: 95vw;
|
||
width: 600px;
|
||
margin-top: 64px;
|
||
padding: 32px;
|
||
left: 0px;
|
||
}
|
||
|
||
.aa-DetachedContainer{
|
||
width: 600px;
|
||
margin-top: 64px;
|
||
padding: 32px;
|
||
top: 0px;
|
||
max-width: 95vw;
|
||
left: 2.5vw;
|
||
|
||
}
|
||
.aa-DetachedFormContainer{
|
||
padding: 0px
|
||
}
|
||
|
||
.aa-Form{
|
||
border: 0 !important;
|
||
box-shadow: none !important;
|
||
outline: none !important;
|
||
}
|
||
.aa-SourceHeader{
|
||
width: 100% !important;
|
||
text-align: center !important;
|
||
background: black !important;
|
||
color: white !important;
|
||
font-weight: 500 !important;
|
||
height: 28px !important;
|
||
line-height: 28px !important;
|
||
font-size: 12px !important;
|
||
margin: 0px !important;
|
||
position: absolute !important;
|
||
top: 0px !important;
|
||
z-index: 3 !important;
|
||
}
|
||
.aa-DetachedOverlay{
|
||
background: rgba(19, 19, 19, 0.75);
|
||
z-index: 9999;
|
||
}
|
||
|
||
.aa-ClearIcon{
|
||
width: 24px;
|
||
height: 24px;
|
||
}
|
||
.aa-ClearButton{
|
||
width: 24px !important;
|
||
padding: 0 !important;
|
||
height: 24px !important;
|
||
}
|
||
/* Original CSS Code */
|
||
.aa-Panel--scrollable {
|
||
overflow: hidden !important;
|
||
padding: 0px !important;
|
||
|
||
}
|
||
.aa-List{
|
||
max-height: 500px !important;
|
||
overflow-x: hidden;
|
||
overflow-y: auto;
|
||
padding-top: 28px !important;
|
||
}
|
||
|
||
.aa-Source{
|
||
max-height:500px;
|
||
border: 1px solid var(--deep-purple);
|
||
border-radius: 6px;
|
||
overflow: hidden;
|
||
|
||
}
|
||
|
||
.aa-DetachedFormContainer{
|
||
border: 0 !important;
|
||
}
|
||
.aa-Item{
|
||
padding: 0;
|
||
margin: 0px;
|
||
}
|
||
|
||
.return-link-class {
|
||
width: 100% !important;
|
||
padding: 8px !important;
|
||
border-bottom: 1px solid var(--dark-purple-bg) !important;
|
||
text-decoration: none !important;
|
||
}
|
||
|
||
.return-link-item:hover {
|
||
background-color: hsla(255, 43.33%, 23.53%, 0.15) !important;
|
||
}
|
||
.return-paragraph-class {
|
||
display: -webkit-box;
|
||
-webkit-box-orient: vertical;
|
||
overflow: hidden;
|
||
-webkit-line-clamp: 2; /* Change the number to the desired line limit */
|
||
line-height: 1.3em;
|
||
}
|
||
.aa-ItemLink{
|
||
display: flex !important;
|
||
width:100% !important;
|
||
}
|
||
|
||
|
||
.aa-InputWrapperPrefix{
|
||
display: none !important;
|
||
}
|
||
|
||
</style>
|
||
|
||
<style>
|
||
.return-link-class:hover .return-image-image {
|
||
opacity: 1;
|
||
}
|
||
|
||
.return-link-class .return-image-image {
|
||
opacity: 0;
|
||
transition: 0.3s;
|
||
}
|
||
.aa-GradientBottom{
|
||
display: none !important;
|
||
}
|
||
.aa-Item{
|
||
padding: 0px !important;
|
||
}
|
||
|
||
.aa-SourceNoResults {
|
||
position: relative;
|
||
background: white;
|
||
z-index: 3 !important;
|
||
}
|
||
</style></div></div><div class="nav-button-wrap"><a href="https://app.gremlin.com/login" target="_blank" class="nav-button variant w-button">Log In</a><a href="/demo" id="w-node-e644ad4c-2d1f-3e0d-6a23-c35170c9c130-70c9bfef" class="nav-button w-button">GET A DEMO</a></div></div></div></nav><div class="responsive-nav-button-wrap"><div class="nav-search-wrap"><a id="responsive-click" href="#" class="nav-search w-inline-block"><div class="w-embed"><svg width="100%" height="100%" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<path d="M9.16667 15.8333C12.8486 15.8333 15.8333 12.8486 15.8333 9.16667C15.8333 5.48477 12.8486 2.5 9.16667 2.5C5.48477 2.5 2.5 5.48477 2.5 9.16667C2.5 12.8486 5.48477 15.8333 9.16667 15.8333Z" stroke="currentcolor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
||
<path d="M17.5 17.5L13.875 13.875" stroke="currentcolor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
||
</svg></div></a></div><div class="nav-menu-button-holder"><div scroll="both" class="nav-menu-button-2 w-nav-button"><div class="nav-menu-button-wrap-2"><div class="nav-lines-new nav-line-1"></div><div class="nav-lines-new nav-line-2"></div><div class="nav-lines-new nav-line-3"></div></div></div></div></div></div></div><div class="nav-divider-line---animated"></div><div class="banner-code"><div class="hidden w-embed w-script"><script type="application/ld+json">
|
||
{
|
||
"@context": "https://schema.org",
|
||
"@type": "Organization",
|
||
"url": "https://www.gremlin.com/",
|
||
"logo": "https://res.cloudinary.com/gremlin/image/upload/v1667411425/AWS%20re:Invent%20GameDay%202022/Gremlin-Logo-Primary_2x.png",
|
||
"name": "Gremlin",
|
||
"description": "Gremlin helps engineering teams proactively manage reliability at scale.",
|
||
"email": "hello@gremlin.com",
|
||
"telephone": "+1-408-214-9885",
|
||
"address": {
|
||
"@type": "PostalAddress",
|
||
"streetAddress": "440 N Barranca Ave #3101",
|
||
"addressLocality": "Covina",
|
||
"addressCountry": "US",
|
||
"addressRegion": "CA",
|
||
"postalCode": "91723"
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style>
|
||
.top-announcement-bar {
|
||
background: radial-gradient(46.77% 147.55% at 69.9% 62.72%, #311173 0%, #1F1638 100%);
|
||
}
|
||
</style>
|
||
|
||
<script defer>
|
||
// Script to hide announcement banner and store its state in localStorage
|
||
var banner = document.getElementById("announcement-banner");
|
||
var bannerCloseButton = document.getElementById("announcement-banner-close-button");
|
||
var bannerCTA = document.getElementById("announcement-banner-cta").innerText;
|
||
|
||
var storedBannerHidden = localStorage.getItem("announcement_banner_hidden");
|
||
var storedBannerCTA = localStorage.getItem("announcement_banner_cta");
|
||
|
||
if (storedBannerHidden === "true" && bannerCTA === storedBannerCTA) {
|
||
banner.classList.add("hidden");
|
||
}
|
||
else {
|
||
localStorage.setItem("announcement_banner_hidden", "false");
|
||
banner.classList.remove("hidden");
|
||
}
|
||
|
||
bannerCloseButton.addEventListener("click", function(e) {
|
||
localStorage.setItem("announcement_banner_hidden", "true");
|
||
localStorage.setItem("announcement_banner_cta", bannerCTA);
|
||
banner.classList.add("hidden");
|
||
});
|
||
|
||
// Script to adjust padding-top of .section and .nav-menu-mask-inner if #announcement-banner is displayed
|
||
document.addEventListener('DOMContentLoaded', function() {
|
||
// Check if #announcement-banner exists
|
||
var topBanner = document.getElementById('announcement-banner');
|
||
if (topBanner && getComputedStyle(topBanner).getPropertyValue('display') === 'flex') {
|
||
// Calculate the height of the banner
|
||
var topBannerHeight = topBanner.offsetHeight;
|
||
|
||
// Find the first .section element in a row
|
||
var topFirstSection = document.querySelector('.section:first-child');
|
||
if (topFirstSection) {
|
||
// Increase the top padding of the first section by the height value of the banner
|
||
var topCurrentSectionPadding = parseInt(window.getComputedStyle(topFirstSection).paddingTop);
|
||
topFirstSection.style.paddingTop = (topCurrentSectionPadding + topBannerHeight) + 'px';
|
||
}
|
||
|
||
// Check if screen width is smaller than or equal to 991 pixels
|
||
if (window.innerWidth <= 991) {
|
||
// Find .nav-menu-mask-inner element
|
||
var topNavMenuMaskInner = document.querySelector('.nav-menu-mask-inner');
|
||
if (topNavMenuMaskInner) {
|
||
// Increase the top padding of .nav-menu-mask-inner by the height value of the banner
|
||
var topCurrentNavMenuPadding = parseInt(window.getComputedStyle(topNavMenuMaskInner).paddingTop);
|
||
topNavMenuMaskInner.style.paddingTop = (topCurrentNavMenuPadding + topBannerHeight) + 'px';
|
||
}
|
||
}
|
||
}
|
||
});
|
||
|
||
// MutationObserver to revert changes if #announcement-banner is hidden
|
||
var topTargetElement = document.getElementById('announcement-banner');
|
||
|
||
var topObserver = new MutationObserver(function(mutationsList, observer) {
|
||
for(var mutation of mutationsList) {
|
||
if (mutation.type === 'attributes' && mutation.attributeName === 'class') {
|
||
var topTarget = mutation.target;
|
||
if (topTarget.classList.contains('hidden')) {
|
||
// Revert the changes made by the second script
|
||
var topFirstSection = document.querySelector('.section:first-child');
|
||
if (topFirstSection) {
|
||
topFirstSection.style.paddingTop = '';
|
||
}
|
||
|
||
// Check if screen width is smaller than or equal to 991 pixels
|
||
if (window.innerWidth <= 991) {
|
||
var topNavMenuMaskInner = document.querySelector('.nav-menu-mask-inner');
|
||
if (topNavMenuMaskInner) {
|
||
topNavMenuMaskInner.style.paddingTop = '';
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
});
|
||
|
||
var topConfig = { attributes: true, attributeFilter: ['class'] };
|
||
topObserver.observe(topTargetElement, topConfig);
|
||
|
||
</script></div></div></div><div class="main-wrapper"><section data-w-id="65ced934-b2d2-964b-66af-2c794ea7409e" class="section featured-blog-hero"><div class="container featured-hero-container"><img alt="" loading="lazy" src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/6576e68444102d6fbb456eb8_The_KPIs_of_improved_reliability.webp" class="featured-blog-cover-image"/><div class="column featured-blog"><div class="blog-info-wrap"><div>January 31, 2023</div><div>-</div><div class="read-time">9 min read</div></div><div class="featured-hero post"><h1 class="heading-xl-blog text-neutral">The KPIs of improved reliability</h1></div><div class="devider-line"></div><div class="flex-vertical grid-auto-sm w-dyn-list"><div role="list" class="w-dyn-items"><div role="listitem" class="margin-bottom-xs w-dyn-item"><a href="https://www.gremlin.com/blog?webflow%5Bmenu%5D%5BcategoriesWebflow%5D=Cost%20of%20Downtime" class="eyebrow-pill no-underline-link w-inline-block"><div class="eyebrow-text">Cost Of Downtime</div></a></div><div role="listitem" class="margin-bottom-xs w-dyn-item"><a href="https://www.gremlin.com/blog?webflow%5Bmenu%5D%5BcategoriesWebflow%5D=Monitoring" class="eyebrow-pill no-underline-link w-inline-block"><div class="eyebrow-text">Monitoring</div></a></div><div role="listitem" class="margin-bottom-xs w-dyn-item"><a href="https://www.gremlin.com/blog?webflow%5Bmenu%5D%5BcategoriesWebflow%5D=Compliance" class="eyebrow-pill no-underline-link w-inline-block"><div class="eyebrow-text">Compliance</div></a></div><div role="listitem" class="margin-bottom-xs w-dyn-item"><a href="https://www.gremlin.com/blog?webflow%5Bmenu%5D%5BcategoriesWebflow%5D=Industry" class="eyebrow-pill no-underline-link w-inline-block"><div class="eyebrow-text">Industry</div></a></div></div></div></div></div></section><section class="section blog-body"><div class="container grid blog-post"><div id="w-node-_6dcab4aa-f84a-8226-2f56-0aad6204d960-1519e9c6" class="rich-text-wrap"><div id="single-article" fs-richtext-element="rich-text" class="blog-rich-text w-richtext"><p><em>This article was originally published on May 5, 2022.</em></p><p>For many businesses, prioritizing reliability is an ongoing challenge. Building reliable systems and services is critical for growing revenue and customer trust, but other initiatives—like building new products and features—often take precedence since they provide a clearer and more immediate return. That's not to say reliability doesn't have clear value, but proving this value to business leaders can be tricky.</p><p>Site reliability engineers (SREs) understand the need for reliable systems better than anyone since they're directly managing those systems, responding to incidents, and fixing outages. Reliability often only becomes a priority for business leaders when it starts impacting revenue and customer experience, but by that point, damage has already been done to the brand. For businesses to take a proactive approach to reliability, leaders must understand the benefits of improved reliability and how they impact business-level metrics. This means demonstrating the positive relationship between reliable systems and key performance indicators (KPIs) like revenue growth, cost reduction, and increased customer satisfaction.</p><p>In this blog post, we'll look at several key reliability-centric metrics and KPIs that show reliability's positive impact on businesses.</p><h2>Why is reliability important for businesses?</h2><p>Reliability is how well we can trust a system to remain available, whether it's an application, a distributed service, a server running in a data center, or a process that employees follow like an incident response runbook. The more reliable a system is, the longer it can run unassisted before failing or requiring human intervention.</p><p>With online services in particular, reliability is an expectation. Modern customers don't just want consistently fast and stable access to online services; they demand it. Even short-term outages are immediately publicized through social networks and websites like <a target="_blank" href="https://downdetector.com/">Downdetector</a> and can irreversibly harm a company's reputation in minutes. Plus, customers often have several options and are motivated to leave services that don't meet their reliability expectations, especially in highly competitive markets like e-commerce and SaaS.</p><blockquote>The less reliable our systems are, the more we lose out in sales, brand recognition, and customer trust. For services that already compete on features and usability, reliability can become a key differentiator.</blockquote><p>To understand the impact that reliability can have on a business, we need ways to measure reliability meaningfully and objectively. This is where metrics and KPIs come into play.</p><h2>Quantifying reliability with metrics and key performance indicators (KPIs)</h2><p>A key performance indicator (KPI) is a measurable value tracking the business' progress toward a specific goal or objective. A metric is a method of measuring something or the results obtained from a measurement. Metrics track progress towards a KPI, and how well you're meeting your KPIs indicates how well you're meeting your objectives. For example, suppose you're an online retailer, and your KPI is to increase sales by 20%. In that case, your metrics might include data points such as:</p><ul role="list"><li>Average order size</li><li>Number of transactions</li><li>Email conversion rate</li><li>Shopping cart abandonment rate</li></ul><p>To make reliability a business objective, we need a way to measure, track, and demonstrate the benefits of improved reliability to these data points. In addition, we need to be able to benchmark against previous efforts and industry peers to maintain consistent growth and a competitive advantage, respectively.</p><p>For this blog, we'll look at four metrics commonly used to measure reliability: uptime, Service Level Agreements (SLAs), mean time between failures (MTBF), and mean time to resolution (MTTR).</p><h3>Uptime</h3><p>Uptime is the amount of time that a system is available for use. It's typically measured as the percentage of time that a system is accessible by users over a given period or the percentage of user requests that the system successfully fulfilled over a given period. 100% uptime is ideal but isn't realistic due to the unpredictability of complex distributed systems. Instead, teams aim for high availability, which sets a high minimum uptime target that teams strive for. For example, <a target="_blank" href="https://techbeacon.com/enterprise-it/meaningful-availability-how-many-nines-do-you-actually-need">Netflix promises 99.99% availability</a>, which allows for <em>less than five minutes of downtime per month</em>.</p><p>Higher uptime targets are harder to achieve and maintain, but the benefit is your organization gains a reputation for being reliable, and customers can feel more confident putting their trust in you.</p><h3>Service level agreements (SLAs)</h3><p>A service level agreement (SLA) is a contract between an organization and its customers promising a minimum level of availability or uptime. If a business fails to meet its SLA(s), it may owe its customers discounts or reimbursements. For example, AWS provides full credit to customers of their Amazon EC2 service if <a target="_blank" href="https://aws.amazon.com/compute/sla/">availability falls below 95%</a> for any given month. SLAs aren't necessary, but offering an SLA shows customers that you care enough about reliability and user satisfaction to provide financial compensation if you don't meet your targets.</p><p><em>Learn how to create and measure meaningful SLAs by reading our blog: </em><a href="/blog/setting-better-slos-using-googles-golden-signals/"><em>Setting better SLOs using Google's Golden Signals</em></a><em>.</em></p><h3>Mean time between failures (MTBF)</h3><p>Mean time between failures (MTBF) is the average time between system failures. This metric directly impacts uptime. A low MTBF means our systems often fail, which implies our engineers are deploying problematic code or aren't addressing the underlying causes of failure. It also means customers are more frequently impacted by incidents, and our operations teams are likely spending a lot of time managing these issues.</p><h3>Mean time to resolution (MTTR)</h3><p>Mean time to resolution (MTTR) is the average time to detect and fix problems. Unlike MTBF, we want a low MTTR since this means our engineers are addressing problems quickly. There are several ways we can accomplish this, including:</p><ul role="list"><li>Using monitoring and alerting solutions to quickly notify engineers of problems.</li><li>Creating incident response playbooks to help engineers resolve problems faster.</li><li>Automating our incident response process to reduce or even eliminate engineer intervention.</li></ul><p>A high MTTR means our systems are down for an extended time, and our engineers struggle to troubleshoot and resolve issues. We can reduce our MTTR by proactively finding and addressing failure modes and preparing teams to respond to incidents.</p><h2>Translating metrics to KPIs to business objectives</h2><p>Metrics like uptime, SLAs, MTBF, and MTTR tell us the state of our systems in terms of reliability, but they don't tell us the value we get from being reliable. We still need to link them to our KPIs and business metrics.</p><p>For example, imagine you're an engineering manager at a SaaS company with aggressive year-over-year growth targets. Your SaaS product is the company's sole source of income, so customers must be able to access and use your service for the company to generate revenue. The more outages and downtime your service has, the more likely customers will stop using your product, request reimbursements, or churn, reducing the company's chances of reaching its growth targets.</p><p>With this context, we can create a KPI such as "our service must have a monthly uptime of 99.5%." This gives us a target but no real way to measure our compliance with that target. If we define uptime as "the number of minutes our service was accessible out of the total number of minutes in a month," this gives us a clear metric to measure using a monitoring or observability tool. We also have a way of directly tying this metric to our KPI since we know that our monthly uptime can never fall below 99.5% (or around 216 minutes of downtime). The longer our service is available, the more likely we are to meet our monthly uptime KPI, and since this KPI directly impacts sales, the company is more likely to reach its growth target. This also positively impacts our other metrics by increasing our MTBF and lowering our MTTR.</p><p>While business objectives are often unique to the organization, some are commonly shared. These include revenue and customer retention, which we'll explore next.</p><h3>Lost revenue and added costs</h3><p>The most immediate impact of an outage is lost revenue. This is especially true in e-commerce, where top e-commerce sites risk losing as much as <a href="/ecommerce-cost-of-downtime/">$300,000 in sales for each minute of downtime</a>. Outages also divert engineering resources from activities meant to generate revenue, such as feature development and performance optimization. In highly regulated industries such as finance and healthcare, outages can come with significant fines, lost trust, and even personal liability.</p><h3>Customer attrition</h3><p>Service providers (including SaaS, PaaS, and IaaS) must set a high reliability standard for their customers by offering reliable, performant, and quickly recoverable services. Akamai found that sites that went down experienced a permanent abandonment rate of 9%, and sites that performed slowly <a target="_blank" href="https://www.akamai.com/us/en/multimedia/documents/white-paper/the-complete-guide-to-performance-testing-your-retail-websites-and-apps.pdf">experienced a permanent abandonment rate of 28%</a>. If customers can't trust the services they depend on to be operational, or if downtime impacts their ability to run their business, they'll move to a competitor.</p><p>A key indicator for customer attrition is Net Promoter Score (NPS), which measures customer satisfaction and loyalty. A high NPS indicates that customers are enthusiastic about a service, while a low NPS indicates that customers are unhappy with a service and may even dissuade potential customers. While many variables contribute to NPS, reliability has a direct and significant impact.</p><blockquote>Reliability is good for customers, it's good for engineers because you're going to get paged less; and when you do get paged, hopefully, it's something that's urgent so you don't have to waste that executive decision making ability. And, it's good for the business because it improves revenue, it lowers churn, it does all those healthy things.</blockquote><h2>Where these KPIs fall short</h2><p>Unfortunately, these KPIs share a common problem: you can't measure them without first having an incident. For most companies, tying a dollar value to an incident is only possible if you've already experienced and documented a similar incident. You might be lucky enough to find a post-mortem from a competitor where they describe a similar incident, but you can't always rely on these. The question remains: how can you determine the value of reliability when you can't quantify the risks without experiencing an incident?</p><p>One approach is to estimate the cost of a potential downtime by calculating your operating costs for a period of time, such as one hour. Extrapolate this cost over time to predict the cost of a complete outage, where no revenue can be generated. Realistically though, this isn't an accurate approach, and it doesn't offer any ideas on how to improve reliability to avoid the outage altogether. Teams need a way to proactively measure reliability benefits without first requiring an incident. Fortunately, there's a new approach designed specifically for this purpose—one that combines Chaos Engineering principles to test services and objectively measure their reliability. This approach is called Reliability Management.</p><h2>How Reliability Management helps improve reliability</h2><p>Reliability Management aims to answer common questions teams ask when measuring and prioritizing reliability, such as:</p><ul role="list"><li>How can I measure reliability clearly and objectively?</li><li>How can I proactively test my systems and services without first having to have an incident or outage?</li><li>How can I track my services' reliability over time and demonstrate the improvements I've made to the company?</li></ul><p>Reliability Management builds on existing Chaos Engineering principles by helping teams evaluate their services using standardized tests, generate a reliability score that accurately measures each service's reliability, and automate testing so teams can stay on top of reliability concerns or changes.</p><blockquote>Reliability Management is a standards-based approach to baseline, remediate, and automate the reliability of complex, distributed systems.</blockquote><p>With Gremlin, you get a complete suite of pre-built reliability tests that you can run on any service in your environment in a matter of minutes. Running these tests on your services generates a score of that service's reliability, while providing detailed information on which components are resilient and which ones need additional work. For example, this service is resilient to host failures, but not limited memory scenarios:</p><figure style="max-width:1258pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/653627716047abfdf8707df5_service-overview-ledgerdb.png" alt="A screenshot of Gremlin Reliability Management showing a service with a score of 62 and a failed Memory test."/></div></figure><p>This gives engineers clear direction on where to address reliability issues, while providing leadership with a clear and easily digestible measure of reliability.</p><h3>How Chaos Engineering furthers reliability efforts</h3><p>Reliability Management is built on Chaos Engineering, which is the practice of running tests on systems to discover and fix failure modes. Chaos Engineering is a practice for more advanced teams looking to run complex testing scenarios. These scenarios often replicate real-world scenarios such as data center outages, region failover, and cascading failures. This process of intentionally introducing failures into our systems is called "fault injection," and while it may seem counter-intuitive at first, exposing our systems to fault is the most effective way of improving their resilience.</p><blockquote>One of the long-term benefits of [our Chaos Engineering practice] is it improved our MTTR and incident communications because we were able to practice without being in a live-fire scenario.</blockquote><p>Chaos Engineering tests our assumptions about how our systems behave under certain conditions. For example, if one of our servers goes offline, can we successfully fail over to another server without our application crashing? With Chaos Engineering, we can perform a simulated outage on a specific server, observe the impact on our application, then safely halt and roll back the outage. We can then use our observations and insights to build resilience into the server and reduce the risk of real-world outages. By repeating this process, we can gradually build up the resilience of our entire deployment without putting our operations at risk. In addition, we can prepare our engineers to respond to these situations so that if they happen in production, they already have the training and muscle memory needed to respond quickly and effectively.</p><p>This effectively lets us:</p><ol role="list"><li>Take an in-depth look at our systems.</li><li>Identify the different ways that they can fail.</li><li>Address these failure modes by deploying fixes.</li><li>Test our systems again to ensure they're no longer vulnerable to those failure modes.</li><li>Create and promote a culture of reliability within our company.</li></ol><h2>Conclusion</h2><p>The improvements that Reliability Management and Chaos Engineering bring reflect first in our low-level metrics, particularly uptime and MTBF. Finding and fixing failure modes helps increase availability and reduce the failure rate, which reduces the risk of missing our revenue targets, lowers our losses due to downtime, and improves customer satisfaction. Given how competitive online services are, companies that differentiate themselves on reliability more easily gain and retain customer trust and avoid costly incidents.</p><blockquote>The unpredictable, the unknown, has just as much impact—if not more—on your business than the known. Being prepared for [unexpected events] and trying to find them is one of the most important things we can do.</blockquote><p>Learn how Gremlin can help you improve reliability at your company. <a href="/trial/?ref=blog">Start your free trial today</a>.</p></div><div class="full-width w-condition-invisible"><div class="w-dyn-list"><div class="empty-state w-dyn-empty"><div>No items found.</div></div></div></div><div class="blog-cta"><div class="card-base card-small card-dark"><h4 class="card-title">Start your free trial</h4><div class="card-content"><p class="card-body">Gremlin's automated reliability platform empowers you to find and fix availability risks before they impact your users. Start finding hidden risks in your systems with a free 30 day trial.</p><a id="blog-cta-btn" href="/trial" class="button button-small w-button">START YOUR TRIAL</a><link rel="prerender" href="/trial"/></div></div></div></div><a id="w-node-_13747476-58dd-03d7-bf18-130f777d9ef7-1519e9c6" href="/author/andre-newman" target="_blank" class="author-wrap-blog text-link column-center w-inline-block"><img loading="lazy" alt="Andre Newman" src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/64edd73857be946ecb73f6ca_AndreNewman-Author2.webp" class="tutorial-author-image"/><div class="author-name">Andre Newman</div><div class="author-role">Sr. Reliability Specialist</div></a><div id="w-node-c13246f8-4fa4-9949-2201-df9fe219b78d-1519e9c6" class="blog-sidebar"><div class="flex-vertical-center"><div class="heading-h4">Related Posts</div></div><div class="spacer---quarter-height"></div><div class="w-dyn-list"><div role="list" class="grid-auto-sm w-dyn-items"><div role="listitem" class="w-dyn-item"><a href="/blog/introducing-custom-reliability-test-suites-and-scoring" class="sg-box border-color-default radius-sm no-underline-link sg-s100 w-inline-block"><div class="card-content"><div class="card-subtitle">Introducing Custom Reliability Test Suites, Scoring and Dashboards</div><div class="card-body"><div class="text-body-small">November 16, 2023</div></div></div></a></div><div role="listitem" class="w-dyn-item"><a href="/blog/gremlin-for-dora-compliance-how-financial-services-firms-build-digital-resilience-and-prove-it" class="sg-box border-color-default radius-sm no-underline-link sg-s100 w-inline-block"><div class="card-content"><div class="card-subtitle">Gremlin for DORA compliance: how financial services firms build digital resilience–and prove it</div><div class="card-body"><div class="text-body-small">October 17, 2023</div></div></div></a></div><div role="listitem" class="w-dyn-item"><a href="/blog/gremlin-at-aws-reinvent-2023" class="sg-box border-color-default radius-sm no-underline-link sg-s100 w-inline-block"><div class="card-content"><div class="card-subtitle">Join Gremlin at AWS re:Invent 2023 and make your AWS infrastructure more reliable</div><div class="card-body"><div class="text-body-small">October 6, 2023</div></div></div></a></div></div></div><div class="spacer---quarter-height"></div><div class="spacer---quarter-height"></div><div class="w-dyn-list"><div class="empty-state w-dyn-empty"></div></div><div class="cta-section"></div></div></div></section><div class="hidden"><div id="w-node-bd4cc08e-79ed-2521-5785-aba8c36c9a72-c36c9a72" class="toc-sticky-wrapper"><div data-w-id="bd4cc08e-79ed-2521-5785-aba8c36c9a73" class="toc-toggle"><div class="opacity-60">On this page</div><div class="toc-toggle-arrow w-embed"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.82733 6.91076C10.1528 6.58533 10.6804 6.58533 11.0058 6.91076L16.0058 11.9108C16.3313 12.2362 16.3313 12.7638 16.0058 13.0893C15.6804 13.4147 15.1528 13.4147 14.8273 13.0893L10.4166 8.67853L6.00584 13.0893C5.6804 13.4147 5.15277 13.4147 4.82733 13.0893C4.50189 12.7638 4.50189 12.2362 4.82733 11.9108L9.82733 6.91076Z" fill="#686868"/>
|
||
</svg></div><a href="#single-article" class="back-to-top-link w-inline-block"><div>Back to top</div><div class="back-to-top-arrow w-embed"><svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<path d="M3 8L6 5L9 8" stroke="#6533CB" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
||
</svg></div></a></div><div class="toc-devider"></div><div id="toc" data-w-id="bd4cc08e-79ed-2521-5785-aba8c36c9a7c" class="define-id-for-toc-conyainer"></div><div class="w-embed w-script"><script>
|
||
|
||
setTimeout(function() {
|
||
var dropdowns = document.querySelector("#toc");
|
||
const headings = document.querySelectorAll("#single-article h2:not(.w-condition-invisible), #single-article h3:not(.w-condition-invisible), #single-article h4:not(.w-condition-invisible)");
|
||
const tocWrapper = document.querySelector("#toc");
|
||
let offsetAdjustmentScroll = 90; // Default offset for larger viewports
|
||
if (window.innerWidth <= 768) { // Adjust the offset for viewports with width less than or equal to 768 pixels
|
||
offsetAdjustmentScroll = 70;
|
||
}
|
||
|
||
function isInViewport(element) {
|
||
if (!element) return false;
|
||
const rect = element.getBoundingClientRect();
|
||
return (
|
||
rect.bottom > 0 &&
|
||
rect.top < (window.innerHeight || document.documentElement.clientHeight)
|
||
);
|
||
}
|
||
|
||
function setActiveLink(headingText) {
|
||
const linkElement = tocWrapper.querySelector(`[href="#${headingText}"]`);
|
||
if (linkElement) {
|
||
tocWrapper.querySelectorAll(".legal-toc-link.active").forEach(link => {
|
||
link.classList.remove("active");
|
||
});
|
||
linkElement.classList.add("active");
|
||
}
|
||
}
|
||
|
||
headings.forEach((heading, index) => {
|
||
const headingText = heading.textContent.trim(); // No need to replace characters here
|
||
const idText = `toc-${headingText.replace(/[^\w\s]/gi, '').replace(/\s+/g, "-").toLowerCase()}`; // Remove special characters and numbers
|
||
const linkText = headingText.replace(/:$/, ""); // Remove colon if it appears at the end of the sentence
|
||
const link = document.createElement("a");
|
||
// URLs to ignore when adding links to headings
|
||
const exclude_from_linking = [
|
||
"/docs/api-reference-overview"
|
||
]
|
||
link.textContent = linkText;
|
||
link.setAttribute("href", `#${idText}`);
|
||
link.classList.add("legal-toc-link");
|
||
|
||
const headingLevel = heading.tagName.toLowerCase().replace('h', ''); // Extract heading level from tag name
|
||
link.classList.add(`h${headingLevel}-toc`);
|
||
|
||
tocWrapper.appendChild(link);
|
||
|
||
heading.setAttribute("id", idText);
|
||
if (!exclude_from_linking.includes(window.location.pathname)) {
|
||
heading.innerHTML = `<a style="color: var(--deep-purple); text-decoration: none;" href="#${idText}">${headingText}</a>`
|
||
};
|
||
|
||
link.addEventListener("click", function(event) {
|
||
if ($(window).width() < 768) {
|
||
setTimeout(function() {
|
||
console.log("close")
|
||
$(".toc-toggle").click()
|
||
}, 500)
|
||
}
|
||
event.preventDefault();
|
||
event.stopPropagation();
|
||
event.stopImmediatePropagation();
|
||
|
||
const targetHeading = document.querySelector(this.getAttribute("href"));
|
||
|
||
let offsetAdjustment = 70; // Default offset for larger viewports
|
||
if (window.innerWidth <= 768) { // Adjust the offset for viewports with width less than or equal to 768 pixels
|
||
offsetAdjustment = 70;
|
||
}
|
||
|
||
const offsetTop = targetHeading.getBoundingClientRect().top;
|
||
const scrollPosition = window.pageYOffset + offsetTop - offsetAdjustment;
|
||
|
||
window.scrollTo({
|
||
top: scrollPosition,
|
||
behavior: "smooth"
|
||
});
|
||
});
|
||
});
|
||
|
||
window.addEventListener("scroll", () => {
|
||
const scrollPosition = window.pageYOffset;
|
||
|
||
let activeHeading = null;
|
||
for (let i = headings.length - 1; i >= 0; i--) {
|
||
const heading = headings[i];
|
||
const offsetTop = heading.getBoundingClientRect().top;
|
||
const targetScrollPosition = window.pageYOffset + offsetTop - offsetAdjustmentScroll; // Adjust the offset as needed
|
||
|
||
if (scrollPosition >= targetScrollPosition) {
|
||
activeHeading = heading;
|
||
break;
|
||
}
|
||
}
|
||
|
||
if (activeHeading) {
|
||
const headingText = activeHeading.getAttribute("id");
|
||
setActiveLink(headingText);
|
||
}
|
||
});
|
||
function scrollActiveLinkIntoView() {
|
||
const activeLink = tocWrapper.querySelector(".legal-toc-link.active");
|
||
if (activeLink) {
|
||
const containerRect = tocWrapper.getBoundingClientRect();
|
||
const linkRect = activeLink.getBoundingClientRect();
|
||
const offset = linkRect.top - containerRect.top;
|
||
|
||
if (offset >= 0 && offset <= tocWrapper.clientHeight - activeLink.clientHeight) {
|
||
return;
|
||
}
|
||
|
||
let scrollPosition;
|
||
if (offset < 0) {
|
||
scrollPosition = activeLink.offsetTop;
|
||
} else {
|
||
scrollPosition = activeLink.offsetTop - tocWrapper.clientHeight + activeLink.clientHeight;
|
||
}
|
||
|
||
tocWrapper.scrollTo({
|
||
top: scrollPosition,
|
||
behavior: 'smooth',
|
||
});
|
||
}
|
||
}
|
||
function debounce(func, delay) {
|
||
let timer;
|
||
return function() {
|
||
const context = this;
|
||
const args = arguments;
|
||
clearTimeout(timer);
|
||
timer = setTimeout(() => {
|
||
func.apply(context, args);
|
||
}, delay);
|
||
};
|
||
}
|
||
|
||
const debouncedScrollActiveLinkIntoView = debounce(scrollActiveLinkIntoView, 40); // Adjust the delay time as needed
|
||
|
||
window.addEventListener("scroll", debouncedScrollActiveLinkIntoView);
|
||
}, 200);
|
||
|
||
document.addEventListener('DOMContentLoaded', function() {
|
||
var tocElement = document.querySelector('.table-of-content-wrap');
|
||
|
||
if (tocElement) {
|
||
setTimeout(function() {
|
||
tocElement.classList.add('visible');
|
||
}, 500);
|
||
}
|
||
});
|
||
</script>
|
||
|
||
<script>
|
||
setTimeout(() => {
|
||
// Assuming tocLink is a variable containing the text
|
||
var tocLink = "Example H2";
|
||
|
||
// Get the element with the class 'table-of-content-wrap'
|
||
var tocElement = document.querySelector('.table-of-content-wrap');
|
||
|
||
// Check if tocLink is present in the text content of tocElement
|
||
if (tocElement && tocElement.textContent.includes(tocLink)) {
|
||
// Hide the element
|
||
tocElement.style.display = 'none';
|
||
const lazar1 = document.querySelector('#lazar-1');
|
||
lazar1.style.gridColumn = 'span 7';
|
||
const lazar2 = document.querySelector('#lazar-2');
|
||
lazar2.style.gridColumn = 'span 7';
|
||
|
||
}
|
||
}, 300);
|
||
</script></div></div></div><div class="recommended-wrapper"><div class="recommended-collection w-dyn-list"><div id="recommended-wrapper" role="list" class="recommended-collection-list w-dyn-items"><div role="listitem" class="recommended-collection-item w-dyn-item"><section class="section---compact relative gradient"><div class="container"><div class="column featured-blog-copy"><div class="blog-info-wrap"><div>November 16, 2023</div><div>-</div><div>4 min read</div></div><a href="/blog/introducing-custom-reliability-test-suites-and-scoring" class="featured-hero w-inline-block"><h2 class="heading-xl-blog text-neutral">Introducing Custom Reliability Test Suites, Scoring and Dashboards</h2></a><p class="bfeatured-blog-description text-neutral">Discover how to create custom reliability test suites, scoring, and dashboards in Gremlin. Define your own reliability standards, measure reliability proactively with custom scoring, and identify organization-wide reliability risks with executive dashboards. Improve your system's reliability and meet IT governance requirements with Gremlin.</p><div class="devider-line"></div><div class="flex-vertical w-dyn-list"><div role="list" class="w-dyn-items"><div role="listitem" class="margin-bottom-xs w-dyn-item"><a href="https://www.gremlin.com/blog?webflow%5Bmenu%5D%5BcategoriesWebflow%5D=Announcements" class="eyebrow-pill no-underline-link w-inline-block"><div class="eyebrow-text">Announcements</div></a></div><div role="listitem" class="margin-bottom-xs w-dyn-item"><a href="https://www.gremlin.com/blog?webflow%5Bmenu%5D%5BcategoriesWebflow%5D=Compliance" class="eyebrow-pill no-underline-link w-inline-block"><div class="eyebrow-text">Compliance</div></a></div><div role="listitem" class="margin-bottom-xs w-dyn-item"><a href="https://www.gremlin.com/blog?webflow%5Bmenu%5D%5BcategoriesWebflow%5D=Features" class="eyebrow-pill no-underline-link w-inline-block"><div class="eyebrow-text">Features</div></a></div></div></div></div><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/6576e67ccc215fc2fb1ab993_custom-scoring-announcement-blog-hero.png" loading="eager" alt="Introducing Custom Reliability Test Suites, Scoring and Dashboards" class="recommended-articles-cover-image-copy"/></div></section><section class="section recommended-cta"><div class="container grid"><div id="w-node-bd3097a1-ce57-f191-ae4c-3ebd44508355-1519e9c6" class="recommended-article-author"><img loading="lazy" alt="Ryan Detwiller" src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/65799d151353d59da59dfb47_Ryan_Headshot.webp" class="tutorial-author-image"/><div class="author-name">Ryan Detwiller</div><div class="author-role">VP, Marketing</div></div><div id="w-node-ca955902-ec30-e070-4dc6-86bdf56ce3f1-1519e9c6" class="column gap-2rem"><p class="recommended-description">Last year, we released Reliability Management, a combination of pre-built reliability tests and scoring to give you a consistent way to define, test, and measure progress toward reliability standards across your organization.</p><a href="/blog/introducing-custom-reliability-test-suites-and-scoring" class="button-variant w-button">Read more</a></div></div></section></div><div role="listitem" class="recommended-collection-item w-dyn-item"><section class="section---compact relative gradient"><div class="container"><div class="column featured-blog-copy"><div class="blog-info-wrap"><div>November 13, 2023</div><div>-</div><div>4 min read</div></div><a href="/blog/treat-reliability-risks-like-security-vulnerabilities" class="featured-hero w-inline-block"><h2 class="heading-xl-blog text-neutral">Treat reliability risks like security vulnerabilities by scanning and testing for them</h2></a><p class="bfeatured-blog-description text-neutral">Learn how to proactively scan and test for reliability risks with Gremlin instead of waiting for them to break your system.</p><div class="devider-line"></div><div class="flex-vertical w-dyn-list"><div role="list" class="w-dyn-items"><div role="listitem" class="margin-bottom-xs w-dyn-item"><a href="https://www.gremlin.com/blog?webflow%5Bmenu%5D%5BcategoriesWebflow%5D=Reliability%20Management" class="eyebrow-pill no-underline-link w-inline-block"><div class="eyebrow-text">Reliability Management</div></a></div></div></div></div><img src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/6576e67c67e03e7cf4f3c8b6_diamond-header.png" loading="eager" alt="Treat reliability risks like security vulnerabilities by scanning and testing for them" class="recommended-articles-cover-image-copy"/></div></section><section class="section recommended-cta"><div class="container grid"><div id="w-node-bd3097a1-ce57-f191-ae4c-3ebd44508355-1519e9c6" class="recommended-article-author"><img loading="lazy" alt="Gavin Cahill" src="https://cdn.prod.website-files.com/64a52fe92f1fc7debc3007b0/64edd7817c2a913505e2a045_GavinCahill-Author2.webp" class="tutorial-author-image"/><div class="author-name">Gavin Cahill</div><div class="author-role">Sr. Content Manager</div></div><div id="w-node-ca955902-ec30-e070-4dc6-86bdf56ce3f1-1519e9c6" class="column gap-2rem"><p class="recommended-description">Finding, prioritizing, and mitigating security vulnerabilities is an essential part of running software. We’ve all recognized that vulnerabilities exist and that new ones are introduced on a regular basis, so we make sure that we check for and remediate them on a regular basis.</p><a href="/blog/treat-reliability-risks-like-security-vulnerabilities" class="button-variant w-button">Read more</a></div></div></section></div></div></div></div></div><footer data-wf--footer--variant="base" class="footer-section"><div class="container grid footer"><div id="w-node-efa20e27-2b30-0e54-ff0c-cfb834f5c6b4-654d2164" class="column"><p class="paragraph-medium text-neutral">Sign up for news and best practices from Gremlin</p></div><div id="w-node-_95554617-738a-6869-adb4-9833a7cf7759-654d2164" class="spacer"></div><div id="w-node-_3ee85ca3-854c-3d8e-ebf4-5f81294b57e1-654d2164" class="footer-form-wrapper"><div class="footer-subscribe-form hide w-form"><form id="email-form" name="email-form" data-name="Email Form" method="get" data-wf-page-id="65a84319e1dd4b961519e9c6" data-wf-element-id="7f0bc1d4-fc49-a36b-81ab-3a2d124d5de7" data-turnstile-sitekey="0x4AAAAAAAQTptj2So4dx43e"><label for="email" class="input-label">Email Address:</label><div class="input-wrap"><input class="input-field w-input" maxlength="256" name="email" data-name="Email" placeholder="" type="email" id="email" required=""/><a id="fake-submit" data-w-id="cf1268f9-2989-2e1e-b2cf-9b8324b6bb4f" href="#" class="submit-button w-inline-block"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/64e839658c74f4adb98c1249_SVG%20copy.svg" loading="lazy" alt="Arrow Icon" class="submit-icon"/></a></div><input type="submit" data-wait="Please wait..." id="submit" class="button hide w-button" value="Submit"/></form><div class="success-message w-form-done"><div>Email confirmation sent!</div></div><div class="w-form-fail"><div>Oops! Something went wrong while submitting the form.</div></div></div><div class="full-width w-embed"><div class="hs-form-frame" data-region="na1" data-form-id="8f0825b7-224f-4dd6-8701-f9f162661c57" data-portal-id="48295595"></div></div></div><div id="w-node-bee6ded2-a5b3-e226-6e52-b0da0e7ea06f-654d2164" class="column _0-5rem-gap mobile"><div class="footer-label">COMPANY</div><a href="/demo" class="footer-link">Get a demo</a><a href="/about" class="footer-link">About Gremlin</a><a href="/team" class="footer-link">Careers</a><a href="/contact" class="footer-link">Contact Us</a><a href="/customers" class="footer-link">Customers</a><a href="/partners" class="footer-link">Partners</a><a href="/product" class="footer-link">Product</a></div><div id="w-node-ff7a35de-38a5-810d-0fef-2b16f0086175-654d2164" class="column _0-5rem-gap mobile"><div class="footer-label">RESOURCES</div><a href="/resources" class="footer-link">All Resources</a><a href="/blog" class="footer-link">Blog</a><a href="/docs" class="footer-link">Docs</a><a href="/demo-center" class="footer-link">Demo Center</a><a href="/certification" class="footer-link">Certification</a><a href="/security" class="footer-link">Security</a><a href="https://support-site.gremlin.com/" target="_blank" class="footer-link">Support Center</a></div><div id="w-node-c609f962-9467-af7f-8067-052de34a7e9f-654d2164" class="column _0-5rem-gap mobile"><div class="footer-label">Solutions</div><div class="w-dyn-list"><div role="list" class="w-dyn-items"><div role="listitem" class="footer-collection-item w-dyn-item"><a href="/solutions/retail" target="_blank" class="footer-link">Retail</a></div><div role="listitem" class="footer-collection-item w-dyn-item"><a href="/solutions/finserve" target="_blank" class="footer-link">Finserve</a></div><div role="listitem" class="footer-collection-item w-dyn-item"><a href="/solutions/saas" target="_blank" class="footer-link">SAAS</a></div></div></div></div><div id="w-node-_32e5999e-541b-d8a5-9fef-2d0d70c8749f-654d2164" class="column _0-5rem-gap mobile"><div class="footer-label">Technologies</div><div class="w-dyn-list"><div role="list" class="collection-list w-dyn-items"><div role="listitem" class="footer-collection-item w-dyn-item"><a href="/technologies/dependency-discovery" target="_blank" class="footer-link">Dependency Discovery</a></div><div role="listitem" class="footer-collection-item w-dyn-item"><a href="/technologies/detected-risks" target="_blank" class="footer-link">Detected Risks</a></div><div role="listitem" class="footer-collection-item w-dyn-item"><a href="/technologies/disaster-recovery-testing" target="_blank" class="footer-link">Disaster Recovery Testing</a></div><div role="listitem" class="footer-collection-item w-dyn-item"><a href="/technologies/failure-flags" target="_blank" class="footer-link">Failure Flags</a></div><div role="listitem" class="footer-collection-item w-dyn-item"><a href="/technologies/fault-injection" target="_blank" class="footer-link">Fault Injection</a></div><div role="listitem" class="footer-collection-item w-dyn-item"><a href="/technologies/gremlin-private-edition" target="_blank" class="footer-link">Gremlin Private Edition</a></div><div role="listitem" class="footer-collection-item w-dyn-item"><a href="/technologies/reliability-intelligence" target="_blank" class="footer-link">Reliability Intelligence</a></div><div role="listitem" class="footer-collection-item w-dyn-item"><a href="/technologies/reliability-scoring" target="_blank" class="footer-link">Reliability Scoring</a></div></div></div></div><div id="w-node-_93dabfc0-1c9c-bc82-7b83-0c3b0e662253-654d2164" class="column _0-5rem-gap mobile"><div class="footer-label">FEATURED</div><a href="/whitepapers/close-the-reliability-gap" class="footer-link">Ebook: Closing the Reliability Gap</a><a href="/blog/how-gremlins-reliability-score-works/" class="footer-link">How Gremlin's Reliability Score Works</a><a href="/blog/what-is-reliability-management/" class="footer-link">What is Reliability Management</a><a href="/site-reliability-engineering" class="footer-link">What is Site Reliability Engineering?</a><a href="/chaos-engineering" class="footer-link">What is Chaos Engineering?</a></div><div id="w-node-bfc22755-c42f-6cf8-482d-25a7a23deefb-654d2164" class="column _0-5rem-gap mobile"><div class="footer-label">COMPARE</div><div class="w-dyn-list"><div role="list" class="w-dyn-items"><div role="listitem" class="w-dyn-item"><div class="w-embed"><a class="footer-link" href="/compare/gremlin-vs-steadybit">Gremlin vs. Steadybit</a></div></div><div role="listitem" class="w-dyn-item"><div class="w-embed"><a class="footer-link" href="/compare/gremlin-vs-harness-resilience-testing">Gremlin vs. Harness Resilience Testing</a></div></div><div role="listitem" class="w-dyn-item"><div class="w-embed"><a class="footer-link" href="/compare/gremlin-vs-aws-fis">Gremlin vs. AWS FIS & Resilience Hub</a></div></div></div></div></div><div id="w-node-be7d47bf-f3bc-7c73-82ca-5a623cb658fc-654d2164" class="column"><div class="footer-label">LEGAL</div><a href="/terms" class="footer-link">Terms</a><a href="/privacy" class="footer-link">Privacy</a><a fs-cc="open-preferences" href="#" class="footer-link">Preferences</a></div><div id="w-node-f56878db-d23d-0c23-f576-64c323bd3988-654d2164" class="column"><div class="w-dyn-list"><div role="list" class="w-dyn-items"><div role="listitem" class="w-dyn-item"><a href="https://secure-stats.pingdom.com/xf7vwkfqygcb" class="flex-horizontal no-underline-link w-inline-block"><div id="pd-indicator" class="dot"></div><div> </div><div id="pd-status" class="footer-label">Loading...</div><div class="w-condition-invisible w-embed w-script"><script>
|
||
const status_success = {
|
||
message: "99.999% uptime, thanks to Gremlin",
|
||
indicator: "green"
|
||
};
|
||
const status_fail = {
|
||
message: "Service disruption",
|
||
indicator: "red"
|
||
};
|
||
const status_unknown = {
|
||
message: "Status unavailable",
|
||
indicator: "yellow"
|
||
};
|
||
|
||
let status = {};
|
||
|
||
switch("up") {
|
||
case "up":
|
||
status = status_success;
|
||
break;
|
||
case "down":
|
||
status = status_fail;
|
||
break;
|
||
default:
|
||
status = status_unknown;
|
||
};
|
||
|
||
const el = document.getElementById("pd-status");
|
||
el.textContent = status.message;
|
||
|
||
const ind = document.getElementById("pd-indicator");
|
||
ind.style.color = status.indicator;
|
||
</script></div></a></div></div></div></div><div id="w-node-e7f1b365-5303-fc07-24fc-6b6ff08bd583-654d2164" class="column grid-4-col"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/6851897825de2cd24cf2caaf_21972-312_SOC_NonCPA-min.png" loading="lazy" alt="The SOC logo" class="card-icon-image"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/655b36e11dd80a8c48ad3245_gdpr.svg" loading="lazy" alt="" class="card-icon-image"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/655b36e1557a0a7fd6df93df_owasp.svg" loading="lazy" alt="" class="card-icon-image"/><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/655b36e127bb0b39f6666b7f_nist.svg" loading="lazy" alt="" class="card-icon-image"/></div><div id="w-node-fd83409d-0f8f-fa9f-84e6-b0d7663fceb0-654d2164" class="footer-devider"></div><div id="w-node-_73c87ccf-69c8-d53d-9241-241543a429d2-654d2164" class="column _0-25rem-gap mobile"><a href="/" class="nav-brand-footer w-nav-brand"><div class="w-embed"><svg viewBox="0 0 140 30" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="css-gea78w"><path d="M26.823 7.575l-5.08 3.239c-.224-.286-.425-.516-.597-.765C19.188 7.2 16.45 5.98 13.061 6.64c-3.45.672-5.653 2.868-6.524 6.23-.968 3.743.586 7.636 3.737 9.637 2.445 1.553 5.059 1.686 7.718.703 1.876-.694 3.053-2.097 3.742-4.173h-6.57v-5.084h13.081c.269 1.906.13 3.756-.335 5.577-1.673 6.563-7.559 10.582-14.524 9.944-6.61-.606-11.9-5.361-13.134-11.81C-1.46 8.728 5.784.37 14.99.65c4.604.14 8.291 2.007 11.042 5.662.276.367.49.78.79 1.264zM97.94 28.968h-5.751c-.025-.451-.067-.864-.067-1.277-.006-3.126.004-6.253-.01-9.379-.003-.542-.034-1.099-.161-1.623-.358-1.477-1.39-2.32-2.834-2.393-1.517-.077-2.767.647-3.242 2.046-.258.762-.376 1.602-.39 2.41-.048 2.93-.026 5.86-.03 8.79v1.382h-5.822c-.021-.409-.06-.822-.062-1.235-.005-3.126.006-6.253-.013-9.379-.003-.58-.048-1.177-.198-1.735-.383-1.43-1.373-2.202-2.798-2.277-1.462-.078-2.725.605-3.197 1.937-.293.83-.42 1.75-.437 2.635-.055 2.89-.026 5.783-.03 8.674v1.38h-5.786V9.657h5.695l.182 1.988c1.707-1.733 3.55-2.626 5.818-2.568 2.29.058 4.114.96 5.523 2.85.556-.425 1.05-.796 1.536-1.174 2.075-1.61 4.446-1.987 6.952-1.475 3.135.641 5.117 3.147 5.171 6.559.067 4.141.027 8.284.029 12.426 0 .191-.041.382-.078.705zM53.595 24.426c-1.67-.52-2.592-1.763-3.127-3.546h14.657c-.127-1.393-.122-2.606-.362-3.77-1.448-7.01-7.415-9.187-12.842-7.502-4.187 1.3-6.953 5.262-6.958 9.759-.005 4.303 2.773 8.122 6.929 9.53 4.387 1.487 9.128.134 11.814-3.38.18-.234.308-.506.493-.815l-4.11-2.797c-1.613 2.473-3.762 3.371-6.494 2.52zm1.572-10.627c2.234-.017 3.764 1.166 4.139 3.285h-8.417c.298-1.88 2.125-3.268 4.277-3.285zM139.904 28.952h-5.725c-.024-.403-.069-.813-.07-1.222-.006-3.123 0-6.246-.008-9.37-.001-.466-.008-.942-.099-1.396-.313-1.558-1.293-2.483-2.754-2.655-1.64-.194-3.064.522-3.65 1.99-.281.704-.41 1.51-.421 2.271-.047 3.005-.02 6.012-.02 9.018v1.349h-5.807V9.654h5.71l.175 1.89c.409-.317.71-.539.998-.776 2.242-1.854 4.789-2.125 7.46-1.243 2.66.878 4.262 3.317 4.288 6.392.035 4.06.011 8.12.007 12.18 0 .264-.051.527-.084.855zM101.936 1.24h5.718v27.713h-5.718V1.241zM30.983 28.905V9.625c1.887-.138 3.752-.078 5.715-.022v19.213c-.785.254-3.964.32-5.715.09zM111.64 28.95V9.65h5.72v19.3h-5.72zM117.993 4.156c-.017 1.964-1.59 3.475-3.575 3.437-1.92-.037-3.457-1.567-3.471-3.456-.015-1.923 1.584-3.499 3.548-3.495 1.987.003 3.516 1.539 3.498 3.514zM41.636 9.1c1.979.011 3.504 1.536 3.494 3.493a3.488 3.488 0 01-3.54 3.468c-1.943-.015-3.523-1.596-3.51-3.514.013-1.927 1.592-3.459 3.556-3.447z" fill="currentColor"></path></svg></div></a><div class="copyright-label">© 2026 Gremlin Inc. Claymont, DE 19703</div></div><div id="w-node-ea526ae5-63c3-248c-0936-225f79bf9094-654d2164" class="social-wrap"><a href="https://www.linkedin.com/company/gremlin-inc./" target="_blank" class="social-link w-inline-block"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/64e82bfcf4507a268c7b46fd_Vector%20copy%202.svg" loading="lazy" alt="Linkedin Icon" class="social-icon"/></a><a href="https://twitter.com/GremlinInc" target="_blank" class="social-link w-inline-block"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/658036aba175ab06e0f8409d_x-social-media-white-icon.webp" loading="lazy" alt="X icon for the social media site" class="social-icon"/></a><a href="https://www.facebook.com/gremlininc/" target="_blank" class="social-link w-inline-block"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/64e82bfc43656941aba4fa2e_Vector%20copy.svg" loading="lazy" alt="Facebook Icon" height="Auto" class="social-icon"/></a><a href="https://www.instagram.com/thegremlininc/" target="_blank" class="social-link hidden w-inline-block"><img src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/64e82bfc43656941aba4fa67_SVG.svg" loading="lazy" alt="Instagram Icon" class="social-icon"/></a></div></div><div class="container grid"></div><div class="hide w-embed"><style>
|
||
.bg-blue-gradient {
|
||
background: linear-gradient(to right, #2F2256,#2f285e,#2f2e67,#2f3470,#2f3b79,#304182,#30478b,#304d94,#30549d,#305aa6,#3160ae,#3166b7,#316dc0,#3173c9,#3179d2,#327fdb,#3286e4,#328ced,#3292f6,#39f);
|
||
}
|
||
|
||
html.wf-design-mode .fs-preferences-manager-wrapper {
|
||
display: none;
|
||
}
|
||
</style></div><div class="cookies"><div id="consentPopup" fs-cc="banner" class="fs-cookie-popup-prod shadow"><p class="cookie-paragraph blog-rich-text">We use cookies to analyze website traffic, serve personalized content, and improve your browsing experience. By clicking "Accept", you consent to our use of cookies. See our <a href="/privacy" target="_blank">Privacy Policy</a> for more information.</p><div id="w-node-ce2a821c-5c62-d312-7328-6097d9074ba5-654d2164" class="button-wrapper-3"><a fs-cc="open-preferences" id="w-node-ce2a821c-5c62-d312-7328-6097d9074baa-654d2164" href="#" class="preferences-link-2">Preferences</a><a fs-cc="deny" id="w-node-ce2a821c-5c62-d312-7328-6097d9074ba8-654d2164" href="#" class="nav-button variant w-button">Reject</a><a fs-cc="allow" id="w-node-ce2a821c-5c62-d312-7328-6097d9074ba6-654d2164" href="#" class="button w-button">Accept</a></div></div><div fs-cc="preferences" class="fs-preferences-manager-wrapper"><div class="preferences-container"><a fs-cc="close" href="#" class="close-top-bar-icon w-inline-block"><img loading="lazy" src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/68b8510ed3e434954be8c87a_np_close_25798_27313D.svg" alt="" class="image-3"/></a><div class="blog-card-heading">Preferences</div><p class="paragraph-xxs">You have the option to disable cookies that are not essential for the website's basic functionality. Please note that disabling these may negatively impact your browsing experience. See our <a href="/privacy" target="_blank">privacy policy</a> for more information.</p><div class="consents-form w-form"><form id="wf-form-Consent-Form" name="wf-form-Consent-Form" data-name="Consent Form" method="get" data-wf-page-id="65a84319e1dd4b961519e9c6" data-wf-element-id="ce2a821c-5c62-d312-7328-6097d9074bba" data-turnstile-sitekey="0x4AAAAAAAQTptj2So4dx43e"><div class="grid"><div class="text-div"><label for="name" class="paragraph-small">Essential</label><p class="paragraph-xxs">These are required for basic website functionality.<br/></p></div><p id="w-node-ce2a821c-5c62-d312-7328-6097d9074bc2-654d2164" class="bold">Required</p></div><div class="grid"><div class="text-div"><label for="name" class="paragraph-small">Marketing</label><p class="paragraph-xxs">These allow us to provide you with more relevant content and a more personalized experience.<br/></p></div><label id="w-node-ce2a821c-5c62-d312-7328-6097d9074bcc-654d2164" class="w-checkbox"><div class="w-checkbox-input w-checkbox-input--inputType-custom checkbox-2 w--redirected-checked"></div><input type="checkbox" name="checkbox-4" id="checkbox-4" data-name="Checkbox 4" fs-cc-checkbox="marketing" style="opacity:0;position:absolute;z-index:-1" checked=""/><span class="checkbox-label-2 w-form-label" for="checkbox-4"></span></label></div><div fs-cc-checkbox="analytics" class="grid"><div class="text-div"><label for="name" class="paragraph-small">Analytics</label><p class="paragraph-xxs">These help us understand how our website is performing, how visitors are using it, and what (if any) technical issues are affecting usability.</p></div><label id="w-node-ce2a821c-5c62-d312-7328-6097d9074be0-654d2164" class="w-checkbox"><div class="w-checkbox-input w-checkbox-input--inputType-custom checkbox-2 w--redirected-checked"></div><input type="checkbox" name="checkbox-3" id="checkbox-3" data-name="Checkbox 3" fs-cc-checkbox="analytics" style="opacity:0;position:absolute;z-index:-1" checked=""/><span class="checkbox-label-2 w-form-label" for="checkbox-3"></span></label></div><div class="cta-button-wrapper align-right"><input type="submit" data-wait="Please wait..." fs-cc="submit" class="button w-button" value="Confirm"/></div></form><div class="success-message w-form-done"><div>Your preferences have been saved.</div></div><div class="w-form-fail"><div>Oops! Something went wrong while submitting the form.</div></div></div></div></div></div></footer><script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=64a5291e7847ac04fe1531ad" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script><script src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/js/gremlin-x-flowninja.schunk.f2efb3c5440a81cf.js" type="text/javascript" integrity="sha384-VK02VJvMib7ytrF5M2joPWNtDQs366FZgEQ5B+Iwnjx0WBnwQXfootyziSYxdrmS" crossorigin="anonymous"></script><script src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/js/gremlin-x-flowninja.schunk.d657d46f9c9507c9.js" type="text/javascript" integrity="sha384-3xUNFPAO2EEkJPeP2GNrG+R+L2OukanyV3NnbwD72zZn4M4ne/A3yPPU/AWm4yjm" crossorigin="anonymous"></script><script src="https://cdn.prod.website-files.com/64a5291e7847ac04fe1531ad/js/gremlin-x-flowninja.a5800217.54a318d282967e0e.js" type="text/javascript" integrity="sha384-+9SOJXtt5bozvhvKsNMfKFFfQm/Hi588L7JEgzz4XfZ9ZeBeNVmhfAZmNwMDD+57" crossorigin="anonymous"></script><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MRKZ93T" height="0" width="0" style="display: none; visibility: hidden" aria-hidden="true"></iframe></noscript>
|
||
|
||
<!-- Disable Scroll Script -->
|
||
<script>
|
||
var Webflow = Webflow || [];
|
||
Webflow.push(function () {
|
||
var $body = $(document.body);
|
||
var scrollPosition = 0;
|
||
|
||
$('[scroll="disable"]').on('click', function () {
|
||
var oldWidth = $body.innerWidth();
|
||
scrollPosition = window.pageYOffset;
|
||
$body.css('overflow', 'hidden');
|
||
$body.css('position', 'fixed');
|
||
$body.css('top', `-${scrollPosition}px`);
|
||
$body.width(oldWidth);
|
||
});
|
||
$('[scroll="enable"]').on('click', function () {
|
||
if ($body.css('overflow') != 'hidden') {
|
||
scrollPosition = window.pageYOffset;
|
||
}
|
||
$body.css('overflow', '');
|
||
$body.css('position', '');
|
||
$body.css('top', '');
|
||
$body.width('');
|
||
$(window).scrollTop(scrollPosition);
|
||
});
|
||
$('[scroll="both"]').on('click', function () {
|
||
if ($body.css('overflow') !== 'hidden') {
|
||
var oldWidth = $body.innerWidth();
|
||
scrollPosition = window.pageYOffset;
|
||
$body.css('overflow', 'hidden');
|
||
$body.css('position', 'fixed');
|
||
$body.css('top', `-${scrollPosition}px`);
|
||
$body.width(oldWidth);
|
||
} else {
|
||
$body.css('overflow', '');
|
||
$body.css('position', '');
|
||
$body.css('top', '');
|
||
$body.width('');
|
||
$(window).scrollTop(scrollPosition);
|
||
}
|
||
});
|
||
});
|
||
</script>
|
||
|
||
<!-- Custom popout component -->
|
||
<script>
|
||
class Popout extends HTMLElement {
|
||
connectedCallback() {
|
||
let type = this.getAttribute('type') || 'note';
|
||
const title = this.getAttribute('title') || 'Note';
|
||
const body = this.innerHTML;
|
||
|
||
// Identify note type using title for backwards compatability. All future notes should use the type field
|
||
const types = ["note", "warning", "important"];
|
||
const lowerTitle = title.toLowerCase();
|
||
if (lowerTitle !== type && types.includes(lowerTitle)){
|
||
type = lowerTitle;
|
||
}
|
||
|
||
// Get color scheme
|
||
let colorscheme = "card-base card-small card-shadow";
|
||
switch(type) {
|
||
case "warning":
|
||
colorscheme += " card-highlight";
|
||
break;
|
||
case "important":
|
||
colorscheme += " card-gradient-deep";
|
||
break;
|
||
default:
|
||
colorscheme += " card-gradient-orchid";
|
||
break;
|
||
}
|
||
|
||
this.innerHTML = `
|
||
<div class="${colorscheme}">
|
||
${title ? `<div class="card-title">${title}</div>` : ''}
|
||
<div class="card-body">${body}</div>
|
||
</div>`;
|
||
|
||
/*
|
||
this.innerHTML = `
|
||
<div fs-richtext-component="block-content" class="block-in-rich-text">
|
||
${title ? `<div class="tip-card-title green-tip">${title}</div>` : ''}
|
||
<div>${body}</div>
|
||
</div>`;
|
||
*/
|
||
}
|
||
}
|
||
customElements.define('gr-popout', Popout);
|
||
</script>
|
||
|
||
<style>
|
||
gr-popout { display: block; } /* unknown elements are inline by default */
|
||
gr-popout:not(:defined) { visibility: hidden; } /* avoids a flash of unstyled text */
|
||
</style>
|
||
<!-- End custom popout component -->
|
||
|
||
<!-- Custom code block component -->
|
||
<script>
|
||
(function () {
|
||
const COPY_SVG = '<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke-linecap="round" stroke-linejoin="round" class="CK__Icon css-1ea9lxr"><g stroke="currentColor" fill-rule="evenodd" stroke-width="1.5"><path d="M10.9 8.7h9.9c1.2 0 2.2 1 2.2 2.2v9.9c0 1.2-1 2.2-2.2 2.2h-9.9c-1.2 0-2.2-1-2.2-2.2v-9.9c0-1.2 1-2.2 2.2-2.2z"></path><path d="M4.3 15.3H3.2c-1.2 0-2.2-1-2.2-2.2V3.2C1 2 2 1 3.2 1h9.9c1.2 0 2.2 1 2.2 2.2v1.1"></path></g></svg>';
|
||
|
||
const LABELS = {
|
||
js: 'JavaScript', javascript: 'JavaScript', ts: 'TypeScript',
|
||
py: 'Python', python: 'Python', yaml: 'YAML', yml: 'YAML',
|
||
shell: 'Shell', bash: 'Shell', sh: 'Shell', json: 'JSON',
|
||
go: 'Go', hcl: 'HCL', kubernetes: 'Kubernetes'
|
||
};
|
||
|
||
let instance = 0;
|
||
|
||
function dedent(src) {
|
||
const lines = src.replace(/\t/g, ' ').split('\n');
|
||
while (lines.length && !lines[0].trim()) lines.shift();
|
||
while (lines.length && !lines[lines.length - 1].trim()) lines.pop();
|
||
if (!lines.length) return '';
|
||
const pad = Math.min(...lines.filter(l => l.trim())
|
||
.map(l => l.match(/^ */)[0].length));
|
||
return lines.map(l => l.slice(pad)).join('\n');
|
||
}
|
||
|
||
function div(className) {
|
||
const el = document.createElement('div');
|
||
if (className) el.className = className;
|
||
return el;
|
||
}
|
||
|
||
class CodeBlock extends HTMLElement {
|
||
connectedCallback() {
|
||
const raw = this.querySelector('script[type="text/plain"]');
|
||
const source = dedent(raw ? raw.textContent : this.textContent);
|
||
const lang = (this.getAttribute('lang') || 'plaintext').toLowerCase();
|
||
const label = this.getAttribute('label') || LABELS[lang] || lang;
|
||
|
||
const n = ++instance;
|
||
const suffix = n === 1 ? '' : '-' + n;
|
||
|
||
const wrapper = div('code-higlight-wrapper'); // sic — matches your class
|
||
|
||
const header = div('code-highlight-header');
|
||
const langWrap = div('code-language-wrapper');
|
||
const langText = div();
|
||
langText.textContent = label.toUpperCase();
|
||
langWrap.append(langText);
|
||
|
||
const copyWrap = div('copy-icon-wrapper');
|
||
const copyIcon = div('copy-icon w-embed');
|
||
copyIcon.setAttribute('fs-copyclip-element', 'click' + suffix);
|
||
copyIcon.setAttribute('fs-copyclip-message', 'Copied!');
|
||
copyIcon.setAttribute('role', 'button');
|
||
copyIcon.setAttribute('tabindex', '0');
|
||
copyIcon.setAttribute('aria-label', 'Copy code');
|
||
copyIcon.innerHTML = COPY_SVG;
|
||
copyWrap.append(copyIcon);
|
||
|
||
header.append(langWrap, copyWrap);
|
||
|
||
const body = div('code-highlight w-embed');
|
||
const pre = document.createElement('pre');
|
||
pre.className = 'language-' + lang;
|
||
const code = document.createElement('code');
|
||
code.className = 'language-' + lang;
|
||
code.setAttribute('fs-copyclip-element', 'copy-this' + suffix);
|
||
code.textContent = source; // no parsing, no escaping bugs
|
||
pre.append(code); // no stray whitespace
|
||
body.append(pre);
|
||
|
||
wrapper.append(header, body);
|
||
this.replaceChildren(wrapper);
|
||
|
||
if (window.Prism) Prism.highlightElement(code);
|
||
}
|
||
}
|
||
customElements.define('gr-code', CodeBlock);
|
||
})();
|
||
</script>
|
||
|
||
<style>
|
||
gr-code { display: block; }
|
||
gr-code:not(:defined) { display: none; }
|
||
</style>
|
||
<!-- End custom code block component -->
|
||
|
||
<!-- HubSpot forms loader — sitewide (portal 48295595). Scans every page
|
||
for div.hs-form-html and renders the matching form into it. One
|
||
copy handles any number of forms on any page, so this never needs
|
||
to be added again per-form. Added for the Gremlin Form
|
||
component (see /components page). -->
|
||
<script src="https://js.hsforms.net/forms/embed/developer/48295595.js" defer></script><script>
|
||
(() => {
|
||
const unordered_lists = document.querySelectorAll(".w-richtext > ul");
|
||
const ordered_lists = document.querySelectorAll(".w-richtext > ol");
|
||
|
||
function replaceChild(newItem, oldItem) {
|
||
oldItem.parentNode.replaceChild(newItem, oldItem);
|
||
newItem.appendChild(oldItem);
|
||
}
|
||
|
||
function createUnorderedList(item) {
|
||
const list = document.createElement("ul");
|
||
replaceChild(list, item);
|
||
}
|
||
|
||
function createOrderedList(item, start) {
|
||
const list = document.createElement("ol");
|
||
list.type = "a";
|
||
list.start = start;
|
||
|
||
for (const li of item.querySelectorAll('li')) {
|
||
const newLi = document.createElement('li');
|
||
newLi.textContent = li.textContent;
|
||
newLi.setAttribute('start', start);
|
||
list.appendChild(newLi);
|
||
}
|
||
|
||
replaceChild(list, item);
|
||
}
|
||
|
||
function parseUnorderedList(item) {
|
||
const nest_level = item.innerText.split("^").length - 1;
|
||
item.innerHTML = item.innerHTML.replaceAll("^", "");
|
||
|
||
if (nest_level === 0) return;
|
||
|
||
new Array(nest_level).fill(0).map(() => createUnorderedList(item));
|
||
}
|
||
|
||
for (const list of unordered_lists) {
|
||
for (const item of list.children) {
|
||
parseUnorderedList(item);
|
||
}
|
||
}
|
||
|
||
function parseOrderedList(item, queue) {
|
||
const nest_level = item.innerText.split("^").length;
|
||
item.innerHTML = item.innerHTML.replaceAll("^", "");
|
||
|
||
if (nest_level === queue.length) {
|
||
queue[nest_level - 1]++;
|
||
}
|
||
if (nest_level > queue.length) {
|
||
queue[queue.length] = 1;
|
||
}
|
||
if (nest_level < queue.length) {
|
||
queue.splice(nest_level);
|
||
queue[nest_level - 1]++;
|
||
}
|
||
if (queue.length > 1) {
|
||
new Array(queue.length - 1)
|
||
.fill(0)
|
||
.map(() => createOrderedList(item, queue[queue.length - 1]));
|
||
}
|
||
}
|
||
|
||
let queue = [0];
|
||
for (const list of ordered_lists) {
|
||
for (const item of list.children) {
|
||
parseOrderedList(item, queue);
|
||
}
|
||
}
|
||
})();
|
||
var x = document.querySelectorAll('[type="a"]')
|
||
x.forEach(y =>{
|
||
var pp = y.getAttribute("start")
|
||
var k = y.querySelectorAll("li")
|
||
k.forEach(l =>{
|
||
l.setAttribute("start", pp)
|
||
})
|
||
})
|
||
</script><script src="https://hubspotv2.use1-marketplace-1p-apps-prod-red.if.webflow.services/static/disable-hubspot-chatbot.js" type="text/javascript" async="" defer=""></script><script src="https://js.hs-scripts.com/48295595.js" type="text/javascript" async="" defer=""></script></body></html> |