Add optional namespace restriction to prometheus input plugin (#5697)

This commit is contained in:
Benjamin Fuller 2019-04-10 15:52:46 -06:00 committed by Daniel Nelson
parent 90593a07b8
commit b2baa2fdd5
3 changed files with 11 additions and 2 deletions

View File

@ -24,6 +24,9 @@ in Prometheus format.
## - prometheus.io/path: If the metrics path is not /metrics, define it with this annotation.
## - prometheus.io/port: If port is not 9102 use this annotation
# monitor_kubernetes_pods = true
## Restricts Kubernetes monitoring to a single namespace
## ex: monitor_kubernetes_pods_namespace = "default"
# monitor_kubernetes_pods_namespace = ""
## Use bearer token for authorization. ('bearer_token' takes priority)
# bearer_token = "/path/to/bearer/token"
@ -64,6 +67,8 @@ Currently the following annotation are supported:
* `prometheus.io/path` Override the path for the metrics endpoint on the service. (default '/metrics')
* `prometheus.io/port` Used to override the port. (default 9102)
Using the `monitor_kubernetes_pods_namespace` option allows you to limit which pods you are scraping.
#### Bearer Token
If set, the file specified by the `bearer_token` parameter will be read on

View File

@ -83,7 +83,7 @@ func (p *Prometheus) start(ctx context.Context) error {
// directed to do so by K8s.
func (p *Prometheus) watch(ctx context.Context, client *k8s.Client) error {
pod := &corev1.Pod{}
watcher, err := client.Watch(ctx, "", &corev1.Pod{})
watcher, err := client.Watch(ctx, p.PodNamespace, &corev1.Pod{})
if err != nil {
return err
}

View File

@ -42,6 +42,7 @@ type Prometheus struct {
// Should we scrape Kubernetes services for prometheus annotations
MonitorPods bool `toml:"monitor_kubernetes_pods"`
PodNamespace string `toml:"monitor_kubernetes_pods_namespace"`
lock sync.Mutex
kubernetesPods map[string]URLAndAddress
cancel context.CancelFunc
@ -65,6 +66,9 @@ var sampleConfig = `
## - prometheus.io/path: If the metrics path is not /metrics, define it with this annotation.
## - prometheus.io/port: If port is not 9102 use this annotation
# monitor_kubernetes_pods = true
## Restricts Kubernetes monitoring to a single namespace
## ex: monitor_kubernetes_pods_namespace = "default"
# monitor_kubernetes_pods_namespace = ""
## Use bearer token for authorization. ('bearer_token' takes priority)
# bearer_token = "/path/to/bearer/token"