/prometheus-engine

Google Cloud Managed Service for Prometheus libraries and manifests.

Primary LanguageGoApache License 2.0Apache-2.0

Prometheus Engine

Go Report Card GoDoc GitHub go.mod Go version License Build status

This repository contains various binaries and packages for client-side usage of Google Cloud Managed Service for Prometheus (GMP), a managed Prometheus offering on top of Google Cloud Monitoring (GCM).

For more documentation and to get started, go to g.co/cloud/managedprometheus.

Binaries

  • config-reloader: An auxiliary binary to initiate reload on configuration file changes.
  • frontend: An authorizing proxy for the Prometheus-compatible query API of GMP. It additionally hosts a query UI.
  • operator: A Kubernetes operator for managed metric collection for GMP.
  • rule-evaluator: A Prometheus rule evaluation engine that evaluates against GMP.

For the fully Prometheus-compatible binary that writes ingested data into GMP/GCM, see GoogleCloudPlatform/prometheus.

Docker Images

Images for this repo are regularly released in the GKE release GCR.

Build

Run make help shows a list of candidate targets with documentation.

Any go application in ./cmd/ with an associated main.go, e.g. ./cmd/operator/main.go is a candidate for build by running:

make operator
  • Running make bin will generate all the go binaries.
    • Setting NO_DOCKER=1 here will build all the binaries natively on the host machine.
  • Running make test will run unit and e2e tests.
    • If NO_DOCKER=1 is set, end-to-end tests will be run against the current kubectl context. It is assumed the cluster has access to the GCM API. Ensure GMP_CLUSTER and GMP_LOCATION are set, e.g.
    NO_DOCKER=1 GMP_CLUSTER=<my-cluster> GMP_LOCATION=<cluster-location> make test
  • Running make presubmit will run various checks on the repo to ensure it is ready to submit a pull request. This includes testing, formatting, and regenerating files in-place.
    • Setting DRY_RUN=1 won't regenerate any files but will return a non-zero exit code if the current changes differ from what would be. This can be useful in running in CI workflows.

Dependencies

In order to best develop and contribute to this repository, the following dependencies are recommended:

  1. go
  2. gcloud
  3. kubectl
  • Can also be installed via
gcloud components install kubectl
  1. Docker with buildx plugin
  • Can also be run via
gcloud alpha cloud-shell ssh -- -nNT -L `pwd`/docker.sock:/var/run/docker.sock
# Then in separate terminal.
export DOCKER_HOST=unix://docker.sock
  1. For UI development or update (e.g. to resolve UI security issue), npm is required. See pkg/ui documentation for details.