This document describes how to configure your Google Kubernetes Engine deployment so that you can use Google Cloud Managed Service for Prometheus to collect metrics from the HTTP requests served by your application. This document describes how to do the following:
- Set up your application to export HTTP metrics in a predefined format.
- Configure a PodMonitoring resource for Managed Service for Prometheus to collect the exported metrics.
- View the Application dashboard for your GKE Deployment.
These instructions apply only if you are using managed collection with Managed Service for Prometheus.
Set up
To collect metrics from your HTTP server that can be displayed on the Application dashboard, you must export the following metrics as described:
http_requests_total
of typecounter
, with the labelscode
andmethod
.http_request_duration_seconds_bucket
of typehistogram
, with the labelmethod
.
For an example that collects these metrics by using the Prometheus Go client, see prometheus-example-app.
To verify that your HTTP server is emitting metrics on the expected endpoints, do the following:
- Set up port forwarding by using the following command:
kubectl -n NAMESPACE_NAME port-forward deploy/HTTP_SERVER_DEPLOYMENT_NAME PROMETHEUS_PORT_NUMBER
- Access
localhost:PROMETHEUS_PORT_NUMBER
by using the browser or thecurl
utility in another terminal session.
Define a PodMonitoring resource
For target discovery, the Managed Service for Prometheus Operator requires a PodMonitoring resource that corresponds to the HTTP server in the same namespace.
You can use the following PodMonitoring configuration:
apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: my-prometheus-http-app labels: app.kubernetes.io/name: my-prometheus-http-app app.kubernetes.io/part-of: google-cloud-managed-prometheus spec: endpoints: - port: web scheme: http interval: 30s path: /metrics selector: matchLabels: app.kubernetes.io/name: prometheus-example-app
Ensure that the values of the port
and MatchLabels
fields match those of the HTTP application that you want to
monitor.
To apply configuration changes from a local file, run the following command:
kubectl apply -n NAMESPACE_NAME -f FILE_NAME
You can also use Terraform to manage your configurations.
View application metrics
To view request, error-rate, and latency metrics from your HTTP application, do the following:
-
In the Google Cloud console, go to the Workloads page:
If you use the search bar to find this page, then select the result whose subheading is Kubernetes Engine.
- Click a Deployment in the list of workloads. The Type column in the list indicates the type of the workload.
- On the Deployment details page, click the Observability tab.
- Select Application in the dashboard selector.
For more information, see Use application performance metrics.
Troubleshooting
For information about troubleshooting metric ingestion problems in Managed Service for Prometheus, see Problems with collection from exporters in Troubleshooting ingestion-side problems.