10
votes

Background

I have installed Prometheus on my Kubernetes cluster (hosted on Google Container Engineer) using the Helm chart for Prometheus.

The Problem

I cannot figure out how to add scrape targets to the Prometheus server. The prometheus.io site describes how I can mount a prometheus.yml file (which contains a list of scrape targets) to a Prometheus Docker container -- I have done this locally and it works. However, I don't know how to specify scrape targets for a Prometheus setup installed via Kubernetes-Helm. Do I need to add a volume to the Prometheus server pod that contains the scrape targets, and therefore update the YAML files generated by Helm??

I am also not clear on how to expose metrics in a Kubernetes Pod -- do I need to forward a particular port?

1

1 Answers

18
votes

You need to add annotations to the service you want to monitor.

apiVersion: v1
kind: Service
metadata:
  annotations:
    prometheus.io/scrape: 'true'

From the prometheus.yml in the chart:

  • prometheus.io/scrape: Only scrape services that have a value of true
  • prometheus.io/scheme: http or https
  • prometheus.io/path: override if the metrics path is not /metrics
  • prometheus.io/port: If the metrics are exposed on a different port

And yes you need to expose the port with metrics to the service so Prometheus could access it