Skip to main content

Prometheus

Reading time: 0 minute(s) (0 words)

Prometheus is an open-source software application used for event monitoring and alerting. It records real-time metrics in a time series database built using an HTTP pull model, with flexible query language and real-time alerting.

Prometheus parameters and supported features in Nobl9
General support:
Release channel: Stable, Beta
Connection method: Agent
Replay and SLI Analyzer: Historical data limit 30 days
Event logs: Not supported
Query checker: Not supported
Query parameters retrieval: Supported
Timestamp cache persistence: Supported

Query parameters:
Query interval: 1 min
Query delay: 0 sec
Jitter: 15 sec
Timeout: 30 sec

Agent details and minimum required versions for supported features:
Plugin name: n9prometheus
Query delay environment variable: PROM_QUERY_DELAY
Replay and SLI Analyzer: 0.65.0
Query parameters retrieval: 0.73.2
Timestamp cache persistence: 0.65.0
Custom HTTP headers: 0.88.0 / 0.83.0-beta

Authentication

Prometheus does not provide an authentication layer, the Nobl9 agent only collects the URL for the Prometheus integration definition. Authentication is up to the user. Operators are expected to run an authenticating reverse proxy in front of their services, such as NGINX using basic auth or an OAuth2 proxy.

URL

Prometheus agent makes requests to Range Queries | Prometheus documentation API endpoint in the form /api/v1/query_range. For example:

GET /api/v1/query_range
POST /api/v1/query_range

Hence, do not include the above API path in the URL. Specify only the base URL for the Prometheus server. For example, if your Prometheus server is available under <http://prometheus.example.com> and you access API via <http://prometheus.example.com/api/v1>, use only <http://prometheus.example.com>.

Other APIs or Web UIs have similar path endings, which should also be omitted, for example, the /graph part of the path.

The Prometheus integration does not integrate directly with data exposed from services in the Prometheus Format | Prometheus documentation, usually under /metrics path. Do not set the URL to metrics exposed directly from such a service.

Basic authentication

A common approach for basic authentication is to run an authenticating reverse proxy (such as NGINX with basic_auth) in front of your Prometheus services. You can configure basic authentication by adding an Authorization request header.

To activate basic_auth for your Prometheus agent, deploy your agent, passing the AUTH_METHOD, USERNAME, and PASSWORD environment variables along with other configuration parameters:

Kubernetes configuration
spec:
template:
spec:
containers:
env:
- name: AUTH_METHOD
value: "basic_auth" # One of: none, sigv4, basic_auth, bearer_token
- name: USERNAME
valueFrom:
secretKeyRef:
key: basic_auth_username
name: agent-prometheus-with-basic-auth
- name: PASSWORD
valueFrom:
secretKeyRef:
key: basic_auth_password
name: agent-prometheus-with-basic-auth

Bearer token authentication

You can also authenticate your Nobl9 Prometheus agent using a bearer token. For this method, deploy your Prometheus agent, passing the AUTH_METHOD and BEARER_TOKEN environment variables.

Kubernetes configuration
spec:
template:
spec:
containers:
- name: prometheus-agent
env:
- name: AUTH_METHOD
value: "bearer_token" # One of: none, sigv4, basic_auth, bearer_token
- name: BEARER_TOKEN
value: "/path/to/token/mount/token-file" # Token file contents will be added as Authorization header

Adding Prometheus as a data source

You can add the Prometheus data source using the agent connection method.

Nobl9 Web

Follow the instructions below to create your Prometheus agent connection:

  1. Navigate to Integrations > Sources.
  2. Click .
  3. Click the required Source button.
  4. Choose Agent.
  1. Select one of the following Release Channels:
    • The stable channel is fully tested by the Nobl9 team. It represents the final product; however, this channel does not contain all the new features of a beta release. Use it to avoid crashes and other limitations.
    • The beta channel is under active development. Here, you can check out new features and improvements without the risk of affecting any viable SLOs. Remember that features in this channel can change.
  2. Add the URL to connect to your data source (mandatory).
    Refer to the Authentication section for more details.

  3. Set Step to define the metric resolution (mandatory, default: 60 seconds).
    The Step value must be a positive integer. It controls how many data points Nobl9 retrieves in a single query.
      For optimal operation, consider the following recommendations for its value:
    • Aim for 15 seconds or more
    • Keep it less than or equal to your Prometheus query interval

    Minimum agent version requirement
    The Step parameter is supported starting from Nobl9 agent versions 0.105.0-beta or 0.105.0 and later.
  1. Select a Project (mandatory).
    Project is a way to organize your Nobl9 resources and manage access to them.
    When Project is skipped, Nobl9 uses the default project.
  2. Enter a Display Name (optional).
    Spaces are allowed.
  3. Enter a Name (mandatory).
    The name is mandatory and can only contain lowercase, alphanumeric characters, and dashes (for example, my-project-1). Nobl9 duplicates the display name here, transforming it into the supported format, but you can edit the result.
  4. Enter a Description (optional).
    Provide extra details about it, its purpose, responsible persons, etc.
    Up to 1050 characters.
  5. Specify the Query delay to set a customized delay for queries when pulling the data from the data source.
    • The default value in Prometheus integration for Query delay is 0 seconds.
    Changing the query delay
    Changing the query delay can affect your SLI data.
    Learn more about query delay and its impact.
  6. Enter a Maximum Period for Historical Data Retrieval.
    • This value defines how far back in the past your data will be retrieved when replaying your SLO based on this data source.
    • The maximum period value depends on the data source.
      Find the maximum value for your data source.
    • A greater period can extend the loading time when creating an SLO.
      • The value must be a positive integer.
  7. Enter a Default Period for Historical Data Retrieval.
    • It is used by SLOs connected to this data source.
    • The value must be a positive integer or 0.
    • By default, this value is set to 0. When you set it to >0, you will create SLOs with Replay.
  8. Click Add Data Source.
  9. Deploy your agent in a Kubernetes cluster or Docker container.
  10. To configure custom HTTP headers for your Nobl9 agent, include them in your agent deployment.

YAML

Create a YAML definition to set up an agent connection with Prometheus. You can use the following example:

YAML definition for the agent connection method
apiVersion: n9/v1alpha
kind: Agent
metadata:
name: prometheus
displayName: Prometheus Agent
project: default
annotations:
area: latency
env: prod
region: us
team: sales
spec:
description: Example Prometheus Agent
releaseChannel: stable
prometheus:
url: http://prometheus.prometheus:9090
step: 15
historicalDataRetrieval:
maxDuration:
value: 30
unit: Day
defaultDuration:
value: 15
unit: Day
queryDelay:
value: 1
unit: Second
FieldTypeDescription
queryDelay.unit
mandatory
enumSpecifies the unit for the query delay. Possible values: Second | Minute.
• Check query delay documentation for default unit of query delay for each source.
queryDelay.value
mandatory
numericSpecifies the value for the query delay.
• Must be a number less than 1440 minutes (24 hours).
• Check query delay documentation for default unit of query delay for each source.
logCollectionEnabled
optional
booleanOptional. Defaults to false. Set to true if you'd like your direct to collect event logs. Contact us to activate it.
releaseChannel
mandatory
enumSpecifies the release channel. Accepted values: beta | stable.
Source-specific fields
prometheus.url
mandatory
stringBase URL to Prometheus server. See authentication section above for more details.
prometheus.step
mandatory
integerDefines metrics resolution in seconds. Must be a positive integer, 60 seconds by default. Recommendations: Use a value of at least 15 seconds and less than or equal to your Prometheus query interval.
Replay-related fields
historicalDataRetrieval
optional
n/aOptional structure related to configuration related to Replay.
❗ Use only with supported sources.
• If omitted, Nobl9 uses the default values of value: 0 and unit: Day for maxDuration and defaultDuration.
maxDuration.value
optional
numericSpecifies the maximum duration for historical data retrieval. Must be integer ≥ 0. See Replay documentation for values of max duration per data source.
maxDuration.unit
optional
enumSpecifies the unit for the maximum duration of historical data retrieval. Accepted values: Minute | Hour | Day.
defaultDuration.value
optional
numericSpecifies the default duration for historical data retrieval. Must be integer ≥ 0 and maxDuration.
defaultDuration.unit
optional
enumSpecifies the unit for the default duration of historical data retrieval. Accepted values: Minute | Hour | Day.
Deploy your agent in a Kubernetes cluster or Docker container.

To configure custom HTTP headers for your Nobl9 agent, include them in your agent deployment.

Prometheus-compatible solutions support

This section describes how to configure the Nobl9 Prometheus agent to work with various Prometheus-compatible solutions. The solutions provide Prometheus-compatible APIs, allowing the Nobl9 agent to collect metrics.

Cortex

Cortex takes the metrics collected by multiple, separate Prometheus instances and stores them centrally. For deployment, we recommend using the official Helm chart.

According to the Cortex Architecture documentation, Prometheus API is exposed by Nginx at <http://cortex-nginx/prometheus>. Use this address as your Prometheus URL in the agent configuration. For custom endpoints, refer to the API documentation and ensure the agent can access the /api/v1/query_range endpoint.

For multi-tenant deployments using Cortex auth, configure the agent with Kubernetes or Docker, as follows:

Kubernetes configuration
env:
- name: PROMETHEUS_X_SCOPE_ORG_ID
value: <X-Scope-OrgID>
Docker command line
docker run -d --restart on-failure \
--name nobl9-agent-nobl9-dev-stable-prometheus \
-e PROMETHEUS_X_SCOPE_ORG_ID="<X-Scope-OrgID>"

Grafana Cloud

Grafana Cloud integrates with Prometheus through the Prometheus HTTP API, making it compatible with the Nobl9 Prometheus agent.

Configuration steps:

  1. Set up authentication using the basic_auth proxy.

  2. Use the /api/prom/api/v1/query_range endpoint for API access.

  3. Configure your Grafana Source URL by appending /api/prom/ to your host URL:

    # Example:
    # Instead of: http://HOST/
    # Use: http://HOST/api/prom/

For configuration details, see the Grafana Cloud documentation.

Thanos

Thanos provides high availability for Prometheus and integrates with the Nobl9 Prometheus agent through its Querier component. Configure your agent using the Querier address as the Prometheus URL.

For detailed setup instructions, refer to the Thanos Components guide.

VictoriaMetrics

VictoriaMetrics provides Prometheus-compatible API endpoints, allowing you to query it using the Prometheus agent. To set up VictoriaMetrics querying:

  1. Deploy your Prometheus using the bearer token authentication.
  2. Ensure the VictoriaMetrics URL points to the base endpoint (without /api/v1/query_range).
Important
  • The bearer token file must be accessible to the agent
  • The token content will be added as an Authorization header for all requests
  • For security, mount the token file as a secret in Kubernetes deployments

For additional configuration options, refer to the VictoriaMetrics documentation.

Check out these related guides and references: