General availability (GA) Open source

prometheus.exporter.databricks

The prometheus.exporter.databricks component embeds the databricks_exporter for collecting billing, jobs, pipelines, and SQL warehouse metrics from Databricks System Tables via HTTP for Prometheus consumption.

Usage

Alloy
prometheus.exporter.databricks "LABEL" {
    server_hostname     = "<DATABRICKS_SERVER_HOSTNAME>"
    warehouse_http_path = "<DATABRICKS_WAREHOUSE_HTTP_PATH>"
    client_id           = "<DATABRICKS_CLIENT_ID>"
    client_secret       = "<DATABRICKS_CLIENT_SECRET>"
}

Arguments

You can use the following arguments with prometheus.exporter.databricks:

NameTypeDescriptionDefaultRequired
server_hostnamestringThe Databricks workspace hostname (e.g., dbc-xxx.cloud.databricks.com).yes
warehouse_http_pathstringThe HTTP path of the SQL Warehouse (e.g., /sql/1.0/warehouses/abc123).yes
client_idstringThe OAuth2 Application ID (Client ID) of your Service Principal.yes
client_secretsecretThe OAuth2 Client Secret of your Service Principal.yes
query_timeoutdurationTimeout for individual SQL queries."5m"no
billing_lookbackdurationHow far back to look for billing data."24h"no
jobs_lookbackdurationHow far back to look for job runs."2h"no
pipelines_lookbackdurationHow far back to look for pipeline runs."2h"no
queries_lookbackdurationHow far back to look for SQL warehouse queries."1h"no
sla_threshold_secondsintDuration threshold (seconds) for job SLA miss detection.3600no
collect_task_retriesboolCollect task retry metrics (high cardinality due to task_key label).falseno

Blocks

The prometheus.exporter.databricks component doesn’t support any blocks. You can configure this component with arguments.

Exported fields

The following fields are exported and can be referenced by other components.

NameTypeDescription
targetslist(map(string))The targets that can be used to collect exporter metrics.

For example, the targets can either be passed to a discovery.relabel component to rewrite the targets’ label sets or to a prometheus.scrape component that collects the exposed metrics.

The exported targets use the configured in-memory traffic address specified by the run command.

Component health

prometheus.exporter.databricks is only reported as unhealthy if given an invalid configuration. In those cases, exported fields retain their last healthy values.

Debug information

prometheus.exporter.databricks doesn’t expose any component-specific debug information.

Debug metrics

prometheus.exporter.databricks doesn’t expose any component-specific debug metrics.

Prerequisites

Before using this component, you need:

  1. Databricks Workspace with Unity Catalog and System Tables enabled
  2. Service Principal with OAuth2 M2M authentication configured
  3. SQL Warehouse for querying System Tables (serverless recommended for cost efficiency)

See the Databricks documentation for detailed OAuth2 M2M setup instructions.

Example

The following example uses a prometheus.scrape component to collect metrics from prometheus.exporter.databricks:

Alloy
prometheus.exporter.databricks "example" {
  server_hostname     = "dbc-abc123-def456.cloud.databricks.com"
  warehouse_http_path = "/sql/1.0/warehouses/xyz789"
  client_id           = "my-service-principal-id"
  client_secret       = "my-service-principal-secret"
}

// Configure a prometheus.scrape component to collect databricks metrics.
prometheus.scrape "demo" {
  targets         = prometheus.exporter.databricks.example.targets
  forward_to      = [prometheus.remote_write.demo.receiver]
  scrape_interval = "5m"
  scrape_timeout  = "4m"
}

prometheus.remote_write "demo" {
  endpoint {
    url = "<PROMETHEUS_REMOTE_WRITE_URL>"

    basic_auth {
      username = "<USERNAME>"
      password = "<PASSWORD>"
    }
  }
}

Replace the following:

  • <PROMETHEUS_REMOTE_WRITE_URL>: The URL of the Prometheus remote_write compatible server to send metrics to.
  • <USERNAME>: The username to use for authentication to the remote_write API.
  • <PASSWORD>: The password to use for authentication to the remote_write API.

Tuning recommendations

  • scrape_interval: Default is 5 minutes. The exporter queries Databricks System Tables which can be slow. Increase to reduce SQL Warehouse costs.
  • scrape_timeout: Default is 4 minutes. The exporter typically takes 90-120 seconds per scrape depending on data volume.

High cardinality warning

The collect_task_retries flag adds task-level retry metrics which can significantly increase cardinality for workspaces with many jobs. Only enable if needed.

Compatible components

prometheus.exporter.databricks has exports that can be consumed by the following components:

Note

Connecting some components may not be sensible or components may require further configuration to make the connection work correctly. Refer to the linked documentation for more details.