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

9331 lines
219 KiB
HTML
Raw Permalink 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/prometheus.html">
<link rel="prev" href="monitoring.html">
<link rel="next" href="grafana.html">
<link rel="icon" href="images/favicon-car.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
<title>Prometheus - 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="#prometheus" 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">
Prometheus
</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">
<a href="monitoring.html" class="md-nav__link">
<span class="md-ellipsis">
Monitoring and Performance
</span>
</a>
</li>
<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">
Prometheus
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="prometheus.html" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Prometheus
</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="#introduction" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#alertmanager" class="md-nav__link">
<span class="md-ellipsis">
AlertManager
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#prometheus-agent" class="md-nav__link">
<span class="md-ellipsis">
Prometheus Agent
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#promgen" class="md-nav__link">
<span class="md-ellipsis">
Promgen
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#promcat-resource-catalog" class="md-nav__link">
<span class="md-ellipsis">
Promcat Resource Catalog
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#prometheus-demo" class="md-nav__link">
<span class="md-ellipsis">
Prometheus Demo
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#prometheus-storage" class="md-nav__link">
<span class="md-ellipsis">
Prometheus Storage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#prometheus-slo-service-level-objectives" class="md-nav__link">
<span class="md-ellipsis">
Prometheus SLO Service Level Objectives
</span>
</a>
<nav class="md-nav" aria-label="Prometheus SLO Service Level Objectives">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#scalability-high-availability-ha-and-long-term-storage" class="md-nav__link">
<span class="md-ellipsis">
Scalability, High Availability (HA) and Long-Term Storage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#storage-solutions-for-prometheus" class="md-nav__link">
<span class="md-ellipsis">
Storage Solutions for Prometheus
</span>
</a>
<nav class="md-nav" aria-label="Storage Solutions for Prometheus">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#influxdb-and-influxdb-templates" class="md-nav__link">
<span class="md-ellipsis">
InfluxDB and InfluxDB Templates
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#collectors-software-exposing-prometheus-metrics" class="md-nav__link">
<span class="md-ellipsis">
Collectors. Software exposing Prometheus metrics
</span>
</a>
<nav class="md-nav" aria-label="Collectors. Software exposing Prometheus metrics">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#prometheus-exporters-plug-in-architecture-and-extensibility-with-prometheus-exporters-collectors" class="md-nav__link">
<span class="md-ellipsis">
Prometheus Exporters. Plug-in architecture and extensibility with Prometheus Exporters (collectors)
</span>
</a>
<nav class="md-nav" aria-label="Prometheus Exporters. Plug-in architecture and extensibility with Prometheus Exporters (collectors)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#certificates-expiration" class="md-nav__link">
<span class="md-ellipsis">
Certificates Expiration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#prometheus-exporters-development-node-exporter" class="md-nav__link">
<span class="md-ellipsis">
Prometheus Exporters Development. Node Exporter
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#prometheus-third-party-collectorsexporters" class="md-nav__link">
<span class="md-ellipsis">
Prometheus Third-party Collectors/Exporters
</span>
</a>
<nav class="md-nav" aria-label="Prometheus Third-party Collectors/Exporters">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#opentelemetry-collector" class="md-nav__link">
<span class="md-ellipsis">
OpenTelemetry Collector
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#telegraf-collector" class="md-nav__link">
<span class="md-ellipsis">
Telegraf Collector
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#micrometer-collector" class="md-nav__link">
<span class="md-ellipsis">
Micrometer Collector
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#prometheus-alarms-and-event-tracking" class="md-nav__link">
<span class="md-ellipsis">
Prometheus Alarms and Event Tracking
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#prometheus-and-cloud-monitoring" class="md-nav__link">
<span class="md-ellipsis">
Prometheus and Cloud Monitoring
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#prometheus-installers" class="md-nav__link">
<span class="md-ellipsis">
Prometheus Installers
</span>
</a>
<nav class="md-nav" aria-label="Prometheus Installers">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#binaries-source-code-or-docker" class="md-nav__link">
<span class="md-ellipsis">
Binaries, source code or Docker
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ansible-roles" class="md-nav__link">
<span class="md-ellipsis">
Ansible Roles
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#prometheus-operator" class="md-nav__link">
<span class="md-ellipsis">
Prometheus Operator
</span>
</a>
<nav class="md-nav" aria-label="Prometheus Operator">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#kube-prometheus" class="md-nav__link">
<span class="md-ellipsis">
kube Prometheus
</span>
</a>
<nav class="md-nav" aria-label="kube Prometheus">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#prometheus-operator-with-helm3" class="md-nav__link">
<span class="md-ellipsis">
Prometheus Operator with Helm3
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#kube-prometheus-stack-best-choice" class="md-nav__link">
<span class="md-ellipsis">
Kube-prometheus-stack (best choice)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#kubernetes-cluster-monitoring-stack-based-on-prometheus-operator" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes Cluster Monitoring Stack based on Prometheus Operator
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#prometheus-saas-solutions" class="md-nav__link">
<span class="md-ellipsis">
Prometheus SaaS Solutions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#proof-of-concept-activemq-monitoring-with-prometheus" class="md-nav__link">
<span class="md-ellipsis">
Proof of Concept: ActiveMQ Monitoring with Prometheus
</span>
</a>
<nav class="md-nav" aria-label="Proof of Concept: ActiveMQ Monitoring with Prometheus">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#poc-activemq-5x-monitoring-with-telegraf-collector-prometheus-and-grafana-dashboard-10702" class="md-nav__link">
<span class="md-ellipsis">
PoC: ActiveMQ 5.x Monitoring with Telegraf Collector, Prometheus and Grafana Dashboard 10702
</span>
</a>
<nav class="md-nav" aria-label="PoC: ActiveMQ 5.x Monitoring with Telegraf Collector, Prometheus and Grafana Dashboard 10702">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#deployment-and-configuration" class="md-nav__link">
<span class="md-ellipsis">
Deployment and Configuration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#poc-activemq-artemis-monitoring-with-prometheus-metrics-plugin-micrometer-collector-and-prometheus-grafana-dashboard-not-available" class="md-nav__link">
<span class="md-ellipsis">
PoC: ActiveMQ Artemis Monitoring with Prometheus Metrics Plugin (Micrometer Collector) and Prometheus. Grafana Dashboard not available
</span>
</a>
<nav class="md-nav" aria-label="PoC: ActiveMQ Artemis Monitoring with Prometheus Metrics Plugin (Micrometer Collector) and Prometheus. Grafana Dashboard not available">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#deployment-and-configuration_1" class="md-nav__link">
<span class="md-ellipsis">
Deployment and Configuration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#validation-of-artemis-broker-monitoring-with-jmeter" class="md-nav__link">
<span class="md-ellipsis">
Validation of Artemis Broker Monitoring with JMeter
</span>
</a>
<nav class="md-nav" aria-label="Validation of Artemis Broker Monitoring with JMeter">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#jmeter-example-test-plans" class="md-nav__link">
<span class="md-ellipsis">
JMeter Example Test Plans
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#prometheus-and-azure" class="md-nav__link">
<span class="md-ellipsis">
Prometheus and Azure
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#managed-prometheus-in-aws" class="md-nav__link">
<span class="md-ellipsis">
Managed Prometheus in AWS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#managed-prometheus-in-gcp" class="md-nav__link">
<span class="md-ellipsis">
Managed Prometheus in GCP
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#videos" class="md-nav__link">
<span class="md-ellipsis">
Videos
</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="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="prometheus">Prometheus</h1>
<ol>
<li><a href="#introduction">Introduction</a></li>
<li><a href="#alertmanager">AlertManager</a></li>
<li><a href="#prometheus-agent">Prometheus Agent</a></li>
<li><a href="#promgen">Promgen</a></li>
<li><a href="#promcat-resource-catalog">Promcat Resource Catalog</a></li>
<li><a href="#prometheus-demo">Prometheus Demo</a></li>
<li><a href="#prometheus-storage">Prometheus Storage</a></li>
<li><a href="#prometheus-slo-service-level-objectives">Prometheus SLO Service Level Objectives</a><ol>
<li><a href="#scalability-high-availability-ha-and-long-term-storage">Scalability, High Availability (HA) and Long-Term Storage</a></li>
<li><a href="#storage-solutions-for-prometheus">Storage Solutions for Prometheus</a><ol>
<li><a href="#influxdb-and-influxdb-templates">InfluxDB and InfluxDB Templates</a></li>
</ol>
</li>
</ol>
</li>
<li><a href="#collectors-software-exposing-prometheus-metrics">Collectors. Software exposing Prometheus metrics</a><ol>
<li><a href="#prometheus-exporters-plug-in-architecture-and-extensibility-with-prometheus-exporters-collectors">Prometheus Exporters. Plug-in architecture and extensibility with Prometheus Exporters (collectors)</a><ol>
<li><a href="#certificates-expiration">Certificates Expiration</a></li>
</ol>
</li>
<li><a href="#prometheus-exporters-development-node-exporter">Prometheus Exporters Development. Node Exporter</a></li>
<li><a href="#prometheus-third-party-collectorsexporters">Prometheus Third-party Collectors/Exporters</a><ol>
<li><a href="#opentelemetry-collector">OpenTelemetry Collector</a></li>
<li><a href="#telegraf-collector">Telegraf Collector</a></li>
<li><a href="#micrometer-collector">Micrometer Collector</a></li>
</ol>
</li>
</ol>
</li>
<li><a href="#prometheus-alarms-and-event-tracking">Prometheus Alarms and Event Tracking</a></li>
<li><a href="#prometheus-and-cloud-monitoring">Prometheus and Cloud Monitoring</a></li>
<li><a href="#prometheus-installers">Prometheus Installers</a><ol>
<li><a href="#binaries-source-code-or-docker">Binaries, source code or Docker</a></li>
<li><a href="#ansible-roles">Ansible Roles</a></li>
</ol>
</li>
<li><a href="#prometheus-operator">Prometheus Operator</a><ol>
<li><a href="#kube-prometheus">kube Prometheus</a><ol>
<li><a href="#prometheus-operator-with-helm3">Prometheus Operator with Helm3</a></li>
<li><a href="#kube-prometheus-stack-best-choice">Kube-prometheus-stack (best choice)</a></li>
<li><a href="#kubernetes-cluster-monitoring-stack-based-on-prometheus-operator">Kubernetes Cluster Monitoring Stack based on Prometheus Operator</a></li>
</ol>
</li>
</ol>
</li>
<li><a href="#prometheus-saas-solutions">Prometheus SaaS Solutions</a></li>
<li><a href="#proof-of-concept-activemq-monitoring-with-prometheus">Proof of Concept: ActiveMQ Monitoring with Prometheus</a><ol>
<li><a href="#poc-activemq-5x-monitoring-with-telegraf-collector-prometheus-and-grafana-dashboard-10702">PoC: ActiveMQ 5.x Monitoring with Telegraf Collector, Prometheus and Grafana Dashboard 10702</a><ol>
<li><a href="#deployment-and-configuration">Deployment and Configuration</a></li>
</ol>
</li>
<li><a href="#poc-activemq-artemis-monitoring-with-prometheus-metrics-plugin-micrometer-collector-and-prometheus-grafana-dashboard-not-available">PoC: ActiveMQ Artemis Monitoring with Prometheus Metrics Plugin (Micrometer Collector) and Prometheus. Grafana Dashboard not available</a><ol>
<li><a href="#deployment-and-configuration-1">Deployment and Configuration</a></li>
</ol>
</li>
<li><a href="#validation-of-artemis-broker-monitoring-with-jmeter">Validation of Artemis Broker Monitoring with JMeter</a><ol>
<li><a href="#jmeter-example-test-plans">JMeter Example Test Plans</a></li>
</ol>
</li>
</ol>
</li>
<li><a href="#prometheus-and-azure">Prometheus and Azure</a></li>
<li><a href="#managed-prometheus-in-aws">Managed Prometheus in AWS</a></li>
<li><a href="#managed-prometheus-in-gcp">Managed Prometheus in GCP</a></li>
<li><a href="#videos">Videos</a></li>
<li><a href="#tweets">Tweets</a></li>
</ol>
<h2 id="introduction">Introduction</h2>
<ul>
<li><a href="https://prometheus.io"><strong>prometheus.io</strong></a></li>
<li><a href="https://github.com/prometheus/prometheus">github.com/prometheus/prometheus</a></li>
<li><a href="https://dzone.com/refcardz/scaling-and-augmenting-prometheus">Dzone Refcard: Scaling and Augmenting Prometheus</a> Prometheus is an open-source infrastructure and services monitoring system popular for Kubernetes and cloud-native services and apps. It can help make metric collection easier, correlate events and alerts, provide security, and do troubleshooting and tracing at scale. This Refcard will teach you how to pave the path for Prometheus adoption, what observability looks like beyond Prometheus, and how Prometheus helps provide scalability, high availability, and long-term storage.</li>
<li><a href="https://dzone.com/articles/prometheus-collectors">Monitoring Self-Destructing Apps Using Prometheus</a> Learn how to configure Prometheus collectors and their use cases.</li>
<li><a href="https://opensource.com/article/19/11/introduction-monitoring-prometheus">Monitoring kubernetes with Prometheus</a></li>
<li><a href="https://dzone.com/articles/ensure-high-availability-and-uptime-with-kubernete">Ensure High Availability and Uptime With Kubernetes Horizontal Pod Autoscaler (HPA) and Prometheus</a></li>
<li><a href="https://dzone.com/articles/monitoring-using-spring-boot-20-prometheus-and-gra">Set Up and Integrate Prometheus With Grafana for Monitoring.</a> How to set up and configure Prometheus and Grafana to enable application performance monitoring for REST applications.</li>
<li><a href="http://web.archive.org/web/20230605202857/https://dzone.com/articles/prometheus-vs-graphite-which-should-you-choose-for">Prometheus vs. Graphite: Which Should You Choose for Time Series or Monitoring? [ARCHIVED]</a></li>
<li><a href="https://medium.com/@valyala/promql-tutorial-for-beginners-9ab455142085">PromQL Tutorial</a></li>
<li><a href="https://opensource.com/article/18/3/how-use-ansible-set-system-monitoring-prometheus">How to use Ansible to set up system monitoring with Prometheus</a></li>
<li><a href="https://medium.com/@griggheo/initial-experiences-with-the-prometheus-monitoring-system-167054ac439c">Initial experiences with the Prometheus monitoring system</a></li>
<li><a href="https://prometheus.io/docs/instrumenting/writing_exporters">prometheus.io/docs/instrumenting/writing_exporters/</a></li>
<li><a href="https://devconnected.com/complete-node-exporter-mastery-with-prometheus">devconnected.com/complete-node-exporter-mastery-with-prometheus/</a></li>
<li>Prometheus es un &ldquo;time series DBMS&rdquo; y sistema de monitorización completo, que incluye recogida de datos, almacenamiento, visualización y exportación.</li>
<li>La <strong>arquitectura de Prometheus</strong> se basa en <strong>&ldquo;pull metrics&rdquo; (extracción de métricas)</strong>. En lugar de empujar las métricas (&ldquo;pushing metrics&rdquo;) hacia la herramienta de monitorización, <strong>extrae (&ldquo;pull&rdquo;) las métricas de los servicios (por defecto un &ldquo;/metrics&rdquo; HTTP endpoint)</strong> en texto plano (parseable por humanos y de fácil diagnóstico). Prometheus también tiene un &ldquo;push gateway&rdquo;, de modo que también soporta &ldquo;push&rdquo; para métricas específicas cuando el modelo de &ldquo;pull&rdquo; no funciona (si bien este método no es recomendable).</li>
<li>Prometheus se puede conectar a <strong>series de tiempo (time series)</strong> con un nombre de métrica y pares clave-valor, simplificando la monitorización en complejos entornos cloud multi-nodo.</li>
<li>La herramienta también proporciona <a href="https://prometheus.io/docs/prometheus/latest/querying/basics">PromQL</a>, para el procesado de datos &ldquo;time-series&rdquo;. Permite realizar consultas (queries) para la manipulación de datos y generar nueva información relevante. Con <a href="https://prometheus.io/docs/prometheus/latest/querying/basics">PromQL</a> se pueden generar gráficos, visualizar conjuntos de datos, crear tablas, y generar alertas basadas en parámetros específicos.</li>
<li>La consola web de Prometheus permite gestionar todas las características y herramientas disponibles en Prometheus. Se pueden utilizar expresiones regulares y consultas avanzadas de <a href="https://prometheus.io/docs/prometheus/latest/querying/basics">PromQL</a> para la creación de conjuntos de datos (datasets) y alertas.</li>
<li>Prometheus activamente &ldquo;scrapea&rdquo; datos, los almacena, y soporta &ldquo;queries&rdquo;, &ldquo;gráficos&rdquo; y &ldquo;alertas&rdquo;, así como proporciona &ldquo;endpoints&rdquo; a otros consumidores API como Grafana. Todo esto lo realiza con los siguientes componentes:<ul>
<li><a href="https://prometheus.io/docs/instrumenting/clientlibs">Librerías cliente</a>: instrumentación del código de aplicación (para generar eventos).</li>
<li><a href="https://github.com/prometheus/prometheus">Servidor Prometheus</a>: &ldquo;scrapeando&rdquo; y almacenando estos eventos, cuando se generan, como &ldquo;time series data&rdquo;. Este es el <strong>modelo &ldquo;pull&rdquo;</strong> más común para la recogida general de métricas en Prometheus.</li>
<li><a href="https://github.com/prometheus/pushgateway">Pushgateway</a>: <strong>Modelo &ldquo;Push&rdquo;</strong>, soportando trabajos efímeros de importación de datos. <strong>Sólo recomendable en aplicaciones &ldquo;serverless&rdquo;</strong>, donde las aplicaciones son lanzadas y destruidas bajo demanda, así como las aplicaciones que manejan &ldquo;batch jobs&rdquo;.</li>
<li><a href="https://prometheus.io/docs/instrumenting/exporters">Exportadores de Datos</a>: exportando servicios como HAProxy, StatsD, Graphite, etc.</li>
</ul>
</li>
<li>Prometheus se diferencia de otros sistemas de monitorización con las siguientes funcionalidades:<ul>
<li>Modelo de datos multi-dimensional, donde los &ldquo;time-series data&rdquo; se definen por el nombre de la métrica y dimensiones clave/valor.</li>
<li>Nodos únicos de servidor y autónomos, sin dependencia de almacenamiento distribuido.</li>
<li>Recogida de datos via un modelo &ldquo;pull&rdquo; sobre HTTP.</li>
<li>&ldquo;Time Series Data&rdquo; empujado (&ldquo;pushed&rdquo;) a otros destinos de datos vía un gateway intermediario.</li>
<li>&ldquo;Targets&rdquo; descubiertos via &ldquo;service discovery&rdquo; ó configuración estática.</li>
<li>Soporte de federación horizontal y vertical.</li>
</ul>
</li>
<li><a href="https://www.magalix.com/blog/monitor-kuberentes-cluster-to-manage-large-scale-projects">magalix.com: Monitoring of Kubernetes Clusters To Manage Large Scale Projects</a></li>
<li><a href="https://samirbehara.com/2019/05/30/cloud-native-monitoring-with-prometheus">Cloud Native Monitoring with Prometheus 🌟</a></li>
<li><a href="https://itnext.io/prometheus-yet-another-cloudwatch-exporter-collecting-aws-cloudwatch-metrics-806bd34818a8">itnext.io - Prometheus: yet-another-cloudwatch-exporter — collecting AWS CloudWatch metrics</a></li>
<li><a href="https://containerjournal-com.cdn.ampproject.org/c/s/containerjournal.com/topics/container-ecosystems/prometheus-monitoring-ecosystem-begins-to-mature/amp">Prometheus Monitoring Ecosystem Begins to Mature</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://ganeshvernekar.com/blog/prometheus-tsdb-the-head-block">ganeshvernekar.com: Prometheus TSDB (Part 1): The Head Block</a></li>
<li><a href="https://ganeshvernekar.com/blog/prometheus-tsdb-wal-and-checkpoint">ganeshvernekar.com: Prometheus TSDB (Part 2): WAL and Checkpoint</a></li>
<li><a href="https://ganeshvernekar.com/blog/prometheus-tsdb-mmapping-head-chunks-from-disk">ganeshvernekar.com: Prometheus TSDB (Part 3): Memory Mapping of Head Chunks from Disk</a></li>
<li><a href="https://ganeshvernekar.com/blog/prometheus-tsdb-persistent-block-and-its-index">ganeshvernekar.com: Prometheus TSDB (Part 4): Persistent Block and its Index</a></li>
<li><a href="https://www.youtube.com/playlist?list=PLVx1qovxj-anCTn6um3BDsoHnIr0O2tz3">youtube playlist: How to setup Prometheus 🌟</a></li>
<li><a href="https://learndevops.substack.com/p/hitting-prometheus-api-with-curl">learndevops.substack.com: Hitting prometheus API with curl and jq 🌟</a> <strong>Determine offending pods that use more RAM than requested, causing OOM.</strong></li>
<li><a href="https://www.devclass.com/containers/2021/01/07/safetyfirst-prometheus-224-finally-features-tls-on-http-serving-endpoints/1626636">devclass.com: Safety…first? Prometheus 2.24 finally features TLS on HTTP serving endpoints</a></li>
<li><a href="https://sysadminxpert.com/steps-to-monitor-linux-server-using-prometheus">sysadminxpert.com: Steps to Monitor Linux Server using Prometheus</a></li>
<li><a href="https://medium.com/@akshitverma8191/prometheus-grafana-node-monitoring-on-kubernetes-79fd8311b56d">medium.com: Prometheus-Grafana : Node Monitoring on Kubernetes</a></li>
<li><a href="https://zerodha.tech/blog/infra-monitoring-at-zerodha">zerodha.tech: Infrastructure monitoring with Prometheus at Zerodha</a></li>
<li><a href="https://devopscube.com/setup-prometheus-monitoring-on-kubernetes">devopscube.com: How to Setup Prometheus Monitoring On Kubernetes Cluster 🌟</a></li>
<li><a href="https://prometheus-operator.dev">prometheus-operator.dev 🌟</a></li>
<li><a href="https://gabrieltanner.org/blog/collecting-prometheus-metrics-in-golang">gabrieltanner.org: Golang Application monitoring using Prometheus</a></li>
<li><a href="https://promlens.com">promlens.com 🌟</a> The power tool for querying Prometheus. Build, understand, and fix your queries much more effectively with the ultimate query builder for PromQL</li>
<li><a href="https://medium.com/avmconsulting-blog/prometheus-monitoring-with-elastic-stack-in-kubernetes-5cf0aaa7ce04">medium: Prometheus monitoring with Elastic Stack in Kubernetes 🌟</a> Monitoring is one of the key components for managing large clusters. For this, we have several tools.</li>
<li><a href="https://grafana.com/blog/2021/04/08/how-we-use-metamonitoring-prometheus-servers-to-monitor-all-other-prometheus-servers-at-grafana-labs">grafana.com: How we use metamonitoring Prometheus servers to monitor all other Prometheus servers at Grafana Labs</a> If you rely on Prometheus for your monitoring, and your monitoring fails, how will you know? Learn how to set up Prometheus servers to monitor all other Prometheus servers</li>
<li><a href="https://portworx.com/kubernetes-backup-monitoring">portworx.com: Monitoring Kubernetes Backup with Prometheus and Grafana</a></li>
<li><a href="https://www.sysdig.com/blog/postgresql-monitoring">sysdig.com: Top 10 metrics in PostgreSQL monitoring with Prometheus 🌟</a></li>
<li><a href="https://itnext.io/observability-at-scale-52d0d9a5fb9b">itnext.io: Observability at Scale</a></li>
<li><a href="https://jonbc.medium.com/hacking-your-way-to-observability-part-1-cf4cd42fb4dc">jonbc.medium.com: Hacking your way to Observability — Part 1 : Metrics</a> Starting your journey in observability by gathering metrics with Prometheus</li>
<li><a href="https://www.innoq.com/en/blog/2020/04/scraping-docker-swarm-service-instances-with-prometheus">innoq.com: Scraping a Docker swarm service with Prometheus</a></li>
<li><a href="https://opensource.com/article/21/7/run-prometheus-home-container">opensource.com: Run Prometheus at home in a container</a></li>
<li><a href="https://faun.pub/production-grade-kubernetes-monitoring-using-prometheus-78144b835b60">faun.pub: Production grade Kubernetes Monitoring using Prometheus 🌟</a></li>
<li><a href="https://www.howtoforge.com/how-to-install-prometheus-on-ubuntu-20-04">howtoforge.com: How to Install Prometheus System Monitoring Tool on Ubuntu 20.04</a></li>
<li><a href="https://cribl.io/blog/using-prometheus-for-agentless-monitoring">cribl.io: Using Prometheus for Agentless Monitoring</a></li>
<li><a href="https://logz.io/blog/aws-lambda-metrics-monitoring-guide">logz.io: Guide to Monitoring AWS Lambda Metrics with Prometheus &amp; Logz.io 🌟</a></li>
<li><a href="https://aprenderbigdata.com/prometheus">aprenderbigdata.com: Prometheus: Introducción a la Monitorización de Métricas</a></li>
<li><a href="https://tech.marksblogg.com/clickhouse-prometheus-grafana.html">tech.marksblogg.com: Monitor ClickHouse column oriented database with Prometheus &amp; Grafana</a></li>
<li><a href="https://www.youtube.com/watch?v=GL2v81xYuAQ&amp;ab_channel=k6">youtube: Monitoring your k6 load test: how to install Grafana and Prometheus on a Kubernetes cluster</a></li>
<li><a href="https://blog.couchbase.com/how-to-build-observability-dashboards-prometheus-grafana-couchbase">blog.couchbase.com: How to Build Observability Dashboards with Prometheus, Grafana &amp; Couchbase</a></li>
<li><a href="https://www.sysdig.com/blog/redis-prometheus">sysdig.com: How to monitor Redis with Prometheus</a></li>
<li><a href="https://jfrog.com/blog/dont-let-prometheus-steal-your-fire">jfrog.com: Dont let Prometheus Steal your Fire</a> <strong>Real world secrets exposed by unsafe defaults</strong></li>
<li><a href="https://itnext.io/monitoring-spark-streaming-on-k8s-with-prometheus-and-grafana-e6d8720c4a02">itnext.io: Monitoring Spark Streaming on K8s with Prometheus and Grafana</a></li>
<li><a href="https://source.coveo.com/2021/11/11/prometheus-at-scale">source.coveo.com: Prometheus at scale</a> Check out how Coveo uses Thanos and Prometheus.</li>
<li><a href="https://medium.com/infracloud-technologies/prometheus-ha-with-thanos-sidecar-or-receiver-2c8d0e585ff1">medium.com: Prometheus HA with Thanos Sidecar Or Receiver?</a> In this blog post, you will go through the two different approaches for integrating
Thanos Metrics with prometheus in Kubernetes environments.</li>
<li><a href="https://prometheus.io/docs/introduction/comparison"><mark>prometheus.io: Comparison to Alternatives</mark> 🌟</a></li>
<li><a href="https://www.cloudsavvyit.com/15124/what-is-prometheus-and-why-is-it-so-popular"><mark>cloudsavvyit.com: What is Prometheus and Why Is It So Popular</mark></a></li>
<li><a href="https://www.infracloud.io/blogs/prometheus-architecture-metrics-use-cases"><mark>infracloud.io: Prometheus Definitive Guide Part I - Metrics and Use Cases</mark></a><ul>
<li><a href="https://www.infracloud.io/blogs/promql-prometheus-guide"><mark>infracloud.io: Prometheus Query Language - Prometheus Definitive Guide Part II</mark></a></li>
<li><a href="https://www.infracloud.io/blogs/prometheus-operator-helm-guide"><mark>infracloud.io: Prometheus Definitive Guide Part III - Prometheus Operator</mark></a></li>
</ul>
</li>
<li><a href="https://jonbc.medium.com/hacking-your-way-to-observability-part-1-cf4cd42fb4dc">jonbc.medium.com: Hacking your way to Observability — Part 1 : Metrics</a> Starting your journey in observability by gathering metrics with Prometheus<ul>
<li><a href="https://jonbc.medium.com/hacking-your-way-to-observability-part-2-c38baaee6b92">jonbc.medium.com: Hacking your way to Observability — Part 2 : Alerts</a> Taking advantage of metrics by sending notifications via Slack</li>
</ul>
</li>
<li><a href="https://medium.com/gumgum-tech/how-to-reduce-your-prometheus-cost-6c7cc685e347"><mark>medium.com/gumgum-tech: How to reduce your Prometheus cost | Daniel Fernandez</mark></a> Prometheus is an excellent service to monitor your containerized applications. Still, it can get expensive quickly if you ingest all of the Kube-state-metrics metrics, and you are probably not even using them all. This is especially true when using a service like Amazon Managed Service for Prometheus (AMP) because you get billed by metrics ingested and stored.</li>
<li><a href="https://medium.com/kubecost/prometheus-grafana-configuration-query-examples-885b91b6ca6">medium.com/kubecost: Prometheus Grafana: configuration &amp; query examples 🌟</a></li>
<li><a href="https://www.sysdig.com/blog">sysdig.com: Prometheus 2.37 The first long-term supported release! 🌟</a></li>
<li><a href="https://dev.to/eckelon/how-to-monitor-nginx-in-kubernetes-with-prometheus-j5f">dev.to: How to monitor nginx in Kubernetes with Prometheus</a> In this article, you&rsquo;ll learn how to monitor nginx in Kubernetes with Prometheus and troubleshoot issues related to latency, saturation, etc</li>
<li><a href="https://promlabs.com/blog/2022/12/11/avoid-these-6-mistakes-when-getting-started-with-prometheus">promlabs.com: Avoid These 6 Mistakes When Getting Started With Prometheus</a></li>
<li><a href="https://itnext.io/hardening-monitoring-a-step-by-step-guide-7a18007c915">itnext.io: Hardening Monitoring: a step-by-step guide</a> In this article, I walk through how to serve metrics-server, prometheus-server and prometheus-adapter securely.</li>
<li><a href="https://blog.devops.dev/deploying-prometheus-and-grafana-in-a-multi-node-kubernetes-cluster-and-auto-scaling-with-keda-eccecfbd8950">blog.devops.dev: Deploying Prometheus and Grafana in a Multi-Node Kubernetes Cluster and Auto-Scaling with KEDA</a></li>
<li><a href="https://blog.devops.dev/observability-better-ci-for-your-prometheus-alerts-32aaea3b3d77">blog.devops.dev: Observability: Better CI for your prometheus alerts with pint instead of promtool 🌟</a></li>
<li><a href="https://blog.zelarsoft.com/website-monitoring-by-using-prometheus-blackbox-exporter-with-grafana-c4004bb03131">blog.zelarsoft.com: Website Monitoring By Using Prometheus Blackbox Exporter with Grafana</a></li>
<li><a href="https://blog.devops.dev/monitoring-a-spring-boot-application-in-kubernetes-with-prometheus-a2d4ec7f9922"><mark>blog.devops.dev: Monitoring a Spring Boot application in Kubernetes with Prometheus</mark> 🌟</a></li>
<li><a href="https://devopstalks.in/everything-about-prometheus">devopstalks.in: Everything about Prometheus</a></li>
<li><a href="https://blog.devops.dev/deploying-and-monitoring-an-application-using-prometheus-on-kubernetes-cluster-483773f789f"><mark>blog.devops.dev: How to Monitor your Application using Prometheus</mark> 🌟</a> In this Blog, we will be able to deploy our application in an EKS cluster and monitor it with Prometheus</li>
<li><a href="https://dzone.com/articles/deploying-prometheus-and-grafana-as-applications-u"><mark>dzone.com: Deploying Prometheus and Grafana as Applications Using ArgoCDIncluding Dashboards</mark></a> Goodbye to the headaches of manual infrastructure management, and hello to a more efficient and scalable approach with ArgoCD.</li>
<li><a href="https://medium.com/@dotdc/how-to-find-unused-prometheus-metrics-using-mimirtool-a44560173543">medium.com: How to find unused Prometheus metrics using mimirtool 🌟</a></li>
<li><a href="https://rtfm.co.ua/en/prometheus-kubernetes-endpoints-monitoring-with-blackbox-exporter">rtfm.co.ua: Prometheus: Kubernetes endpoints monitoring with blackbox-exporter</a> In this tutorial, you will learn how to deploy the blackbox-exporter and configure monitoring of endpoints with the Kubernetes ServiceMonitors. And finally, you will discuss Blackbox probes which are used to poll endpoints.</li>
<li><a href="https://medium.com/criteo-engineering/how-we-reduced-our-prometheus-infrastructure-footprint-by-a-third-8bf8171e46b1">medium.com/criteo-engineering: How we reduced our Prometheus infrastructure footprint by a third</a></li>
<li><a href="https://blog.devops.dev/observability-concept-in-prometheus-9f0093fa7495">blog.devops.dev: Observability Concept in Prometheus</a> In This blog, we will talk more about other components of Prometheus that are useful in understanding and in the field of DevOps and SRE. These terms are common in Prometheus also the topics are discussed in PCA certification</li>
<li><a href="https://horovits.medium.com/prometheus-now-supports-opentelemetry-metrics-83f85878e46a"><mark>horovits.medium.com: Prometheus Now Supports OpenTelemetry Metrics</mark></a></li>
<li><a href="https://thenewstack.io/30-pull-requests-later-prometheus-memory-use-is-cut-in-half"><mark>thenewstack.io: 30 Pull Requests Later, Prometheus Memory Use Is Cut in Half</mark></a> Grafana Labs Distinguished Engineer Bryan Boreham detailed at KubeCon how he reduced the memory usage of Prometheus.</li>
<li><a href="https://devxblog.hashnode.dev/prometheus-elevate-your-monitoring-game">devxblog.hashnode.dev: Prometheus: Elevate Your Monitoring Game</a></li>
<li><a href="https://devxblog.hashnode.dev/simplified-setup-prometheus-cadvisor-redis-and-node-exporter">devxblog.hashnode.dev: Simplified Setup: Prometheus, cAdvisor, redis and Node Exporter</a></li>
<li><a href="https://grafana.com/blog/2021/01/08/get-started-with-prometheus-with-these-three-easy-projects"><mark>grafana.com: Get started with Prometheus with these three easy projects</mark></a></li>
<li><a href="https://www.fosstechnix.com/install-prometheus-and-grafana-on-ubuntu-24-04">fosstechnix.com: Install Prometheus and Grafana on Ubuntu 24.04 LTS 🌟</a></li>
</ul>
<center>
<p><a href="https://github.com/prometheus/prometheus"><img alt="prometheus architecture" src="images/prometheus-architecture.png" /></a></p>
</center>
<h2 id="alertmanager">AlertManager</h2>
<ul>
<li><a href="https://medium.com/better-programming/kubernetes-lessons-in-alerting-a0b7a455e89d">medium: Kubernetes Lessons in Alerting</a> Live issues are a great opportunity to learn and improve. Heres what happened to us</li>
<li><a href="https://github.com/prymitive/karma">karma 🌟</a> Alert dashboard for Prometheus Alertmanager</li>
<li><a href="https://github.com/prometheus/alertmanager/releases/tag/v0.23.0-rc.0">Alertmanager 0.23.0-rc.0 with awscloud SNS support is available for testing. There are also bugfixes and features for amtool</a></li>
<li><a href="https://tech.loveholidays.com/dynamic-alert-routing-with-prometheus-and-alertmanager-f6a919edb5f8">tech.loveholidays.com: Dynamic alert routing with Prometheus and Alertmanager</a> TL;DR Dynamically route alerts to relevant Slack team channels by labelling Kubernetes resources with team and extracting team label within alert rules.</li>
</ul>
<h2 id="prometheus-agent">Prometheus Agent</h2>
<ul>
<li><a href="https://prometheus.io/blog/2021/11/16/agent">prometheus.io: Introducing Prometheus Agent Mode, an Efficient and Cloud-Native Way for Metric Forwarding</a></li>
<li><a href="https://www.cncf.io/blog/2021/11/16/prometheus-announces-an-agent-to-address-a-new-range-of-use-cases">cncf.io: Prometheus announces an Agent to address a new range of use cases</a></li>
<li><a href="https://grafana.com/blog/2021/11/16/why-we-created-a-prometheus-agent-mode-from-the-grafana-agent">grafana.com: Why we created a Prometheus Agent mode from the Grafana Agent</a></li>
<li><a href="https://thenewstack.io/cncf-prometheus-agent-could-be-a-game-changer-for-edge">thenewstack.io: CNCF Prometheus Agent Could Be a Game Changer for Edge</a></li>
<li><a href="https://medium.com/@ehsan-khodadadi/prometheus-multi-cluster-monitoring-using-prometheus-agent-mode-cab2cdb20c11">medium.com/@ehsan-khodadadi: Prometheus Multi-Cluster monitoring using Prometheus Agent Mode</a></li>
<li><a href="https://medium.com/techspiration/deploying-prometheus-multi-cluster-monitoring-using-prometheus-agent-mode-a04d89afeed7">medium.com/techspiration: Deploying Prometheus Multi-Cluster monitoring using Prometheus Agent Mode</a></li>
</ul>
<h2 id="promgen">Promgen</h2>
<ul>
<li><a href="https://github.com/line/promgen">Promgen 🌟</a> Promgen is a configuration file generator for Prometheus</li>
</ul>
<h2 id="promcat-resource-catalog">Promcat Resource Catalog</h2>
<ul>
<li><a href="https://promcat.io">Promcat: A resource catalog for enterprise-class Prometheus monitoring 🌟</a></li>
</ul>
<h2 id="prometheus-demo">Prometheus Demo</h2>
<ul>
<li><a href="https://prometheus.demo.do.prometheus.io">Prometheus Demo: prometheus.demo.do.prometheus.io 🌟</a></li>
</ul>
<h2 id="prometheus-storage">Prometheus Storage</h2>
<ul>
<li>Proporciona etiquetado clave-valor y &ldquo;time-series&rdquo;. La propia documentación de Prometheus explica cómo se gestiona el <a href="https://prometheus.io/docs/prometheus/latest/storage">almacenamiento en disco</a> (<strong>Prometheus Time-Series DB</strong>). La ingestión de datos se agrupa en bloques de dos horas, donde cada bloque es un directorio conteniendo uno o más &ldquo;chunk files&rdquo; (los datos), además de un fichero de metadatos y un fichero index:</li>
<li>Almacenamiento de datos en disco (Prometheus Time-Series DB):</li>
</ul>
<div class="highlight"><pre><span></span><code>./data/01BKGV7JBM69T2G1BGBGM6KB12
./data/01BKGV7JBM69T2G1BGBGM6KB12/meta.json
./data/01BKGV7JBM69T2G1BGBGM6KB12/wal
./data/01BKGV7JBM69T2G1BGBGM6KB12/wal/000002
./data/01BKGV7JBM69T2G1BGBGM6KB12/wal/000001
</code></pre></div>
<ul>
<li>Un proceso en segundo plano compacta los bloques de dos horas en otros más grandes.</li>
<li>Es posible almacenar los datos en otras soluciones de &ldquo;Time-Series Database&rdquo; como <strong>InfluxDB</strong>.</li>
</ul>
<h2 id="prometheus-slo-service-level-objectives">Prometheus SLO Service Level Objectives</h2>
<ul>
<li><a href="https://github.com/slok/sloth">Sloth 🌟</a> Easy and simple Prometheus SLO (service level objectives) generator<ul>
<li><a href="https://itnext.io/slos-should-be-easy-say-hi-to-sloth-9c8a225df0d4">itnext.io: SLOs should be easy, say hi to Sloth 🌟</a></li>
</ul>
</li>
<li><a href="https://promtools.dev">PromTools: SLOs with Prometheus 🌟</a> Multiple Burn Rate Alerts. This page will generate, with the data you provide in the form, the necessary Prometheus alerting and recording rules for Multiple Burn Rate which you might know from The Site Reliability Workbook. These rules will evaluate based on the available metrics in the last 30 days.<ul>
<li><a href="https://github.com/metalmatze/slo-libsonnet">slo-libsonnet</a> Generate Prometheus alerting &amp; recording rules and Grafana dashboards for your SLOs.</li>
</ul>
</li>
<li><a href="https://github.com/google/prometheus-slo-burn-example">opensource.google: Prometheus SLO example</a> An end to end example of implementing SLOs with Prometheus, Grafana and Go</li>
<li><a href="https://github.com/google/slo-generator">SLO Generator</a> SLO Generator is a tool to compute SLIs, SLOs, Error Budgets and Burn rate and export an SLO report to supported exporters.</li>
</ul>
<h3 id="scalability-high-availability-ha-and-long-term-storage">Scalability, High Availability (HA) and Long-Term Storage</h3>
<ul>
<li>Prometheus fue diseñado para ser fácil de desplegar. Es extremadamente fácil ponerlo en marcha, recoger algunas métricas, y empezar a construir nuestra propia herramienta de monitorización. Las cosas se complican cuando se intenta operar a un nivel de escalado considerable.</li>
<li>Para entender si esto va a ser un problema, conviene plantearse las siguiente preguntas:<ul>
<li>¿Cuántas métricas puede ingerir el sistema de monitorización y cuántas son necesarias?</li>
<li>¿Cuál es la cardinalidad de las métricas? La cardinalidad es el número de etiquetas que cada métrica puede tener. Es una cuestión muy frecuente en las métricas pertenecientes a entornos dinámicos donde a los contenedores se les asignan un ID ó nombre diferente cada vez que son lanzados, reiniciados o movidos entre nodos (caso de kubernetes).</li>
<li>¿Es necesaria la Alta Disponibilidad (HA)?</li>
<li>¿Durante cuánto tiempo es necesario mantener las métricas y con qué resolución?</li>
</ul>
</li>
<li>La implementación de HA es laboriosa porque la funcionalidad de cluster requiere añadir plugins de terceros al servidor Prometheus. Es necesario tratar con &ldquo;backups&rdquo; y &ldquo;restores&rdquo;, y el almacenamiento de métricas por un periodo de tiempo extendido hará que la base de datos crezca exponencialmente. Los servidores Prometheus proporcionan almacenamiento persistente, pero Prometheus no fue creado para el almacenamiento distribuido de métricas a lo largo de múltiples nodos de un cluster con replicación y capacidad curativa (como es el caso de Kubernetes). Esto es conocido como <strong>&ldquo;almacenamiento a largo-plazo&rdquo; (Long-Term)</strong> y actualmente es un requisito en unos pocos casos de uso, por ejemplo en la planificación de la capacidad para monitorizar cómo la infraestructura necesita evolucionar, contracargos para facturar diferentes equipos ó departamentos para un caso específico que han hecho de la infraestructura, análisis de tendencias de uso, o adherirse a regulaciones para verticales específicos como banca, seguros, etc.</li>
</ul>
<h3 id="storage-solutions-for-prometheus">Storage Solutions for Prometheus</h3>
<ul>
<li><a href="https://monitoring2.substack.com/p/big-prometheus">monitoring2.substack.com: Big Prometheus. Thanos, Cortex, M3DB and VictoriaMetrics at scale 🌟</a></li>
<li><a href="https://prometheus.io/docs/prometheus/latest/storage"><strong>Prometheus TSDB</strong></a></li>
<li><a href="https://cortexmetrics.io"><strong>Cortex</strong>:</a> Provides horizontally scalable, highly available, multi-tenant, long term storage for Prometheus. Cortex allows for storing time series data in a key-value store like Cassandra, AWS DynamoDB, or Google BigTable. It offers a Prometheus compatible query API, and you can push metrics into a write endpoint. This makes it best suited for cloud environments and multi-tenant scenarios like service providers building hosted and managed platforms.<ul>
<li><a href="https://github.com/cortexproject/cortex">github.com/cortexproject/cortex</a></li>
<li><a href="https://ambking1234.biz/?action=register&amp;marketingRef=6788b227da9499f55f6ea745">Weave Cortex SaaS (Hosted Prometheus - Public Cloud)</a></li>
</ul>
</li>
<li><a href="https://thanos.io"><strong>Thanos</strong>:</a> Open source, <strong>highly available Prometheus setup with long term storage capabilities</strong>.<ul>
<li>Thanos stores time series data in an object store like AWS S3, Google Cloud Storage, etc. Thanos pushes metrics through a side-car container from each Prometheus server through the gRPC store API to the query service in order to provide a global query view.</li>
<li><a href="https://github.com/ruanbekker/thanos-cluster-setup">github.com/ruanbekker: Thanos Cluster Setup</a> How to deploy a HA Prometheus setup with Unlimited Data Retention Capabilities on aws cloud S3 with Thanos Metrics.</li>
<li><a href="https://blog.yugabyte.com/highly-available-prometheus-metrics-for-distributed-sql-with-thanos-on-gke">Highly Available Prometheus Metrics for Distributed SQL with Thanos on GKE</a></li>
<li><a href="https://www.infracloud.io/blogs/multi-tenancy-monitoring-thanos-receiver">infracloud.io: Achieving multi-tenancy in monitoring with Prometheus &amp; the mighty Thanos Receiver</a></li>
<li><a href="https://particule.io/en/blog/thanos-monitoring">particule.io: Multi-Cluster Monitoring with Thanos</a></li>
<li><a href="https://github.com/thanos-io/thanos#architecture-overview">Thanos Architecture Overview 🌟</a></li>
<li><a href="https://www.enmilocalfunciona.io/aprende-a-configurar-thanos-usando-docker-compose">enmilocalfunciona.io: Aprende a configurar Thanos usando docker-compose</a></li>
<li><a href="https://github.com/goatlas-io/atlas">goatlas-io/atlas</a> Atlas provides the ability to easily run a secure distributed Thanos deployment.</li>
<li><a href="https://github.com/thanos-io/kube-thanos"><mark>thanos-io/kube-thanos: Kubernetes specific configuration for deploying Thanos</mark></a></li>
<li><a href="https://medium.com/nerd-for-tech/deep-dive-into-thanos-part-i-f72ecba39f76">medium.com/nerd-for-tech: Deep Dive into Thanos-Part I | Pavan Kumar</a> Monitoring Kubernetes Workloads with Thanos and Prometheus Operator.</li>
<li><a href="https://particule.io/en/blog/thanos-monitoring">particule.io: Multi-Cluster Monitoring with Thanos 🌟</a> In this article, you&rsquo;ll learn the limitations of a Prometheus-only monitoring stack and why moving to a Thanos-based stack can improve metrics retention and reduce overall costs for your clusters</li>
</ul>
</li>
<li><a href="https://m3db.io"><strong>M3</strong>:</a> An open source, large-scale metrics platform developed by Uber. It has its own time series database, M3DB. Like Thanos, M3 also uses a side-car container to push the metrics to the DB. In addition, it supports metric deduplication and merging, and provides distributed query support.
Although it&rsquo;s exciting to see attempts to address the challenges of running Prometheus at scale, these are very young projects that are not widely used yet.</li>
<li><a href="https://victoriametrics.com">VictoriaMetrics</a></li>
</ul>
<h4 id="influxdb-and-influxdb-templates">InfluxDB and InfluxDB Templates</h4>
<ul>
<li><a href="https://www.influxdata.com"><strong>InfluxDB</strong>:</a> An <a href="https://en.wikipedia.org/wiki/Time_series_database">open-source time series database (TSDB)</a> developed by InfluxData. It is written in <a href="https://en.wikipedia.org/wiki/Go_(programming_language)">Go</a> and optimized for fast, high-availability storage and retrieval of <a href="https://en.wikipedia.org/wiki/Time_series">time series</a> data in fields such as operations monitoring, application metrics, <a href="https://en.wikipedia.org/wiki/Internet_of_Things">Internet of Things</a> sensor data, and real-time analytics. It also has support for processing data from <a href="https://en.wikipedia.org/wiki/Graphite_(software)">Graphite</a>.</li>
<li><a href="https://en.wikipedia.org/wiki/MIT_License">en.wikipedia.org/wiki/InfluxDB</a></li>
<li><a href="https://www.influxdata.com/blog/building-a-metrics-alerts-as-a-service-maas-monitoring-solution-using-the-influxdb-stack">influxdata.com: Building a Metrics &amp; Alerts as a Service (MaaS) Monitoring Solution Using the InfluxDB Stack</a></li>
<li><a href="https://en.wikipedia.org/wiki/MIT_License">en.wikipedia.org/wiki/MIT_License</a></li>
<li><a href="https://dzone.com/articles/flux-windowing-and-aggregation">dzone: Flux queries</a> New language being developed at InfluxData.</li>
<li><a href="https://www.influxdata.com">influxdb-templates</a> Build and share InfluxDB templates for monitoring solutions that deliver faster time to awesome.<ul>
<li><a href="https://thenewstack.io/make-a-gitops-workflow-using-influxdb-templates">thenewstack.io: Make a GitOps Workflow Using InfluxDB Templates</a></li>
</ul>
</li>
<li><a href="https://www.influxdata.com/blog/running-influxdb-2-0-and-telegraf-using-docker">influxdata.com: Running InfluxDB 2.0 and Telegraf Using Docker</a></li>
<li><a href="https://www.influxdata.com/blog/tldr-influxdb-tech-tips-api-invokable-scripts-influxdb-cloud">influxdata.com: InfluxDB Tech Tips: API Invokable Scripts in InfluxDB Cloud</a></li>
</ul>
<h2 id="collectors-software-exposing-prometheus-metrics">Collectors. Software exposing Prometheus metrics</h2>
<ul>
<li><a href="http://localhost:9090/targets">http://localhost:9090/targets</a> : you should see a list of targets that you Prometheus server is scraping.</li>
</ul>
<h3 id="prometheus-exporters-plug-in-architecture-and-extensibility-with-prometheus-exporters-collectors">Prometheus Exporters. Plug-in architecture and extensibility with Prometheus Exporters (collectors)</h3>
<ul>
<li>Prometheus proporciona un ecosistema de <strong>&ldquo;exporters&rdquo;</strong>, los cuales permiten que herramientas de terceros puedan exportar sus datos en Prometheus. Muchos componentes de software de código abierto son compatibles por defecto.</li>
<li><a href="https://exporterhub.io">exporterhub.io 🌟</a> Exporterhub is a curated List of Prometheus Exporters</li>
<li><strong>Un &ldquo;exporter&rdquo; expone las métricas de uno ó varios &ldquo;collectors&rdquo;.</strong></li>
<li><a href="https://prometheus.io/docs/instrumenting/exporters">Prometheus Exporters</a><ul>
<li><a href="https://prometheus.io/download">prometheus.io/download/</a></li>
<li><a href="https://github.com/prometheus">github.com/prometheus</a></li>
</ul>
</li>
<li><a href="https://github.com/prometheus/jmx_exporter">Prometheus JMX Exporter 🌟</a> A process for exposing JMX Beans via HTTP for Prometheus consumption.</li>
<li><a href="https://github.com/prometheus/blackbox_exporter">blackbox_exporter 🌟</a> The blackbox exporter allows blackbox probing of endpoints over HTTP, HTTPS, DNS, TCP and ICMP.</li>
<li><a href="https://www.openlogic.com/blog/prometheus-java-monitoring-and-gathering-data">Example: How to Use Prometheus Monitoring With Java to Gather Data. Gathering Java Metrics with Prometheus Monitoring (ActiveMQ)</a></li>
<li><a href="https://mvnrepository.com/artifact/io.prometheus">Maven Prometheus instrumentation library for JVM applications (client library)</a><ul>
<li><a href="https://github.com/prometheus/client_java">github.com/prometheus/client_java</a></li>
</ul>
</li>
<li><a href="https://www.openlogic.com/blog/prometheus-java-monitoring-and-gathering-data">Example: JMX Exporter with ActiveMQ</a></li>
<li><a href="https://github.com/deckhouse/k8s-image-availability-exporter">k8s-image-availability-exporter</a> is a Prometheus exporter that warns you proactively about images that are defined in Kubernetes objects (e.g., an image field in the Deployment) but are not available in the container registry (such as Docker Registry, etc.).</li>
<li><a href="https://engineeringblog.yelp.com/2020/10/improving-the-performance-of-the-prometheus-jmx-exporter.html">engineeringblog.yelp.com: Improving the performance of the Prometheus JMX Exporter</a></li>
<li><a href="https://www.sysdig.com/blog/monitor-oracle-database-prometheus">sysdig.com: How to monitor an Oracle database with Prometheus. The OracleDB Prometheus exporter</a></li>
<li><a href="https://github.com/prometheus-community/yet-another-cloudwatch-exporter">YACE - yet another cloudwatch exporter 🌟</a> AWS cloudwatch to prometheus exporter - Discovers services through AWS tags, gets cloudwatch data and provides them as prometheus metrics with AWS tags as labels</li>
<li><a href="https://github.com/prometheus-community/elasticsearch_exporter">prometheus-community/elasticsearch_exporter</a> Prometheus exporter for various metrics about ElasticSearch, written in Go.</li>
<li><a href="https://medium.com/@akashjoffical08/monitor-uptime-of-endpoints-in-k8s-using-blackbox-exporter-f80166a328e9">medium.com/@akashjoffical08: Monitor Uptime of Endpoints in K8s using Blackbox Exporter 🌟</a></li>
<li><a href="https://github.com/sstarcher/helm-exporter">sstarcher/helm-exporter</a> Helm-exporter exports Helm releases, charts, and version statistics in the Prometheus format</li>
<li><a href="https://blog.devops.dev/monitoring-mysql-using-prometheus-and-grafana-in-kubernetes-16e7ae3de5dd">blog.devops.dev: Monitoring MySQL using Prometheus, Grafana and mysqld_exporter in Kubernetes</a></li>
</ul>
<h4 id="certificates-expiration">Certificates Expiration</h4>
<ul>
<li><a href="https://github.com/muxinc/certificate-expiry-monitor">muxinc/certificate-expiry-monitor</a> Utility that exposes the expiry of TLS certificates as Prometheus metrics</li>
<li><a href="https://github.com/enix/x509-certificate-exporter">enix/x509-certificate-exporter</a> A Prometheus exporter to monitor x509 certificates expiration in Kubernetes clusters or standalone, written in Go. Designed to monitor Kubernetes clusters from inside, it can also be used as a standalone exporter.</li>
</ul>
<h3 id="prometheus-exporters-development-node-exporter">Prometheus Exporters Development. Node Exporter</h3>
<ul>
<li>Node exporter puede ser utilizado para exportar las métricas de nuestra aplicación ya que permite exportar un &ldquo;text-file&rdquo;. Nuestra aplicación puede escribir datos en un fichero de texto con el formato de datos de Prometheus. Este fichero de texto con datos agregados sería exportado a Prometheus con Node Exporter.</li>
<li><a href="https://dzone.com/articles/prometheus-collectors">dzone.com: Monitoring Self-Destructing Apps Using Prometheus</a> Learn how to configure Prometheus collectors and their use cases.</li>
<li><a href="https://prometheus.io/docs/instrumenting/writing_exporters">prometheus.io: Writing Exporters</a></li>
<li><a href="https://devconnected.com/complete-node-exporter-mastery-with-prometheus">devconnected.com: Complete Node Exporter Mastery with Prometheus</a></li>
<li><a href="https://aws.amazon.com/blogs/opensource/building-a-prometheus-remote-write-exporter-for-the-opentelemetry-go-sdk">aws.amazon.com: Building a Prometheus remote write exporter for the OpenTelemetry Go SDK</a></li>
<li><a href="https://medium.com/@dast04/writing-custom-prometheus-exporters-in-python-kubernetes-73626b66d78c">medium.com/@dast04: Writing Custom Prometheus Exporters (in Python) — Kubernetes</a></li>
</ul>
<h3 id="prometheus-third-party-collectorsexporters">Prometheus Third-party Collectors/Exporters</h3>
<ul>
<li>Some third-party software exposes metrics in the Prometheus format, so no separate exporters are needed.</li>
<li><a href="https://prometheus.io/docs/instrumenting/exporters">Prometheus Third Party Exporters</a></li>
</ul>
<h4 id="opentelemetry-collector">OpenTelemetry Collector</h4>
<ul>
<li><a href="https://github.com/open-telemetry/opentelemetry-collector">OpenTelemetry Collector</a></li>
<li><a href="https://thenewstack.io/lightsteps-opentelemetry-launchers-simplify-integration-to-line-of-code">thenewstack.io: Lightsteps OpenTelemetry Launchers Simplify Integration to Line of Code</a></li>
<li><a href="https://github.com/search?q=org%3Alightstep+launcher">OpenTelemetry Launchers 🌟</a></li>
<li><a href="https://thenewstack.io/demystifying-distributed-traces-in-opentelemetry">thenewstack.io: Demystifying Distributed Traces in OpenTelemetry</a></li>
<li><a href="https://medium.com/opentelemetry/opentelemetry-specification-v1-0-0-tracing-edition-72dd08936978">medium: OpenTelemetry Specification v1.0.0, Tracing Edition</a></li>
<li><a href="https://www.cncf.io/blog/2021/04/29/from-distributed-tracing-to-apm-taking-opentelemetry-and-jaeger-up-a-level/?utm_source=thenewstack&amp;utm_medium=twitter&amp;utm_campaign=platform">cncf.io: From distributed tracing to APM: Taking OpenTelemetry and Jaeger up a level</a></li>
<li><a href="https://medium.com/edreams-odigeo-tech/tracing-in-edreams-odigeo-lodging-with-open-telemetry-and-grafana-tempo-bd1f20ddf49d">medium: Tracing in eDreams ODIGEO Lodging with Open Telemetry and Grafana Tempo</a></li>
<li><a href="https://newrelic.com/blog/apm/java-opentelemetry">newrelic.com: Understand OpenTelemetry Part 4: Instrument a Java App with OpenTelemetry</a></li>
<li><a href="https://github.com/jenkinsci/opentelemetry-plugin">https://github.com/jenkinsci/opentelemetry-plugin</a> Publish Jenkins performances metrics to an OpenTelemetry endpoint, including distributed traces of job executions and health metrics of the controller.</li>
<li><a href="https://github.com/cyrille-leclerc/opentelemetry-maven-extension">https://github.com/cyrille-leclerc/opentelemetry-maven-extension</a> Maven extension to observe Maven builds as distributed traces using OpenTelemetry</li>
<li><a href="https://github.com/equinix-labs/otel-cli">https://github.com/equinix-labs/otel-cli</a> OpenTelemetry command-line tool for sending events from shell scripts &amp; similar environments</li>
<li><a href="https://github.com/ansible-collections/community.general/pull/3091">https://github.com/ansible-collections/community.general/pull/3091</a> Send distributed traces for the ansible runs with OpenTelemetry</li>
<li><a href="https://medium.com/@tathagatapaul7/opentelemetry-in-kubernetes-deploying-your-collector-and-metrics-backend-b8ec86ac4a43">medium.com/@tathagatapaul7: OpenTelemetry in Kubernetes: Deploying your Collector and Metrics Backend</a> OpenTelemetry is a great way to instrument your applications to provide metrics in a vendor-agnostic way to any observability backend. But lots of people face issues while deploying it on Kubernetes. For me, I had the knowledge of how Kubernetes works, but I had trouble deploying the collector or at times instrumenting my application. The resources on the internet are a bit scattered and it requires a lot of time to go through them. There is a lack of resources that can show you a concrete implementation of OpenTelemetry in Kubernetes from start to finish (or some of them are very cleverly hidden). So I decided to write this blog to demonstrate a very simple implementation of how to deploy a collector to collect metrics and then export the data to various backends for observability. In another blog, I will show how an application in GoLang can be instrumented to expose metrics.</li>
<li><a href="https://thenewstack.io/maximizing-kubernetes-efficiency-with-opentelemetry-tracing">thenewstack.io: Maximizing Kubernetes Efficiency with OpenTelemetry Tracing</a> OTEL tracing can collect detailed data on request execution and provide visibility into the entire system. By catching performance issues early on, it can improve the user experience and reduce the risk of application failures.</li>
</ul>
<h4 id="telegraf-collector">Telegraf Collector</h4>
<ul>
<li><a href="https://www.influxdata.com/time-series-platform/telegraf">Telegraf Collector</a></li>
<li><a href="https://github.com/influxdata/telegraf/tree/master/plugins/outputs/prometheus_client">Telegraf Prometheus Output Plugin</a></li>
<li><a href="https://github.com/rossmcdonald/telegraf">Telegraf Ansible Role</a></li>
<li><a href="https://grafana.com/grafana/dashboards/?collector=Telegraf">Grafana Dashboards with Telegraf Collectors</a></li>
<li><a href="http://web.archive.org/web/20220927234147/https://dzone.com/articles/synthetic-monitoring-with-telegraf">dzone: Synthetic Monitoring With Telegraf (white-box monitoring) [ARCHIVED]</a> Monitoring based on metrics exposed by the internals of the system</li>
<li><a href="https://grafana.com/blog/2021/04/05/using-telegraf-plugins-to-visualize-industrial-iot-data-with-the-grafana-cloud-hosted-prometheus-service">grafana.com: Using Telegraf plugins to visualize industrial IoT data with the Grafana Cloud Hosted Prometheus service</a></li>
<li><a href="https://sysadminxpert.com/monitor-linux-system-with-grafana-and-telegraf">sysadminxpert.com: How to Monitor Linux System with Grafana and Telegraf</a></li>
<li><a href="https://www.influxdata.com/blog/three-ways-to-keep-cardinality-under-control-when-using-telegraf">influxdata.com: Three Ways to Keep Cardinality Under Control When Using Telegraf</a></li>
</ul>
<h4 id="micrometer-collector">Micrometer Collector</h4>
<ul>
<li><a href="http://micrometer.io"><strong>Micrometer</strong> Collector</a></li>
</ul>
<h2 id="prometheus-alarms-and-event-tracking">Prometheus Alarms and Event Tracking</h2>
<ul>
<li>Prometheus no soporta rastreo de eventos (event tracking), pero ofrece un soporte completo de alarmas y gestión de alarmas. El lenguaje de consultas (queries) de Prometheus permite en cambio implementar rastreo de eventos por cuenta propia.</li>
</ul>
<h2 id="prometheus-and-cloud-monitoring">Prometheus and Cloud Monitoring</h2>
<ul>
<li>AWS CloudWatch is supported by Prometheus.</li>
<li><a href="https://aws.amazon.com/prometheus">https://aws.amazon.com/prometheus</a></li>
<li><a href="https://cloud.google.com/blog/products/operations/introducing-google-cloud-managed-service-for-prometheus">cloud.google.com: Get planet-scale monitoring with Managed Service for Prometheus</a> Prometheus, the de facto standard for Kubernetes monitoring, works well for many basic deployments, but managing Prometheus infrastructure can become challenging at scale. As Kubernetes deployments continue to play a bigger role in enterprise IT, scaling Prometheus for a large number of metrics across a global footprint has become a pressing need for many organizations. Today, were excited to announce the public preview of Google Cloud Managed Service for Prometheus, a new monitoring offering designed for scale and ease of use that maintains compatibility with the open-source Prometheus ecosystem.</li>
</ul>
<h2 id="prometheus-installers">Prometheus Installers</h2>
<ul>
<li><a href="https://devopscube.com/setup-prometheus-helm-chart">Setup Prometheus Using Helm Chart on Kubernetes</a> 🌟 - A detailed guide on how to set up Prometheus on a Kubernetes cluster using the official community Helm chart, including best practices and an overview of the components involved like Alertmanager, Kube State Metrics, and Node Exporter.</li>
</ul>
<h3 id="binaries-source-code-or-docker">Binaries, source code or Docker</h3>
<ul>
<li><a href="https://prometheus.io/docs/prometheus/latest/installation">prometheus.io: Installarion</a></li>
<li><a href="https://prometheus.io/docs/prometheus/latest/getting_started">prometheus.io: Getting Started</a></li>
<li><a href="https://github.com/prometheus/prometheus">github.com/prometheus/prometheus</a></li>
</ul>
<h3 id="ansible-roles">Ansible Roles</h3>
<ul>
<li><strong>Cloud Alchemy</strong>: Deploy prometheus node exporter using ansible.<ul>
<li><a href="https://galaxy.ansible.com/cloudalchemy/node-exporter">galaxy.ansible.com/cloudalchemy/node-exporter</a></li>
<li><a href="https://github.com/cloudalchemy/ansible-prometheus">github.com/cloudalchemy/ansible-prometheus</a></li>
</ul>
</li>
<li><a href="https://github.com/idealista/prometheus_jmx_exporter_role">Idealista: This ansible role installs a Prometheus Node Exporter in a debian environment</a><ul>
<li><a href="https://galaxy.ansible.com/alexdzyoba/jmx-exporter">galaxy.ansible.com/alexdzyoba/jmx-exporter</a></li>
<li><a href="https://github.com/alexdzyoba/ansible-jmx-exporter">github.com/alexdzyoba/ansible-jmx-exporter</a></li>
</ul>
</li>
<li><strong>Mesaguy</strong>: Installs and manages Prometheus and Prometheus exporters.<ul>
<li>Installs and manages Prometheus server, Alertmanager, PushGateway, and numerous Prometheus exporters</li>
<li>This role was designed to allow adding new exporters with ease. Regular releases ensure it always provides the latest Prometheus software.</li>
<li>This role can register client exporters with the Prometheus server/s automatically (see tgroup management below).</li>
<li>This Ansible role will be migrated to an Ansible Collection.</li>
<li><a href="https://galaxy.ansible.com/mesaguy/prometheus">galaxy.ansible.com/mesaguy/prometheus</a></li>
<li><a href="https://github.com/mesaguy/ansible-prometheus">github.com/mesaguy/ansible-prometheus</a></li>
</ul>
</li>
<li><strong>William Yeh</strong>: Prometheus for Ansible Galaxy. This role only installs 3 components: Prometheus server, Node exporter, and Alertmanager.<ul>
<li><a href="https://galaxy.ansible.com/William-Yeh/prometheus">galaxy.ansible.com/William-Yeh/prometheus</a></li>
<li><a href="https://github.com/William-Yeh/ansible-prometheus">github.com/William-Yeh/ansible-prometheus</a></li>
<li><a href="https://awesomeopensource.com/project/William-Yeh/ansible-prometheus">awesomeopensource.com/project/William-Yeh/ansible-prometheus</a></li>
</ul>
</li>
<li><strong>Undergreen</strong>: An Ansible role that installs Prometheus Node Exporter on Ubuntu|Debian|redhat-based machines with systemd|Upstart|sysvinit.<ul>
<li><a href="https://galaxy.ansible.com/UnderGreen/prometheus-node-exporter">galaxy.ansible.com/UnderGreen/prometheus-node-exporter</a></li>
<li><a href="https://github.com/UnderGreen/ansible-prometheus-node-exporter">github.com/UnderGreen/ansible-prometheus-node-exporter</a></li>
</ul>
</li>
<li><strong>Mitesh Sharma</strong>: Prometheus With Grafana Using Ansible<ul>
<li><a href="https://itnext.io/prometheus-with-grafana-using-ansible-549e575c9dfa">itnext.io/prometheus-with-grafana-using-ansible-549e575c9dfa</a></li>
<li><a href="https://github.com/MiteshSharma/PrometheusWithGrafana">github.com/MiteshSharma/PrometheusWithGrafana</a></li>
</ul>
</li>
</ul>
<h2 id="prometheus-operator">Prometheus Operator</h2>
<h3 id="kube-prometheus">kube Prometheus</h3>
<ul>
<li><a href="https://github.com/prometheus-operator/kube-prometheus">kube-prometheus</a> Use Prometheus to monitor Kubernetes and applications running on Kubernetes.</li>
<li><a href="https://arthursens.medium.com/risk-analysis-and-security-compliance-in-kube-prometheus-10c8cfb180b8">arthursens.medium.com: Risk analysis and security compliance in Kube-prometheus</a></li>
</ul>
<h4 id="prometheus-operator-with-helm3">Prometheus Operator with Helm3</h4>
<ul>
<li><a href="https://devstack.in/2020/05/25/deploy-prometheus-operator-with-helm3-and-private-registry">devstack.in: Deploy Prometheus Operator with Helm3 and Private Registry 🌟</a></li>
</ul>
<h4 id="kube-prometheus-stack-best-choice">Kube-prometheus-stack (best choice)</h4>
<ul>
<li><a href="https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack">prometheus-community/kube-prometheus-stack 🌟🌟</a> <strong>kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator.</strong></li>
<li><a href="https://medium.com/israeli-tech-radar/how-to-create-a-monitoring-stack-using-kube-prometheus-stack-part-1-eff8bf7ba9a9">medium.com/israeli-tech-radar: How to create a Monitoring Stack using Kube-Prometheus-stack (Part 1)</a></li>
</ul>
<h4 id="kubernetes-cluster-monitoring-stack-based-on-prometheus-operator">Kubernetes Cluster Monitoring Stack based on Prometheus Operator</h4>
<ul>
<li><a href="https://github.com/carlosedp/cluster-monitoring">Cluster Monitoring stack for ARM / X86-64 platforms</a> Updated the cluster-monitoring stack for kubernetes to latest versions. Fresh Grafana 7, Prometheus Operator and more. This repository collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator.</li>
</ul>
<h2 id="prometheus-saas-solutions">Prometheus SaaS Solutions</h2>
<ul>
<li><a href="https://ambking1234.biz/?action=register&amp;marketingRef=6788b227da9499f55f6ea745">Weave Cortex SaaS (Hosted Prometheus - Public Cloud)</a></li>
<li><a href="https://logz.io">logz.io</a><ul>
<li><a href="https://logz.io/blog/prometheus-as-a-service-launch">logz.io: Logz.ios Prometheus-as-a-Service is Generally Available 🌟</a></li>
</ul>
</li>
<li><a href="https://aws.amazon.com/prometheus">Amazon Managed Service for Prometheus</a></li>
</ul>
<h2 id="proof-of-concept-activemq-monitoring-with-prometheus">Proof of Concept: ActiveMQ Monitoring with Prometheus</h2>
<p>The aim of this Proof of Concept is to learn Prometheus by example being <a href="https://developers.redhat.com/products/amq/overview">Red Hat AMQ 7 (broker)</a> on RHEL the application to be monitored. Red Hat AMQ Broker is based on ActiveMQ Artemis, being this the reason why one of the following proof of concepts is done with Artemis (the other one was run in order to learn telegraf, prometheus and grafana). The same solution tested with Artemis on RHEL is valid for Red Hat AMQ 7 Broker on RHEL.</p>
<p>Red Hat AMQ 7 Broker is OpenShift 3.11 compliant as Technical Preview and deployed as Operator.</p>
<p>Red Hat AMQ 7 Operator is fully supported in OpenShift 4.x, initially with Prometheus and Grafana monitoring already setup and maintained by AMQ Operator. It is recommended to check the metrics collected and displayed by AMQ Operator with another Proof of Concept in OpenShift 4.x.</p>
<h3 id="poc-activemq-5x-monitoring-with-telegraf-collector-prometheus-and-grafana-dashboard-10702">PoC: ActiveMQ 5.x Monitoring with Telegraf Collector, Prometheus and Grafana Dashboard 10702</h3>
<ul>
<li>Latest releases of Telegraf and Prometheus have been used in this Proof of Concept:<ul>
<li><a href="https://www.influxdata.com/time-series-platform/telegraf">telegraf-1.14.0-1 (rpm)</a></li>
<li><a href="https://grafana.com">grafana-6.3.2-1.x86_64 (rpm)</a> This is the release specified as requirement for this grafana dashboard. Newer releases of grafana are probably compliant.</li>
<li><a href="https://prometheus.io">prometheus-2.17.1.linux-amd64 (.tar.gz)</a></li>
<li><a href="https://activemq.apache.org/components/classic">apache-activemq-5.15.12 (.tar.g)</a></li>
</ul>
</li>
<li>References:<ul>
<li><a href="https://activemq.apache.org/components/classic/documentation">activemq.apache.org/components/classic/documentation</a></li>
<li><a href="https://grafana.com/grafana/dashboards/10702-activemq">grafana.com/grafana/dashboards/10702</a></li>
<li><a href="https://github.com/influxdata/telegraf/tree/master/plugins/inputs/activemq">github.com/influxdata/telegraf/tree/master/plugins/inputs/activemq</a></li>
<li><a href="https://docs.wavefront.com/activemq.html">docs.wavefront.com/activemq.html</a></li>
</ul>
</li>
</ul>
<h4 id="deployment-and-configuration">Deployment and Configuration</h4>
<ul>
<li>Systemd</li>
</ul>
<div class="highlight"><pre><span></span><code>/etc/systemd/system/prometheus.service
/etc/systemd/system/activemq.service
/usr/lib/systemd/system/telegraf.service
/usr/lib/systemd/system/grafana-server.service
</code></pre></div>
<ul>
<li>Systemctl</li>
</ul>
<div class="highlight"><pre><span></span><code>systemctl<span class="w"> </span>daemon-reload
<span class="k">for</span><span class="w"> </span>service<span class="w"> </span><span class="k">in</span><span class="w"> </span>activemq<span class="w"> </span>telegraf<span class="w"> </span>prometheus<span class="w"> </span>grafana-server<span class="p">;</span><span class="w"> </span><span class="k">do</span><span class="w"> </span>systemctl<span class="w"> </span>status<span class="w"> </span><span class="nv">$service</span><span class="p">;</span><span class="w"> </span><span class="k">done</span>
<span class="k">for</span><span class="w"> </span>service<span class="w"> </span><span class="k">in</span><span class="w"> </span>activemq<span class="w"> </span>telegraf<span class="w"> </span>prometheus<span class="w"> </span>grafana-server<span class="p">;</span><span class="w"> </span><span class="k">do</span><span class="w"> </span>systemctl<span class="w"> </span>restart<span class="w"> </span><span class="nv">$service</span><span class="p">;</span><span class="w"> </span><span class="k">done</span>
<span class="k">for</span><span class="w"> </span>service<span class="w"> </span><span class="k">in</span><span class="w"> </span>activemq<span class="w"> </span>telegraf<span class="w"> </span>prometheus<span class="w"> </span>grafana-server<span class="p">;</span><span class="w"> </span><span class="k">do</span><span class="w"> </span>systemctl<span class="w"> </span>stop<span class="w"> </span><span class="nv">$service</span><span class="p">;</span><span class="w"> </span><span class="k">done</span>
<span class="k">for</span><span class="w"> </span>service<span class="w"> </span><span class="k">in</span><span class="w"> </span>activemq<span class="w"> </span>telegraf<span class="w"> </span>prometheus<span class="w"> </span>grafana-server<span class="p">;</span><span class="w"> </span><span class="k">do</span><span class="w"> </span>systemctl<span class="w"> </span>start<span class="w"> </span><span class="nv">$service</span><span class="p">;</span><span class="w"> </span><span class="k">done</span>
</code></pre></div>
<ul>
<li>Jolokia Permissions already integrated in ActiveMQ by default. Jolokia permissions have been disabled by renaming &ldquo;jolokia-access.xml&rdquo; to &ldquo;jolokia-access.xmlORIG&rdquo; (this is a Proof of Concept):</li>
</ul>
<div class="highlight"><pre><span></span><code>mv<span class="w"> </span>/opt/activemq/webapps/api/WEB-INF/classes/jolokia-access.xml<span class="w"> </span>/opt/activemq/webapps/api/WEB-INF/classes/jolokia-access.xmlORIG
</code></pre></div>
<ul>
<li>Telegraf Jolokia Input Plugin /etc/telegraf/telegraf.d/activemq.conf</li>
</ul>
<div class="highlight"><pre><span></span><code>[[inputs.jolokia2_agent]]
urls = [&quot;http://localhost:8161/api/jolokia&quot;]
name_prefix = &quot;activemq.&quot;
username = &quot;admin&quot;
password = &quot;admin&quot;
### JVM Generic
[[inputs.jolokia2_agent.metric]]
name = &quot;OperatingSystem&quot;
mbean = &quot;java.lang:type=OperatingSystem&quot;
paths = [&quot;ProcessCpuLoad&quot;,&quot;SystemLoadAverage&quot;,&quot;SystemCpuLoad&quot;]
[[inputs.jolokia2_agent.metric]]
name = &quot;jvm_runtime&quot;
mbean = &quot;java.lang:type=Runtime&quot;
paths = [&quot;Uptime&quot;]
[[inputs.jolokia2_agent.metric]]
name = &quot;jvm_memory&quot;
mbean = &quot;java.lang:type=Memory&quot;
paths = [&quot;HeapMemoryUsage&quot;, &quot;NonHeapMemoryUsage&quot;, &quot;ObjectPendingFinalizationCount&quot;]
[[inputs.jolokia2_agent.metric]]
name = &quot;jvm_garbage_collector&quot;
mbean = &quot;java.lang:name=*,type=GarbageCollector&quot;
paths = [&quot;CollectionTime&quot;, &quot;CollectionCount&quot;]
tag_keys = [&quot;name&quot;]
[[inputs.jolokia2_agent.metric]]
name = &quot;jvm_memory_pool&quot;
mbean = &quot;java.lang:name=*,type=MemoryPool&quot;
paths = [&quot;Usage&quot;, &quot;PeakUsage&quot;, &quot;CollectionUsage&quot;]
tag_keys = [&quot;name&quot;]
tag_prefix = &quot;pool_&quot;
### ACTIVEMQ
[[inputs.jolokia2_agent.metric]]
name = &quot;queue&quot;
mbean = &quot;org.apache.activemq:brokerName=*,destinationName=*,destinationType=Queue,type=Broker&quot;
paths = [&quot;QueueSize&quot;,&quot;EnqueueCount&quot;,&quot;ConsumerCount&quot;,&quot;DispatchCount&quot;,&quot;DequeueCount&quot;,&quot;ProducerCount&quot;,&quot;InFlightCount&quot;]
tag_keys = [&quot;brokerName&quot;,&quot;destinationName&quot;]
[[inputs.jolokia2_agent.metric]]
name = &quot;topic&quot;
mbean = &quot;org.apache.activemq:brokerName=*,destinationName=*,destinationType=Topic,type=Broker&quot;
paths = [&quot;ProducerCount&quot;,&quot;DequeueCount&quot;,&quot;ConsumerCount&quot;,&quot;QueueSize&quot;,&quot;EnqueueCount&quot;]
tag_keys = [&quot;brokerName&quot;,&quot;destinationName&quot;]
[[inputs.jolokia2_agent.metric]]
name = &quot;broker&quot;
mbean = &quot;org.apache.activemq:brokerName=*,type=Broker&quot;
paths = [&quot;TotalConsumerCount&quot;,&quot;TotalMessageCount&quot;,&quot;TotalEnqueueCount&quot;,&quot;TotalDequeueCount&quot;,&quot;MemoryLimit&quot;,&quot;MemoryPercentUsage&quot;,&quot;StoreLimi
t&quot;,&quot;StorePercentUsage&quot;,&quot;TempPercentUsage&quot;,&quot;TempLimit&quot;]
tag_keys = [&quot;brokerName&quot;]
</code></pre></div>
<ul>
<li>InfluxDB: Not required.</li>
<li>Defautl /etc/telegraf/telegraf.conf file is modified to allow Prometheus to collect ActiveMQ metrics by pulling Telegraf metrics:</li>
</ul>
<div class="highlight"><pre><span></span><code> # # Configuration for the Prometheus client to spawn
[[outputs.prometheus_client]]
# ## Address to listen on
listen = &quot;:9273&quot;
## Path to publish the metrics on.
path = &quot;/metrics&quot;
...
...
# # Gather ActiveMQ metrics
[[inputs.activemq]]
# ## ActiveMQ WebConsole URL
url = &quot;http://127.0.0.1:8161&quot;
# ## Credentials for basic HTTP authentication
username = &quot;admin&quot;
password = &quot;admin&quot;
...
...
</code></pre></div>
<ul>
<li>scrape_configs in /opt/prometheus/prometheus.yml</li>
</ul>
<div class="highlight"><pre><span></span><code> scrape_configs:
# The job name is added as a label `job=&lt;job_name&gt;` to any timeseries scraped from this config.
- job_name: &#39;prometheus&#39;
# metrics_path defaults to &#39;/metrics&#39;
# scheme defaults to &#39;http&#39;.
static_configs:
- targets: [&#39;localhost:9090&#39;]
- job_name: &#39;broker&#39;
static_configs:
- targets: [&#39;localhost:9273&#39;]
</code></pre></div>
<ul>
<li>Grafana Dashboard <a href="https://grafana.com/grafana/dashboards/10702-activemq">10702</a> is imported from Grafana UI -&gt; &ldquo;import dashboard&rdquo;. Prometheus data source is connected manually with Grafana via Grafana UI.</li>
</ul>
<h3 id="poc-activemq-artemis-monitoring-with-prometheus-metrics-plugin-micrometer-collector-and-prometheus-grafana-dashboard-not-available">PoC: ActiveMQ Artemis Monitoring with Prometheus Metrics Plugin (Micrometer Collector) and Prometheus. Grafana Dashboard not available</h3>
<ul>
<li>Latest releases of ActiveMQ Artemis and Prometheus have been used in this Proof of Concept:<ul>
<li><a href="https://grafana.com">grafana-6.7.2-1.x86_64.rpm</a></li>
<li><a href="https://prometheus.io">prometheus-2.17.1.linux-amd64</a></li>
<li><a href="https://artemis.apache.org/components/artemis">apache-artemis-2.11.0</a></li>
<li><a href="https://maven.apache.org">apache-maven-3.6.3</a></li>
</ul>
</li>
<li>ActiveMQ Artemis can export metrics to several monitoring systems via <a href="https://github.com/rh-messaging/artemis-prometheus-metrics-plugin">Artemis Prometheus Metrics Plugin</a>, which uses <a href="https://micrometer.io">Micrometer Collector</a>. Check <a href="http://activemq.apache.org/components/artemis/documentation/latest/metrics.html">this link</a>.</li>
<li>Unfortunately, there&rsquo;s no Grafana Dashboard available for this plugin. In consequence <a href="https://www.openlogic.com/blog/how-visualize-prometheus-data-grafana">a new Grafana Dashboard has to be developed from scratch</a>.</li>
<li><a href="https://github.com/rh-messaging/artemis-prometheus-metrics-plugin">Artemis Prometheus Metrics Plugin</a> is the recommended approach. Use <a href="https://github.com/prometheus/jmx_exporter">JMX Exporter</a> to export other metrics.</li>
<li>References:<ul>
<li><a href="https://artemis.apache.org/components/artemis/documentation/latest/using-server.html">Apache ActiveMQ Artemis Using the Server</a></li>
<li><a href="https://artemis.apache.org/components/artemis/documentation/latest/management-console.html">Apache ActiveMQ Artemis Management Console</a></li>
<li><a href="http://activemq.apache.org/components/artemis/documentation/latest/metrics.html">Apache ActiveMQ Artemis Metrics</a></li>
</ul>
</li>
</ul>
<h4 id="deployment-and-configuration_1">Deployment and Configuration</h4>
<ul>
<li>systemd</li>
</ul>
<div class="highlight"><pre><span></span><code>/etc/systemd/system/prometheus.service
/etc/systemd/system/artemis.service
/usr/lib/systemd/system/grafana-server.service
</code></pre></div>
<ul>
<li>systemctl</li>
</ul>
<div class="highlight"><pre><span></span><code><span class="c1"># systemctl enable artemis</span>
<span class="c1"># systemctl daemon-reload</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span>service<span class="w"> </span><span class="k">in</span><span class="w"> </span>artemis<span class="w"> </span>prometheus<span class="w"> </span>grafana-server<span class="p">;</span><span class="w"> </span><span class="k">do</span><span class="w"> </span>systemctl<span class="w"> </span>status<span class="w"> </span><span class="nv">$service</span><span class="p">;</span><span class="w"> </span><span class="k">done</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span>service<span class="w"> </span><span class="k">in</span><span class="w"> </span>artemis<span class="w"> </span>prometheus<span class="w"> </span>grafana-server<span class="p">;</span><span class="w"> </span><span class="k">do</span><span class="w"> </span>systemctl<span class="w"> </span>restart<span class="w"> </span><span class="nv">$service</span><span class="p">;</span><span class="w"> </span><span class="k">done</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span>service<span class="w"> </span><span class="k">in</span><span class="w"> </span>artemis<span class="w"> </span>prometheus<span class="w"> </span>grafana-server<span class="p">;</span><span class="w"> </span><span class="k">do</span><span class="w"> </span>systemctl<span class="w"> </span>stop<span class="w"> </span><span class="nv">$service</span><span class="p">;</span><span class="w"> </span><span class="k">done</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span>service<span class="w"> </span><span class="k">in</span><span class="w"> </span>artemis<span class="w"> </span>prometheus<span class="w"> </span>grafana-server<span class="p">;</span><span class="w"> </span><span class="k">do</span><span class="w"> </span>systemctl<span class="w"> </span>start<span class="w"> </span><span class="nv">$service</span><span class="p">;</span><span class="w"> </span><span class="k">done</span>
</code></pre></div>
<ul>
<li>Creation of Artemis Broker</li>
</ul>
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/var/lib
/opt/artemis/bin/artemis<span class="w"> </span>create<span class="w"> </span>--addresses<span class="w"> </span><span class="m">192</span>.168.1.38<span class="w"> </span>--allow-anonymous<span class="w"> </span>--home<span class="w"> </span>/opt/artemis<span class="w"> </span>--host<span class="w"> </span>&lt;my_servername.my_domain&gt;<span class="w"> </span>--http-host<span class="w"> </span>&lt;my_servername.my_domain&gt;<span class="w"> </span>--name<span class="w"> </span>&lt;my_servername.my_domain&gt;<span class="w"> </span>--queues<span class="w"> </span>queue1,queue2<span class="w"> </span>--user<span class="w"> </span>artemisuser<span class="w"> </span>--password<span class="w"> </span>artemispassword<span class="w"> </span>artemisbroker
Creating<span class="w"> </span>ActiveMQ<span class="w"> </span>Artemis<span class="w"> </span>instance<span class="w"> </span>at:<span class="w"> </span>/var/lib/artemisbroker
Auto<span class="w"> </span>tuning<span class="w"> </span>journal<span class="w"> </span>...
<span class="k">done</span>!<span class="w"> </span>Your<span class="w"> </span>system<span class="w"> </span>can<span class="w"> </span>make<span class="w"> </span><span class="m">13</span>.89<span class="w"> </span>writes<span class="w"> </span>per<span class="w"> </span>millisecond,<span class="w"> </span>your<span class="w"> </span>journal-buffer-timeout<span class="w"> </span>will<span class="w"> </span>be<span class="w"> </span><span class="m">72000</span>
You<span class="w"> </span>can<span class="w"> </span>now<span class="w"> </span>start<span class="w"> </span>the<span class="w"> </span>broker<span class="w"> </span>by<span class="w"> </span>executing:
<span class="w"> </span><span class="s2">&quot;/var/lib/artemisbroker/bin/artemis&quot;</span><span class="w"> </span>run
Or<span class="w"> </span>you<span class="w"> </span>can<span class="w"> </span>run<span class="w"> </span>the<span class="w"> </span>broker<span class="w"> </span><span class="k">in</span><span class="w"> </span>the<span class="w"> </span>background<span class="w"> </span>using:
<span class="w"> </span><span class="s2">&quot;/var/lib/artemisbroker/bin/artemis-service&quot;</span><span class="w"> </span>start
</code></pre></div>
<ul>
<li>Permissions change in broker directory</li>
</ul>
<div class="highlight"><pre><span></span><code><span class="c1"># chown -R activemq. /var/lib/artemisbroker/</span>
</code></pre></div>
<ul>
<li>Running artemis broker</li>
</ul>
<div class="highlight"><pre><span></span><code><span class="c1"># su - activemq</span>
$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>/var/lib/artemisbroker/
$<span class="w"> </span>/var/lib/artemisbroker/bin/artemis<span class="w"> </span>run
</code></pre></div>
<ul>
<li>
<p>Artemis Prometehus Console Access. We can now access to Artemis Console via <a href="http://my_servername.my_domain:8161/console">http://my_servername.my_domain:8161/console</a> using the credentials specified during the CLI deployment (artemisuser / artemispassword)</p>
</li>
<li>
<p><a href="https://github.com/rh-messaging/artemis-prometheus-metrics-plugin">Artemis Prometheus Plugin</a></p>
</li>
</ul>
<div class="highlight"><pre><span></span><code>activemq@my_servername<span class="w"> </span>~<span class="o">]</span>$<span class="w"> </span><span class="nb">pwd</span>
/home/activemq
<span class="o">[</span>activemq@my_servername<span class="w"> </span>~<span class="o">]</span>$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>artemis-prometheus-metrics-plugin/
<span class="o">[</span>activemq@my_servername<span class="w"> </span>artemis-prometheus-metrics-plugin<span class="o">]</span>$<span class="w"> </span>mvn<span class="w"> </span>install
...
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>Replacing<span class="w"> </span>/home/activemq/artemis-prometheus-metrics-plugin/artemis-prometheus-metrics-plugin/target/artemis-prometheus-metrics-plug
<span class="k">in</span>-1.0.0.CR1.jar<span class="w"> </span>with<span class="w"> </span>/home/activemq/artemis-prometheus-metrics-plugin/artemis-prometheus-metrics-plugin/target/artemis-prometheus-metrics
-plugin-1.0.0.CR1-shaded.jar
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>Dependency-reduced<span class="w"> </span>POM<span class="w"> </span>written<span class="w"> </span>at:<span class="w"> </span>/home/activemq/artemis-prometheus-metrics-plugin/artemis-prometheus-metrics-plugin/dependency-re
duced-pom.xml
<span class="o">[</span>INFO<span class="o">]</span>
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>---<span class="w"> </span>maven-install-plugin:2.4:install<span class="w"> </span><span class="o">(</span>default-install<span class="o">)</span><span class="w"> </span>@<span class="w"> </span>artemis-prometheus-metrics-plugin<span class="w"> </span>---
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>Installing<span class="w"> </span>/home/activemq/artemis-prometheus-metrics-plugin/artemis-prometheus-metrics-plugin/target/artemis-prometheus-metrics-plu
gin-1.0.0.CR1.jar<span class="w"> </span>to<span class="w"> </span>/home/activemq/.m2/repository/org/apache/activemq/artemis-prometheus-metrics-plugin/1.0.0.CR1/artemis-prometheus-metr
ics-plugin-1.0.0.CR1.jar
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>Installing<span class="w"> </span>/home/activemq/artemis-prometheus-metrics-plugin/artemis-prometheus-metrics-plugin/dependency-reduced-pom.xml<span class="w"> </span>to<span class="w"> </span>/home/a
ctivemq/.m2/repository/org/apache/activemq/artemis-prometheus-metrics-plugin/1.0.0.CR1/artemis-prometheus-metrics-plugin-1.0.0.CR1.pom
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>------------------------------------------------------------------------
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>Reactor<span class="w"> </span>Summary<span class="w"> </span><span class="k">for</span><span class="w"> </span>artemis-prometheus-metrics-pom<span class="w"> </span><span class="m">1</span>.0.0.CR1:
<span class="o">[</span>INFO<span class="o">]</span>
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>artemis-prometheus-metrics-pom<span class="w"> </span>.....................<span class="w"> </span>SUCCESS<span class="w"> </span><span class="o">[</span><span class="w"> </span><span class="m">0</span>.328<span class="w"> </span>s<span class="o">]</span>
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>ActiveMQ<span class="w"> </span>Artemis<span class="w"> </span>Prometheus<span class="w"> </span>Metrics<span class="w"> </span>Plugin<span class="w"> </span>Servlet<span class="w"> </span>.<span class="w"> </span>SUCCESS<span class="w"> </span><span class="o">[</span><span class="w"> </span><span class="m">7</span>.964<span class="w"> </span>s<span class="o">]</span>
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>ActiveMQ<span class="w"> </span>Artemis<span class="w"> </span>Prometheus<span class="w"> </span>Metrics<span class="w"> </span>Plugin<span class="w"> </span>.........<span class="w"> </span>SUCCESS<span class="w"> </span><span class="o">[</span><span class="w"> </span><span class="m">34</span>.596<span class="w"> </span>s<span class="o">]</span>
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>------------------------------------------------------------------------
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>BUILD<span class="w"> </span>SUCCESS
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>------------------------------------------------------------------------
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>Total<span class="w"> </span>time:<span class="w"> </span><span class="m">43</span>.030<span class="w"> </span>s
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>Finished<span class="w"> </span>at:<span class="w"> </span><span class="m">2020</span>-04-10T13:36:27+02:00
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>------------------------------------------------------------------------
</code></pre></div>
<ul>
<li>New artifact is copied to artemis broker. Artefact artemis-prometheus-metrics-plugin/target/artemis-prometheus-metrics-plugin-VERSION.jar is copied to our broker:</li>
</ul>
<div class="highlight"><pre><span></span><code><span class="o">[</span>activemq@my_servername<span class="w"> </span>artemis-prometheus-metrics-plugin<span class="o">]</span>$<span class="w"> </span>cp<span class="w"> </span>artemis-prometheus-metrics-plugin/target/artemis-prometheus-metrics-plugin-
<span class="m">1</span>.0.0.CR1.jar<span class="w"> </span>/var/lib/artemisbroker/lib/
</code></pre></div>
<ul>
<li>Edition of file /var/lib/artemisbroker/etc/broker.xml</li>
</ul>
<div class="highlight"><pre><span></span><code>&lt;metrics-plugin class-name=&quot;org.apache.activemq.artemis.core.server.metrics.plugins.ArtemisPrometheusMetricsPlugin&quot;/&gt;
</code></pre></div>
<ul>
<li>Creation of <artemis_instance>/web</li>
</ul>
<div class="highlight"><pre><span></span><code>[activemq@my_servername artemisbroker]$ mkdir /var/lib/artemisbroker/web
</code></pre></div>
<ul>
<li>Artifact artemis-prometheus-metrics-plugin-servlet/target/metrics.war is copied to <ARTEMIS_INSTANCE>/web :</li>
</ul>
<div class="highlight"><pre><span></span><code><span class="o">[</span>activemq@my_servername<span class="w"> </span>artemis-prometheus-metrics-plugin<span class="o">]</span>$<span class="w"> </span>cp<span class="w"> </span>artemis-prometheus-metrics-plugin-servlet/target/metrics.war<span class="w"> </span>/var/lib/artem
isbroker/web/
</code></pre></div>
<ul>
<li>Below web component added to <ARTEMIS_INSTANCE>/etc/bootstrap.xml :</li>
</ul>
<div class="highlight"><pre><span></span><code>[activemq@my_servername artemis-prometheus-metrics-plugin]$ vim /var/lib/artemisbroker/etc/bootstrap.xml
...
&lt;app url=&quot;metrics&quot; war=&quot;metrics.war&quot;/&gt;
...
</code></pre></div>
<ul>
<li>Restart of Artemis Broker</li>
<li>Prometheus configuration, scrape_configs in /opt/prometheus/prometheus.yml :</li>
</ul>
<div class="highlight"><pre><span></span><code>scrape_configs:
# The job name is added as a label `job=&lt;job_name&gt;` to any timeseries scraped from this config.
- job_name: &#39;prometheus&#39;
# metrics_path defaults to &#39;/metrics&#39;
# scheme defaults to &#39;http&#39;.
static_configs:
- targets: [&#39;localhost:9090&#39;]
- job_name: &#39;broker&#39;
static_configs:
- targets: [&#39;localhost:8161&#39;]
</code></pre></div>
<ul>
<li>Last step: Apparently there&rsquo;s not Grafana Dashboard available for this use case. It is required to <a href="https://www.openlogic.com/blog/how-visualize-prometheus-data-grafana">develop a new Grafana Dashboard</a>.</li>
</ul>
<h3 id="validation-of-artemis-broker-monitoring-with-jmeter">Validation of Artemis Broker Monitoring with JMeter</h3>
<ul>
<li>In order to validate our Artemis Broker Monitoring solution we need to &ldquo;inject traffic/data/metrics&rdquo; with for example Pub/Sub messages.</li>
<li>We can achieve this with a little of java code or by sending messages via Artemis Web Console -&gt; <strong>&ldquo;Operations&rdquo;</strong> tab.</li>
<li>Another option is running the jmeter test plans available on <a href="https://github.com/apache/artemis">Artemis&rsquo; github repo</a>. The procedure is described below. Remember to create the queues and addresses (topics) defined in jmeter example test plans.</li>
</ul>
<h4 id="jmeter-example-test-plans">JMeter Example Test Plans</h4>
<ul>
<li>Latest release of <a href="https://jmeter.apache.org">Apache JMeter</a> deployed in /opt</li>
<li>Library artemis-jms-client-all-2.11.0.jar is copied to $JMETER_HOME/lib :</li>
</ul>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>cp<span class="w"> </span>/opt/artemis/lib/client/artemis-jms-client-all-2.11.0.jar<span class="w"> </span>/opt/apache-jmeter-5.2.1/lib/
</code></pre></div>
<ul>
<li>jndi.properties file is modified with Artemis&rsquo; IP address (it is not listening on localhost):</li>
</ul>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>vim<span class="w"> </span>/opt/artemis/examples/perf/jmeter/jndi.properties
$<span class="w"> </span>cat<span class="w"> </span>/opt/artemis/examples/perf/jmeter/jndi.properties
connectionFactory.ConnectionFactory<span class="o">=</span>tcp://192.168.1.38:61616
</code></pre></div>
<ul>
<li>jndi.properties is packaged in a jar file and moved to $JMETER_HOME/lib :</li>
</ul>
<div class="highlight"><pre><span></span><code><span class="o">[</span>activemq@my_servername<span class="w"> </span>~<span class="o">]</span>$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>/opt/artemis/examples/perf/jmeter/
<span class="o">[</span>activemq@my_servername<span class="w"> </span>jmeter<span class="o">]</span>$<span class="w"> </span>ls<span class="w"> </span>-l
total<span class="w"> </span><span class="m">28</span>
-rw-rw-r--<span class="w"> </span><span class="m">1</span><span class="w"> </span>activemq<span class="w"> </span>activemq<span class="w"> </span><span class="m">11887</span><span class="w"> </span>Jan<span class="w"> </span><span class="m">10</span><span class="w"> </span><span class="m">16</span>:22<span class="w"> </span><span class="m">1</span>.jms_p2p_test.jmx
-rw-rw-r--<span class="w"> </span><span class="m">1</span><span class="w"> </span>activemq<span class="w"> </span>activemq<span class="w"> </span><span class="m">8442</span><span class="w"> </span>Jan<span class="w"> </span><span class="m">10</span><span class="w"> </span><span class="m">16</span>:22<span class="w"> </span><span class="m">2</span>.pub_sub_test.jmx
-rw-rw-r--<span class="w"> </span><span class="m">1</span><span class="w"> </span>activemq<span class="w"> </span>activemq<span class="w"> </span><span class="m">833</span><span class="w"> </span>Jan<span class="w"> </span><span class="m">10</span><span class="w"> </span><span class="m">16</span>:22<span class="w"> </span>jndi.properties
<span class="o">[</span>activemq@my_servername<span class="w"> </span>jmeter<span class="o">]</span>$<span class="w"> </span>jar<span class="w"> </span>-cf<span class="w"> </span>artemis-jndi.jar<span class="w"> </span>jndi.properties
<span class="o">[</span>activemq@my_servername<span class="w"> </span>jmeter<span class="o">]</span>$<span class="w"> </span>ls<span class="w"> </span>-l
total<span class="w"> </span><span class="m">32</span>
-rw-rw-r--<span class="w"> </span><span class="m">1</span><span class="w"> </span>activemq<span class="w"> </span>activemq<span class="w"> </span><span class="m">11887</span><span class="w"> </span>Jan<span class="w"> </span><span class="m">10</span><span class="w"> </span><span class="m">16</span>:22<span class="w"> </span><span class="m">1</span>.jms_p2p_test.jmx
-rw-rw-r--<span class="w"> </span><span class="m">1</span><span class="w"> </span>activemq<span class="w"> </span>activemq<span class="w"> </span><span class="m">8442</span><span class="w"> </span>Jan<span class="w"> </span><span class="m">10</span><span class="w"> </span><span class="m">16</span>:22<span class="w"> </span><span class="m">2</span>.pub_sub_test.jmx
-rw-rw-r--<span class="w"> </span><span class="m">1</span><span class="w"> </span>activemq<span class="w"> </span>activemq<span class="w"> </span><span class="m">946</span><span class="w"> </span>May<span class="w"> </span><span class="m">15</span><span class="w"> </span><span class="m">08</span>:46<span class="w"> </span>artemis-jndi.jar
-rw-rw-r--<span class="w"> </span><span class="m">1</span><span class="w"> </span>activemq<span class="w"> </span>activemq<span class="w"> </span><span class="m">833</span><span class="w"> </span>Jan<span class="w"> </span><span class="m">10</span><span class="w"> </span><span class="m">16</span>:22<span class="w"> </span>jndi.properties
<span class="o">[</span>activemq@my_servername<span class="w"> </span>jmeter<span class="o">]</span>$<span class="w"> </span>cp<span class="w"> </span>artemis-jndi.jar<span class="w"> </span>/opt/apache-jmeter-5.2.1/lib/
</code></pre></div>
<ul>
<li>Example Test Plans available at Artemis GitHub Repo are run by JMeter (from within the GUI or the CLI):</li>
</ul>
<div class="highlight"><pre><span></span><code><span class="o">[</span>activemq@my_servername<span class="w"> </span>~<span class="o">]</span>$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>/opt/artemis/examples/perf/jmeter/
<span class="o">[</span>activemq@my_servername<span class="w"> </span>jmeter<span class="o">]</span>$<span class="w"> </span>ls<span class="w"> </span>-la
total<span class="w"> </span><span class="m">32</span>
drwxrwxr-x<span class="w"> </span><span class="m">2</span><span class="w"> </span>activemq<span class="w"> </span>activemq<span class="w"> </span><span class="m">101</span><span class="w"> </span>May<span class="w"> </span><span class="m">15</span><span class="w"> </span><span class="m">08</span>:46<span class="w"> </span>.
drwxrwxr-x<span class="w"> </span><span class="m">3</span><span class="w"> </span>activemq<span class="w"> </span>activemq<span class="w"> </span><span class="m">19</span><span class="w"> </span>Jan<span class="w"> </span><span class="m">10</span><span class="w"> </span><span class="m">16</span>:22<span class="w"> </span>..
-rw-rw-r--<span class="w"> </span><span class="m">1</span><span class="w"> </span>activemq<span class="w"> </span>activemq<span class="w"> </span><span class="m">11887</span><span class="w"> </span>Jan<span class="w"> </span><span class="m">10</span><span class="w"> </span><span class="m">16</span>:22<span class="w"> </span><span class="m">1</span>.jms_p2p_test.jmx
-rw-rw-r--<span class="w"> </span><span class="m">1</span><span class="w"> </span>activemq<span class="w"> </span>activemq<span class="w"> </span><span class="m">8442</span><span class="w"> </span>Jan<span class="w"> </span><span class="m">10</span><span class="w"> </span><span class="m">16</span>:22<span class="w"> </span><span class="m">2</span>.pub_sub_test.jmx
-rw-rw-r--<span class="w"> </span><span class="m">1</span><span class="w"> </span>activemq<span class="w"> </span>activemq<span class="w"> </span><span class="m">946</span><span class="w"> </span>May<span class="w"> </span><span class="m">15</span><span class="w"> </span><span class="m">08</span>:46<span class="w"> </span>artemis-jndi.jar
-rw-rw-r--<span class="w"> </span><span class="m">1</span><span class="w"> </span>activemq<span class="w"> </span>activemq<span class="w"> </span><span class="m">833</span><span class="w"> </span>Jan<span class="w"> </span><span class="m">10</span><span class="w"> </span><span class="m">16</span>:22<span class="w"> </span>jndi.properties
<span class="o">[</span>activemq@my_servername<span class="w"> </span>jmeter<span class="o">]</span>$
<span class="o">[</span>activemq@my_servername<span class="w"> </span>bin<span class="o">]</span>$<span class="w"> </span><span class="nb">cd</span>
<span class="o">[</span>activemq@my_servername<span class="w"> </span>~<span class="o">]</span>$<span class="w"> </span><span class="nb">pwd</span>
/home/activemq
<span class="o">[</span>activemq@my_servername<span class="w"> </span>~<span class="o">]</span>$<span class="w"> </span>/opt/apache-jmeter-5.2.1/bin/jmeter.sh<span class="w"> </span>-n<span class="w"> </span>-t<span class="w"> </span>/opt/artemis/examples/perf/jmeter/1.jms_p2p_test.jmx<span class="w"> </span>-l<span class="w"> </span>results-file-1.txt<span class="w"> </span>-j<span class="w"> </span><span class="m">1</span>.log
<span class="o">[</span>activemq@my_servername<span class="w"> </span>~<span class="o">]</span>$<span class="w"> </span>/opt/apache-jmeter-5.2.1/bin/jmeter.sh<span class="w"> </span>-n<span class="w"> </span>-t<span class="w"> </span>/opt/artemis/examples/perf/jmeter/2.pub_sub_test.jmx<span class="w"> </span>-l<span class="w"> </span>results-file-2.txt<span class="w"> </span>-j<span class="w"> </span><span class="m">2</span>.log
</code></pre></div>
<ul>
<li>We can now see metrics displayed on Grafana and Artemis Dashboard:</li>
</ul>
<table>
<thead>
<tr>
<th style="text-align: center;">JMeter</th>
<th style="text-align: center;">Artemis Grafana</th>
<th style="text-align: center;">Artemis Dashboard</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="jmeter artemis" src="images/jmeter_artemis.png" /></td>
<td style="text-align: center;"><img alt="artemis grafana" src="images/artemis_grafana.png" /></td>
<td style="text-align: center;"><img alt="artemis dashboard monitoring" src="images/artemis_dashboard_mon.png" /></td>
</tr>
</tbody>
</table>
<h2 id="prometheus-and-azure">Prometheus and Azure</h2>
<ul>
<li><a href="https://promitor.io">Promitor 🌟</a> An Azure Monitor scraper for Prometheus</li>
</ul>
<h2 id="managed-prometheus-in-aws">Managed Prometheus in AWS</h2>
<ul>
<li><a href="prometheus.html#aws-managed-services-for-prometheus-and-grafana">Managed Prometheus in AWS</a></li>
</ul>
<h2 id="managed-prometheus-in-gcp">Managed Prometheus in GCP</h2>
<ul>
<li><a href="https://docs.cloud.google.com/stackdriver/docs/managed-prometheus"><mark>cloud.google.com: Google Cloud Managed Service for Prometheus</mark></a> A top option in the market. It&rsquo;s a drop-in replacement for what you have now, and offers leading scale, price, and retention, all with a global backplane.</li>
<li><a href="https://cloud.google.com/blog/products/devops-sre/easy-managed-prometheus-metrics-service-for-kubernetes">cloud.google.com: Google Cloud Managed Service for Prometheus is now generally available</a></li>
</ul>
<h2 id="videos">Videos</h2>
<details>
<summary>Click to expand!</summary>
<center markdown="1">
<iframe width="560" height="315" src="https://www.youtube.com/embed/h4Sl21AKiDg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/QoDqxm7ybLc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/mLPg49b33sA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/r8UvWSX3KA8" title="YouTube video player" frameborder="0" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</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">Over the last months we have added a lot of functionalities to <a href="https://twitter.com/PrometheusIO?ref_src=twsrc%5Etfw">@PrometheusIO</a> to help admins limit the risks of targets blowing up servers ⬇️</p>&mdash; Julien Pivotto (@roidelapluie) <a href="https://twitter.com/roidelapluie/status/1458698615082344451?ref_src=twsrc%5Etfw">November 11, 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">The why and how of the Prometheus Agent, an Efficient and Cloud-Native Way for Metric Forwarding, by <a href="https://twitter.com/bwplotka?ref_src=twsrc%5Etfw">@bwplotka</a><a href="https://t.co/rEc2krU2nd">https://t.co/rEc2krU2nd</a></p>&mdash; PrometheusMonitoring (@PrometheusIO) <a href="https://twitter.com/PrometheusIO/status/1460629280963153930?ref_src=twsrc%5Etfw">November 16, 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">Prometheus Agent is a great alternative with better resource usage footprint especially for those who run Prometheus server to only scrape metrics to send samples via remote write. It will allow fleet wide optimizations. <a href="https://t.co/wGd0I9xyaH">https://t.co/wGd0I9xyaH</a></p>&mdash; Jaana Dogan ヤナ ドガン (@rakyll) <a href="https://twitter.com/rakyll/status/1461061166734589954?ref_src=twsrc%5Etfw">November 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">Prometheus 101 (thread)<br><br>1⃣ Metrics<br><br>A metric is a feature (i.e., a characteristic) of a system that is being measured.<br><br>Typical examples:<br><br>- http_requests_total<br>- http_request_size_bytes<br>- system_memory_used_bytes<br>- node_network_receive_bytes_total <a href="https://t.co/lDZHezBmUH">pic.twitter.com/lDZHezBmUH</a></p>&mdash; Ivan Velichko (@iximiuz) <a href="https://twitter.com/iximiuz/status/1482363582100684801?ref_src=twsrc%5Etfw">January 15, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</center>
</details>
<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>