frontend

command
v0.14.0 Latest Latest
Warning

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

Go to latest
Published: Oct 9, 2024 License: Apache-2.0 Imports: 22 Imported by: 0

README

Frontend

NOTE: Consider using datasource-syncer for Grafana integration.

The frontend binary is a thin query frontend for Google Cloud Managed Service for Prometheus (GMP) that looks and feels like a regular Prometheus server. It primarily serves as a target URL for a Prometheus datasource in Grafana and to access GMP via the well-known Prometheus UI.

Currently, the following API endpoints are supported:

  • api/v1/query
  • api/v1/query_range
  • api/v1/label/__name__/values

Spinup

The frontend authenticates to GMP with credentials (typically a service account) and re-exposes the JSON/HTTP API unauthenticated (or for use with a custom authentication mechanism).

A frontend instance serves read traffic for a single Google Cloud Monitoring workspace, identified by the project.

PROJECT_ID=$(gcloud config get-value core/project)
# Default gcloud credentials. Substitute for service account key in production.
CREDENTIALS=$HOME/.config/gcloud/application_default_credentials.json

For example, from this directory:

bash ../../pkg/ui/build.sh # If you want to use UI.
go run main.go \
  --web.listen-address=:19090 \
  --query.credentials-file=$CREDENTIALS \
  --query.project-id=$PROJECT_ID

Access the frontend UI in your browser at http://localhost:19090.

Flags

Usage of frontend:
  -query.credentials-file string
    	JSON-encoded credentials (service account or refresh token). Can be left empty if default credentials have sufficient permission.
  -query.project-id string
    	Project ID of the Google Cloud Monitoring workspace project to query.
  -query.target-url string
    	The URL to forward authenticated requests to. (PROJECT_ID is replaced with the --query.project-id flag.) (default "https://monitoring.googleapis.com/v1/projects/PROJECT_ID/location/global/prometheus")
  -web.external-url string
    	The URL under which the frontend is externally reachable (for example, if it is served via a reverse proxy). Used for generating relative and absolute links back to the frontend itself. If the URL has a path portion, it will be used to prefix served HTTP endpoints. If omitted, relevant URL components will be derived automatically.
  -web.listen-address string
    	Address on which to expose metrics and the query UI. (default ":19090")

Docker

You can also build a docker image from source using make frontend.

Authentication

The frontend supports incoming authentication using basic auth by providing a username and password on the incoming request. These are validated against the AUTH_USERNAME and AUTH_PASSWORD environment variables, which must be set on the frontend pod.

UI Development

Refer to pkg/ui for more information on how to develop or update UI.

Documentation

Overview

A proxy that forwards incoming requests to an HTTP endpoint while authenticating it with static service account credentials or the default service account on GCE instances. It's primarily intended to authenticate Prometheus queries coming from Grafana against GMP as Grafana has no option to configure OAuth2 credentials.

Jump to

Keyboard shortcuts

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