- Lab
- A Cloud Guru
Configuring Prometheus to Use Service Discovery
Recently, your team has deployed Prometheus to the companies Kubernetes cluster. Now it is time to use service discovery to find targets for cAdvisor and the Kubernetes API. You have been tasked with modifying the Prometheus Config Map that is used to create the `prometheus.yml` file. Create the scrape config and add the jobs for `kubernetes-apiservers` and `kubernetes-cadvisor`. Then, propagate the changes to the Prometheus pod.
Path Info
Table of Contents
-
Challenge
Configure the Service Discovery Targets
Prepare the environment and create the monitoring namespace as below:
sudo su - cd /root/prometheus ./bootstrap.sh kubectl get pods -n monitoring
Edit
prometheus-config-map.yml
and add in the two service discovery targets:vi prometheus-config-map.yml
When we're done, the whole file should look like this:
apiVersion: v1 kind: ConfigMap metadata: name: prometheus-server-conf labels: name: prometheus-server-conf namespace: monitoring data: prometheus.yml: |- global: scrape_interval: 5s evaluation_interval: 5s scrape_configs: - job_name: 'kubernetes-apiservers' kubernetes_sd_configs: - role: endpoints scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name] action: keep regex: default;kubernetes;https - job_name: 'kubernetes-cadvisor' scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token kubernetes_sd_configs: - role: node relabel_configs: - action: labelmap regex: __meta_kubernetes_node_label_(.+) - target_label: __address__ replacement: kubernetes.default.svc:443 - source_labels: [__meta_kubernetes_node_name] regex: (.+) target_label: __metrics_path__ replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
-
Challenge
Apply the Changes to the Prometheus Configuration Map
Now, apply the changes that were made to
prometheus-config-map.yml
:kubectl apply -f prometheus-config-map.yml
-
Challenge
Delete the Prometheus Pod
- List the pods to find the name of the Prometheus pod:
kubectl get pods -n monitoring
- Delete the Prometheus pod:
kubectl delete pods <POD_NAME> -n monitoring
- Open up a new web browser tab, and navigate to the Expression browser. This will be at the public IP of the lab server, on port
30000
:
http://<IP>:30000
- Click on Status, and select Target from the dropdown. We should see two targets in there.
What's a lab?
Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.
Provided environment for hands-on practice
We will provide the credentials and environment necessary for you to practice right within your browser.
Guided walkthrough
Follow along with the author’s guided walkthrough and build something new in your provided environment!
Did you know?
On average, you retain 75% more of your learning if you get time for practice.