{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Fetching metrics\n", "\n", "In this notebook, we will learn how to use the Prometheus API client for fetching and formatting the raw metrics obtained from a [Prometheus](https://prometheus.io/) host to drive better data science analysis on these metrics. \n", "\n", "You can find more information about the functions of the [API client here](https://prometheus-api-client-python.readthedocs.io/source/prometheus_api_client.html).\n", "\n", "## Installing the library:\n", "To begin any exploratory analysis, we need to first install all the required packages. \n", "\n", "For this notebook in particular, the [prometheus api client library](https://pypi.org/project/prometheus-api-client/) needs to be installed." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# !pip3 install prometheus-api-client\n", "# !pip3 install matplotlib pandas\n", "\n", "from prometheus_api_client import PrometheusConnect\n", "from prometheus_api_client.metric_range_df import MetricRangeDataFrame\n", "from prometheus_api_client.utils import parse_datetime\n", "from datetime import timedelta\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Connecting to Prometheus\n", "The `PrometheusConnect` module of the library can be used to connect to a Prometheus host.\n", "\n", "To know more about this module, you can refer to the [documentation](https://prometheus-api-client-python.readthedocs.io/en/master/source/prometheus_api_client.html#module-prometheus_api_client.prometheus_connect)\n", "\n", "We will connect to a public prometheus instance: http://demo.robustperception.io:9090" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Prometheus uri: http://demo.robustperception.io:9090\n" ] }, { "data": { "text/html": [ "
\n", " | metrics | \n", "
---|---|
0 | \n", "ALERTS | \n", "
1 | \n", "ALERTS_FOR_STATE | \n", "
2 | \n", "alertmanager_alerts | \n", "
3 | \n", "alertmanager_alerts_invalid_total | \n", "
4 | \n", "alertmanager_alerts_received_total | \n", "
... | \n", "... | \n", "
501 | \n", "scrape_duration_seconds | \n", "
502 | \n", "scrape_samples_post_metric_relabeling | \n", "
503 | \n", "scrape_samples_scraped | \n", "
504 | \n", "scrape_series_added | \n", "
505 | \n", "up | \n", "
506 rows × 1 columns
\n", "\n", " | __name__ | \n", "instance | \n", "job | \n", "state | \n", "value | \n", "
---|---|---|---|---|---|
timestamp | \n", "\n", " | \n", " | \n", " | \n", " | \n", " |
1.605986e+09 | \n", "alertmanager_alerts | \n", "demo.robustperception.io:9093 | \n", "alertmanager | \n", "active | \n", "4 | \n", "
1.605986e+09 | \n", "alertmanager_alerts | \n", "demo.robustperception.io:9093 | \n", "alertmanager | \n", "active | \n", "4 | \n", "
1.605986e+09 | \n", "alertmanager_alerts | \n", "demo.robustperception.io:9093 | \n", "alertmanager | \n", "active | \n", "4 | \n", "
1.605986e+09 | \n", "alertmanager_alerts | \n", "demo.robustperception.io:9093 | \n", "alertmanager | \n", "active | \n", "4 | \n", "
1.605986e+09 | \n", "alertmanager_alerts | \n", "demo.robustperception.io:9093 | \n", "alertmanager | \n", "active | \n", "4 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
1.606159e+09 | \n", "alertmanager_alerts | \n", "demo.robustperception.io:9093 | \n", "alertmanager | \n", "suppressed | \n", "0 | \n", "
1.606159e+09 | \n", "alertmanager_alerts | \n", "demo.robustperception.io:9093 | \n", "alertmanager | \n", "suppressed | \n", "0 | \n", "
1.606159e+09 | \n", "alertmanager_alerts | \n", "demo.robustperception.io:9093 | \n", "alertmanager | \n", "suppressed | \n", "0 | \n", "
1.606159e+09 | \n", "alertmanager_alerts | \n", "demo.robustperception.io:9093 | \n", "alertmanager | \n", "suppressed | \n", "0 | \n", "
1.606159e+09 | \n", "alertmanager_alerts | \n", "demo.robustperception.io:9093 | \n", "alertmanager | \n", "suppressed | \n", "0 | \n", "
34558 rows × 5 columns
\n", "\n", " | __name__ | \n", "instance | \n", "job | \n", "state | \n", "value | \n", "
---|---|---|---|---|---|
timestamp | \n", "\n", " | \n", " | \n", " | \n", " | \n", " |
2020-11-21 19:14:16.102999926+00:00 | \n", "alertmanager_alerts | \n", "demo.robustperception.io:9093 | \n", "alertmanager | \n", "active | \n", "4 | \n", "
2020-11-21 19:14:26.095999956+00:00 | \n", "alertmanager_alerts | \n", "demo.robustperception.io:9093 | \n", "alertmanager | \n", "active | \n", "4 | \n", "
2020-11-21 19:14:36.095999956+00:00 | \n", "alertmanager_alerts | \n", "demo.robustperception.io:9093 | \n", "alertmanager | \n", "active | \n", "4 | \n", "
2020-11-21 19:14:46.098000050+00:00 | \n", "alertmanager_alerts | \n", "demo.robustperception.io:9093 | \n", "alertmanager | \n", "active | \n", "4 | \n", "
2020-11-21 19:14:56.105000019+00:00 | \n", "alertmanager_alerts | \n", "demo.robustperception.io:9093 | \n", "alertmanager | \n", "active | \n", "4 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
2020-11-23 19:13:26.095999956+00:00 | \n", "alertmanager_alerts | \n", "demo.robustperception.io:9093 | \n", "alertmanager | \n", "suppressed | \n", "0 | \n", "
2020-11-23 19:13:36.105000019+00:00 | \n", "alertmanager_alerts | \n", "demo.robustperception.io:9093 | \n", "alertmanager | \n", "suppressed | \n", "0 | \n", "
2020-11-23 19:13:46.114000082+00:00 | \n", "alertmanager_alerts | \n", "demo.robustperception.io:9093 | \n", "alertmanager | \n", "suppressed | \n", "0 | \n", "
2020-11-23 19:13:56.096999884+00:00 | \n", "alertmanager_alerts | \n", "demo.robustperception.io:9093 | \n", "alertmanager | \n", "suppressed | \n", "0 | \n", "
2020-11-23 19:14:06.095999956+00:00 | \n", "alertmanager_alerts | \n", "demo.robustperception.io:9093 | \n", "alertmanager | \n", "suppressed | \n", "0 | \n", "
34558 rows × 5 columns
\n", "