@@ -20,6 +20,7 @@ import (
20
20
"encoding/json"
21
21
"fmt"
22
22
"regexp"
23
+ "strconv"
23
24
24
25
"github.com/golang/glog"
25
26
"github.com/prometheus/client_golang/prometheus"
39
40
descPodInfo = prometheus .NewDesc (
40
41
"kube_pod_info" ,
41
42
"Information about pod." ,
42
- []string {"namespace" , "pod" , "host_ip" , "pod_ip" , "node" , "created_by" }, nil ,
43
+ []string {"namespace" , "pod" , "host_ip" , "pod_ip" , "node" , "created_by" , "owner_kind" , "owner_name" , "owner_is_controller" }, nil ,
43
44
)
44
-
45
45
descPodLabels = prometheus .NewDesc (
46
46
descPodLabelsName ,
47
47
descPodLabelsHelp ,
@@ -238,8 +238,15 @@ func (pc *podCollector) collectPod(ch chan<- prometheus.Metric, p v1.Pod) {
238
238
addCounter := func (desc * prometheus.Desc , v float64 , lv ... string ) {
239
239
addConstMetric (desc , prometheus .CounterValue , v , lv ... )
240
240
}
241
+ owners := p .GetOwnerReferences ()
242
+ if len (owners ) == 0 {
243
+ addGauge (descPodInfo , 1 , p .Status .HostIP , p .Status .PodIP , nodeName , extractCreatedBy (p .Annotations ), "<none>" , "<none>" , "<none>" )
244
+ } else {
245
+ for _ , owner := range owners {
246
+ addGauge (descPodInfo , 1 , p .Status .HostIP , p .Status .PodIP , nodeName , extractCreatedBy (p .Annotations ), owner .Kind , owner .Name , strconv .FormatBool (* owner .Controller ))
247
+ }
248
+ }
241
249
242
- addGauge (descPodInfo , 1 , p .Status .HostIP , p .Status .PodIP , nodeName , extractCreatedBy (p .Annotations ))
243
250
labelKeys , labelValues := kubeLabelsToPrometheusLabels (p .Labels )
244
251
addGauge (podLabelsDesc (labelKeys ), 1 , labelValues ... )
245
252
addGauge (descPodStatusPhase , 1 , string (p .Status .Phase ))
0 commit comments