From 4e33b1a5238cace52733b4ffe53ab9b307f213a2 Mon Sep 17 00:00:00 2001 From: Michele Cereda Date: Fri, 14 Jul 2023 20:07:50 +0200 Subject: [PATCH] chore: improved prometheus' kb article --- knowledge base/prometheus advanced query.png | Bin 0 -> 244984 bytes knowledge base/prometheus.md | 77 ++++++++++++++++++- 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 knowledge base/prometheus advanced query.png diff --git a/knowledge base/prometheus advanced query.png b/knowledge base/prometheus advanced query.png new file mode 100644 index 0000000000000000000000000000000000000000..b4d61829733f643344fe96c53a93ab01b1304279 GIT binary patch literal 244984 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%0DS70$XLF(8uY^ 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�Glp?u|@Fc~d3^{3e5M-sH@)(Y)+kd zpCLW19I=R*WB+ZG??Ryil&Pig9^Xgl9^)Gblv;Z0?Xi!-1b5M&Nc1Q`<|LCS$KpA4 z`6~V=XNJ<8d}3ni z-nVgwoCjJW2%4WEkSnDTfArxI2TR|aBhSw4K<5`q9bCpTXEK*wTZ%==2no&k<){f} zdg$dskvglSUt0H$6U>ST`DaFHm25DW=B@TVra5&uD10Pr2OwX%o5Vi)6mx`=&l?wH4f1XJ$4Ep*O_YCj>_ zxAUS}fC44ggO@T!r_MRF;pb2AiGvp)Ay=2reayKC{>Nv0wlE5!V{h5zpB-w>)WO%q zg)nm~J#Go{+bMp+#&aHrLk_5ApKwa$@BHxxn2Fb@b=l!xZSIdV{^L(qqQEQ5KAgVs z@BHy+`s7_9m7PBkj-THVkmj`}xUen4jU0dHk0+pkVl3p&y169%&pvAx1TnA;wPyXZ zg>&)13^3+&*`XVM +1. [Components](#components) + 1. [Extras](#extras) +1. [Configuration](#configuration) +1. [Queries](#queries) 1. [Further readings](#further-readings) 1. [Sources](#sources) +## Components + +Prometheus is composed by its **server**, the **Alertmanager** and its **exporters**. + +Alerting rules can be created within Prometheus, and configured to send custom alerts to _Alertmanager_.
+Alertmanager then processes and handles the alerts, including sending notifications through different mechanisms or third-party services. + +The _exporters_ can be libraries, processes, devices, or anything else exposing metrics so that they can be scraped by Prometheus.
+Such metrics are usually made available at the `/metrics` endpoint, which allows them to be scraped directly from Prometheus without the need of an agent. + +### Extras + +As welcomed addition, [Grafana] can be configured to use Prometheus as a backend of its in order to provide data visualization and dashboarding functions on the data it provides. + +## Configuration + +The default configuration file is at `/etc/prometheus/prometheus.yml`. + +```yml +global: + scrape_interval: 15s +scrape_configs: + - job_name: prometheus + static_configs: + - targets: [ 'localhost:9090' ] + - job_name: nodes + static_configs: + - targets: + - fqdn:9100 + - host.local:9100 +``` + +## Queries + +Prometheus' query syntax is [PromQL]. + +All data is stored as time series, each one identified by a metric name, e.g. `node_filesystem_avail_bytes` for available filesystem space.
+Metrics' names can be used in the expressions to select all of the time series with this name and produce an **instant vector**. + +Time series can be filtered using selectors and labels (sets of key-value pairs): + +```promql +node_filesystem_avail_bytes{fstype="ext4"} +node_filesystem_avail_bytes{fstype!="xfs"} +``` + +Square brackets allow to select a range of samples from the current time backwards: + +```promql +node_memory_MemAvailable_bytes[5m] +``` + +When using time ranges, the vector returned will be a **range vector**. + +[Functions] can be used to build advanced queries: + +```promql +100 * (1 - avg by(instance)(irate(node_cpu_seconds_total{job='node_exporter',mode='idle'}[5m]))) +``` + +![advanced query](prometheus%20advanced%20query.png) + +Labels are used to filter the job and the mode. `node_cpu_seconds_total` returns a **counter**, and the irate() function calculates the **per-second rate of change** based on the last two data points of the range interval.
+To calculate the overall CPU usage, the idle mode of the metric is used. Since idle percent of a processor is the opposite of a busy processor, the irate value is subtracted from 1. To make it a percentage, it is multiplied by 100. + ## Further readings - [Website] @@ -15,11 +85,13 @@ Monitoring system that collects metrics from configured targets at given interva - [Node exporter] - [SMNP exporter] - [`ordaa/boinc_exporter`][ordaa/boinc_exporter] +- [Grafana] ## Sources All the references in the [further readings] section, plus the following: +- [Getting started with Prometheus] - [Node exporter guide] - [SNMP monitoring and easing it with Prometheus] - [`prometheus/node_exporter`][prometheus/node_exporter] @@ -30,10 +102,12 @@ All the references in the [further readings] section, plus the following: --> +[functions]: https://prometheus.io/docs/prometheus/latest/querying/functions/ [github]: https://github.com/prometheus/prometheus [node exporter guide]: https://prometheus.io/docs/guides/node-exporter/ [prometheus/node_exporter]: https://github.com/prometheus/node_exporter [prometheus/snmp_exporter]: https://github.com/prometheus/snmp_exporter +[promql]: https://prometheus.io/docs/prometheus/latest/querying/basics/ [website]: https://prometheus.io/ @@ -48,5 +122,6 @@ All the references in the [further readings] section, plus the following: [docker/monitoring]: ../docker/monitoring/README.md +[getting started with prometheus]: https://opensource.com/article/18/12/introduction-prometheus [ordaa/boinc_exporter]: https://gitlab.com/ordaa/boinc_exporter [snmp monitoring and easing it with prometheus]: https://medium.com/@openmohan/snmp-monitoring-and-easing-it-with-prometheus-b157c0a42c0c