rest

package
v0.5.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 30, 2020 License: Apache-2.0, BSD-3-Clause Imports: 14 Imported by: 0

Documentation

Overview

Package rest provides a REST API to access the features of the PromQL language server with a stateless API.

The returned datastructures are taken from the Language Server Protocol Specification (https://microsoft.github.io/language-server-protocol/specifications/specification-current/)

Supported endpoints:

/diagnostics
/completion
/hover
/signatureHelp

URL Query Parameters:

expr  : A PromQL expression.
limit : (optional, only for /diagnostics and /completion endpoints) The maximum number of diagnostic messages returned.
line  : (only for /signatureHelp, /hover and /completion endpoints) The line (0 based) for which the metadata is queried.
char  : (only for /signatureHelp, /hover and /completion endpoints) The column (0 based) for which the metadata is queried. Characters are counted as UTF16 Codepoints.

Examples:

$ curl 'localhost:8080/diagnostics?expr=some_metric()&limit=100'|jq
[
  {
    "range": {
      "start": {
        "line": 0,
        "character": 0
      },
      "end": {
        "line": 0,
        "character": 11
      }
    },
    "severity": 1,
    "source": "promql-lsp",
    "message": "unknown function with name \"some_metric\""
  }
]

$  curl 'localhost:8080/completion?expr=sum(go)&line=0&char=6&limit=2'|jq
[
  {
    "label": "go_gc_duration_seconds",
    "kind": 12,
    "sortText": "__3__go_gc_duration_seconds",
    "textEdit": {
      "range": {
        "start": {
          "line": 0,
          "character": 4
        },
        "end": {
          "line": 0,
          "character": 6
        }
      },
      "newText": "go_gc_duration_seconds"
    }
  },
  {
    "label": "go_gc_duration_seconds_count",
    "kind": 12,
    "sortText": "__3__go_gc_duration_seconds_count",
    "textEdit": {
      "range": {
        "start": {
          "line": 0,
          "character": 4
        },
        "end": {
          "line": 0,
          "character": 6
        }
      },
      "newText": "go_gc_duration_seconds_count"
    }
  }
]

Try out the API:

Use the PromQL language server with a configuration file like this:

rest_api_port: 8080
prometheus_url: http://localhost:9090

Run it with:

$ promql-langserver --config-file config.yaml
REST API: Listening on port  8080
Prometheus: http://localhost:9090

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CreateHandler

func CreateHandler(ctx context.Context, prometheusClient promClient.Client, logger log.Logger) (http.Handler, error)

CreateHandler creates an http.Handler for the PromQL langserver REST API.

Expects a prometheus Client as a second argument. The provided Logger should be synchronized.

func CreateInstHandler

func CreateInstHandler(ctx context.Context, prometheusClient promClient.Client, r *prometheus.Registry, logger log.Logger) (http.Handler, error)

CreateInstHandler creates an instrumented http.Handler for the PromQL langserver REST API.

Expects a prometheus Client as a second argument and a Registry as third argument. The provided Logger should be synchronized.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL