Monitoring
Monitoring with Prometheus
Prometheus discovers new apps you deploy on K8s and starts collecting metrics automatically. Each component you want to monitor has an HTTP endpoint, and Prometheus logs whatever the endpoint returns.
This is part of a Prometheus config that filters by a specific namespace:
scrape_configs: # This is the YAML inside the ConfigMap.
- job_name: 'test-pods' # Used for test apps
kubernetes_sd_configs: # Finds targets from the Kubernetes API
- role: pod # Searches for Pods
relabel_configs: # Applies these filtering rules
- source_labels:
- __meta_kubernetes_namespace
action: keep # Includes Pods only where the namespace
regex: kiamol-ch14-test # is the test namespace for this chapter
As long as your apps are modeled to suit the rules, they’ll automatically be picked up as monitoring targets. Prometheus uses the rules to find Pods that match, and for each target, it collects metrics by making an HTTP GET request to the /metrics
path.
Your application exposes a /metrics
endpoint like this:
...
containers:
- name: timecheck
image: kiamol/ch07-timecheck
env:
- name: Metrics__Enabled
value: "true"
ports:
- containerPort: 8080
name: metrics
… Skipping this