Skip to content

Prometheus Datasource Go SDK#

Constructor#

import "github.com/perses/plugins/prometheus/sdk/go/datasource"

var options []datasource.Option
datasource.Prometheus(options...)

Need a list of options. At least direct URL or proxy URL, in order to work.

Default options#

  • None

Available options#

Direct URL#

import "github.com/perses/plugins/prometheus/sdk/go/datasource"

datasource.DirectURL("https://prometheus.demo.do.prometheus.io")

Configure the access to the Prometheus datasource with a direct URL.

Proxy#

import "github.com/perses/plugins/prometheus/sdk/go/datasource"

datasource.HTTPProxy("https://current-domain-name.io", httpProxyOptions...)

Configure the access to the Prometheus datasource with a proxy URL. More info at HTTP Proxy.

Query Parameters#

import "github.com/perses/plugins/prometheus/sdk/go/datasource"

// Add multiple query parameters at once
datasource.QueryParams(map[string]string{
    "dedup": "false",
    "max_source_resolution": "0s",
})

// Or add individual query parameters
datasource.QueryParam("dedup", "false")
datasource.QueryParam("max_source_resolution", "0s")

Configure query parameters to be appended to all Prometheus API requests. This is useful for: - Thanos deduplication control (dedup=false) - Resolution control (max_source_resolution=0s) - Any custom query parameters required by your Prometheus setup

Examples#

package main

import (
    "github.com/perses/perses/go-sdk/dashboard"

    promDs "github.com/perses/plugins/prometheus/sdk/go/datasource"
)

func main() {
    dashboard.New("Example Dashboard",
        dashboard.AddDatasource("prometheusDemo", 
            promDs.Prometheus(
                promDs.DirectURL("https://prometheus.demo.do.prometheus.io/")
            ),
        ),
    )
}

Another example that makes use of http query params for a Thanos setup:

func main() {
    dashboard.New("Example Dashboard",
        dashboard.AddDatasource("thanosQuery", 
            promDs.Prometheus(
                promDs.DirectURL("https://thanos-query.example.com/"),
                promDs.QueryParams(map[string]string{
                    "dedup":                 "false",
                    "max_source_resolution": "0s",
                    "partial_response":      "true",
                }),
            ),
        ),
    )
}