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
api/v1/rules
api/v1/alerts
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.
Usage of frontend:
-log.level string
The level of logging. Can be one of 'debug', 'info', 'warn', 'error' (default "info")
-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")
-rules.target-urls string
Comma separated lists of URLs that support HTTP Prometheus Alert and Rules APIs (/api/v1/alerts, /api/v1/rules), e.g. GMP rule-evaluator. NOTE: Results are merged as-is, no sorting and deduplication is done. (default "http://rule-evaluator.gmp-system.svc.cluster.local:19092")
-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")
You can also build a docker image from source using make frontend
.
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.
Refer to pkg/ui for more information on how to develop or update UI.