This example shows how to expose custom metrics to Prometheus with a Golang service in Kyma. To do so, follow these steps:
- Expose a sample application serving metrics on the
8081
port. - Access the exposed metrics in Prometheus.
- Kyma as the target deployment environment.
- Deployed custom kube-prometheus-stack as described in the prometheus example.
-
Export your Namespace as a variable. Replace the
{namespace}
placeholder in the following command and run it:export K8S_NAMESPACE="{namespace}"
-
Ensure that your Namespace has Istio sidecar injection enabled. This example assumes that the metrics are exposed in a strict mTLS mode:
kubectl label namespace ${K8S_NAMESPACE} istio-injection=enabled
-
Deploy the service:
kubectl apply -f https://raw.githubusercontent.com/kyma-project/examples/main/prometheus/monitoring-custom-metrics/deployment/deployment.yaml -n $K8S_NAMESPACE
-
Deploy the ServiceMonitor:
kubectl apply -f https://raw.githubusercontent.com/kyma-project/examples/main/prometheus/monitoring-custom-metrics/deployment/service-monitor.yaml
-
Run the
port-forward
command on themonitoring-prometheus
service:kubectl -n ${K8S_NAMESPACE} port-forward $(kubectl -n ${K8S_NAMESPACE} get service -l app=kube-prometheus-stack-prometheus -oname) 9090
All the sample-metrics endpoints appear as Targets
under http://localhost:9090/targets#job-sample-metrics
list.
- Use either
cpu_temperature_celsius
orhd_errors_total
in the expression field underhttp://localhost:9090/graph
. - Click the Execute button to check the values scraped by Prometheus.
Run the following commands to completely remove the example and all its resources from the cluster:
-
Remove ServiceMonitor in the
kyma-system
Namespace.kubectl delete servicemonitor -l example=monitoring-custom-metrics -n kyma-system
-
Run the following command to completely remove the example service and all its resources from the cluster:
kubectl delete all -l example=monitoring-custom-metrics -n $K8S_NAMESPACE