Skip to content

Commit de7c3e6

Browse files
committed
feat: add container info metric
1 parent e5fae1d commit de7c3e6

3 files changed

Lines changed: 29 additions & 7 deletions

File tree

internal/collector/collector.go

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,20 @@ func (c *DockerCollector) collectContainerMetrics(ctx context.Context, container
7070
defer wg.Done()
7171

7272
name := containerName(container)
73+
inspect, err := c.client.ContainerInspect(ctx, container.ID)
74+
if err != nil {
75+
log.WithError(err).WithField("id", container.ID).
76+
Error("error inspecting container")
77+
return
78+
}
79+
80+
ch <- prometheus.MustNewConstMetric(containerInfo,
81+
prometheus.GaugeValue,
82+
1,
83+
name,
84+
inspect.Config.Image,
85+
inspect.Image,
86+
)
7387

7488
ch <- prometheus.MustNewConstMetric(
7589
containerStateMetric, prometheus.GaugeValue, 1, name, container.State,
@@ -79,13 +93,6 @@ func (c *DockerCollector) collectContainerMetrics(ctx context.Context, container
7993
return
8094
}
8195

82-
inspect, err := c.client.ContainerInspect(ctx, container.ID)
83-
if err != nil {
84-
log.WithError(err).WithField("id", container.ID).
85-
Error("error inspecting container")
86-
return
87-
}
88-
8996
ch <- prometheus.MustNewConstMetric(containerUptime,
9097
prometheus.GaugeValue,
9198
c.calculateUptime(inspect),

internal/collector/collector_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/davidborzek/docker-exporter/internal/collector"
1212
"github.com/davidborzek/docker-exporter/internal/mock"
1313
"github.com/docker/docker/api/types"
14+
"github.com/docker/docker/api/types/container"
1415
"github.com/docker/docker/client"
1516
"github.com/prometheus/client_golang/prometheus/testutil"
1617
"go.uber.org/mock/gomock"
@@ -53,6 +54,9 @@ func TestCollectMetrics(t *testing.T) {
5354
# HELP docker_container_cpu_usage_percentage CPU usage in percentage
5455
# TYPE docker_container_cpu_usage_percentage gauge
5556
docker_container_cpu_usage_percentage{name="testName"} 0
57+
# HELP docker_container_info Infos about the container
58+
# TYPE docker_container_info gauge
59+
docker_container_info{image="sha256:d3751d33f9cd5049c4af2b462735457e4d3baf130bcbb87f389e349fbaeb20b9",image_name="myImage",name="testName"} 1
5660
# HELP docker_container_memory_total_bytes Total memory in bytes
5761
# TYPE docker_container_memory_total_bytes gauge
5862
docker_container_memory_total_bytes{name="testName"} 8e+09
@@ -105,6 +109,10 @@ func buildInspectResponse() types.ContainerJSON {
105109
State: &types.ContainerState{
106110
StartedAt: "2023-09-17T12:00:00.00Z",
107111
},
112+
Image: "sha256:d3751d33f9cd5049c4af2b462735457e4d3baf130bcbb87f389e349fbaeb20b9",
113+
},
114+
Config: &container.Config{
115+
Image: "myImage",
108116
},
109117
}
110118

internal/collector/metrics.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@ var (
1010
nil,
1111
)
1212

13+
containerInfo = prometheus.NewDesc(
14+
"docker_container_info",
15+
"Infos about the container",
16+
[]string{"name", "image_name", "image"},
17+
nil,
18+
)
19+
1320
containerUptime = prometheus.NewDesc(
1421
"docker_container_uptime",
1522
"Uptime of the container in seconds",

0 commit comments

Comments
 (0)