Files
awesome-kubernetes/monitoring.html
2026-05-18 19:32:46 +00:00

9480 lines
223 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="A curated list of awesome IT projects and resources. Inspired by the awesome list.">
<meta name="author" content="nubenetes@gmail.com">
<link rel="canonical" href="https://nubenetes.com/monitoring.html">
<link rel="prev" href="caching.html">
<link rel="next" href="prometheus.html">
<link rel="icon" href="images/favicon-car.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
<title>Monitoring and Performance - Nubenetes</title>
<link rel="stylesheet" href="assets/stylesheets/main.484c7ddc.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.ab4e12ef.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="static/extra.css">
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config",""),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
<script>if("undefined"!=typeof __md_analytics){var consent=__md_get("__consent");consent&&consent.analytics&&__md_analytics()}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="red">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#monitoring-and-performance-prometheus-grafana-apms-and-more" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="index.html" title="Nubenetes" class="md-header__button md-logo" aria-label="Nubenetes" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 89 89">
<path d="M3.136,17.387l0,42.932l42.932,21.467l-42.932,-64.399Z" />
<path d="M21.91,8l42.933,64.398l-18.775,9.388l-42.932,-64.399l18.774,-9.387Z" style="fill-opacity: 0.5" />
<path d="M67.535,17.387l-27.262,18.156l21.878,32.818l5.384,2.691l0,-53.665Z" />
<path d="M67.535,17.387l0,53.666l18.774,-9.388l0,-53.665l-18.774,9.387Z" style="fill-opacity: 0.25" />
</svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Nubenetes
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Monitoring and Performance
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="red" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6m0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4M7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"/></svg>
</label>
<input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="light-blue" data-md-color-accent="yellow" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3"/></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg>
</a>
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/nubenetes/awesome-kubernetes" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
</div>
<div class="md-source__repository">
nubenetes/awesome-kubernetes
</div>
</a>
</div>
</nav>
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="https://nubenetes.com/v2/" class="md-tabs__link">
🚀 Try Nubenetes V2 (Elite)
</a>
</li>
<li class="md-tabs__item">
<a href="index.html" class="md-tabs__link">
Home
</a>
</li>
<li class="md-tabs__item">
<a href="introduction.html" class="md-tabs__link">
Intro
</a>
</li>
<li class="md-tabs__item">
<a href="sre.html" class="md-tabs__link">
SRE
</a>
</li>
<li class="md-tabs__item">
<a href="devops.html" class="md-tabs__link">
DevOps
</a>
</li>
<li class="md-tabs__item">
<a href="devsecops.html" class="md-tabs__link">
DevSecOps
</a>
</li>
<li class="md-tabs__item">
<a href="noops.html" class="md-tabs__link">
NoOps
</a>
</li>
<li class="md-tabs__item">
<a href="docker.html" class="md-tabs__link">
Docker
</a>
</li>
<li class="md-tabs__item">
<a href="kubernetes.html" class="md-tabs__link">
K8s
</a>
</li>
<li class="md-tabs__item">
<a href="openshift.html" class="md-tabs__link">
OpenShift
</a>
</li>
<li class="md-tabs__item">
<a href="rancher.html" class="md-tabs__link">
Rancher
</a>
</li>
<li class="md-tabs__item">
<a href="cicd.html" class="md-tabs__link">
CI/CD
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="monitoring.html" class="md-tabs__link">
Montrg
</a>
</li>
<li class="md-tabs__item">
<a href="iac.html" class="md-tabs__link">
Infra Prov
</a>
</li>
<li class="md-tabs__item">
<a href="ansible.html" class="md-tabs__link">
Config Mgmt
</a>
</li>
<li class="md-tabs__item">
<a href="databases.html" class="md-tabs__link">
DB
</a>
</li>
<li class="md-tabs__item">
<a href="message-queue.html" class="md-tabs__link">
Data Pipeline
</a>
</li>
<li class="md-tabs__item">
<a href="servicemesh.html" class="md-tabs__link">
Service Mesh
</a>
</li>
<li class="md-tabs__item">
<a href="demos.html" class="md-tabs__link">
Demos
</a>
</li>
<li class="md-tabs__item">
<a href="public-cloud-solutions.html" class="md-tabs__link">
Cloud
</a>
</li>
<li class="md-tabs__item">
<a href="api.html" class="md-tabs__link">
APIs
</a>
</li>
<li class="md-tabs__item">
<a href="devel-sites.html" class="md-tabs__link">
Dev
</a>
</li>
<li class="md-tabs__item">
<a href="qa.html" class="md-tabs__link">
QA
</a>
</li>
<li class="md-tabs__item">
<a href="ai.html" class="md-tabs__link">
AI
</a>
</li>
<li class="md-tabs__item">
<a href="project-management-methodology.html" class="md-tabs__link">
Project Mgmt
</a>
</li>
<li class="md-tabs__item">
<a href="other-awesome-lists.html" class="md-tabs__link">
Refs+
</a>
</li>
<li class="md-tabs__item">
<a href="recruitment.html" class="md-tabs__link">
Hiring
</a>
</li>
<li class="md-tabs__item">
<a href="customer.html" class="md-tabs__link">
Clients
</a>
</li>
<li class="md-tabs__item">
<a href="about.html" class="md-tabs__link">
About
</a>
</li>
</ul>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted md-nav--integrated" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="index.html" title="Nubenetes" class="md-nav__button md-logo" aria-label="Nubenetes" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 89 89">
<path d="M3.136,17.387l0,42.932l42.932,21.467l-42.932,-64.399Z" />
<path d="M21.91,8l42.933,64.398l-18.775,9.388l-42.932,-64.399l18.774,-9.387Z" style="fill-opacity: 0.5" />
<path d="M67.535,17.387l-27.262,18.156l21.878,32.818l5.384,2.691l0,-53.665Z" />
<path d="M67.535,17.387l0,53.666l18.774,-9.388l0,-53.665l-18.774,9.387Z" style="fill-opacity: 0.25" />
</svg>
</a>
Nubenetes
</label>
<div class="md-nav__source">
<a href="https://github.com/nubenetes/awesome-kubernetes" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
</div>
<div class="md-source__repository">
nubenetes/awesome-kubernetes
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="https://nubenetes.com/v2/" class="md-nav__link">
<span class="md-ellipsis">
🚀 Try Nubenetes V2 (Elite)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="index.html" class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
<span class="md-ellipsis">
Intro
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Intro
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="introduction.html" class="md-nav__link">
<span class="md-ellipsis">
Microservice Architecture. From Java EE To Cloud Native. Openshift VS Kubernetes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="faq.html" class="md-nav__link">
<span class="md-ellipsis">
Microservices FAQ & Kubernetes Native
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
<span class="md-ellipsis">
SRE
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
SRE
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="sre.html" class="md-nav__link">
<span class="md-ellipsis">
SRE Site Reliability Engineering
</span>
</a>
</li>
<li class="md-nav__item">
<a href="networking.html" class="md-nav__link">
<span class="md-ellipsis">
Networking
</span>
</a>
</li>
<li class="md-nav__item">
<a href="finops.html" class="md-nav__link">
<span class="md-ellipsis">
FinOps. Cloud Financial Management
</span>
</a>
</li>
<li class="md-nav__item">
<a href="chaos-engineering.html" class="md-nav__link">
<span class="md-ellipsis">
Chaos Engineering
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
<span class="md-ellipsis">
DevOps
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
DevOps
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="devops.html" class="md-nav__link">
<span class="md-ellipsis">
DevOps
</span>
</a>
</li>
<li class="md-nav__item">
<a href="gitops.html" class="md-nav__link">
<span class="md-ellipsis">
GitOps
</span>
</a>
</li>
<li class="md-nav__item">
<a href="mlops.html" class="md-nav__link">
<span class="md-ellipsis">
MLOps
</span>
</a>
</li>
<li class="md-nav__item">
<a href="cheatsheets.html" class="md-nav__link">
<span class="md-ellipsis">
Cheat Sheets
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
<span class="md-ellipsis">
DevSecOps
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
DevSecOps
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="devsecops.html" class="md-nav__link">
<span class="md-ellipsis">
DevSecOps. Container Security
</span>
</a>
</li>
<li class="md-nav__item">
<a href="securityascode.html" class="md-nav__link">
<span class="md-ellipsis">
Security Policy as Code
</span>
</a>
</li>
<li class="md-nav__item">
<a href="oauth.html" class="md-nav__link">
<span class="md-ellipsis">
OAuth2
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
<span class="md-ellipsis">
NoOps
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
NoOps
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="noops.html" class="md-nav__link">
<span class="md-ellipsis">
NoOps
</span>
</a>
</li>
<li class="md-nav__item">
<a href="serverless.html" class="md-nav__link">
<span class="md-ellipsis">
Serverless Architectures & Frameworks. OpenFaaS, Knative & Kubeless
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="docker.html" class="md-nav__link">
<span class="md-ellipsis">
Docker
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
<span class="md-ellipsis">
K8s
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9">
<span class="md-nav__icon md-icon"></span>
K8s
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="kubernetes.html" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kubernetes-tutorials.html" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes Tutorials
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kubernetes-tools.html" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes Plugins, Tools, Extensions and Projects
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kubectl-commands.html" class="md-nav__link">
<span class="md-ellipsis">
kubectl Commands
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kubernetes-networking.html" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes Networking
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kubernetes-monitoring.html" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes Monitoring and Logging
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kubernetes-security.html" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes Security
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kubernetes-storage.html" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes Storage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kubernetes-backup-migrations.html" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes Backup and Migrations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kubernetes-autoscaling.html" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes Autoscaling
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kubernetes-operators-controllers.html" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes Operators and Controllers
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kubernetes-based-devel.html" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes Based Development
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kubernetes-on-premise.html" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes On Premise
</span>
</a>
</li>
<li class="md-nav__item">
<a href="managed-kubernetes-in-public-cloud.html" class="md-nav__link">
<span class="md-ellipsis">
Managed kubernetes in public clouds
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kubernetes-troubleshooting.html" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes Troubleshooting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kubernetes-releases.html" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes Releases
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kubernetes-newsletters.html" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes Newsletters
</span>
</a>
</li>
<li class="md-nav__item">
<a href="matrix-table.html" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes Distributions & Installers
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kubernetes-bigdata.html" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes Big Data
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kubernetes-alternatives.html" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes alternatives
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" >
<label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
<span class="md-ellipsis">
OpenShift
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_10">
<span class="md-nav__icon md-icon"></span>
OpenShift
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="openshift.html" class="md-nav__link">
<span class="md-ellipsis">
OpenShift docs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="ocp3.html" class="md-nav__link">
<span class="md-ellipsis">
OCP 3
</span>
</a>
</li>
<li class="md-nav__item">
<a href="ocp4.html" class="md-nav__link">
<span class="md-ellipsis">
OCP 4
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_11" >
<label class="md-nav__link" for="__nav_11" id="__nav_11_label" tabindex="0">
<span class="md-ellipsis">
Rancher
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_11_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_11">
<span class="md-nav__icon md-icon"></span>
Rancher
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="rancher.html" class="md-nav__link">
<span class="md-ellipsis">
Rancher - Enterprise management for Kubernetes
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_12" >
<label class="md-nav__link" for="__nav_12" id="__nav_12_label" tabindex="0">
<span class="md-ellipsis">
CI/CD
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_12_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_12">
<span class="md-nav__icon md-icon"></span>
CI/CD
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="cicd.html" class="md-nav__link">
<span class="md-ellipsis">
CI/CD - Continuous Integration & Continuous Delivery
</span>
</a>
</li>
<li class="md-nav__item">
<a href="git.html" class="md-nav__link">
<span class="md-ellipsis">
Git & Git Patterns. Trunk Devel, Git Flow & Feature Flags. Merge BOTs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="jenkins.html" class="md-nav__link">
<span class="md-ellipsis">
Jenkins & Cloudbees
</span>
</a>
</li>
<li class="md-nav__item">
<a href="performance-testing-with-jenkins-and-jmeter.html" class="md-nav__link">
<span class="md-ellipsis">
Performance testing with Jenkins, JMeter, Gatling, Azure Load Testing, etc
</span>
</a>
</li>
<li class="md-nav__item">
<a href="openshift-pipelines.html" class="md-nav__link">
<span class="md-ellipsis">
OpenShift Pipelines with Jenkins, Tekton and more...
</span>
</a>
</li>
<li class="md-nav__item">
<a href="performance-testing-with-jenkins-and-jmeter.html" class="md-nav__link">
<span class="md-ellipsis">
Performance testing with Jenkins, JMeter, Gatling, Azure Load Testing, etc
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_12_7" >
<label class="md-nav__link" for="__nav_12_7" id="__nav_12_7_label" tabindex="0">
<span class="md-ellipsis">
DevOps Tools aka Toolchain. Jenkins Alternatives. Cloud Native CI/CD Tools
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_12_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_12_7">
<span class="md-nav__icon md-icon"></span>
DevOps Tools aka Toolchain. Jenkins Alternatives. Cloud Native CI/CD Tools
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="devops-tools.html" class="md-nav__link">
<span class="md-ellipsis">
DevOps Tools
</span>
</a>
</li>
<li class="md-nav__item">
<a href="jenkins-alternatives.html" class="md-nav__link">
<span class="md-ellipsis">
Jenkins Alternatives for Continuous Integration & Deployment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="argo.html" class="md-nav__link">
<span class="md-ellipsis">
Argo - Declarative GitOps for Kubernetes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="flux.html" class="md-nav__link">
<span class="md-ellipsis">
Flux CD - The GitOps Operator for Kubernetes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tekton.html" class="md-nav__link">
<span class="md-ellipsis">
Tekton - Cloud Native CI/CD
</span>
</a>
</li>
<li class="md-nav__item">
<a href="keptn.html" class="md-nav__link">
<span class="md-ellipsis">
Keptn
</span>
</a>
</li>
<li class="md-nav__item">
<a href="container-managers.html" class="md-nav__link">
<span class="md-ellipsis">
Container Runtimes/Managers & Base Images. Podman, Buildah & Skopeo
</span>
</a>
</li>
<li class="md-nav__item">
<a href="maven-gradle.html" class="md-nav__link">
<span class="md-ellipsis">
Maven, Gradle & SDKMAN
</span>
</a>
</li>
<li class="md-nav__item">
<a href="sonarqube.html" class="md-nav__link">
<span class="md-ellipsis">
SonarQube
</span>
</a>
</li>
<li class="md-nav__item">
<a href="registries.html" class="md-nav__link">
<span class="md-ellipsis">
Docker Registries. Quay, Nexus, JFrog Artifactory, Harbor and more
</span>
</a>
</li>
<li class="md-nav__item">
<a href="linux.html" class="md-nav__link">
<span class="md-ellipsis">
Linux & SSH
</span>
</a>
</li>
<li class="md-nav__item">
<a href="mkdocs.html" class="md-nav__link">
<span class="md-ellipsis">
MkDocs & GitHub Pages
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_12_8" >
<label class="md-nav__link" for="__nav_12_8" id="__nav_12_8_label" tabindex="0">
<span class="md-ellipsis">
Web Servers, Reverse Proxies, Java Runtimes & Caching Solutions
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_12_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_12_8">
<span class="md-nav__icon md-icon"></span>
Web Servers, Reverse Proxies, Java Runtimes & Caching Solutions
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="web-servers.html" class="md-nav__link">
<span class="md-ellipsis">
Web Servers & Reverse Proxies - Apache, Nginx, HAProxy, Traefik and more
</span>
</a>
</li>
<li class="md-nav__item">
<a href="java_app_servers.html" class="md-nav__link">
<span class="md-ellipsis">
Java EE/Jakarta EE and MicroProfile Runtimes - Payara, JBoss EAP, WebSphere Liberty, WildFly and more
</span>
</a>
</li>
<li class="md-nav__item">
<a href="embedded-servlet-containers.html" class="md-nav__link">
<span class="md-ellipsis">
Embedded Servlet Containers in SpringBoot
</span>
</a>
</li>
<li class="md-nav__item">
<a href="caching.html" class="md-nav__link">
<span class="md-ellipsis">
Caching Solutions
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_13" checked>
<label class="md-nav__link" for="__nav_13" id="__nav_13_label" tabindex="">
<span class="md-ellipsis">
Montrg
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_13_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_13">
<span class="md-nav__icon md-icon"></span>
Montrg
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Monitoring and Performance
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="monitoring.html" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Monitoring and Performance
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#monitoring-and-observability" class="md-nav__link">
<span class="md-ellipsis">
Monitoring and Observability
</span>
</a>
<nav class="md-nav" aria-label="Monitoring and Observability">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#profiling" class="md-nav__link">
<span class="md-ellipsis">
Profiling
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#key-performance-indicator-kpi" class="md-nav__link">
<span class="md-ellipsis">
Key Performance Indicator (KPI)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#openshift-cluster-monitoring-built-in-solutions" class="md-nav__link">
<span class="md-ellipsis">
OpenShift Cluster Monitoring Built-in solutions
</span>
</a>
<nav class="md-nav" aria-label="OpenShift Cluster Monitoring Built-in solutions">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#openshift-311-metrics-and-logging" class="md-nav__link">
<span class="md-ellipsis">
OpenShift 3.11 Metrics and Logging
</span>
</a>
<nav class="md-nav" aria-label="OpenShift 3.11 Metrics and Logging">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#prometheus-and-grafana" class="md-nav__link">
<span class="md-ellipsis">
Prometheus and Grafana
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#custom-grafana-dashboard-for-openshift-311" class="md-nav__link">
<span class="md-ellipsis">
Custom Grafana Dashboard for OpenShift 3.11
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#capacity-management-grafana-dashboard" class="md-nav__link">
<span class="md-ellipsis">
Capacity Management Grafana Dashboard
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#software-delivery-metrics-grafana-dashboard" class="md-nav__link">
<span class="md-ellipsis">
Software Delivery Metrics Grafana Dashboard
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#prometheus-for-openshift-311" class="md-nav__link">
<span class="md-ellipsis">
Prometheus for OpenShift 3.11
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#openshift-4" class="md-nav__link">
<span class="md-ellipsis">
OpenShift 4
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#monitoring-micro-front-ends-on-kubernetes-with-nginx" class="md-nav__link">
<span class="md-ellipsis">
Monitoring micro-front ends on kubernetes with NGINX
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#prometheus-vs-opentelemetry" class="md-nav__link">
<span class="md-ellipsis">
Prometheus vs OpenTelemetry
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#prometheus" class="md-nav__link">
<span class="md-ellipsis">
Prometheus
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#grafana" class="md-nav__link">
<span class="md-ellipsis">
Grafana
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#kibana" class="md-nav__link">
<span class="md-ellipsis">
Kibana
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#prometheus-and-grafana-interactive-learning" class="md-nav__link">
<span class="md-ellipsis">
Prometheus and Grafana Interactive Learning
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#logging-centralized-log-management" class="md-nav__link">
<span class="md-ellipsis">
Logging &amp; Centralized Log Management
</span>
</a>
<nav class="md-nav" aria-label="Logging &amp; Centralized Log Management">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#elasticsearch" class="md-nav__link">
<span class="md-ellipsis">
ElasticSearch
</span>
</a>
<nav class="md-nav" aria-label="ElasticSearch">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#elastic-cloud-on-kubernetes-eck" class="md-nav__link">
<span class="md-ellipsis">
Elastic Cloud on Kubernetes (ECK)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#opensearch" class="md-nav__link">
<span class="md-ellipsis">
OpenSearch
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#efk-elasticsearch-fluentd-kibana" class="md-nav__link">
<span class="md-ellipsis">
EFK ElasticSearch Fluentd Kibana
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#logstash-grok-for-log-parsing" class="md-nav__link">
<span class="md-ellipsis">
Logstash Grok for Log Parsing
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#internet-performance-monitoring-ipm" class="md-nav__link">
<span class="md-ellipsis">
Internet Performance Monitoring (IPM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#performance" class="md-nav__link">
<span class="md-ellipsis">
Performance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#list-of-performance-analysis-tools" class="md-nav__link">
<span class="md-ellipsis">
List of Performance Analysis Tools
</span>
</a>
<nav class="md-nav" aria-label="List of Performance Analysis Tools">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#thread-dumps-debugging-java-applications" class="md-nav__link">
<span class="md-ellipsis">
Thread Dumps. Debugging Java Applications
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#debugging-java-applications-on-openshift-and-kubernetes" class="md-nav__link">
<span class="md-ellipsis">
Debugging Java Applications on OpenShift and Kubernetes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#distributed-tracing-opentelemetry-and-jaeger" class="md-nav__link">
<span class="md-ellipsis">
Distributed Tracing. OpenTelemetry and Jaeger
</span>
</a>
<nav class="md-nav" aria-label="Distributed Tracing. OpenTelemetry and Jaeger">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#microservice-observability-with-distributed-tracing-opentelemetryio" class="md-nav__link">
<span class="md-ellipsis">
Microservice Observability with Distributed Tracing. OpenTelemetry.io
</span>
</a>
<nav class="md-nav" aria-label="Microservice Observability with Distributed Tracing. OpenTelemetry.io">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#opentelemetry-operator" class="md-nav__link">
<span class="md-ellipsis">
OpenTelemetry Operator
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#jaeger-vs-opentelemetry-how-jaeger-works-with-opentelemetry" class="md-nav__link">
<span class="md-ellipsis">
Jaeger VS OpenTelemetry. How Jaeger works with OpenTelemetry
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#jaeger-vs-zipkin" class="md-nav__link">
<span class="md-ellipsis">
Jaeger vs Zipkin
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#grafana-tempo-distributed-tracing-system" class="md-nav__link">
<span class="md-ellipsis">
Grafana Tempo distributed tracing system
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#application-performance-management-apm" class="md-nav__link">
<span class="md-ellipsis">
Application Performance Management (APM)
</span>
</a>
<nav class="md-nav" aria-label="Application Performance Management (APM)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#elastic-apm" class="md-nav__link">
<span class="md-ellipsis">
Elastic APM
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#dynatrace-apm" class="md-nav__link">
<span class="md-ellipsis">
Dynatrace APM
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#message-queue-monitoring" class="md-nav__link">
<span class="md-ellipsis">
Message Queue Monitoring
</span>
</a>
<nav class="md-nav" aria-label="Message Queue Monitoring">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#red-hat-amq-7-broker-monitoring-solutions-based-on-prometheus-and-grafana" class="md-nav__link">
<span class="md-ellipsis">
Red Hat AMQ 7 Broker Monitoring solutions based on Prometheus and Grafana
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#serverless-monitoring" class="md-nav__link">
<span class="md-ellipsis">
Serverless Monitoring
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#distributed-tracing-in-apache-beam" class="md-nav__link">
<span class="md-ellipsis">
Distributed Tracing in Apache Beam
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#krossboard-converged-kubernetes-usage-analytics" class="md-nav__link">
<span class="md-ellipsis">
Krossboard Converged Kubernetes usage analytics
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#instana-apm" class="md-nav__link">
<span class="md-ellipsis">
Instana APM
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#monitoring-etcd" class="md-nav__link">
<span class="md-ellipsis">
Monitoring Etcd
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#zabbix" class="md-nav__link">
<span class="md-ellipsis">
Zabbix
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#victoriametrics-and-victorialogs" class="md-nav__link">
<span class="md-ellipsis">
VictoriaMetrics and VictoriaLogs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#other-tools" class="md-nav__link">
<span class="md-ellipsis">
Other Tools
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#other-awesome-lists" class="md-nav__link">
<span class="md-ellipsis">
Other Awesome Lists
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#slides" class="md-nav__link">
<span class="md-ellipsis">
Slides
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#tweets" class="md-nav__link">
<span class="md-ellipsis">
Tweets
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="prometheus.html" class="md-nav__link">
<span class="md-ellipsis">
Prometheus
</span>
</a>
</li>
<li class="md-nav__item">
<a href="grafana.html" class="md-nav__link">
<span class="md-ellipsis">
Grafana
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_14" >
<label class="md-nav__link" for="__nav_14" id="__nav_14_label" tabindex="0">
<span class="md-ellipsis">
Infra Prov
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_14_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_14">
<span class="md-nav__icon md-icon"></span>
Infra Prov
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="iac.html" class="md-nav__link">
<span class="md-ellipsis">
IaC Infrastructure as Code
</span>
</a>
</li>
<li class="md-nav__item">
<a href="terraform.html" class="md-nav__link">
<span class="md-ellipsis">
Terraform & Packer.Kubernetes Boilerplates
</span>
</a>
</li>
<li class="md-nav__item">
<a href="pulumi.html" class="md-nav__link">
<span class="md-ellipsis">
Pulumi
</span>
</a>
</li>
<li class="md-nav__item">
<a href="crossplane.html" class="md-nav__link">
<span class="md-ellipsis">
Crossplane
</span>
</a>
</li>
<li class="md-nav__item">
<a href="cloud-arch-diagrams.html" class="md-nav__link">
<span class="md-ellipsis">
Cloud Architecture Diagram Tools
</span>
</a>
</li>
<li class="md-nav__item">
<a href="cloud-asset-inventory.html" class="md-nav__link">
<span class="md-ellipsis">
Cloud Asset Inventory
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_15" >
<label class="md-nav__link" for="__nav_15" id="__nav_15_label" tabindex="0">
<span class="md-ellipsis">
Config Mgmt
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_15">
<span class="md-nav__icon md-icon"></span>
Config Mgmt
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="ansible.html" class="md-nav__link">
<span class="md-ellipsis">
Ansible
</span>
</a>
</li>
<li class="md-nav__item">
<a href="helm.html" class="md-nav__link">
<span class="md-ellipsis">
Helm Kubernetes Tool
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kustomize.html" class="md-nav__link">
<span class="md-ellipsis">
Kustomize - Template-Free Kubernetes Configuration Customization
</span>
</a>
</li>
<li class="md-nav__item">
<a href="stackstorm.html" class="md-nav__link">
<span class="md-ellipsis">
StackStorm
</span>
</a>
</li>
<li class="md-nav__item">
<a href="chef.html" class="md-nav__link">
<span class="md-ellipsis">
Chef
</span>
</a>
</li>
<li class="md-nav__item">
<a href="cicd-kubernetes-plugins.html" class="md-nav__link">
<span class="md-ellipsis">
CI/CD Kubernetes Plugins
</span>
</a>
</li>
<li class="md-nav__item">
<a href="kubernetes-client-libraries.html" class="md-nav__link">
<span class="md-ellipsis">
Client Libraries for Kubernetes - Go client, Python, Fabric8, JKube & Java Operator SDK
</span>
</a>
</li>
<li class="md-nav__item">
<a href="liquibase.html" class="md-nav__link">
<span class="md-ellipsis">
Database Version Control. Liquibase, Flyway and PlanetScale
</span>
</a>
</li>
<li class="md-nav__item">
<a href="yaml.html" class="md-nav__link">
<span class="md-ellipsis">
YAML and JSON
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_16" >
<label class="md-nav__link" for="__nav_16" id="__nav_16_label" tabindex="0">
<span class="md-ellipsis">
DB
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_16">
<span class="md-nav__icon md-icon"></span>
DB
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="databases.html" class="md-nav__link">
<span class="md-ellipsis">
Relational Databases and Database DevOps
</span>
</a>
</li>
<li class="md-nav__item">
<a href="crunchydata.html" class="md-nav__link">
<span class="md-ellipsis">
Crunchy Data PostgreSQL Operator
</span>
</a>
</li>
<li class="md-nav__item">
<a href="nosql.html" class="md-nav__link">
<span class="md-ellipsis">
NoSQL Databases
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="message-queue.html" class="md-nav__link">
<span class="md-ellipsis">
Data Pipeline
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_18" >
<label class="md-nav__link" for="__nav_18" id="__nav_18_label" tabindex="0">
<span class="md-ellipsis">
Service Mesh
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_18_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_18">
<span class="md-nav__icon md-icon"></span>
Service Mesh
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="servicemesh.html" class="md-nav__link">
<span class="md-ellipsis">
Service Mesh
</span>
</a>
</li>
<li class="md-nav__item">
<a href="istio.html" class="md-nav__link">
<span class="md-ellipsis">
Istio
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_19" >
<label class="md-nav__link" for="__nav_19" id="__nav_19_label" tabindex="0">
<span class="md-ellipsis">
Demos
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_19_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_19">
<span class="md-nav__icon md-icon"></span>
Demos
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="demos.html" class="md-nav__link">
<span class="md-ellipsis">
Demos, Boilerplates & Screencasts
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_20" >
<label class="md-nav__link" for="__nav_20" id="__nav_20_label" tabindex="0">
<span class="md-ellipsis">
Cloud
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_20_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_20">
<span class="md-nav__icon md-icon"></span>
Cloud
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="public-cloud-solutions.html" class="md-nav__link">
<span class="md-ellipsis">
Public Cloud Solutions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="private-cloud-solutions.html" class="md-nav__link">
<span class="md-ellipsis">
Private Cloud Solutions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="edge-computing.html" class="md-nav__link">
<span class="md-ellipsis">
Edge Computing
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_20_4" >
<label class="md-nav__link" for="__nav_20_4" id="__nav_20_4_label" tabindex="0">
<span class="md-ellipsis">
AWS Cloud
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_20_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_20_4">
<span class="md-nav__icon md-icon"></span>
AWS Cloud
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="aws.html" class="md-nav__link">
<span class="md-ellipsis">
AWS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="aws-miscellaneous.html" class="md-nav__link">
<span class="md-ellipsis">
AWS Miscellaneous
</span>
</a>
</li>
<li class="md-nav__item">
<a href="aws-architecture.html" class="md-nav__link">
<span class="md-ellipsis">
AWS Architecture and Best Practices
</span>
</a>
</li>
<li class="md-nav__item">
<a href="aws-networking.html" class="md-nav__link">
<span class="md-ellipsis">
AWS Networking
</span>
</a>
</li>
<li class="md-nav__item">
<a href="aws-databases.html" class="md-nav__link">
<span class="md-ellipsis">
AWS Databases
</span>
</a>
</li>
<li class="md-nav__item">
<a href="aws-storage.html" class="md-nav__link">
<span class="md-ellipsis">
AWS Storage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="aws-security.html" class="md-nav__link">
<span class="md-ellipsis">
AWS Security
</span>
</a>
</li>
<li class="md-nav__item">
<a href="aws-monitoring.html" class="md-nav__link">
<span class="md-ellipsis">
AWS Monitoring
</span>
</a>
</li>
<li class="md-nav__item">
<a href="aws-iac.html" class="md-nav__link">
<span class="md-ellipsis">
AWS IaC
</span>
</a>
</li>
<li class="md-nav__item">
<a href="aws-tools-scripts.html" class="md-nav__link">
<span class="md-ellipsis">
AWS Tools Scripts
</span>
</a>
</li>
<li class="md-nav__item">
<a href="aws-messaging.html" class="md-nav__link">
<span class="md-ellipsis">
AWS Messaging
</span>
</a>
</li>
<li class="md-nav__item">
<a href="aws-data.html" class="md-nav__link">
<span class="md-ellipsis">
AWS Data
</span>
</a>
</li>
<li class="md-nav__item">
<a href="aws-devops.html" class="md-nav__link">
<span class="md-ellipsis">
AWS DevOps
</span>
</a>
</li>
<li class="md-nav__item">
<a href="aws-serverless.html" class="md-nav__link">
<span class="md-ellipsis">
AWS Serverless
</span>
</a>
</li>
<li class="md-nav__item">
<a href="aws-pricing.html" class="md-nav__link">
<span class="md-ellipsis">
AWS Pricing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="aws-containers.html" class="md-nav__link">
<span class="md-ellipsis">
AWS Containers
</span>
</a>
</li>
<li class="md-nav__item">
<a href="aws-backup.html" class="md-nav__link">
<span class="md-ellipsis">
AWS Backup and Migrations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="aws-training.html" class="md-nav__link">
<span class="md-ellipsis">
AWS Training and Certification
</span>
</a>
</li>
<li class="md-nav__item">
<a href="aws-newfeatures.html" class="md-nav__link">
<span class="md-ellipsis">
AWS New Features
</span>
</a>
</li>
<li class="md-nav__item">
<a href="aws-spain.html" class="md-nav__link">
<span class="md-ellipsis">
AWS Spain
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="azure.html" class="md-nav__link">
<span class="md-ellipsis">
Microsoft Azure
</span>
</a>
</li>
<li class="md-nav__item">
<a href="GoogleCloudPlatform.html" class="md-nav__link">
<span class="md-ellipsis">
Google Cloud Platform
</span>
</a>
</li>
<li class="md-nav__item">
<a href="ibm_cloud.html" class="md-nav__link">
<span class="md-ellipsis">
IBM & IBM Cloud
</span>
</a>
</li>
<li class="md-nav__item">
<a href="oraclecloud.html" class="md-nav__link">
<span class="md-ellipsis">
Oracle Cloud
</span>
</a>
</li>
<li class="md-nav__item">
<a href="digitalocean.html" class="md-nav__link">
<span class="md-ellipsis">
Digital Ocean
</span>
</a>
</li>
<li class="md-nav__item">
<a href="cloudflare.html" class="md-nav__link">
<span class="md-ellipsis">
Cloudflare
</span>
</a>
</li>
<li class="md-nav__item">
<a href="scaleway.html" class="md-nav__link">
<span class="md-ellipsis">
Scaleway
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_21" >
<label class="md-nav__link" for="__nav_21" id="__nav_21_label" tabindex="0">
<span class="md-ellipsis">
APIs
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_21_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_21">
<span class="md-nav__icon md-icon"></span>
APIs
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="api.html" class="md-nav__link">
<span class="md-ellipsis">
APIs with SOAP, REST and gRPC
</span>
</a>
</li>
<li class="md-nav__item">
<a href="swagger-code-generator-for-rest-apis.html" class="md-nav__link">
<span class="md-ellipsis">
Swagger code generator for REST APIs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="postman.html" class="md-nav__link">
<span class="md-ellipsis">
API Test Automation with Postman and REST Assured
</span>
</a>
</li>
<li class="md-nav__item">
<a href="developerportals.html" class="md-nav__link">
<span class="md-ellipsis">
API Marketplaces. API Management with API Gateways & Developer Portals
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_22" >
<label class="md-nav__link" for="__nav_22" id="__nav_22_label" tabindex="0">
<span class="md-ellipsis">
Dev
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_22_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_22">
<span class="md-nav__icon md-icon"></span>
Dev
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="devel-sites.html" class="md-nav__link">
<span class="md-ellipsis">
Websites for web developers
</span>
</a>
</li>
<li class="md-nav__item">
<a href="angular.html" class="md-nav__link">
<span class="md-ellipsis">
Angular
</span>
</a>
</li>
<li class="md-nav__item">
<a href="dom.html" class="md-nav__link">
<span class="md-ellipsis">
Document Object Model (DOM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="golang.html" class="md-nav__link">
<span class="md-ellipsis">
Golang
</span>
</a>
</li>
<li class="md-nav__item">
<a href="javascript.html" class="md-nav__link">
<span class="md-ellipsis">
JavaScript - node.js & npm
</span>
</a>
</li>
<li class="md-nav__item">
<a href="python.html" class="md-nav__link">
<span class="md-ellipsis">
Python - Django & Flask
</span>
</a>
</li>
<li class="md-nav__item">
<a href="react.html" class="md-nav__link">
<span class="md-ellipsis">
React
</span>
</a>
</li>
<li class="md-nav__item">
<a href="lowcode-nocode.html" class="md-nav__link">
<span class="md-ellipsis">
Low Code and No Code
</span>
</a>
</li>
<li class="md-nav__item">
<a href="web3.html" class="md-nav__link">
<span class="md-ellipsis">
Web 3
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_22_10" >
<label class="md-nav__link" for="__nav_22_10" id="__nav_22_10_label" tabindex="0">
<span class="md-ellipsis">
Microsoft
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_22_10_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_22_10">
<span class="md-nav__icon md-icon"></span>
Microsoft
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="dotnet.html" class="md-nav__link">
<span class="md-ellipsis">
Microsoft .NET
</span>
</a>
</li>
<li class="md-nav__item">
<a href="xamarin.html" class="md-nav__link">
<span class="md-ellipsis">
Microsoft Xamarin
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_22_11" >
<label class="md-nav__link" for="__nav_22_11" id="__nav_22_11_label" tabindex="0">
<span class="md-ellipsis">
Java
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_22_11_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_22_11">
<span class="md-nav__icon md-icon"></span>
Java
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="java_frameworks.html" class="md-nav__link">
<span class="md-ellipsis">
Java & Open Source Microservices Frameworks. SpringBoot, MicroProfile, Quarkus and more
</span>
</a>
</li>
<li class="md-nav__item">
<a href="java-and-java-performance-optimization.html" class="md-nav__link">
<span class="md-ellipsis">
Java Memory Management & Java Performance Optimization
</span>
</a>
</li>
<li class="md-nav__item">
<a href="jvm-parameters-matrix-table.html" class="md-nav__link">
<span class="md-ellipsis">
Java Parameters Matrix Table
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_22_12" >
<label class="md-nav__link" for="__nav_22_12" id="__nav_22_12_label" tabindex="0">
<span class="md-ellipsis">
Dev Environment
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_22_12_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_22_12">
<span class="md-nav__icon md-icon"></span>
Dev Environment
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="visual-studio.html" class="md-nav__link">
<span class="md-ellipsis">
Visual Studio Code
</span>
</a>
</li>
<li class="md-nav__item">
<a href="linux-dev-env.html" class="md-nav__link">
<span class="md-ellipsis">
WSL - Linux Dev Environment on Windows
</span>
</a>
</li>
<li class="md-nav__item">
<a href="scaffolding.html" class="md-nav__link">
<span class="md-ellipsis">
Scaffolding Tools
</span>
</a>
</li>
<li class="md-nav__item">
<a href="ChromeDevTools.html" class="md-nav__link">
<span class="md-ellipsis">
Chrome & Firefox DevTools. HTTP Protocols & WebSockets
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_23" >
<label class="md-nav__link" for="__nav_23" id="__nav_23_label" tabindex="0">
<span class="md-ellipsis">
QA
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_23_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_23">
<span class="md-nav__icon md-icon"></span>
QA
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="qa.html" class="md-nav__link">
<span class="md-ellipsis">
QA
</span>
</a>
</li>
<li class="md-nav__item">
<a href="testops.html" class="md-nav__link">
<span class="md-ellipsis">
TestOps and Continuous Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="test-automation-frameworks.html" class="md-nav__link">
<span class="md-ellipsis">
Test Automation Frameworks and BDD
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_24" >
<label class="md-nav__link" for="__nav_24" id="__nav_24_label" tabindex="0">
<span class="md-ellipsis">
AI
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_24_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_24">
<span class="md-nav__icon md-icon"></span>
AI
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="ai.html" class="md-nav__link">
<span class="md-ellipsis">
AI
</span>
</a>
</li>
<li class="md-nav__item">
<a href="ai-agents-mcp.html" class="md-nav__link">
<span class="md-ellipsis">
Model Context Protocol (MCP) & AI Agents
</span>
</a>
</li>
<li class="md-nav__item">
<a href="mlops.html" class="md-nav__link">
<span class="md-ellipsis">
MLOps
</span>
</a>
</li>
<li class="md-nav__item">
<a href="chatgpt.html" class="md-nav__link">
<span class="md-ellipsis">
ChatGPT
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_25" >
<label class="md-nav__link" for="__nav_25" id="__nav_25_label" tabindex="0">
<span class="md-ellipsis">
Project Mgmt
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_25_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_25">
<span class="md-nav__icon md-icon"></span>
Project Mgmt
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="project-management-methodology.html" class="md-nav__link">
<span class="md-ellipsis">
Project Management Methodology
</span>
</a>
</li>
<li class="md-nav__item">
<a href="project-management-tools.html" class="md-nav__link">
<span class="md-ellipsis">
Project Management Tools
</span>
</a>
</li>
<li class="md-nav__item">
<a href="appointment-scheduling.html" class="md-nav__link">
<span class="md-ellipsis">
Appointment Scheduling
</span>
</a>
</li>
<li class="md-nav__item">
<a href="workfromhome.html" class="md-nav__link">
<span class="md-ellipsis">
Work From Home
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_26" >
<label class="md-nav__link" for="__nav_26" id="__nav_26_label" tabindex="0">
<span class="md-ellipsis">
Refs+
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_26_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_26">
<span class="md-nav__icon md-icon"></span>
Refs+
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="other-awesome-lists.html" class="md-nav__link">
<span class="md-ellipsis">
Other Awesome Lists
</span>
</a>
</li>
<li class="md-nav__item">
<a href="interview-questions.html" class="md-nav__link">
<span class="md-ellipsis">
Interview Questions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="newsfeeds.html" class="md-nav__link">
<span class="md-ellipsis">
Subreddits
</span>
</a>
</li>
<li class="md-nav__item">
<a href="elearning.html" class="md-nav__link">
<span class="md-ellipsis">
E-Learning
</span>
</a>
</li>
<li class="md-nav__item">
<a href="digital-money.html" class="md-nav__link">
<span class="md-ellipsis">
Digital Money
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_27" >
<label class="md-nav__link" for="__nav_27" id="__nav_27_label" tabindex="0">
<span class="md-ellipsis">
Hiring
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_27_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_27">
<span class="md-nav__icon md-icon"></span>
Hiring
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="recruitment.html" class="md-nav__link">
<span class="md-ellipsis">
Recruitment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="hr.html" class="md-nav__link">
<span class="md-ellipsis">
Human Resources
</span>
</a>
</li>
<li class="md-nav__item">
<a href="freelancing.html" class="md-nav__link">
<span class="md-ellipsis">
Freelancing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="remote-tech-jobs.html" class="md-nav__link">
<span class="md-ellipsis">
Remote Tech Jobs
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="customer.html" class="md-nav__link">
<span class="md-ellipsis">
Clients
</span>
</a>
</li>
<li class="md-nav__item">
<a href="about.html" class="md-nav__link">
<span class="md-ellipsis">
About
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="monitoring-and-performance-prometheus-grafana-apms-and-more">Monitoring and Performance. Prometheus, Grafana, APMs and more</h1>
<ol>
<li><a href="#monitoring-and-observability">Monitoring and Observability</a><ol>
<li><a href="#profiling">Profiling</a></li>
<li><a href="#key-performance-indicator-kpi">Key Performance Indicator (KPI)</a></li>
</ol>
</li>
<li><a href="#openshift-cluster-monitoring-built-in-solutions">OpenShift Cluster Monitoring Built-in solutions</a><ol>
<li><a href="#openshift-311-metrics-and-logging">OpenShift 3.11 Metrics and Logging</a><ol>
<li><a href="#prometheus-and-grafana">Prometheus and Grafana</a></li>
<li><a href="#custom-grafana-dashboard-for-openshift-311">Custom Grafana Dashboard for OpenShift 3.11</a></li>
<li><a href="#capacity-management-grafana-dashboard">Capacity Management Grafana Dashboard</a></li>
<li><a href="#software-delivery-metrics-grafana-dashboard">Software Delivery Metrics Grafana Dashboard</a></li>
<li><a href="#prometheus-for-openshift-311">Prometheus for OpenShift 3.11</a></li>
</ol>
</li>
<li><a href="#openshift-4">OpenShift 4</a></li>
</ol>
</li>
<li><a href="#monitoring-micro-front-ends-on-kubernetes-with-nginx">Monitoring micro-front ends on kubernetes with NGINX</a></li>
<li><a href="#prometheus-vs-opentelemetry">Prometheus vs OpenTelemetry</a></li>
<li><a href="#prometheus">Prometheus</a></li>
<li><a href="#grafana">Grafana</a></li>
<li><a href="#kibana">Kibana</a></li>
<li><a href="#prometheus-and-grafana-interactive-learning">Prometheus and Grafana Interactive Learning</a></li>
<li><a href="#logging--centralized-log-management">Logging \&amp; Centralized Log Management</a><ol>
<li><a href="#elasticsearch">ElasticSearch</a><ol>
<li><a href="#elastic-cloud-on-kubernetes-eck">Elastic Cloud on Kubernetes (ECK)</a></li>
</ol>
</li>
<li><a href="#opensearch">OpenSearch</a></li>
<li><a href="#efk-elasticsearch-fluentd-kibana">EFK ElasticSearch Fluentd Kibana</a></li>
<li><a href="#logstash-grok-for-log-parsing">Logstash Grok for Log Parsing</a></li>
</ol>
</li>
<li><a href="#internet-performance-monitoring-ipm">Internet Performance Monitoring (IPM)</a></li>
<li><a href="#performance">Performance</a></li>
<li><a href="#list-of-performance-analysis-tools">List of Performance Analysis Tools</a><ol>
<li><a href="#thread-dumps-debugging-java-applications">Thread Dumps. Debugging Java Applications</a></li>
</ol>
</li>
<li><a href="#debugging-java-applications-on-openshift-and-kubernetes">Debugging Java Applications on OpenShift and Kubernetes</a></li>
<li><a href="#distributed-tracing-opentelemetry-and-jaeger">Distributed Tracing. OpenTelemetry and Jaeger</a><ol>
<li><a href="#microservice-observability-with-distributed-tracing-opentelemetryio">Microservice Observability with Distributed Tracing. OpenTelemetry.io</a><ol>
<li><a href="#opentelemetry-operator">OpenTelemetry Operator</a></li>
</ol>
</li>
<li><a href="#jaeger-vs-opentelemetry-how-jaeger-works-with-opentelemetry">Jaeger VS OpenTelemetry. How Jaeger works with OpenTelemetry</a></li>
<li><a href="#jaeger-vs-zipkin">Jaeger vs Zipkin</a></li>
<li><a href="#grafana-tempo-distributed-tracing-system">Grafana Tempo distributed tracing system</a></li>
</ol>
</li>
<li><a href="#application-performance-management-apm">Application Performance Management (APM)</a><ol>
<li><a href="#elastic-apm">Elastic APM</a></li>
<li><a href="#dynatrace-apm">Dynatrace APM</a></li>
</ol>
</li>
<li><a href="#message-queue-monitoring">Message Queue Monitoring</a><ol>
<li><a href="#red-hat-amq-7-broker-monitoring-solutions-based-on-prometheus-and-grafana">Red Hat AMQ 7 Broker Monitoring solutions based on Prometheus and Grafana</a></li>
</ol>
</li>
<li><a href="#serverless-monitoring">Serverless Monitoring</a></li>
<li><a href="#distributed-tracing-in-apache-beam">Distributed Tracing in Apache Beam</a></li>
<li><a href="#krossboard-converged-kubernetes-usage-analytics">Krossboard Converged Kubernetes usage analytics</a></li>
<li><a href="#instana-apm">Instana APM</a></li>
<li><a href="#monitoring-etcd">Monitoring Etcd</a></li>
<li><a href="#zabbix">Zabbix</a></li>
<li><a href="#victoriametrics-and-victorialogs">VictoriaMetrics and VictoriaLogs</a></li>
<li><a href="#other-tools">Other Tools</a></li>
<li><a href="#other-awesome-lists">Other Awesome Lists</a></li>
<li><a href="#slides">Slides</a></li>
<li><a href="#tweets">Tweets</a></li>
</ol>
<h2 id="monitoring-and-observability">Monitoring and Observability</h2>
<ul>
<li><a href="https://sre.google/sre-book/monitoring-distributed-systems">Monitoring Distributed Systems - Google SRE Book</a> 🌟 - This chapter from the Google SRE book provides fundamental principles and best practices for building robust monitoring and alerting systems within distributed environments. It outlines guidelines on what constitutes an actionable alert that should interrupt a human and strategies for handling less critical issues.</li>
<li>
<p><a href="https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/manage/monitor#reference-for-monitoring-azure-services">Monitor your Azure cloud estate - Cloud Adoption Framework</a> - <em>(Related to azure topic)</em></p>
</li>
<li>
<p><a href="https://en.wikipedia.org/wiki/Apdex">Wikipedia: Application Performance Index</a></p>
</li>
<li><a href="https://middleware.io/blog/observability-vs-monitoring">Observability vs Monitoring</a></li>
<li><a href="https://thenewstack.io/kubernetes">thenewstack.io: The Challenges of Monitoring Kubernetes and OpenShift</a></li>
<li><a href="https://dzone.com/articles/kubernetes-monitoring-best-practices-methods-and-e">dzone.com: Kubernetes Monitoring: Best Practices, Methods, and Existing Solutions</a> Kubernetes handles containers in several computers, removing the complexity of handling distributed processing. But what&rsquo;s the best way to perform Kubernetes monitoring?</li>
<li><a href="https://blog.cloud-mercato.com/new-http-benchmark-tool-pycurlb">blog.cloud-mercato.com: New HTTP benchmark tool <strong>pycurlb</strong></a></li>
<li><a href="https://www.sysdig.com/blog/kubernetes-monitoring-best-practices">sysdig.com: Seven Kubernetes monitoring best practices every monitoring solution should enable</a></li>
<li><a href="https://www.cncf.io/blog/2020/09/11/cncf-end-user-technology-radar-observability-september-2020">CNCF End User Technology Radar: Observability, September 2020 🌟</a></li>
<li><a href="https://www.magalix.com/blog/monitoring-of-kubernetes-cluster-through-prometheus-and-grafana">magalix.com: Monitoring Kubernetes Clusters Through Prometheus &amp; Grafana 🌟</a></li>
<li><a href="https://www.ibm.com/think">instana.com: The Hidden Cost of Observability: Data Volume</a></li>
<li><a href="https://www.learnsteps.com/monitoring-infrastructure-system-design">learnsteps.com: Monitoring Infrastructure System Design</a></li>
<li><a href="https://bravenewgeek.com/the-observability-pipeline">bravenewgeek.com: The Observability Pipeline</a></li>
<li><a href="https://thenewstack.io/3-key-configuration-challenges-for-kubernetes-monitoring-with-prometheus">thenewstack.io: 3 Key Configuration Challenges for Kubernetes Monitoring with Prometheus</a></li>
<li><a href="https://www.sysdig.com/blog/kubernetes-monitoring-prometheus">sysdig.com: Kubernetes Monitoring with Prometheus, the ultimate guide 🌟</a></li>
<li><a href="https://www.sysdig.com/blog/monitor-kube-proxy">sysdig.com: How to monitor kube-proxy 🌟</a> In this article, you will learn how to monitor kube-proxy to ensure the correct health of your cluster network.</li>
<li><a href="https://thenewstack.io/monitoring-vs-observability-whats-the-difference">thenewstack.io: Monitoring vs. Observability: Whats the Difference?</a></li>
<li><a href="https://www.saaras.io/blog/leverage-open-source-oss-derive-insights-grafana-prometheus">getenroute.io: TSDB, Prometheus, Grafana In Kubernetes: Tracing A Variable Across The OSS Monitoring Stack</a></li>
<li><a href="https://dashbird.io/blog/monitoring-vs-observability">dashbird.io: Monitoring vs Observability: Can you tell the difference? 🌟</a></li>
<li><a href="https://thenewstack.io/monitoring-as-code-what-it-is-and-why-you-need-it">thenewstack.io: Monitoring as Code: What It Is and Why You Need It 🌟</a></li>
<li><a href="https://thenewstack.io/observability-wont-replace-monitoring-because-it-shouldnt">thenewstack.io: Observability Wont Replace Monitoring (Because It Shouldnt) 🌟</a></li>
<li><a href="https://matiasmct.medium.com/observability-at-scale-52d0d9a5fb9b">matiasmct.medium.com: Observability at Scale</a></li>
<li><a href="https://www.dynatrace.com/news/blog/how-to-solve-the-challenges-of-multicloud-aws-azure-and-gcp-observability">dynatrace.com: How to solve the challenges of multicloud AWS, Azure and GCP observability</a></li>
<li><a href="https://logz.io/blog/open-source-monitoring-tools-for-kubernetes">logz.io: Top 11 Open Source Monitoring Tools for Kubernetes 🌟</a><ul>
<li><a href="https://logz.io/blog/unified-observability-kubernetes-360">logz.io: Unified Observability: Announcing Kubernetes 360</a> A single, unified platform combining a true log analytics solution, the best Prometheus metrics monitoring, and the value of distributed tracing powered by Jaeger that enables DevOps teams to monitor application SLOs in a simple, efficient and actionable manner.</li>
</ul>
</li>
<li><a href="https://thenewstack.io/kubernetes/-observability-challenges-in-cloud-native-architecture">thenewstack.io: Kubernetes Observability Challenges in Cloud Native Architecture 🌟</a></li>
<li><a href="https://binero.com/observability">opsdis.com: Building a custom monitoring solution with Grafana, Prometheus and Loki</a></li>
<li><a href="https://www.harness.io/blog/continuous-integration-performance-metrics">harness.io: Metrics to Improve Continuous Integration Performance</a></li>
<li><a href="https://thenewstack.io/best-practices-to-optimize-infrastructure-monitoring-within-devops-teams">thenewstack.io: Best Practices to Optimize Infrastructure Monitoring within DevOps Teams</a></li>
<li><a href="https://faun.pub/devops-meets-observability-78775c021b0e">faun.pub: DevOps Meets Observability 🌟</a></li>
<li><a href="https://skillfield.com.au/blog/monitoring-kubernetes-and-docker-container-logs">skilledfield.com.au: Monitoring Kubernetes and Docker Container Logs</a></li>
<li><a href="https://thenewstack.io/growing-adoption-of-observability-powers-business-transformation">thenewstack.io: Growing Adoption of Observability Powers Business Transformation</a></li>
<li><a href="https://blog.thundra.io/what-ci-observability-means-for-devops">blog.thundra.io: What CI Observability Means for DevOps 🌟</a></li>
<li><a href="https://thenewstack.io/monitoring-api-latencies-after-releases-4-mistakes-to-avoid">thenewstack.io: Monitoring API Latencies After Releases: 4 Mistakes to Avoid</a> Find 4 common mistakes engineers make when using histograms to monitor API latencies from release to release.</li>
<li><a href="https://thenewstack.io/monitoring-api-latencies-after-releases-4-mistakes-to-avoid">thenewstack.io: Monitoring API Latencies After Releases: 4 Mistakes to Avoid</a></li>
<li><a href="https://thenewstack.io/devops-observability-from-code-to-cloud">thenewstack.io: DevOps Observability from Code to Cloud</a></li>
<li><a href="http://web.archive.org/web/20260208074902/https://ortelius.io/blog/2021/03/26/microservice-monitoring-and-visualization">ortelius.io: Microservice Monitoring and Visualization with Ortelius open source project [ARCHIVED]</a></li>
<li><a href="https://thenewstack.io/ci-observability-for-effective-change-management">thenewstack.io: CI Observability for Effective Change Management 🌟</a></li>
<li><a href="https://thenewstack.io/monitor-your-containers-with-sysdig">thenewstack.io: Monitor Your Containers with Sysdig</a></li>
<li><a href="https://thenewstack.io/applying-basic-vs-advanced-monitoring-techniques">thenewstack.io: Applying Basic vs. Advanced Monitoring Techniques</a></li>
<li><a href="https://cloudforecast.io/blog/cadvisor-and-kubernetes-monitoring-guide">cloudforecast.io: cAdvisor and Kubernetes Monitoring Guide 🌟</a></li>
<li><a href="https://hmh.engineering/musings-on-microservice-observability-f7052ac42f04">hmh.engineering: Musings on microservice observability!</a></li>
<li><a href="https://stackoverflow.blog/2021/09/08/observability-is-key-to-the-future-of-software-and-your-devops-career">stackoverflow.blog: Observability is key to the future of software (and your DevOps career)</a> Observability platforms enable you to easily figure out whats happening with every request and to identify the cause of issues fast. Learning the principles of observability and OpenTelemetry will set you apart from the crowd and provide you with a skill set that will be in increasing demand as more companies perform cloud migrations.</li>
<li><a href="https://www.forbes.com/councils/forbestechcouncil/2021/09/03/who-should-own-the-job-of-observability-in-devops/?streamIndex=0">forbes.com: Who Should Own The Job Of Observability In DevOps?</a></li>
<li><a href="https://www.dynatrace.com/news/blog/what-is-observability-2">dynatrace.com: What is observability? Not just logs, metrics and traces</a></li>
<li><a href="https://thenewstack.io/observability-is-the-new-kubernetes">thenewstack.io: Observability Is the New Kubernetes 🌟</a></li>
<li><a href="https://www.learnsteps.com/logging-infrastructure-system-design">learnsteps.com: Logging Infrastructure System Design</a> Logging infrastructure system design is very important for each and every infrastructure as you need to look into logs. When you have a huge number of applications talking to each other there is an enormous amount of logs that they produce. Handling this amount of logs can be very costly and a headache. Lets look at this problem for handling your logs at scale and Logging infrastructure System Design.</li>
<li><a href="https://medium.com/geekculture/monitoring-microservices-part-1-observability-b2b44fa3e67e">medium.com: Monitoring Microservices - Part 1: Observability | Anderson Carvalho</a> Achieving observability with probes, logs, metrics, and traces. <strong>The Observability Pyramid comprises Probes, Logs, Metrics, and Traces:</strong><ul>
<li><strong>Probes:</strong> Probes are often exposed as endpoints and used by external agents like load balancers, container orchestrators, application servers, and sysadmins before deciding what to do next. The most common probes are starting, ready, and live. The startup probe is on during the component bootstrap phase. The liveness probe is on from the time the component starts until it stops running. The readiness probe is on during the period where the component is ready/open to receive requests or process workload.</li>
<li><strong>Logs:</strong> Logs are messages produced during the component execution that capture a piece of relevant information. Usually, we classify log messages into all, debug, info, warn, error, and fatal. Logs can produce a huge amount of data and contain sensitive information. A good practice is to apply different log levels depending on the environment.</li>
<li><strong>Log Aggregation:</strong> Each component generates one or more log files. Since distributed systems are composed of multiples components, its a daunting and miserable task to dig into a bunch of log files during troubleshooting. Thus, log aggregation is highly recommended for Microservices.</li>
<li><strong>Metrics:</strong> Metrics give us the visibility of good and bad events that happen inside of an application. Metrics help us to distinguish between normal and abnormal application behavior. Usually, we collect, count, summarize and compare events related to rate, errors, duration, and saturation to produce metrics.</li>
<li><strong>Traces:</strong> Traces record the flow of data between different components and execution details of each one along the way. By tracing we can discover the relationships, dependencies between components, identify bottlenecks, comprehend the data flow, and the time span on each component.</li>
</ul>
</li>
<li><a href="https://www.infoworld.com/article/2270578/the-red-method-a-new-strategy-for-monitoring-microservices.html">infoworld.com: The RED method: A new strategy for monitoring microservices</a> By using the RED metrics—rate, error, and duration—you can get a solid understanding of how your services are performing for end-users.</li>
<li><a href="https://intellipaat.com/blog/devops-monitoring-tools">intellipaat.com: Top 10 DevOps Monitoring Tools</a> Are you a DevOps engineer? Are you confused about which DevOps monitoring tools to use for monitoring? If so, go through this comprehensive blog to know more about different types of DevOps monitoring tools, their purpose, and their importance.</li>
<li><a href="https://www.cncf.io/blog/2021/11/23/how-to-add-observability-to-your-application-pipeline"><mark>cncf.io: How to add observability to your application pipeline</mark></a></li>
<li><a href="https://storiesfromtheherd.com/unpacking-observability-a-beginners-guide-833258a0591f">storiesfromtheherd.com: Unpacking Observability</a></li>
<li><a href="https://logz.io/blog/monitoring-reality-check">logz.io: A Monitoring Reality Check: More of the Same Wont Work</a></li>
<li><a href="https://medium.com/buildpiper/observability-for-monitoring-microservices-top-5-ways-587871e726d0">medium.com/buildpiper: Observability for Monitoring Microservices — Top 5 Ways!</a> Knowing whats running inside the container, how the application and code are performing is critical for tackling important issues. Discussed here are some important Microservices monitoring tools and approaches. Take a look!</li>
<li><a href="https://medium.com/@cbkwgl/continuous-monitoring-in-devops-8d4db48a0e24">medium.com/@cbkwgl: Continuous Monitoring in DevOps 🌟</a></li>
<li><a href="https://logz.io/blog/open-source-observability-adoption-migration-curve">logz.io: The Open Source Observability Adoption and Migration Curve</a></li>
<li><a href="https://devopscube.com/what-is-observability"><mark>devopscube.com: What Is Observability? Comprehensive Beginners Guide</mark></a></li>
<li><a href="https://tiagodiasgeneroso.medium.com/observability-concepts-you-should-know-943fc057b208">tiagodiasgeneroso.medium.com: Observability Concepts you should know</a></li>
<li><a href="https://faun.pub/getting-started-with-observability-657d57aab1c7">faun.pub: Getting started with Observability</a> How to implement Observability</li>
<li><a href="https://medium.com/@badawekoo/monitoring-in-devops-lifecycle-4d9a2f277eb0">medium.com/@badawekoo: Monitoring in DevOps lifecycle</a></li>
<li><a href="https://laduram.medium.com/the-future-of-observability-c33cd7ff644a">laduram.medium.com: The Future of Observability</a></li>
<li><a href="https://devops.com/where-does-observability-stand-today-and-where-is-it-going-next">devops.com: Where Does Observability Stand Today, and Where is it Going Next?</a></li>
<li><a href="https://medium.com/kubeshop-i/top-8-open-source-observability-testing-tools-9341a361a634">medium.com/kubeshop-i: Top 8 Open-Source Observability &amp; Testing Tools</a></li>
<li><a href="https://dzone.com/articles/11-observability-tools-you-should-know-in-2023"><mark>dzone: 11 Observability Tools You Should Know</mark> 🌟</a> This article looks at the features, limitations, and important selling points of eleven popular observability tools to help you select the best one for your project.</li>
<li><a href="https://medium.com/devops-techable/setup-monitoring-with-prometheus-and-grafana-in-kubernetes-start-monitoring-your-kubernetes-a3071f083fa6">medium.com/devops-techable: Setup monitoring with Prometheus and Grafana in Kubernetes — Start monitoring your Kubernetes cluster resources</a></li>
<li><a href="https://thenewstack.io/what-is-container-monitoring">thenewstack.io: What Is Container Monitoring?</a> Cloud native architectures dont rely on dedicated hardware like virtualized infrastructure, which changes monitoring requirements and processes.</li>
<li><a href="https://devops.com/why-monitoring-as-code-will-be-a-must-for-devops-teams"><mark>devops.com: Why Monitoring-as-Code Will be a Must for DevOps Teams</mark></a></li>
<li><a href="https://medium.com/cloud-native-daily/why-you-shouldnt-fear-to-adopt-opentelemetry-for-observability-fcb6371ea8fe">medium.com/cloud-native-daily: Why You Shouldnt Fear to Adopt OpenTelemetry for Observability</a> An introduction to OpenTelemetry, an open-source project thats taking observability to a new level.</li>
<li><a href="https://medium.com/@bijit211987/observability-driven-development-2bc2cdde8661">medium.com/@bijit211987: Observability Driven Development (ODD)-Enhancing System Reliability</a></li>
<li><a href="https://www.forbes.com/councils/forbestechcouncil/2024/03/08/from-data-collection-to-delivering-kpis-a-roadmap-to-a-mature-observability-strategy/?streamIndex=0"><mark>forbes.com: From Data Collection To Delivering KPIs: A Roadmap To A Mature Observability Strategy</mark></a><ul>
<li>The observability space is a multi-billion-dollar market and for good reason—there are a lot of benefits when you implement a robust observability strategy. But extracting value is not as simple as adopting a tool, throwing your data into a black box and expecting it to spit out business-relevant, contextualized insights and helpful visualizations.</li>
<li>As they say, “Nothing good comes easy”—but when done right, a mature observability strategy will pay for itself over and over again.</li>
</ul>
</li>
</ul>
<h3 id="profiling">Profiling</h3>
<ul>
<li><a href="https://medium.com/performance-engineering-for-the-ordinary-barbie/why-profiling-should-be-part-of-regular-software-development-workflow-8b19b7f52b38"><mark>medium.com/performance-engineering-for-the-ordinary-barbie: Why profiling should be part of regular software development workflow</mark> 🌟</a></li>
</ul>
<h3 id="key-performance-indicator-kpi">Key Performance Indicator (KPI)</h3>
<ul>
<li><a href="https://www.kpi.org/KPI-Basics">KPIs</a></li>
</ul>
<h2 id="openshift-cluster-monitoring-built-in-solutions">OpenShift Cluster Monitoring Built-in solutions</h2>
<h3 id="openshift-311-metrics-and-logging">OpenShift 3.11 Metrics and Logging</h3>
<p>OpenShift Container Platform Monitoring ships with a Prometheus instance for cluster monitoring and a central Alertmanager cluster. In addition to Prometheus and Alertmanager, OpenShift Container Platform Monitoring also includes a <a href="https://grafana.com">Grafana</a> instance as well as pre-built dashboards for cluster monitoring troubleshooting. <strong>The Grafana instance that is provided with the monitoring stack, along with its dashboards, is read-only.</strong></p>
<table>
<thead>
<tr>
<th style="text-align: left;">Monitoring Component</th>
<th style="text-align: left;">Release</th>
<th style="text-align: left;">URL</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">ElasticSearch</td>
<td style="text-align: left;">5</td>
<td style="text-align: left;"><a href="https://docs.openshift.com/container-platform/3.11/release_notes/ocp_3_11_release_notes.html#ocp-311-metrics-and-logging">OpenShift 3.11 Metrics &amp; Logging</a></td>
</tr>
<tr>
<td style="text-align: left;">Fluentd</td>
<td style="text-align: left;">0.12</td>
<td style="text-align: left;"><a href="https://docs.openshift.com/container-platform/3.11/release_notes/ocp_3_11_release_notes.html#ocp-311-metrics-and-logging">OpenShift 3.11 Metrics &amp; Logging</a></td>
</tr>
<tr>
<td style="text-align: left;">Kibana</td>
<td style="text-align: left;">5.6.13</td>
<td style="text-align: left;"><a href="https://www.elastic.co/guide/en/kibana/5.6/introduction.html">kibana 5.6.13</a></td>
</tr>
<tr>
<td style="text-align: left;">Prometheus</td>
<td style="text-align: left;">2.3.2</td>
<td style="text-align: left;"><a href="https://docs.openshift.com/container-platform/3.11/install_config/prometheus_cluster_monitoring.html#prometheus-cluster-monitoring">OpenShift 3.11 Prometheus Cluster Monitoring</a></td>
</tr>
<tr>
<td style="text-align: left;">Prometheus Operator</td>
<td style="text-align: left;"></td>
<td style="text-align: left;"><a href="https://www.redhat.com/en/blog/generally-available-today-red-hat-openshift-container-platform-311-ready-power-enterprise-kubernetes-deployments">Prometheus Operator technical preview</a></td>
</tr>
<tr>
<td style="text-align: left;">Prometheus Alert Manager</td>
<td style="text-align: left;">0.15.1</td>
<td style="text-align: left;"><a href="https://docs.openshift.com/container-platform/3.11/install_config/prometheus_cluster_monitoring.html#configuring-alertmanager_prometheus-cluster-monitoring">OpenShift 3.11 Configuring Prometheus Alert Manager</a></td>
</tr>
<tr>
<td style="text-align: left;">Grafana</td>
<td style="text-align: left;">5.2.3</td>
<td style="text-align: left;"><a href="https://docs.openshift.com/container-platform/3.11/install_config/prometheus_cluster_monitoring.html#prometheus-cluster-monitoring">OpenShift 3.11 Prometheus Cluster Monitoring</a></td>
</tr>
</tbody>
</table>
<h4 id="prometheus-and-grafana">Prometheus and Grafana</h4>
<ul>
<li><a href="https://github.com/prometheus-operator">github.com/prometheus-operator</a></li>
<li><a href="https://www.redhat.com/en/blog/how-gather-and-display-metrics-red-hat-openshift">redhat.com: <strong>How to gather and display metrics in Red Hat OpenShift</strong> (Prometheus + Grafana)</a></li>
<li><a href="https://www.redhat.com/en/blog/generally-available-today-red-hat-openshift-container-platform-311-ready-power-enterprise-kubernetes-deployments">Generally Available today: Red Hat OpenShift Container Platform 3.11 is ready to power enterprise Kubernetes deployments 🌟</a></li>
<li><a href="https://thenewstack.io/kubernetes">The Challenges of Monitoring Kubernetes and OpenShift 3.11 🌟</a></li>
<li><a href="https://docs.openshift.com/container-platform/3.11/release_notes/ocp_3_11_release_notes.html#ocp-311-metrics-and-logging">OCP 3.11 Metrics and Logging</a></li>
<li><a href="https://docs.openshift.com/container-platform/3.11/install_config/prometheus_cluster_monitoring.html">Prometheus Cluster Monitoring 🌟</a></li>
<li><a href="https://docs.openshift.com/container-platform/3.11/install_config/prometheus_cluster_monitoring.html#configuring-alertmanager_prometheus-cluster-monitoring">Prometheus Alert Manager</a></li>
<li><a href="https://developers.redhat.com/blog/2018/11/22/automated-performance-testing-kubernetes-openshift">Leveraging Kubernetes and OpenShift for automated performance tests (part 1)</a></li>
<li><a href="https://developers.redhat.com/blog/2019/01/03/leveraging-openshift-or-kubernetes-for-automated-performance-tests-part-2">Building an observability stack for automated performance tests on Kubernetes and OpenShift (part 2) 🌟</a></li>
<li><a href="http://github.com/flaviostutz/promster">Promster: Use Prometheus in huge deployments with dynamic clustering and scrape sharding capabilities based on ETCD service registration</a></li>
<li><a href="https://developers.redhat.com/blog/2020/08/05/monitoring-net-core-applications-on-kubernetes">developers.redhat.com: Monitoring .NET Core applications on Kubernetes</a></li>
<li><a href="https://flightaware.engineering/systems-monitoring-with-prometheus-grafana">Systems Monitoring with Prometheus and Grafana</a></li>
</ul>
<center>
<p><a href="https://docs.openshift.com/container-platform/3.11/install_config/prometheus_cluster_monitoring.html"><img alt="openshift3 Monitoring" src="images/ocp_monitoring.png" /></a></p>
</center>
<h4 id="custom-grafana-dashboard-for-openshift-311">Custom Grafana Dashboard for OpenShift 3.11</h4>
<p>By default OpenShift 3.11 Grafana is a read-only instance. Many organizations may want to add new custom dashboards. This custom grafana will interact with existing Prometheus and will also add all out-of-the-box dashboards plus few more interesting dashboards which may require from day to day operation. Custom Grafana pod uses OpenShift oAuth to authenticate users and assigns &ldquo;Admin&rdquo; role to all users so that users can create their own dashboards for additional monitoring.</p>
<p><a href="https://github.com/redhat-cop/openshift-toolkit/tree/master/custom-dashboards">Getting Started with Custom Dashboarding on OpenShift using Grafana</a>. This repository contains scaffolding and automation for developing a custom dashboarding strategy on OpenShift using the OpenShift Monitoring stac</p>
<h4 id="capacity-management-grafana-dashboard">Capacity Management Grafana Dashboard</h4>
<p><a href="https://github.com/redhat-cop/openshift-toolkit/tree/master/capacity-dashboard">This repo</a> adds a capacity management Grafana dashboard. The intent of this dashboard is to answer a single question: Do I need a new node? . We believe this is the most important question when setting up a capacity management process. We are aware that this is not the only question a capacity management process may need to be able to answer. Thus, this should be considered as the starting point for organizations to build their capacity management process.</p>
<h4 id="software-delivery-metrics-grafana-dashboard">Software Delivery Metrics Grafana Dashboard</h4>
<p><a href="https://github.com/dora-metrics/pelorus">This repo</a> contains tooling to help organizations measure Software Delivery and Value Stream metrics.</p>
<h4 id="prometheus-for-openshift-311">Prometheus for OpenShift 3.11</h4>
<p><a href="https://github.com/openshift/origin/tree/release-3.11/examples/prometheus">This repo</a> contains example components for running either an operational Prometheus setup for your OpenShift cluster, or deploying a standalone secured Prometheus instance for configurating yourself.</p>
<h3 id="openshift-4">OpenShift 4</h3>
<p>OpenShift Container Platform includes a pre-configured, pre-installed, and self-updating monitoring stack that is based on the Prometheus open source project and its wider eco-system. It provides monitoring of cluster components and includes a set of alerts to immediately notify the cluster administrator about any occurring problems and a set of Grafana dashboards. The cluster monitoring stack is only supported for monitoring OpenShift Container Platform clusters.</p>
<p>OpenShift Cluster Monitoring components cannot be extended since they are read only.</p>
<p><a href="https://docs.openshift.com/container-platform/4.3/release_notes/ocp-4-3-release-notes.html">Monitor your own services (technology preview)</a>: The existing monitoring stack can be extended so you can configure monitoring for your own Services.</p>
<table>
<thead>
<tr>
<th style="text-align: left;">Monitoring Component</th>
<th style="text-align: center;">Deployed By Default</th>
<th style="text-align: left;">OCP 4.1</th>
<th style="text-align: left;">OCP 4.2</th>
<th style="text-align: left;">OCP 4.3</th>
<th style="text-align: left;">OCP 4.4</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">ElasticSearch</td>
<td style="text-align: center;">No</td>
<td style="text-align: left;">5.6.13.6</td>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="text-align: left;">Fluentd</td>
<td style="text-align: center;">No</td>
<td style="text-align: left;">0.12.43</td>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="text-align: left;">Kibana</td>
<td style="text-align: center;">No</td>
<td style="text-align: left;">5.6.13</td>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="text-align: left;">Prometheus</td>
<td style="text-align: center;">Yes</td>
<td style="text-align: left;">2.7.2</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">2.14.0</td>
<td style="text-align: left;">2.15.2</td>
</tr>
<tr>
<td style="text-align: left;">Prometheus Operator</td>
<td style="text-align: center;">Yes</td>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;">0.34.0</td>
<td style="text-align: left;">0.35.1</td>
</tr>
<tr>
<td style="text-align: left;">Prometheus Alert Manager</td>
<td style="text-align: center;">Yes</td>
<td style="text-align: left;">0.16.2</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">0.19.0</td>
<td style="text-align: left;">0.20.0</td>
</tr>
<tr>
<td style="text-align: left;">kube-state-metrics</td>
<td style="text-align: center;">Yes</td>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;">1.8.0</td>
<td style="text-align: left;">1.9.5</td>
</tr>
<tr>
<td style="text-align: left;">Grafana</td>
<td style="text-align: center;">Yes</td>
<td style="text-align: left;">5.4.3</td>
<td style="text-align: left;">6.2.4</td>
<td style="text-align: left;">6.4.3</td>
<td style="text-align: left;">6.5.3</td>
</tr>
</tbody>
</table>
<h2 id="monitoring-micro-front-ends-on-kubernetes-with-nginx">Monitoring micro-front ends on kubernetes with NGINX</h2>
<ul>
<li><a href="https://www.cncf.io/blog/2023/02/01/monitoring-micro-front-ends-on-kubernetes-with-nginx"><mark>cncf.io: Monitoring micro-front ends on Kubernetes with NGINX</mark> 🌟</a></li>
</ul>
<h2 id="prometheus-vs-opentelemetry">Prometheus vs OpenTelemetry</h2>
<ul>
<li>
<p><a href="https://thenewstack.io/prometheus-and-opentelemetry-just-couldnt-get-along">Prometheus and OpenTelemetry Compatibility Issues</a> - This article discusses the challenges and incompatibilities encountered when trying to integrate Prometheus and OpenTelemetry, exploring the technical reasons behind their difficulties in working together.</p>
</li>
<li>
<p><a href="https://www.tigerdata.com/blog/prometheus-vs-opentelemetry-metrics-a-complete-guide">timescale.com: Prometheus vs. OpenTelemetry Metrics: A Complete Guide</a></p>
</li>
</ul>
<h2 id="prometheus">Prometheus</h2>
<ul>
<li><a href="prometheus.html">Prometheus</a></li>
</ul>
<h2 id="grafana">Grafana</h2>
<ul>
<li><a href="grafana.html">Grafana</a></li>
</ul>
<h2 id="kibana">Kibana</h2>
<ul>
<li><a href="https://www.elastic.co/kibana">Kibana</a><ul>
<li><a href="https://www.elastic.co/guide/index.html">Kibana Docs</a></li>
<li><a href="https://logz.io/blog/kibana-tutorial-2">dzone: Kibana Tutorial: Part 2 - Creating Visualizations</a></li>
</ul>
</li>
<li><a href="https://dzone.com/articles/getting-started-with-kibana-advanced-searches">dzone: Getting Started With Kibana Advanced Searches</a></li>
<li><a href="https://dzone.com/articles/kibana-hacks-5-tips-and-tricks">dzone: Kibana Hacks: 5 Tips and Tricks</a></li>
<li><a href="https://www.juanonlab.com/blog/es/dashboards-de-kibana">juanonlab.com: Dashboards de Kibana</a></li>
<li><a href="https://dev.to/lisahjung/beginner-s-guide-to-understanding-the-relevance-of-your-search-with-elasticsearch-and-kibana-29n6">dev.to: Beginner&rsquo;s guide to understanding the relevance of your search with Elasticsearch and Kibana</a></li>
</ul>
<h2 id="prometheus-and-grafana-interactive-learning">Prometheus and Grafana Interactive Learning</h2>
<h2 id="logging-centralized-log-management">Logging &amp; Centralized Log Management</h2>
<ul>
<li><a href="https://devops.com/how-centralized-log-management-can-save-your-company">devops.com: How Centralized Log Management Can Save Your Company</a></li>
<li><a href="https://www.pluralsight.com/resources/blog/cloud/getting-started-with-the-elastic-stack">acloudguru.com: Getting started with the Elastic Stack</a></li>
<li><a href="https://betterprogramming.pub/creating-a-human-and-machine-freindly-logging-format-bb6d4bb01dca">betterprogramming.pub: The Art of Logging</a> Creating a human- and machine-friendly logging format</li>
</ul>
<h3 id="elasticsearch">ElasticSearch</h3>
<ul>
<li><a href="https://www.zdnet.com/article/aws-as-predicted-is-forking-elasticsearch">zdnet.com: AWS, as predicted, is forking Elasticsearch</a> Amazon Web Services, however, isn&rsquo;t the only one who dislikes Elastic&rsquo;s move to relicense Elasticsearch under the non-open-source Server Side Public License.</li>
<li><a href="https://aws.amazon.com/blogs/opensource/stepping-up-for-a-truly-open-source-elasticsearch">amazon.com: Stepping up for a truly open source Elasticsearch</a></li>
<li><a href="https://banzaicloud.com/docs/one-eye/logging-operator/quickstarts/es-nginx">Store NGINX access logs in Elasticsearch with Logging operator 🌟</a> This guide describes how to collect application and container logs in Kubernetes using the Logging operator, and how to send them to Elasticsearch.<ul>
<li><a href="https://rancher.com/docs/rancher/v2.x/en/logging/v2.5">Rancher Logging Operator 🌟</a></li>
</ul>
</li>
<li><a href="https://blog.streammonkey.com/how-we-serverlessly-migrated-1-58-billion-elasticsearch-documents-33ad3d0d7c4f">blog.streammonkey.com: How We Serverlessly Migrated 1.58 Billion Elasticsearch Documents</a></li>
<li><a href="https://www.youtube.com/playlist?list=PLWZKNB9waqIX00uj5q4nX_TOFiX3if1z3">youtube: ELK for beginners - by XavkiEn 🌟</a></li>
<li><a href="https://blog.bigdataboutique.com/2021/07/tuning-elasticsearch-the-ideal-java-heap-size-2toq2j">blog.bigdataboutique.com: Tuning Elasticsearch: The Ideal Java Heap Size</a></li>
<li><a href="https://javatechonline.com/how-to-monitor-spring-boot-microservices-using-elk-stack">javatechonline.com: How To Monitor Spring Boot Microservices Using ELK Stack?</a></li>
<li><a href="https://dzone.com/articles/running-elasticsearch-on-kubernetes">dzone: Running Elasticsearch on Kubernetes</a> A bit of a cross-over with the Cloud Zone, we explore the structures of both Elasticsearch and Kubernetes, and how to deploy Elasticsearch on K8s.</li>
<li>
<p><a href="https://medium.com/gigasearch/which-elasticsearch-provider-is-right-for-you-3d596a65e704"><mark>medium: Which Elasticsearch Provider is Right For You?</mark> 🌟</a> In this post, well explain the core differences between Elastic Cloud, AWS ESS, and self-hosted, so that you can make an informed decision.</p>
<table>
<thead>
<tr>
<th style="text-align: left;"></th>
<th style="text-align: left;"><strong>AWS ESS</strong></th>
<th style="text-align: left;"><strong>Elastic Cloud</strong></th>
<th style="text-align: left;"><strong>Self-hosted</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong>Operational Burden</strong></td>
<td style="text-align: left;"><strong>Medium</strong>. Requires intimate knowledge of other AWS services to go beyond defaults.</td>
<td style="text-align: left;"><strong>Low</strong>. Backups, version upgrades, etc. are automated.</td>
<td style="text-align: left;"><strong>High</strong>. You need to provision, configure and maintain the cluster(s) yourself.</td>
</tr>
<tr>
<td style="text-align: left;"><strong>Cost</strong></td>
<td style="text-align: left;"><strong>Medium</strong>. Over 50% premium on underlying infrastructure cost.</td>
<td style="text-align: left;"><strong>High</strong>. Up to 3x the cost of underlying infrastructure.</td>
<td style="text-align: left;"><strong>Low</strong>. Only pay for the underlying infrastructure. Optionally can purchase x-pack license for additional features and support.</td>
</tr>
<tr>
<td style="text-align: left;"><strong>Configurability</strong></td>
<td style="text-align: left;"><strong>Low</strong>. No support for custom plugins. Several configuration parameters are not available.</td>
<td style="text-align: left;"><strong>Medium</strong>. Does support custom plugins and all parameters are available. Lack of direct node ssh access.</td>
<td style="text-align: left;"><strong>High</strong>. Full node-level acess.</td>
</tr>
<tr>
<td style="text-align: left;"><strong>Monitoring</strong></td>
<td style="text-align: left;"><strong>Mediocre</strong>. Kibana monitoring is not available. Cloudwatch is often inadequate for Elasticsearch monitoring.</td>
<td style="text-align: left;"><strong>Good</strong>. Kibana monitoring available and pre-installed.</td>
<td style="text-align: left;"><strong>Depends</strong>. It is up to you to implement an adequate monitoring system, but you have access to kibana monitoring.</td>
</tr>
<tr>
<td style="text-align: left;"><strong>Future-proof</strong></td>
<td style="text-align: left;"><strong>Medium</strong>. Oftern lags several minor versions behind the latest Elasticsearch version. Some features are not available at all.</td>
<td style="text-align: left;"><strong>High</strong>. Same day Elasticsearch version parity. All features are available.</td>
<td style="text-align: left;"><strong>High</strong>. Up to you to upgrade as needed, but in theory the same Elastic Cloud.</td>
</tr>
</tbody>
</table>
</li>
<li>
<p><a href="https://github.com/jertel/elastalert2">jertel/elastalert2</a> ElastAlert 2 is a continuation of the original yelp/elastalert project. ElastAlert 2 is a standalone software tool for alerting on anomalies, spikes, or other patterns of interest from data in Elasticsearch and OpenSearch. ElastAlert 2 is backwards compatible with the original ElastAlert rules</p>
</li>
<li><a href="https://medium.com/hepsiburadatech/hepsiburada-search-engine-on-kubernetes-1fe03a3e71a3">medium.com/hepsiburadatech: Hepsiburada Search Engine on Kubernetes</a> In this case study, you&rsquo;ll learn how Hepsiburada migrated from an on-premises active-active Elasticsearch cluster (manually scaled) deployed in two data centers to a multi-zone Google Cloud Kubernetes cluster that can scale automatically.</li>
<li><a href="https://dev.to/sagary2j/elk-stack-deployment-using-minikube-single-node-architecture-16cl">dev.to/sagary2j: ELK Stack Deployment using MiniKube single node architecture</a> In this tutorial, you will learn how to deploy and expose Elastic Search, Logstash and Kibana on minikube.</li>
<li><a href="https://search-guard.com/sgctl-elasticsearch">search-guard.com/sgctl-elasticsearch: SGCTL - TAKE BACK CONTROL</a> In this article, we look at the new Search Guard Control command line tool that ships with Search Guard FLX and demonstrate how easy it has become to configure security for Elasticsearch.</li>
</ul>
<h4 id="elastic-cloud-on-kubernetes-eck">Elastic Cloud on Kubernetes (ECK)</h4>
<ul>
<li><a href="https://medium.com/99dotco/a-detail-guide-to-deploying-elasticsearch-on-elastic-cloud-on-kubernetes-eck-31808ac60466">medium: A detailed guide to deploying Elasticsearch on Elastic Cloud on Kubernetes (ECK)</a> Running Elasticsearch on Kubernetes allows developers/admins to utilize container orchestration by Kubernetes and apply best practices on managing Elasticsearch clusters by the Elastic Operator</li>
</ul>
<h3 id="opensearch">OpenSearch</h3>
<ul>
<li><a href="https://opensearch.org">opensearch.org 🌟</a></li>
<li><a href="https://aws.amazon.com/blogs/opensource/introducing-opensearch">amazon.com: Introducing OpenSearch</a></li>
<li><a href="https://logz.io/news-posts/logz-io-announces-support-for-opensearch-a-community-driven-open-source-fork-of-elasticsearch-and-kibana">logz.io: Logz.io Announces Support for OpenSearch; A Community-driven Open Source Fork of Elasticsearch and Kibana</a></li>
<li><a href="https://www.techrepublic.com/article/opensearch-aws-rolls-out-its-open-source-elasticsearch-fork">techrepublic.com: OpenSearch: AWS rolls out its open source Elasticsearch fork</a></li>
<li><a href="https://thenewstack.io/this-week-in-programming-aws-completes-elasticsearch-fork-with-opensearch">thenewstack.io: This Week in Programming: AWS Completes Elasticsearch Fork with OpenSearch</a></li>
<li><a href="https://logz.io/blog/opensearch-1-0-ga-generally-available-elasticsearch-kibana-fork">logz.io: OpenSearch Is Now Generally Available!</a></li>
<li><a href="https://thenewstack.io/this-week-in-programming-the-elasticsearch-saga-continues">thenewstack.io: This Week in Programming: The ElasticSearch Saga Continues</a></li>
<li><a href="https://aws.amazon.com/blogs/opensource/keeping-clients-of-opensearch-and-elasticsearch-compatible-with-open-source">aws.amazon.com: Keeping clients of OpenSearch and Elasticsearch compatible with open source</a></li>
<li><a href="https://aws.amazon.com/blogs/aws/announcing-amazon-opensearch-service-which-supports-opensearch-10">aws.amazon.com: Amazon Elasticsearch Service Is Now Amazon OpenSearch Service and Supports OpenSearch 1.0</a></li>
</ul>
<h3 id="efk-elasticsearch-fluentd-kibana">EFK ElasticSearch Fluentd Kibana</h3>
<ul>
<li><a href="https://medium.com/@pratyush.mathur/logging-with-efk-1c2e131496d">medium: Logging with EFK - Pratyush Mathur</a></li>
<li><a href="https://medium.com/@CuriousLearner/deploying-efk-stack-on-kubernetes-c25ba2682c99">medium.com/@CuriousLearner: Deploying EFK stack on Kubernetes</a></li>
<li><a href="https://medium.com/@tech_18484/simplifying-kubernetes-logging-with-efk-stack-158da47ce982">medium.com/@tech_18484: Simplifying Kubernetes Logging with EFK Stack</a></li>
</ul>
<h3 id="logstash-grok-for-log-parsing">Logstash Grok for Log Parsing</h3>
<ul>
<li><a href="https://logz.io/blog/logstash-grok">logz.io: A Beginners Guide to Logstash Grok</a></li>
<li><a href="https://logz.io/blog/grok-pattern-examples-for-log-parsing">logz.io: Grok Pattern Examples for Log Parsing</a></li>
</ul>
<h2 id="internet-performance-monitoring-ipm">Internet Performance Monitoring (IPM)</h2>
<ul>
<li><a href="https://devops.com/the-fallacy-of-continuous-integration-delivery-and-testing">devops.com: The Fallacy of Continuous Integration, Delivery and Testing</a> Whether your organization embraces CI/CD/CT already or is rethinking its approach to DevOps, this article should give you pause. Your jobperhaps as part of a larger teamis to catch performance issues and potential disruptions with your application before client impact is realized. Without IPM, only part of that job is being done.</li>
</ul>
<h2 id="performance">Performance</h2>
<ul>
<li>
<p><a href="https://www.kubenatives.com/p/the-hidden-cpu-throttling-crisis">The Hidden CPU Throttling Crisis in Kubernetes Clusters</a> - <em>(Related to kubernetes-troubleshooting topic)</em></p>
</li>
<li>
<p><a href="https://dzone.com/articles/the-keys-to-performance-tuning-and-testing">dzone.com: The Keys to Performance Tuning and Testing</a></p>
</li>
<li><a href="https://dzone.com/articles/performance-patterns-in-microservices-based-integr-1">Performance Patterns in Microservices-Based Integrations 🌟</a> Almost all applications that perform anything useful for a given business need to be integrated with one or more applications. With microservices-based architecture, where a number of services are broken down based on the services or functionality offered, the number of integration points or touch points increases massively.</li>
</ul>
<h2 id="list-of-performance-analysis-tools">List of Performance Analysis Tools</h2>
<ul>
<li>
<p><a href="https://github.com/awesome-foss/awesome-sysadmin">Awesome Sysadmin</a> - <em>(Related to devops-tools topic)</em></p>
</li>
<li>
<p>Threadumps + heapdumps + GC analysis tools</p>
</li>
<li><a href="https://en.wikipedia.org/wiki/List_of_performance_analysis_tools">en.wikipedia.org/wiki/List_of_performance_analysis_tools</a></li>
<li><a href="https://en.wikipedia.org/wiki/InspectIT">InspectIT</a></li>
<li><a href="https://en.wikipedia.org/wiki/VisualVM">VisualVM 🌟</a></li>
<li><a href="https://en.wikipedia.org/wiki/OverOps">OverOps</a></li>
<li><a href="https://tier1app.com">tier1app.com</a></li>
<li><a href="https://fastthread.io">fastthread.io 🌟</a></li>
<li><a href="https://gceasy.io">gceasy.io 🌟</a></li>
<li><a href="https://heaphero.io">heaphero.io</a></li>
</ul>
<h3 id="thread-dumps-debugging-java-applications">Thread Dumps. Debugging Java Applications</h3>
<ul>
<li><a href="https://dzone.com/articles/how-to-read-a-thread-dump">How to read a Thread Dump</a></li>
<li><a href="https://dzone.com/articles/performance-patterns-in-microservices-based-integr-1">Performance Patterns in Microservices-Based Integrations 🌟</a> <strong>A must read!</strong></li>
<li><a href="https://dzone.com/articles/how-to-take-thread-dumps-7-options">Dzone: how to take thread dumps</a></li>
<li>Thread Dump Analyzers: <a href="https://fastthread.io">fastThread</a>, <a href="https://spotify.github.io/threaddump-analyzer">Spotify TDA</a>, <a href="https://www.ibm.com/support/pages/ibm-thread-and-monitor-dump-analyzer-java-tmda">IBM Thread and Monitor Dump Analyzer for Java</a>, <a href="https://github.com/irockel/tda">TDA - Thread Dump Analyzer</a></li>
<li><a href="https://blog.arkey.fr/2020/06/28/using-jdk-flight-recorder-and-jdk-mission-control">blog.arkey.fr: Using JDK FlightRecorder and JDK Mission Control</a></li>
<li><a href="https://fastthread.io">FastThread.io</a>: Thread dumps can be uploaded via Web or API Call from within the POD (jstack must be available within the container):</li>
</ul>
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/sh</span>
<span class="c1"># Generate N thread dumps of the process PID with an INTERVAL between each dump.</span>
<span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span><span class="nv">$#</span><span class="w"> </span>-ne<span class="w"> </span><span class="m">3</span><span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
<span class="w">   </span><span class="nb">echo</span><span class="w"> </span>Generates<span class="w"> </span>Java<span class="w"> </span>thread<span class="w"> </span>dumps<span class="w"> </span>using<span class="w"> </span>the<span class="w"> </span>jstack<span class="w"> </span>command.
<span class="w">   </span><span class="nb">echo</span>
<span class="w">   </span><span class="nb">echo</span><span class="w"> </span>usage:<span class="w"> </span><span class="nv">$0</span><span class="w"> </span>process_id<span class="w"> </span>repetitions<span class="w"> </span>interval
<span class="w">   </span><span class="nb">exit</span><span class="w"> </span><span class="m">1</span>
<span class="k">fi</span><span class="w"> </span>
<span class="nv">PID</span><span class="o">=</span><span class="nv">$1</span>
<span class="nv">N</span><span class="o">=</span><span class="nv">$2</span>
<span class="nv">INTERVAL</span><span class="o">=</span><span class="nv">$3</span><span class="w"> </span>
<span class="k">for</span><span class="w"> </span><span class="o">((</span><span class="nv">i</span><span class="o">=</span><span class="m">1</span><span class="p">;</span>i&lt;<span class="o">=</span><span class="nv">$N</span><span class="p">;</span>i++<span class="o">))</span>
<span class="k">do</span>
<span class="w">   </span><span class="nv">d</span><span class="o">=</span><span class="k">$(</span>date<span class="w"> </span>+%Y%m%d-%H%M%S<span class="k">)</span>
<span class="w">   </span><span class="nv">dump</span><span class="o">=</span><span class="s2">&quot;threaddump-</span><span class="nv">$PID</span><span class="s2">-</span><span class="nv">$d</span><span class="s2">.txt&quot;</span>
<span class="w">   </span><span class="nb">echo</span><span class="w"> </span><span class="nv">$i</span><span class="w"> </span>of<span class="w"> </span><span class="nv">$N</span>:<span class="w"> </span><span class="nv">$dump</span>
<span class="w">   </span>jstack<span class="w"> </span>-l<span class="w"> </span><span class="nv">$PID</span><span class="w"> </span>&gt;<span class="w"> </span><span class="nv">$dump</span>
<span class="w">   </span>curl<span class="w"> </span>-X<span class="w"> </span>POST<span class="w"> </span>--data-binary<span class="w"> </span>@./<span class="nv">$dump</span><span class="w"> </span>https://fastthread.io/fastthread-api?apiKey<span class="o">=</span>&lt;APIKEY&gt;<span class="w"> </span>--header<span class="w"> </span><span class="s2">&quot;Content-Type:text&quot;</span>
<span class="w">   </span>sleep<span class="w"> </span><span class="nv">$INTERVAL</span>
<span class="k">done</span>
</code></pre></div>
<ul>
<li>How to run this script from within the POD: <code>./script_thread_dump.sh 1 15 3</code>, where:<ul>
<li>“1”: PID of java process (“1” in containers running a single process, check with “ps ux” command).</li>
<li>“15”: 15 repetitions or thread dumps</li>
<li>“3”: interval of 3 seconds between each thread dump.</li>
</ul>
</li>
<li>According to some references only 3 thread dumps captured in a timeframe of 10 seconds is necessary (when we want to troubleshoot a Java issue during a service degradation).</li>
<li>Sample thread dump analysis reports generated by fastThread:<ul>
<li><a href="https://fastthread.io/ft-error.jsp&amp;s=t">Transitive blocks</a></li>
<li><a href="https://fastthread.io/ft-error.jsp&amp;s=t">Unresponsive JVM</a></li>
<li><a href="https://fastthread.io/ft-error.jsp&amp;s=t">Sudden CPU spike</a></li>
<li><a href="https://fastthread.io/ft-error.jsp&amp;s=t">Thread Leaks</a></li>
</ul>
</li>
</ul>
<h2 id="debugging-java-applications-on-openshift-and-kubernetes">Debugging Java Applications on OpenShift and Kubernetes</h2>
<ul>
<li><a href="https://developers.redhat.com/blog/2017/08/16/troubleshooting-java-applications-on-openshift">developers.redhat.com: Troubleshooting java applications on openshift (Jolokia)</a></li>
<li><a href="https://www.redhat.com/en/blog/debugging-java-applications-on-openshift-kubernetes">Debugging Java Applications On OpenShift and Kubernetes</a></li>
<li><a href="https://www.redhat.com/en/blog/remote-debugging-java-applications-openshift">Remote Debugging of Java Applications on OpenShift</a></li>
<li><a href="https://fedidat.com/250-jvisualvm-openshift-pod">VisualVM: JVisualVM to an Openshift pod</a></li>
<li><a href="https://access.redhat.com/solutions/18301">redhat.com: How do I analyze a Java heap dump?</a></li>
</ul>
<h2 id="distributed-tracing-opentelemetry-and-jaeger">Distributed Tracing. OpenTelemetry and Jaeger</h2>
<ul>
<li><a href="https://opentelemetry.io">Microservice Observability with Distributed Tracing: <strong>OpenTelemetry.io</strong> 🌟</a> (<strong>OpenTracing.io + OpenCensus.io = OpenTelemetry.io</strong>)</li>
<li><a href="https://www.jaegertracing.io"><strong>Jaeger</strong> 🌟</a><ul>
<li><a href="https://github.com/obitech/micro-obs">Jaeger Demo1</a></li>
<li><a href="https://github.com/open-telemetry/opentelemetry-collector">Jaeger Demo 2</a></li>
<li><a href="https://medium.com/jaegertracing/jaeger-embraces-opentelemetry-collector-90a545cbc24">medium.com: <strong>Jaeger embraces OpenTelemetry collector</strong> 🌟</a></li>
<li><a href="https://thenewstack.io/best-practices-for-deploying-jaeger-on-kubernetes-in-production">Best Practices for Deploying Jaeger on Kubernetes in Production</a></li>
<li><a href="https://faun.pub/how-to-deploy-jaeger-on-kubernetes-69cf48447182">faun.pub: How to deploy Jaeger on Kubernetes. A beginners guide to Jaeger (5 Part Series)</a></li>
</ul>
</li>
<li><a href="https://zipkin.io"><strong>zipkin.io</strong></a><ul>
<li><a href="https://javatechonline.com/distributed-tracing-logging-using-sleuth-zipkin">javatechonline.com: How To Implement Distributed Logging Tracing Using Sleuth Zipkin</a></li>
<li><a href="https://thenewstack.io/perform-distributed-tracing-with-zipkin">thenewstack.io: Perform Distributed Tracing with Zipkin</a> Open source Zipkin offers a robust set of features that make it easier for developers to understand and optimize complex distributed systems.</li>
</ul>
</li>
<li><a href="https://opentracing.io"><strong>OpenTracing.io</strong></a><ul>
<li><a href="https://docs.lightstep.com/docs/understand-distributed-tracing">lightstep.com: Understand Distributed Tracing</a></li>
</ul>
</li>
<li><a href="https://grafana.com/blog/2021/01/25/a-beginners-guide-to-distributed-tracing-and-how-it-can-increase-an-applications-performance">grafana.com: A beginner&rsquo;s guide to distributed tracing and how it can increase an application&rsquo;s performance 🌟</a></li>
<li><a href="https://awkwardferny.medium.com/setting-up-distributed-tracing-with-opentelemetry-jaeger-in-kubernetes-ingress-nginx-cfdda7d9441d">awkwardferny.medium.com: Setting up Distributed Tracing in Kubernetes with OpenTracing, Jaeger, and Ingress-NGINX</a></li>
<li><a href="https://ploffay.medium.com/five-years-evolution-of-open-source-distributed-tracing-ec1c5a5dd1ac">ploffay.medium.com: Five years evolution of open-source distributed tracing 🌟</a></li>
</ul>
<h3 id="microservice-observability-with-distributed-tracing-opentelemetryio">Microservice Observability with Distributed Tracing. OpenTelemetry.io</h3>
<ul>
<li>Used for monitoring and troubleshooting microservices-based distributed systems.</li>
<li><a href="https://opentelemetry.io">OpenTelemetry.io</a>:<ul>
<li><strong>Unified standard</strong> (open, vendor-neutral API), <strong>merge of <a href="https://opencensus.io">OpenCensus.io</a> and <a href="https://opentracing.io">OpenTracing.io</a></strong>.</li>
<li>“A single set of system components and language-specific telemetry libraries” to standardize how the industry uses metrics, traces, and eventually logs to enable observability.</li>
<li><a href="https://www.signadot.com/blog/sandboxes-in-kubernetes-using-opentelemetry">signadot.com: Sandboxes in Kubernetes using OpenTelemetry</a></li>
<li><a href="https://www.dynatrace.com/news/blog/what-is-opentelemetry">dynatrace.com: What is OpenTelemetry?An open-source standard for logs, metrics, and traces</a></li>
<li><a href="https://betterprogramming.pub/distributed-tracing-with-opentelemetry-spring-cloud-sleuth-kafka-and-jaeger-939e35f45821">betterprogramming.pub: Distributed Tracing With OpenTelemetry, Spring Cloud Sleuth, Kafka, and Jaeger</a> A step-by-step guide for Distributed Tracing Implementation in Microservices</li>
<li><a href="https://logz.io/learn/opentelemetry-guide"><mark>logz.io: Beginners Guide to OpenTelemetry</mark> 🌟</a></li>
<li><a href="https://www.tigerdata.com/cloud">timescale.com: Kubernetes Observability in One Command: How to Generate and Store OpenTelemetry Traces Automatically</a> If your microservices are written in languages currently supported by the OpenTelemetry Operator, you can start collecting and storing traces with minimal manual work. Learn how to do so with the tobs stack in Kubernetes.</li>
<li><a href="https://trstringer.com/otel-part1-intro">trstringer.com: Observability with OpenTelemetry Part 1 - Introduction</a></li>
<li><a href="https://medium.com/apache-apisix/end-to-end-tracing-opentelemetry-a50fceafed74">medium.com/apache-apisix: End-to-end tracing with OpenTelemetry</a></li>
</ul>
</li>
<li>A major component of the <a href="https://github.com/open-telemetry/opentelemetry-specification">OpenTelemetry specification</a> is <strong>distributed tracing</strong>.</li>
<li><strong>Tracing</strong> is about analyzing, recording, and describing transactions.</li>
<li><strong>Distributed Tracing:</strong> Troubleshooting requests between interconnected cloud-based microservices cant always be done with logs and metrics alone. This is where distributed tracing comes into play: It provides developers with a detailed view of individual requests as they “hop” through a system of microservices. With <strong>distributed tracing</strong> you can:<ul>
<li>Trace the path of a request as it travels across a complex system.</li>
<li>Discover the latency of the components along that path.</li>
<li>Know which component in the path is creating a bottleneck or failure.</li>
</ul>
</li>
<li><strong>Performance:</strong> Latency is a very important metric in microservices. Latency problems in one service will impact the overall request latency when chaining calls to different microservices. Every call to a microservice should record a trace, which is basically a record of how much time it took to respond. It&rsquo;s possible to add more details to the function level, including the action, the result, and the pass to the next service. The hard part is triaging all traces in a request from a client. Usually, a trace ID header has to be sent in every request. If there isn&rsquo;t one, the logging library creates it and it will represent the first trace in a request. <strong>Adding traces with <a href="https://opencensus.io">OpenCensus</a> is simply a matter of including the libraries and registering an exporter.</strong></li>
<li><strong>Monitoring in a Microservices/Kubernetes World:</strong> In distributed system architectures like microservices, having visibility from different perspectives will be critical at troubleshooting time. Many things could happen in a request when there are many parts constantly interacting at the same time. The most common method is to write logs to the stdout and stderr streams.<ul>
<li>For example, a latency problem in the system could exist because a microservice is not responding correctly. Maybe Kubernetes is restarting the pod too frequently, or perhaps the cluster is out of capacity and can&rsquo;t schedule any more pods. But for this reason, tools like <a href="https://istio.io">Istio</a> exist; by injecting a container in every pod, you can get a pretty good baseline of telemetry. Additionally, when you add instrumentation with libraries like <a href="https://opencensus.io">OpenCensus</a>, you can deeply understand what&rsquo;s happening with and within each service.</li>
<li>All this information will need a storage location, and as a good practice, you might want to have it a centralized location to provide access to anyone in the team — not just for the operations team.</li>
</ul>
</li>
<li><strong>Older Distributed Tracing Solutions:</strong><ul>
<li><a href="https://research.google/pubs/dapper-a-large-scale-distributed-systems-tracing-infrastructure">Dapper</a> (Google)</li>
<li><a href="https://zipkin.io">Zipkin</a> (A.K.A. OpenZipkin, created by Twitter, inspired by Dapper)</li>
<li><a href="https://www.jaegertracing.io">Jaeger</a> (Uber Technologies, inspired by Dapper &amp; Zipkin)</li>
<li>etc.</li>
</ul>
</li>
<li><a href="https://medium.com/@rghetia/distributed-tracing-and-monitoring-using-opencensus-fe5f6e9479fb">Medium: Distributed Tracing and Monitoring using OpenCensus</a></li>
<li><a href="https://dzone.com/articles/zipkin-vs-jaeger-getting-started-with-tracing">Dzone: Zipkin vs. Jaeger: Getting Started With Tracing</a> Learn about Zipkin and Jaeger, how they work to add request tracing to your logging routine, and how to choose which one is the right fit for you.</li>
<li><a href="https://opensource.com/article/18/9/distributed-tracing-microservices-world">opensource.com: Distributed tracing in a microservices world</a> What is distributed tracing and why is it so important in a microservices environment?</li>
<li><a href="https://opensource.com/article/18/9/distributed-tracing-tools">opensource.com: 3 open source distributed tracing tools</a> Find performance issues quickly with these tools, which provide a graphical view of what&rsquo;s happening across complex software systems.</li>
<li><a href="https://newrelic.com/blog/dem/opentelemetry-opentracing-opencensus">newrelic.com: OpenTracing, OpenCensus, OpenTelemetry, and New Relic (Best overview of OpenTelemetry)</a></li>
<li>Theres no OpenTelemetry UI, instead Jaeger UI (or any APM like Dynatrace or New Relic) can be used as “Tracing backend + Visualization frontend + Data mining platform” of OpenTelemetry API/SDK.</li>
<li><a href="https://thenewstack.io/tracing-why-logs-arent-enough-to-debug-your-microservices">thenewstack.io: Tracing: Why Logs Arent Enough to Debug Your Microservices 🌟</a></li>
</ul>
<h4 id="opentelemetry-operator">OpenTelemetry Operator</h4>
<ul>
<li><a href="https://github.com/open-telemetry/opentelemetry-operator">github.com/open-telemetry/opentelemetry-operator</a></li>
<li><a href="https://medium.com/@magstherdev/opentelemetry-operator-d3d407354cbf">medium.com/@magstherdev: OpenTelemetry Operator</a> This post aims to demonstrate how you can implement traces in your application without any code changes by using the OpenTelemetry Operator.</li>
<li><a href="https://thenewstack.io/opentelemetry-gaining-traction-from-companies-and-vendors">thenewstack.io: OpenTelemetry Gaining Traction from Companies and Vendors</a> Elastic and OpenTelemetry will merge standards as more companies embrace OpenTelemetry to improve user experience and cut costs.</li>
<li><a href="https://thenewstack.io/how-opentelemetry-works-with-kubernetes">thenewstack.io: How OpenTelemetry Works with Kubernetes</a></li>
<li><a href="https://medium.com/@bijit211987/grafana-with-opentelemetry-vendor-neutral-and-open-source-approach-ab4bc08f67e9">medium.com/@bijit211987: Grafana with OpenTelemetry, Vendor-neutral and open-source approach</a></li>
</ul>
<center>
<p><a href="https://www.jaegertracing.io"><img alt="Jaeger UI" src="images/jaeger_ui.png" /></a></p>
<p><a href="https://zipkin.io"><img alt="Zipking UI" src="images/zipkin_ui.png" /></a></p>
</center>
<h3 id="jaeger-vs-opentelemetry-how-jaeger-works-with-opentelemetry">Jaeger VS OpenTelemetry. How Jaeger works with OpenTelemetry</h3>
<ul>
<li><a href="https://medium.com/jaegertracing/jaeger-and-opentelemetry-1846f701d9f2">medium: Jaeger VS OpenTracing VS OpenTelemetry</a></li>
<li><a href="https://medium.com/jaegertracing/jaeger-clients-and-w3c-trace-context-c2ce1b9dc390">medium: Using Jaeger and OpenTelemetry SDKs in a mixed environment with W3C Trace-Context</a></li>
</ul>
<center>
<p><img alt="Jaeger Vs OpenTelemetry" src="images/jaeger_vs_opentelemetry.png" /></p>
</center>
<h3 id="jaeger-vs-zipkin">Jaeger vs Zipkin</h3>
<ul>
<li><a href="https://thenewstack.io/jaeger-vs-zipkin-battle-of-the-open-source-tracing-tools">thenewstack.io: Jaeger vs. Zipkin: Battle of the Open Source Tracing Tools</a></li>
</ul>
<h3 id="grafana-tempo-distributed-tracing-system">Grafana Tempo distributed tracing system</h3>
<ul>
<li><a href="https://github.com/grafana/tempo">Grafana Tempo</a> Grafana Tempo is an open source, easy-to-use and high-scale distributed tracing backend. Tempo requires only object storage to operate and is deeply integrated with Grafana, Prometheus, and Loki.</li>
<li><a href="https://grafana.com/blog/2020/10/27/announcing-grafana-tempo-a-massively-scalable-distributed-tracing-system">grafana.com: Announcing Grafana Tempo, a massively scalable distributed tracing system 🌟</a></li>
<li><a href="https://opensource.com/article/21/2/tempo-distributed-tracing">opensource.com: Get started with distributed tracing using Grafana Tempo</a> Grafana Tempo is a new open source, high-volume distributed tracing backend.</li>
</ul>
<h2 id="application-performance-management-apm">Application Performance Management (APM)</h2>
<ul>
<li>
<p><a href="https://techcommunity.microsoft.com/blog/appsonazureblog/azure-app-service-auto-heal-capturing-relevant-data-during-performance-issues/4390351">Azure App Service Auto-Heal: Capturing Relevant Data During Performance Issues</a> - <em>(Related to azure topic)</em></p>
</li>
<li>
<p><a href="https://en.wikipedia.org/wiki/Application_performance_management">APM in wikipedia</a>: The monitoring and management of performance and availability of software applications. APM strives to detect and diagnose complex application performance problems to maintain an expected level of service. APM is &ldquo;the translation of IT metrics into business meaning.”</p>
</li>
<li>Tip: <a href="https://www.peerspot.com/categories/application-performance-monitoring-apm-and-observability">Download APM report from IT Central Station</a></li>
<li><a href="https://github.com/antonarhipov/awesome-apm">Awesome APM 🌟</a></li>
<li><a href="https://dzone.com/articles/apm-tools-comparison-which-one-should-you-choose">dzone.com: APM Tools Comparison</a></li>
<li><a href="https://dzone.com/articles/java-performance-monitoring-5-open-source-tools-you-should-know">dzone.com: Java Performance Monitoring: 5 Open Source Tools You Should Know</a></li>
<li><a href="https://dzone.com/articles/14-best-performance-testing-tools-and-apm-solution">dzone.com: 14 best performance testing tools and APM solutions</a></li>
<li>Exception Tracking:<ul>
<li><a href="https://sentry.io/welcome/">sentry.io</a></li>
<li>APMs like Dynatrace, etc.</li>
</ul>
</li>
<li>APM Tools:<ul>
<li><a href="https://www.datadoghq.com">datadoghq.com</a><ul>
<li><a href="https://dev.to/thenjdevopsguy/implementing-datadog-for-kubernetes-586e">dev.to/thenjdevopsguy: Implementing Datadog For Kubernetes</a></li>
</ul>
</li>
<li><a href="https://www.honeycomb.io">honeycomb.io</a></li>
<li><a href="https://lightstep.com">lightstep.com</a></li>
<li><a href="https://skywalking.apache.org">skywalking.apache.org 🌟</a><ul>
<li><a href="https://tetrate.io/blog/27835-revision-v1">tetrate.io: SkyWalking 8.4 provides infrastucture monitoring for VMs</a></li>
<li><a href="https://thenewstack.io/end-user-tracing-in-a-skywalking-observed-browser">thenewstack.io: End-User Tracing in a SkyWalking-Observed Browser</a></li>
</ul>
</li>
<li><a href="https://www.splunk.com/en_us/appdynamics-joins-splunk.html?301=appdynamics">AppDynamics 🌟</a></li>
<li><a href="https://newrelic.com">New Relic 🌟</a><ul>
<li><a href="https://newrelic.com/blog/infrastructure-monitoring/create-nr-dashboards-with-terraform-part-1">newrelic.com: Creating dashboards with Terraform and JSON templates</a> Learn how to quickly update New Relic dashboards with Terraform by using JSON templates—no HCL required.</li>
</ul>
</li>
<li><a href="https://www.dynatrace.com">Dynatrace 🌟</a></li>
<li><a href="https://github.com/SigNoz/signoz"><mark>SigNoz: Open source Application Performance Monitoring (APM) &amp; Observability tool</mark> 🌟</a> SigNoz helps developers monitor their applications &amp; troubleshoot problems, an open-source alternative to DataDog, NewRelic, etc.</li>
<li><a href="https://github.com/deepops-ai/deepops">savecost/datav 🌟</a> A modern APM for metrics,traces and logs, also datav is a lightweight alternative to Grafana. It has fully native support for open-telemetry, is an open-source alternative to DataDog, NewRelic.</li>
</ul>
</li>
</ul>
<h3 id="elastic-apm">Elastic APM</h3>
<ul>
<li><a href="https://www.elastic.co/observability/application-performance-monitoring">Elastic APM</a></li>
<li><a href="https://www.elastic.co/docs/solutions/observability/apm">Elastic APM Server</a>:</li>
<li><a href="https://www.elastic.co/support/matrix#matrix_compatibility">Mininimum elasticsearch requirement is 6.2.x or higher</a></li>
<li>Built-in elasticsearch 5.6 in Openshift 3 &amp; Openshift 4 cannot be integrated with Elastic APM Server.</li>
<li>Solutions: Deploy a higher version of <a href="https://hub.docker.com/_/elasticsearch">Elasticsearch + Kibana</a> on a new Project dedicated to Elastic APM; or setup an Elastic Cloud account.</li>
<li><a href="https://github.com/sls-dev1/openshift-elastic-apm-server">Elastic APM Server Docker image</a> (“oss” &amp; openshift compliant).</li>
<li><a href="https://www.elastic.co/blog/monitoring-java-applications-and-getting-started-with-the-elastic-apm-java-agent">elastic.co: Using the Elastic APM Java Agent on Kubernetes</a></li>
<li><a href="https://www.elastic.co/blog/monitoring-java-applications-and-getting-started-with-the-elastic-apm-java-agent">Monitoring Java applications with Elastic: Getting started with the Elastic APM Java Agent</a></li>
<li><a href="https://github.com/elastic/apm-pipeline-library">Jenkins pipeline shared library for the project Elastic APM 🌟</a></li>
<li><a href="https://bqstack.com/blog/monitoring-application-using-elastic-apm">bqstack.com: Monitoring Application using Elastic APM</a></li>
</ul>
<center>
<p><img alt="Elastic APM" src="images/elasticapm.png" /></p>
</center>
<h3 id="dynatrace-apm">Dynatrace APM</h3>
<ul>
<li><a href="https://adictosaltrabajo.com/2016/10/26/monitorizacion-y-analisis-de-rendimiento-de-aplicaciones-con-dynatrace">adictosaltrabajo.com: Monitorización y análisis de rendimiento de aplicaciones con Dynatrace APM</a></li>
<li><a href="https://www.dynatrace.com/hub/detail/red-hat-openshift">dynatrace.com: openshift monitoring</a></li>
<li><a href="https://www.dynatrace.com/news/blog/dynatrace-monitoring-for-kubernetes-and-openshift">dynatrace.com: Dynatrace monitoring for Kubernetes and OpenShift</a></li>
<li><a href="https://docs.dynatrace.com/docs/ingest-from/setup-on-container-platforms/kubernetes/legacy/deploy-oneagent-operator-openshift-legacy">dynatrace.com: Deploy OneAgent on OpenShift Container Platform</a></li>
<li><a href="https://www.dynatrace.com/news/blog/successful-kubernetes-monitoring-3-pitfalls-to-avoid">Successful Kubernetes Monitoring Three Pitfalls to Avoid</a></li>
<li><a href="https://github.com/nubenetes/awesome-kubernetes/blob/master/pdf/dynatrace_demo.pdf">My Dynatrace proof of concept 🌟</a></li>
<li><a href="https://www.dynatrace.com/news/blog/guide-to-automated-sre-driven-performance-engineering-analysis">Tutorial: Guide to automated SRE-driven performance engineering 🌟</a></li>
<li><a href="https://www.dynatrace.com/news/blog/4-steps-to-modernize-your-it-service-operations-with-dynatrace">dynatrace.com: 4 steps to modernize your IT service operations with Dynatrace</a></li>
<li><a href="https://www.dynatrace.com/news/blog/what-is-kubernetes-2">dynatrace.com: Monitoring of Kubernetes Infrastructure for day 2 operations</a></li>
<li><a href="https://www.dynatrace.com/news/blog/what-is-openshift-2">dynatrace.com: The Power of OpenShift, The Visibility of Dynatrace</a></li>
<li><a href="https://www.dynatrace.com/news/blog/why-conventional-observability-fails-in-kubernetes-environments-a-real-world-use-case">dynatrace.com: Why conventional observability fails in Kubernetes environments—A real-world use case 🌟</a></li>
<li><a href="https://www.dynatrace.com/news/blog/a-look-behind-the-scenes-of-aws-lambda-and-our-new-lambda-monitoring-extension">dynatrace.com: A look behind the scenes of AWS Lambda and our new Lambda monitoring extension</a></li>
<li><a href="https://www.dynatrace.com/news/blog/amazon-cloudwatch-metric-streams-launch-partnership">dynatrace.com: Analyze all AWS data in minutes with Amazon CloudWatch Metric Streams available in Dynatrace</a></li>
<li><a href="https://www.dynatrace.com/news/blog/new-dynatrace-operator-elevates-cloud-native-observability-for-kubernetes">dynatrace.com: New Dynatrace Operator elevates cloud-native observability for Kubernetes</a></li>
<li><a href="https://www.dynatrace.com/news/blog/how-to-collect-prometheus-metrics-in-dynatrace">dynatrace.com: How to collect Prometheus metrics in Dynatrace</a></li>
<li><a href="https://www.dynatrace.com/news/blog/automatic-connection-of-logs-and-traces-accelerates-ai-driven-cloud-analytics">dynatrace.com: Automatic connection of logs and traces accelerates AI-driven cloud analytics</a></li>
<li><a href="https://devops.com/dynatrace-advances-application-environments-as-code"><mark>devops.com: Dynatrace Advances Application Environments as Code</mark></a></li>
</ul>
<h2 id="message-queue-monitoring">Message Queue Monitoring</h2>
<table>
<thead>
<tr>
<th style="text-align: left;">Messaging Solution</th>
<th style="text-align: left;">Monitoring Solution</th>
<th style="text-align: left;">URL</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">ActiveMQ 5.8.0+</td>
<td style="text-align: left;"><a href="https://www.dynatrace.com">Dynatrace</a></td>
<td style="text-align: left;"><a href="https://docs.dynatrace.com/docs/observe/infrastructure-observability/extensions/activemq">ref</a></td>
</tr>
<tr>
<td style="text-align: left;">ActiveMQ Artemis</td>
<td style="text-align: left;"><a href="https://micrometer.io">Micrometer Collector</a> + Prometheus</td>
<td style="text-align: left;"><a href="http://activemq.apache.org/components/artemis/documentation/latest/metrics.html">ref1</a>, <a href="https://micrometer.io/docs/registry/prometheus">ref2</a></td>
</tr>
<tr>
<td style="text-align: left;">IBM MQ</td>
<td style="text-align: left;"><a href="https://github.com/ibm-messaging">IBM MQ</a> Exporter for Prometheus</td>
<td style="text-align: left;"><a href="https://github.com/ibm-messaging/mq-metric-samples/tree/master/cmd/mq_prometheus">ref</a></td>
</tr>
<tr>
<td style="text-align: left;">Kafka</td>
<td style="text-align: left;"><a href="https://www.dynatrace.com">Dynatrace</a></td>
<td style="text-align: left;"><a href="https://docs.dynatrace.com/docs/observe/infrastructure-observability/extensions/confluent-cloud-kafka">ref1</a>, <a href="https://www.dynatrace.com/news/blog/introducing-kafka-process-monitoring">ref2</a>, <a href="https://answers.dynatrace.com/spaces/482/dynatrace-open-qa/questions/232421/dynatrace-distributed-tracing-with-kafka.html">ref3</a></td>
</tr>
<tr>
<td style="text-align: left;">Kafka</td>
<td style="text-align: left;"><a href="https://github.com/prometheus/jmx_exporter">Prometheus JMX Exporter</a></td>
<td style="text-align: left;"><a href="https://github.com/prometheus/jmx_exporter">ref1</a>, <a href="https://github.com/prometheus/jmx_exporter">ref2</a>, <a href="https://github.com/prometheus/jmx_exporter">ref3</a>, <a href="https://strimzi.io/blog/2019/10/14/improving-prometheus-metrics">ref4</a>, <a href="https://medium.com/activewizards-machine-learning-company/kafka-monitoring-with-prometheus-telegraf-and-grafana-6228fed736f1">ref5</a>, <a href="https://medium.com/@nblaye/exporting-kafka-jmx-metrics-to-grafana-1b9d32fe900a">ref6</a>, <a href="https://blog.knoldus.com/monitoring-kafka-with-prometheus-and-grafana">ref7</a></td>
</tr>
<tr>
<td style="text-align: left;">Kafka</td>
<td style="text-align: left;">Kafka Exporter<br/> Use <a href="https://github.com/prometheus/jmx_exporter">JMX Exporter</a> to export other Kafka&rsquo;s metrics</td>
<td style="text-align: left;"><a href="https://github.com/danielqsj/kafka_exporter">ref</a></td>
</tr>
<tr>
<td style="text-align: left;">Kafka</td>
<td style="text-align: left;">Kafdrop Kafka Web UI</td>
<td style="text-align: left;"><a href="https://github.com/obsidiandynamics/kafdrop">ref</a></td>
</tr>
<tr>
<td style="text-align: left;">Kafka</td>
<td style="text-align: left;">ZooNavigator: Web-based ZooKeeper UI</td>
<td style="text-align: left;"><a href="https://zoonavigator.elkozmon.com/en/latest">ref</a></td>
</tr>
<tr>
<td style="text-align: left;">Kafka</td>
<td style="text-align: left;">CMAK (Cluster Manager for Apache Kafka, previously known as Kafka Manager)</td>
<td style="text-align: left;"><a href="https://github.com/patelh/kafka-manager">ref</a></td>
</tr>
<tr>
<td style="text-align: left;">Kafka</td>
<td style="text-align: left;">Xinfra Monitor (renamed from Kafka Monitor, created by Linkedin)</td>
<td style="text-align: left;"><a href="https://github.com/linkedin/kafka-monitor">ref</a></td>
</tr>
<tr>
<td style="text-align: left;">Kafka</td>
<td style="text-align: left;">Telegraf + InfluxDB</td>
<td style="text-align: left;"><a href="https://www.influxdata.com/integration/kafka-telegraf-integration">ref</a></td>
</tr>
<tr>
<td style="text-align: left;">Red Hat AMQ Broker (ActiveMQ Artemis)</td>
<td style="text-align: left;">Prometheus plugin for AMQ Broker<br/>To monitor the health and performance of your broker instances, you can use the <strong>Prometheus plugin for AMQ Broker</strong> to monitor and store broker runtime metrics. Prometheus is software built for monitoring large, scalable systems and storing historical runtime data over an extended time period. The <strong>AMQ Broker Prometheus plugin exports the broker runtime metrics to Prometheus format</strong>, enabling you to use Prometheus itself to visualize and run queries on the data.<br/>You can also use a graphical tool, such as <strong>Grafana, to configure more advanced visualizations and dashboards</strong> for the metrics that the Prometheus plugin collects.<br/>The metrics that the plugin exports to Prometheus format are listed below. A description of each metric is exported along with the metric itself.</td>
<td style="text-align: left;"><a href="https://access.redhat.com/documentation/en-us/red_hat_amq/7.6/html/managing_amq_broker/prometheus-plugin-managing">ref1</a>, <a href="https://github.com/lbroudoux/openshift-cases/tree/master/jboss-amq7-custom">ref2</a>, <a href="https://www.redhat.com/en/blog/enhanced-openshift-jboss-amq-container-image-for-production">ref3</a></td>
</tr>
<tr>
<td style="text-align: left;">Red Hat AMQ Streams (Kafka)</td>
<td style="text-align: left;"><a href="https://www.oracle.com/java/technologies/javase/javamanagement.html">JMX</a>, OpenTracing+Jaeger <br/>ZooKeeper, the Kafka broker, Kafka Connect, and the Kafka clients all expose management information using <a href="https://www.oracle.com/java/technologies/javase/javamanagement.html">Java Management Extensions (JMX)</a>. Most management information is in the form of metrics that are useful for monitoring the condition and performance of your Kafka cluster. Like other Java applications, Kafka provides this management information through managed beans or MBeans.<br/> <strong>JMX</strong> works at the level of the JVM (Java Virtual Machine). To obtain management information, <strong>external tools can connect to the JVM that is running ZooKeeper, the Kafka broker, and so on.</strong> By default, only tools on the same machine and running as the same user as the JVM are able to connect.<br/><strong>Distributed Tracing with Jaeger:</strong><br/> - Kafka Producers, Kafka Consumers, and Kafka Streams applications (referred to as Kafka clients)<br/> - MirrorMaker and Kafka Connect <br/> - Kafka Bridge</td>
<td style="text-align: left;"><a href="https://access.redhat.com/documentation/en-us/red_hat_amq/7.6/html/using_amq_streams_on_rhel/index">ref1</a>,<a href="https://access.redhat.com/documentation/en-us/red_hat_amq/7.6/html/using_amq_streams_on_rhel/assembly-distributed-tracing-str">ref2</a></td>
</tr>
<tr>
<td style="text-align: left;">Red Hat AMQ Streams Operator</td>
<td style="text-align: left;">AMQ Streams Operator (Prometheus &amp; Jaeger), strimzi, jmxtrans<br/>How to monitor AMQ Streams Kafka, Zookeeper and Kafka Connect clusters using Prometheus to provide monitoring data for example Grafana dashboards.<br/>Support for distributed tracing in AMQ Streams, using <strong>Jaeger</strong>:<br/> - You instrument Kafka Producer, Consumer, and Streams API applications for distributed tracing using an OpenTracing client library. This involves adding instrumentation code to these clients, which monitors the execution of individual transactions in order to generate trace data.<br/> - Distributed tracing support is built in to the Kafka Connect, MirrorMaker, and Kafka Bridge components of AMQ Streams. To configure these components for distributed tracing, you configure and update the relevant custom resources.</td>
<td style="text-align: left;"><a href="https://access.redhat.com/documentation/en-us/red_hat_amq/7.6/html/using_amq_streams_on_openshift/assembly-metrics-setup-str">ref1</a>, <a href="https://access.redhat.com/documentation/en-us/red_hat_amq/7.6/html/using_amq_streams_on_openshift/assembly-distributed-tracing-str">ref2</a>, <a href="https://operatorhub.io/operator/strimzi-kafka-operator">ref3 strimzi</a>, <a href="https://github.com/jmxtrans/jmxtrans">ref4: <strong>jmxtrans</strong></a>, <a href="https://operatorhub.io/operator/banzaicloud-kafka-operator">ref5: banzai operator</a></td>
</tr>
<tr>
<td style="text-align: left;">Red Hat AMQ Broker Operator</td>
<td style="text-align: left;">Prometheus (recommended) or Jolokia REST to JMX <br/>To monitor runtime data for brokers in your deployment, use one of these approaches:<br/> - <a href="https://access.redhat.com/documentation/en-us/red_hat_amq/7.6/html/deploying_amq_broker_on_openshift/assembly_br-broker-monitoring_broker-ocp#assembly_br-monitoring-broker-runtime-data-using-prometheus_broker-ocp">Section 9.1, “Monitoring broker runtime data using Prometheus”</a><br/> - <a href="https://access.redhat.com/documentation/en-us/red_hat_amq/7.6/html/deploying_amq_broker_on_openshift/assembly_br-broker-monitoring_broker-ocp#proc_br-monitoring-broker_broker-ocp">Section 9.2, “Monitoring broker runtime data using JMX”</a> <br/>In general, using Prometheus is the recommended approach. However, you might choose to use the Jolokia REST interface to JMX if a metric that you need to monitor is not exported by the Prometheus plugin. For more information about the broker runtime metrics that the Prometheus plugin exports, <a href="https://access.redhat.com/documentation/en-us/red_hat_amq/7.6/html/deploying_amq_broker_on_openshift/assembly_br-broker-monitoring_broker-ocp#con-br-overview-of-prometheus-metrics_broker-ocp">see Section 9.1.1, “Overview of Prometheus metrics”</a></td>
<td style="text-align: left;"><a href="https://access.redhat.com/documentation/en-us/red_hat_amq/7.6/html/deploying_amq_broker_on_openshift/deploying-broker-on-ocp-using-operator_broker-ocp">ref1</a>, <a href="https://access.redhat.com/documentation/en-us/red_hat_amq/7.6/html/deploying_amq_broker_on_openshift/assembly_br-broker-monitoring_broker-ocp">ref2</a>, <a href="https://access.redhat.com/documentation/en-us/red_hat_amq/7.6/html/deploying_amq_broker_on_openshift/assembly_br-broker-monitoring_broker-ocp#assembly_br-monitoring-broker-runtime-data-using-prometheus_broker-ocp">ref3</a>, <a href="https://access.redhat.com/documentation/en-us/red_hat_amq/7.6/html/deploying_amq_broker_on_openshift/assembly_br-broker-monitoring_broker-ocp#proc_br-monitoring-broker_broker-ocp">ref4</a>, <a href="https://access.redhat.com/documentation/en-us/red_hat_amq/7.6/html/deploying_amq_broker_on_openshift/assembly_br-broker-monitoring_broker-ocp#con-br-overview-of-prometheus-metrics_broker-ocp">ref5</a></td>
</tr>
</tbody>
</table>
<h3 id="red-hat-amq-7-broker-monitoring-solutions-based-on-prometheus-and-grafana">Red Hat AMQ 7 Broker Monitoring solutions based on Prometheus and Grafana</h3>
<p>This is a selection of monitoring solutions suitable for RH AMQ 7 Broker based on Prometheus and Grafana:</p>
<table>
<thead>
<tr>
<th style="text-align: left;">Environment</th>
<th style="text-align: center;">Collector/Exporter</th>
<th style="text-align: left;">Details/URL</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">RHEL</td>
<td style="text-align: center;">Prometheus Plugin for AMQ Broker</td>
<td style="text-align: left;"><a href="https://access.redhat.com/documentation/en-us/red_hat_amq/7.6/html/managing_amq_broker/prometheus-plugin-managing">ref</a></td>
</tr>
<tr>
<td style="text-align: left;">RHEL</td>
<td style="text-align: center;">Prometheus JMX Exporter</td>
<td style="text-align: left;">Same solution applied to ActiveMQ Artemis</td>
</tr>
<tr>
<td style="text-align: left;">OpenShift 3</td>
<td style="text-align: center;">Prometheus Plugin for AMQ Broker</td>
<td style="text-align: left;"><strong>Grafana Dashboard not available</strong>, <a href="https://access.redhat.com/documentation/en-us/red_hat_amq/7.6/html/deploying_amq_broker_on_openshift/deploying-broker-on-ocp-using-operator_broker-ocp">ref1</a>, <a href="https://access.redhat.com/documentation/en-us/red_hat_amq/7.6/html/deploying_amq_broker_on_openshift/assembly_br-broker-monitoring_broker-ocp">ref2</a></td>
</tr>
<tr>
<td style="text-align: left;">OpenShift 4</td>
<td style="text-align: center;">Prometheus Plugin for AMQ Broker</td>
<td style="text-align: left;">Check if Grafana Dashboard is automatically setup by Red Hat AMQ Operator</td>
</tr>
<tr>
<td style="text-align: left;">OpenShift 3</td>
<td style="text-align: center;">Prometheus JMX Exporter</td>
<td style="text-align: left;"><strong>Grafana Dashboard not available</strong>, <a href="https://www.redhat.com/en/blog/enhanced-openshift-jboss-amq-container-image-for-production">ref1</a>, <a href="https://github.com/lbroudoux/openshift-cases/tree/master/jboss-amq7-custom">ref2</a></td>
</tr>
</tbody>
</table>
<h2 id="serverless-monitoring">Serverless Monitoring</h2>
<ul>
<li><a href="https://thenewstack.io/serverless-needs-more-observability-tools">thenewstack.io: Serverless Needs More Observability Tools</a></li>
</ul>
<h2 id="distributed-tracing-in-apache-beam">Distributed Tracing in Apache Beam</h2>
<ul>
<li><a href="https://beam.apache.org">Apache Beam</a></li>
<li><a href="http://rion.io/2020/07/04/a-distributed-tracing-adventure-in-apache-beam">A Distributed Tracing Adventure in Apache Beam</a></li>
</ul>
<h2 id="krossboard-converged-kubernetes-usage-analytics">Krossboard Converged Kubernetes usage analytics</h2>
<ul>
<li><a href="https://krossboard.app">Krossboard</a> All in one single place, Krossboard tracks the usage of all your clusters over time, it helps forecast capacity scale up/down, thereby enabling you to easily anticipate and master operations costs.</li>
<li><a href="https://itnext.io/in-search-of-converged-usage-analytics-for-multiple-managed-kubernetes-c5108cb7f0e1">Krossboard: A centralized usage analytics approach for multiple Kubernetes</a></li>
</ul>
<h2 id="instana-apm">Instana APM</h2>
<ul>
<li><a href="https://www.cloudbees.com/blog/automated-build-deploy-feedback-using-instana">cloudbees.com: Automated Build and Deploy Feedback Using Jenkins and Instana 🌟</a></li>
</ul>
<h2 id="monitoring-etcd">Monitoring Etcd</h2>
<ul>
<li><a href="https://www.suse.com/c/rancher_blog/monitor-etcd-with-prometheus-and-grafana-using-rancher">rancher.com: Monitor Etcd with Prometheus and Grafana using Rancher</a></li>
</ul>
<h2 id="zabbix">Zabbix</h2>
<ul>
<li><a href="https://www.redhat.com/en/blog/monitoring-infrastructure-openshift-4.x-using-zabbix-operator">openshift.com: Monitoring Infrastructure Openshift 4.x Using Zabbix Operator</a></li>
<li><a href="https://www.redhat.com/en/blog/how-to-monitoring-openshift-4.x-with-zabbix-using-prometheus-part-2">openshift.com: How to Monitor Openshift 4.x with Zabbix using Prometheus - Part 2</a></li>
<li><a href="https://www.redhat.com/en/blog/monitoring-infrastructure-openshift-4.x-using-zabbix-operator">cloud.redhat.com: Monitoring Infrastructure Openshift 4.x Using Zabbix Operator</a></li>
</ul>
<h2 id="victoriametrics-and-victorialogs">VictoriaMetrics and VictoriaLogs</h2>
<ul>
<li><a href="https://victoriametrics.com">victoriametrics.com</a></li>
<li><a href="https://victoriametrics.com/blog/q2-2024-round-up-victoriametrics-and-victorialogs-updates/index.html">victoriametrics.com: Q2 2024 Round Up: VictoriaMetrics &amp; VictoriaLogs Updates</a> VictoriaLogs is an open source database for logs that uses up to 30x less RAM and up to 15x disk space than Elasticsearch has just relased several new features to celebrate their one year anniversary</li>
</ul>
<h2 id="other-tools">Other Tools</h2>
<ul>
<li><a href="https://github.com/netdata/netdata">Netdata</a> Netdata&rsquo;s distributed, real-time monitoring Agent collects thousands of metrics from systems, hardware, containers, and applications with zero configuration.</li>
<li><a href="https://github.com/Unitech/pm2">PM2</a> is a production process manager for Node.js applications with a built-in load balancer. It allows you to keep applications alive forever, to reload them without downtime and to facilitate common system admin tasks.</li>
<li><a href="https://github.com/huginn/huginn">Huginn</a> Create agents that monitor and act on your behalf. Your agents are standing by!</li>
<li><a href="https://github.com/osquery/osquery">OS Query</a> SQL powered operating system instrumentation, monitoring, and analytics.</li>
<li><a href="https://github.com/nicolargo/glances">Glances</a> Glances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, Mac OS and Windows operating systems. It is written in Python and uses libraries to grab information from your system. It is based on an open architecture where developers can add new plugins or exports modules.</li>
<li><a href="https://github.com/taosdata/TDengine">TDengine</a> is an open-sourced big data platform under GNU AGPL v3.0, designed and optimized for the Internet of Things (IoT), Connected Cars, Industrial IoT, and IT Infrastructure and Application Monitoring.</li>
<li><a href="https://stackpulse.com/blog/automated-kubernetes-pod-restarting-analysis-with-stackpulse">stackpulse.com: Automated Kubernetes Pod Restarting Analysis with StackPulse</a></li>
<li><a href="https://www.checklyhq.com">Checkly</a> is the API &amp; E2E monitoring platform for the modern stack: programmable, flexible and loving JavaScript.<ul>
<li><a href="https://www.hashicorp.com/blog/monitoring-as-code-with-terraform-cloud-and-checkly">hashicorp.com: Monitoring as Code with Terraform Cloud and Checkly</a></li>
</ul>
</li>
<li><a href="https://network-king.net/iot-use-in-healthcare-grows-but-has-its-pitfalls">network-king.net: IoT use in healthcare grows but has some pitfalls</a></li>
<li><a href="https://www.zebrium.com">Zebrium</a> Monitoring detects problems, Zebrium finds root cause
Resolve your software incidents 10x faster</li>
<li><a href="https://github.com/louislam/uptime-kuma">louislam/uptime-kuma</a> A fancy self-hosted monitoring tool. Uptime Kuma is an open source monitoring tool that can be used to monitor the service uptime along with few other stats like Ping Status, Avg. Response time, uptime etc.</li>
</ul>
<h2 id="other-awesome-lists">Other Awesome Lists</h2>
<ul>
<li><a href="https://github.com/antonarhipov/awesome-apm">Awesome APM</a></li>
</ul>
<h2 id="slides">Slides</h2>
<details>
<summary>Click to expand!</summary>
<center markdown="1">
<iframe src="//www.slideshare.net/slideshow/embed_code/key/J1S3NyN9ZeLjh9" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="//www.slideshare.net/MartinEtmajer/challenges-in-a-microservices-age-monitoring-logging-and-tracing-on-red-hat-openshift" title="Challenges in a Microservices Age: Monitoring, Logging and Tracing on Red Hat OpenShift" target="_blank">Challenges in a Microservices Age: Monitoring, Logging and Tracing on Red Hat OpenShift</a> </strong> from <strong><a href="//www.slideshare.net/MartinEtmajer" target="_blank">Martin Etmajer</a></strong> </div>
<iframe src="//www.slideshare.net/slideshow/embed_code/key/lr07J585Y86D7i" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="//www.slideshare.net/MartinEtmajer/monitoring-microservices-at-scale-on-openshift-67500621" title="Monitoring Microservices at Scale on OpenShift (OpenShift Commons Briefing #52)" target="_blank">Monitoring Microservices at Scale on OpenShift (OpenShift Commons Briefing #52)</a> </strong> from <strong><a href="//www.slideshare.net/MartinEtmajer" target="_blank">Martin Etmajer</a></strong> </div>
<iframe src="//www.slideshare.net/slideshow/embed_code/key/CDyLLoStp2omzE" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="//www.slideshare.net/PurnimaKurella/dynatrace-70789377" title="Dynatrace" target="_blank">Dynatrace</a> </strong> from <strong><a href="//www.slideshare.net/PurnimaKurella" target="_blank">Purnima Kurella</a></strong> </div>
</center>
</details>
<h2 id="tweets">Tweets</h2>
<details>
<summary>Click to expand!</summary>
<center markdown="1">
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">The ecosystem of CI / CD tools that integrates in <a href="https://twitter.com/hashtag/OpenTelemetry?src=hash&amp;ref_src=twsrc%5Etfw">#OpenTelemetry</a> traces is growing rapidly with already <a href="https://twitter.com/hashtag/Jenkins?src=hash&amp;ref_src=twsrc%5Etfw">#Jenkins</a>, <a href="https://twitter.com/hashtag/Maven?src=hash&amp;ref_src=twsrc%5Etfw">#Maven</a>, <a href="https://twitter.com/hashtag/Ansible?src=hash&amp;ref_src=twsrc%5Etfw">#Ansible</a>, and the generic otel-cli<a href="https://t.co/GeKUMd5zl4">https://t.co/GeKUMd5zl4</a><a href="https://t.co/KrMIGZ3vkp">https://t.co/KrMIGZ3vkp</a><a href="https://t.co/UiJ0Dk78Pd">https://t.co/UiJ0Dk78Pd</a><a href="https://t.co/UdwnxXOUa4">https://t.co/UdwnxXOUa4</a> <a href="https://t.co/MsYViY6jwf">pic.twitter.com/MsYViY6jwf</a></p>&mdash; Cyrille Le Clerc (@cyrilleleclerc) <a href="https://twitter.com/cyrilleleclerc/status/1430070961366257693?ref_src=twsrc%5Etfw">August 24, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Distributed tracing is like IPv6. The entire premise reveals itself when critical usage is achieved. Hence, there are few organizations that has resources to do the hard work of retrofitting it into their existing systems. For “green field” companies, its different.</p>&mdash; Jaana Dogan ヤナ ドガン (@rakyll) <a href="https://twitter.com/rakyll/status/1434980799716102144?ref_src=twsrc%5Etfw">September 6, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">One of the biggest frictions of the container ecosystem to me is the fact that I still have to deal with the node. Either directly or indirectly, managed or unmanaged, visible to me or not. And it sucks.</p>&mdash; Jaana Dogan ヤナ ドガン (@rakyll) <a href="https://twitter.com/rakyll/status/1435849792542830594?ref_src=twsrc%5Etfw">September 9, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">We want a stack debuggable all the way down to the bare metal and we want a stack that encapsulates all the complexity. We don&#39;t know what we want and all compute ended up being leaky abstractions.</p>&mdash; Jaana Dogan ヤナ ドガン (@rakyll) <a href="https://twitter.com/rakyll/status/1435859851851165704?ref_src=twsrc%5Etfw">September 9, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">As someone who is working on monitoring and performance, my job is about leaking into abstractions. Whatever abstraction layer I am targeting, I often engage with all to cover everything down to bare metal.</p>&mdash; Jaana Dogan ヤナ ドガン (@rakyll) <a href="https://twitter.com/rakyll/status/1438780504690466817?ref_src=twsrc%5Etfw">September 17, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">If your observability strategy only relies on your service mesh, you are in the early stages of putting together a strategy. And you must have a very reliable service mesh.</p>&mdash; Jaana Dogan ヤナ ドガン (@rakyll) <a href="https://twitter.com/rakyll/status/1443652442063704065?ref_src=twsrc%5Etfw">September 30, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">This. I work with tens of companies &amp; they sometimes want to hire me to &quot;fix their observability&quot;. You can&#39;t throw some tools or a single person to this problem. Observability is like security, it&#39;s a vertical. You have to embed it to your eng culture. <a href="https://t.co/poFsLhsxq9">https://t.co/poFsLhsxq9</a></p>&mdash; Jaana Dogan at KubeCon ヤナ ドガン (@rakyll) <a href="https://twitter.com/rakyll/status/1448373809631817734?ref_src=twsrc%5Etfw">October 13, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Does anyone want to try out the <a href="https://twitter.com/hashtag/k8s?src=hash&amp;ref_src=twsrc%5Etfw">#k8s</a> <a href="https://twitter.com/hashtag/slack?src=hash&amp;ref_src=twsrc%5Etfw">#slack</a> bot? It helps with browsing clusters directly from Slack and notifies you about important changes to your clusters. Your feedback would be super helpful! Please DM for details. <a href="https://t.co/SpRFz2wgtZ">pic.twitter.com/SpRFz2wgtZ</a></p>&mdash; Kubevious (@kubevious) <a href="https://twitter.com/kubevious/status/1471208374196850693?ref_src=twsrc%5Etfw">December 15, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</center>
</details>
<ul>
<li><a href="https://medium.com/@rahul.fiem/opentelemetry-otel-vs-application-performance-monitoring-apm-86ae829877cf">OpenTelemetry (OTel) vs Application Performance Monitoring (APM)</a> 🌟 - Este artículo técnico ofrece una comparación detallada entre OpenTelemetry (OTel) y las soluciones tradicionales de Application Performance Monitoring (APM).</li>
<li><a href="https://unixarena.com/2025/04/oomkilled-in-kubernetes-the-hidden-memory-leaks-youre-missing.html">OOMKilled in Kubernetes: Understanding and Preventing Hidden Memory Leaks</a> - <em>(Related to kubernetes-troubleshooting topic)</em></li>
</ul>
<form class="md-feedback" name="feedback" hidden>
<fieldset>
<legend class="md-feedback__title">
Was this page helpful?
</legend>
<div class="md-feedback__inner">
<div class="md-feedback__list">
<button class="md-feedback__icon md-icon" type="submit" title="This page was helpful" data-md-value="1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 12a8 8 0 0 0-8-8 8 8 0 0 0-8 8 8 8 0 0 0 8 8 8 8 0 0 0 8-8m2 0a10 10 0 0 1-10 10A10 10 0 0 1 2 12 10 10 0 0 1 12 2a10 10 0 0 1 10 10M10 9.5c0 .8-.7 1.5-1.5 1.5S7 10.3 7 9.5 7.7 8 8.5 8s1.5.7 1.5 1.5m7 0c0 .8-.7 1.5-1.5 1.5S14 10.3 14 9.5 14.7 8 15.5 8s1.5.7 1.5 1.5m-5 7.73c-1.75 0-3.29-.73-4.19-1.81L9.23 14c.45.72 1.52 1.23 2.77 1.23s2.32-.51 2.77-1.23l1.42 1.42c-.9 1.08-2.44 1.81-4.19 1.81"/></svg>
</button>
<button class="md-feedback__icon md-icon" type="submit" title="This page could be improved" data-md-value="0">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 12a8 8 0 0 0-8-8 8 8 0 0 0-8 8 8 8 0 0 0 8 8 8 8 0 0 0 8-8m2 0a10 10 0 0 1-10 10A10 10 0 0 1 2 12 10 10 0 0 1 12 2a10 10 0 0 1 10 10m-6.5-4c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5-1.5-.7-1.5-1.5.7-1.5 1.5-1.5M10 9.5c0 .8-.7 1.5-1.5 1.5S7 10.3 7 9.5 7.7 8 8.5 8s1.5.7 1.5 1.5m2 4.5c1.75 0 3.29.72 4.19 1.81l-1.42 1.42C14.32 16.5 13.25 16 12 16s-2.32.5-2.77 1.23l-1.42-1.42C8.71 14.72 10.25 14 12 14"/></svg>
</button>
</div>
<div class="md-feedback__note">
<div data-md-value="1" hidden>
Thanks for your feedback!
</div>
<div data-md-value="0" hidden>
Thanks for your feedback! Help us improve this page by using our <a href="..." target=_blank>feedback form</a>.
</div>
</div>
</div>
</fieldset>
</form>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
Back to top
</button>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
2026 <a href="https://twitter.com/nubenetes">Nubenetes</a>, <a href="https://nubenetes.com/about/">about</a>.
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://www.youtube.com/channel/UCnrc0CFnNJSG2Kt4Ohdr3UA/playlists?view=1" target="_blank" rel="noopener" title="www.youtube.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M549.7 124.1c-6.2-23.7-24.8-42.3-48.3-48.6C458.9 64 288.1 64 288.1 64S117.3 64 74.7 75.5c-23.5 6.3-42 24.9-48.3 48.6C15 167 15 256.4 15 256.4s0 89.4 11.4 132.3c6.3 23.6 24.8 41.5 48.3 47.8C117.3 448 288.1 448 288.1 448s170.8 0 213.4-11.5c23.5-6.3 42-24.2 48.3-47.8 11.4-42.9 11.4-132.3 11.4-132.3s0-89.4-11.4-132.3zM232.2 337.6V175.2l142.7 81.2z"/></svg>
</a>
<a href="https://twitter.com/nubenetes" target="_blank" rel="noopener" title="twitter.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M459.4 151.7c.3 4.5.3 9.1.3 13.6 0 138.7-105.6 298.6-298.6 298.6-59.5 0-114.7-17.2-161.1-47.1 8.4 1 16.6 1.3 25.3 1.3 49.1 0 94.2-16.6 130.3-44.8-46.1-1-84.8-31.2-98.1-72.8 6.5 1 13 1.6 19.8 1.6 9.4 0 18.8-1.3 27.6-3.6-48.1-9.7-84.1-52-84.1-103v-1.3c14 7.8 30.2 12.7 47.4 13.3-28.3-18.8-46.8-51-46.8-87.4 0-19.5 5.2-37.4 14.3-53C87.4 130.8 165 172.4 252.1 176.9c-1.6-7.8-2.6-15.9-2.6-24C249.5 95.1 296.3 48 354.4 48c30.2 0 57.5 12.7 76.7 33.1 23.7-4.5 46.5-13.3 66.6-25.3-7.8 24.4-24.4 44.8-46.1 57.8 21.1-2.3 41.6-8.1 60.4-16.2-14.3 20.8-32.2 39.3-52.6 54.3"/></svg>
</a>
<a href="https://github.com/nubenetes" target="_blank" rel="noopener" title="github.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M202.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1M496 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2m-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3m-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1"/></svg>
</a>
<a href="https://speakerdeck.com/nubenetes/stars" target="_blank" rel="noopener" title="speakerdeck.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M213.9 296H100c-26.5 0-52-10.5-70.7-29.3S0 222.5 0 196s10.5-52 29.3-70.7S73.5 96 100 96h132.8c10.6 0 20.8 4.2 28.3 11.7s11.7 17.7 11.7 28.3-4.2 20.8-11.7 28.3-17.7 11.7-28.3 11.7H98c-26.5 0-26.4 40 0 40h113.8c26.5 0 52 10.5 70.7 29.3s29.3 44.2 29.3 70.7-10.5 52-29.3 70.7-44.2 29.3-70.7 29.3H40c-10.6 0-20.8-4.2-28.3-11.7S0 386.6 0 376s4.2-20.8 11.7-28.3S29.4 336 40 336h173.9c26.5 0 26.5-40 0-40M298 416c13.5-9.2 25-21 33.8-34.7s14.7-29.2 17.3-45.3h64.6c2.6 0 5.2-.6 7.6-1.6s4.6-2.5 6.4-4.4 3.3-4.1 4.2-6.5 1.5-5 1.4-7.6v-120c0-2.6-.5-5.2-1.4-7.6s-2.4-4.6-4.2-6.5-4-3.3-6.4-4.4-5-1.6-7.6-1.6H296.5c9.7-11.1 15-25.3 15-40s-5.3-28.9-15-40h136.9c43.4 0 78.6 35.8 78.6 80v160c0 44.2-35.2 80-78.6 80z"/></svg>
</a>
<a href="https://www.slideshare.net/nubenetes/favorites" target="_blank" rel="noopener" title="www.slideshare.net" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M187.9 153.7c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7s61.7-26 61.7-57.7c0-32-27.7-57.7-61.7-57.7m143.4 0c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7 34.3 0 61.7-26 61.7-57.7.1-32-27.4-57.7-61.7-57.7m156.6 90-6 4.3V49.7c0-27.4-20.6-49.7-46-49.7H76.8c-25.4 0-46 22.3-46 49.7V248c-2-1.4-4.3-2.9-6.3-4.3-15.1-10.6-25.1 4-16 17.7 18.3 22.6 53.1 50.3 106.3 72-56.3 191.7 137.4 222.3 134.3 124.1 0-.7.3-56.6.3-96.6 5.1 1.1 9.4 2.3 13.7 3.1 0 39.7.3 92.8.3 93.5-3.1 98.3 190.6 67.7 134.3-124 53.1-21.7 88-49.4 106.3-72 9.1-13.8-.9-28.3-16.1-17.8m-30.5 19.2c-68.9 37.4-128.3 31.1-160.6 29.7-23.7-.9-32.6 9.1-33.7 24.9-10.3-7.7-18.6-15.5-20.3-17.1-5.1-5.4-13.7-8-27.1-7.7-31.7 1.1-89.7 7.4-157.4-28V72.3c0-34.9 8.9-45.7 40.6-45.7h317.7c30.3 0 40.9 12.9 40.9 45.7v190.6z"/></svg>
</a>
<a href="https://twitter.com/redhatspain" target="_blank" rel="noopener" title="twitter.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M459.4 151.7c.3 4.5.3 9.1.3 13.6 0 138.7-105.6 298.6-298.6 298.6-59.5 0-114.7-17.2-161.1-47.1 8.4 1 16.6 1.3 25.3 1.3 49.1 0 94.2-16.6 130.3-44.8-46.1-1-84.8-31.2-98.1-72.8 6.5 1 13 1.6 19.8 1.6 9.4 0 18.8-1.3 27.6-3.6-48.1-9.7-84.1-52-84.1-103v-1.3c14 7.8 30.2 12.7 47.4 13.3-28.3-18.8-46.8-51-46.8-87.4 0-19.5 5.2-37.4 14.3-53C87.4 130.8 165 172.4 252.1 176.9c-1.6-7.8-2.6-15.9-2.6-24C249.5 95.1 296.3 48 354.4 48c30.2 0 57.5 12.7 76.7 33.1 23.7-4.5 46.5-13.3 66.6-25.3-7.8 24.4-24.4 44.8-46.1 57.8 21.1-2.3 41.6-8.1 60.4-16.2-14.3 20.8-32.2 39.3-52.6 54.3"/></svg>
</a>
<a href="https://www.linkedin.com/groups/1937212/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<div class="md-consent" data-md-component="consent" id="__consent" hidden>
<div class="md-consent__overlay"></div>
<aside class="md-consent__inner">
<form class="md-consent__form md-grid md-typeset" name="consent">
<h4>Cookie consent</h4>
<p>We use cookies to recognize your repeated visits and preferences, as well as to measure the effectiveness of our documentation and whether users find what they're searching for. With your consent, you're helping us to make our documentation better.</p>
<input class="md-toggle" type="checkbox" id="__settings" >
<div class="md-consent__settings">
<ul class="task-list">
<li class="task-list-item">
<label class="task-list-control">
<input type="checkbox" name="analytics" checked>
<span class="task-list-indicator"></span>
Google Analytics
</label>
</li>
<li class="task-list-item">
<label class="task-list-control">
<input type="checkbox" name="github" checked>
<span class="task-list-indicator"></span>
GitHub
</label>
</li>
</ul>
</div>
<div class="md-consent__controls">
<button class="md-button md-button--primary">Accept</button>
<label class="md-button" for="__settings">Manage settings</label>
</div>
</form>
</aside>
</div>
<script>var consent=__md_get("__consent");if(consent)for(var input of document.forms.consent.elements)input.name&&(input.checked=consent[input.name]||!1);else"file:"!==location.protocol&&setTimeout((function(){document.querySelector("[data-md-component=consent]").hidden=!1}),250);var form=document.forms.consent;for(var action of["submit","reset"])form.addEventListener(action,(function(e){if(e.preventDefault(),"reset"===e.type)for(var n of document.forms.consent.elements)n.name&&(n.checked=!1);__md_set("__consent",Object.fromEntries(Array.from(new FormData(form).keys()).map((function(e){return[e,!0]})))),location.hash="",location.reload()}))</script>
<script id="__config" type="application/json">{"annotate": null, "base": ".", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.tabs.sticky", "navigation.sections", "toc.integrate", "navigation.top", "content.code.annotate", "navigation.indexes", "search.highlight", "search.share", "search.suggest"], "search": "assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
<script src="assets/javascripts/bundle.79ae519e.min.js"></script>
<script src="javascript/extra.js"></script>
</body>
</html>