Search code examples
kubernetesgoogle-kubernetes-engineprometheuskubernetes-helm

How do you add scrape targets to a Prometheus server that was installed with Kubernetes-Helm?


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?


Solution

  • 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