Prometheus provider
The Prometheus provider collects metrics from a Prometheus instance and makes them available to Akamas.
This provider includes support for several technologies (Prometheus exporters). In any case, custom queries can be defined to gather the desired metrics.
Prerequisites
This section provides the minimum requirements that you should match before using the Prometheus provider.
Supported Prometheus versions:
Akamas supports Prometheus starting from version2.26.
Connectivity between the Akamas server and the Prometheus server is also required. By default, Prometheus is run on port 9090.
Supported Prometheus exporters
Node exporter (Linux system metrics)
JMX exporter (Java metrics)
cAdvisor (Docker container metrics)
CloudWatch exporter (AWS resources metrics)
Jmeter (Web application metrics)
The Prometheus provider includes queries for most of the monitoring use cases these exporters cover. If you need to specify custom queries or make use of exporters not currently supported you can specify them as described in creating Prometheus telemetry instances.
Supported Akamas component types
Kubernetes (Pod, Container, Workload, Namespace)
Web Application
Java (java-ibm-j9vm-6, java-ibm-j9vm-8, java-eclipse-openj9-11, java-openjdk-8, java-openjdk-11, java-openjdk-17)
Linux (Ubuntu-16.04, Rhel-7.6)
Refer to Prometheus provider metrics mapping to see how component-type metrics are extracted by this provider.
Component configuration
Akamas reasons in terms of a system to be optimized and in terms of parameters and metrics of components of that system. To understand which metrics collected from Prometheus should be mapped to a component, the Prometheus provider looks up some properties in the components of a system grouped under prometheus
property. These properties depend on the exporter and the component type.
Nested under this property you can also include any additional field your use case may require to filter the imported metrics further. These fields will be appended in queries to the list of label matches in the form field_name=~'field_value'
, and can specify either exact values or patterns.
Notice: you should configure your Prometheus instances so that the Prometheus provider can leverage the instance
property of components, as described in the Setup datasource section here above.
It is important that you add instance
and, optionally, the job
properties to the components of a system so that the Prometheus provider can gather metrics from them:
# Specification for a component, whose metrics should be collected by the Prometheus Provider
name: jvm1 # name of the component
description: jvm1 for payment services # description of the component
properties:
prometheus:
instance: service0001 # instance of the component: where the component is located relative to Prometheus
job: jmx # job of the component: which prom exporter is gathering metrics from the component
Prometheus configuration
The Prometheus provider does not usually require a specific configuration of the Prometheus instance it uses.
When gathering metrics for hosts it's usually convenient to set the value of the instance
label so that it matches the value of the instance
property in a component; in this way, the Prometheus provider knows which system component each data point refers to.
Here’s an example configuration for Prometheus that sets the instance
label:
# Custom global config
global:
scrape_interval: 5s # Set the scrape interval to every 15 seconds. The default is every 1 minute.
evaluation_interval: 5s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# A scrape configuration containing exactly one endpoint to scrape:
scrape_configs:
# Node Exporter
- job_name: 'node'
static_configs:
- targets: ["localhost:9100"]
relabel_configs:
- source_labels: ["__address__"]
regex: "(.*):.*"
target_label: instance
replacement: value_of_instance_property_in_the_component_the_data_points_should_refer_to
Last updated
Was this helpful?