Add docker_devicemapper measurement to docker input plugin (#6084)
This commit is contained in:
parent
93584f7ce7
commit
3f424b88c9
|
@ -106,7 +106,7 @@ may prefer to exclude them:
|
||||||
- unit
|
- unit
|
||||||
- engine_host
|
- engine_host
|
||||||
- server_version
|
- server_version
|
||||||
- fields:
|
+ fields:
|
||||||
- n_used_file_descriptors
|
- n_used_file_descriptors
|
||||||
- n_cpus
|
- n_cpus
|
||||||
- n_containers
|
- n_containers
|
||||||
|
@ -117,32 +117,49 @@ may prefer to exclude them:
|
||||||
- n_goroutines
|
- n_goroutines
|
||||||
- n_listener_events
|
- n_listener_events
|
||||||
- memory_total
|
- memory_total
|
||||||
- pool_blocksize (requires devicemapper storage driver)
|
- pool_blocksize (requires devicemapper storage driver) (deprecated see: `docker_devicemapper`)
|
||||||
|
|
||||||
The `docker_data` and `docker_metadata` measurements are available only for
|
The `docker_data` and `docker_metadata` measurements are available only for
|
||||||
some storage drivers such as devicemapper.
|
some storage drivers such as devicemapper.
|
||||||
|
|
||||||
- docker_data
|
+ docker_data (deprecated see: `docker_devicemapper`)
|
||||||
- tags:
|
- tags:
|
||||||
- unit
|
- unit
|
||||||
- engine_host
|
- engine_host
|
||||||
- server_version
|
- server_version
|
||||||
- fields:
|
+ fields:
|
||||||
- available
|
- available
|
||||||
- total
|
- total
|
||||||
- used
|
- used
|
||||||
|
|
||||||
- docker_metadata
|
- docker_metadata (deprecated see: `docker_devicemapper`)
|
||||||
- tags:
|
- tags:
|
||||||
- unit
|
- unit
|
||||||
- engine_host
|
- engine_host
|
||||||
- server_version
|
- server_version
|
||||||
- fields:
|
+ fields:
|
||||||
- available
|
- available
|
||||||
- total
|
- total
|
||||||
- used
|
- used
|
||||||
|
|
||||||
- docker_container_mem
|
The above measurements for the devicemapper storage driver can now be found in the new `docker_devicemapper` measurement
|
||||||
|
|
||||||
|
- docker_devicemapper
|
||||||
|
- tags:
|
||||||
|
- engine_host
|
||||||
|
- server_version
|
||||||
|
- pool_name
|
||||||
|
+ fields:
|
||||||
|
- pool_blocksize_bytes
|
||||||
|
- data_space_used_bytes
|
||||||
|
- data_space_total_bytes
|
||||||
|
- data_space_available_bytes
|
||||||
|
- metadata_space_used_bytes
|
||||||
|
- metadata_space_total_bytes
|
||||||
|
- metadata_space_available_bytes
|
||||||
|
- thin_pool_minimum_free_space_bytes
|
||||||
|
|
||||||
|
+ docker_container_mem
|
||||||
- tags:
|
- tags:
|
||||||
- engine_host
|
- engine_host
|
||||||
- server_version
|
- server_version
|
||||||
|
@ -150,7 +167,7 @@ some storage drivers such as devicemapper.
|
||||||
- container_name
|
- container_name
|
||||||
- container_status
|
- container_status
|
||||||
- container_version
|
- container_version
|
||||||
- fields:
|
+ fields:
|
||||||
- total_pgmafault
|
- total_pgmafault
|
||||||
- cache
|
- cache
|
||||||
- mapped_file
|
- mapped_file
|
||||||
|
@ -195,7 +212,7 @@ some storage drivers such as devicemapper.
|
||||||
- container_status
|
- container_status
|
||||||
- container_version
|
- container_version
|
||||||
- cpu
|
- cpu
|
||||||
- fields:
|
+ fields:
|
||||||
- throttling_periods
|
- throttling_periods
|
||||||
- throttling_throttled_periods
|
- throttling_throttled_periods
|
||||||
- throttling_throttled_time
|
- throttling_throttled_time
|
||||||
|
@ -206,7 +223,7 @@ some storage drivers such as devicemapper.
|
||||||
- usage_percent
|
- usage_percent
|
||||||
- container_id
|
- container_id
|
||||||
|
|
||||||
- docker_container_net
|
+ docker_container_net
|
||||||
- tags:
|
- tags:
|
||||||
- engine_host
|
- engine_host
|
||||||
- server_version
|
- server_version
|
||||||
|
@ -215,7 +232,7 @@ some storage drivers such as devicemapper.
|
||||||
- container_status
|
- container_status
|
||||||
- container_version
|
- container_version
|
||||||
- network
|
- network
|
||||||
- fields:
|
+ fields:
|
||||||
- rx_dropped
|
- rx_dropped
|
||||||
- rx_bytes
|
- rx_bytes
|
||||||
- rx_errors
|
- rx_errors
|
||||||
|
|
|
@ -322,21 +322,50 @@ func (d *Docker) gatherInfo(acc telegraf.Accumulator) error {
|
||||||
"n_goroutines": info.NGoroutines,
|
"n_goroutines": info.NGoroutines,
|
||||||
"n_listener_events": info.NEventsListener,
|
"n_listener_events": info.NEventsListener,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add metrics
|
// Add metrics
|
||||||
acc.AddFields("docker", fields, tags, now)
|
acc.AddFields("docker", fields, tags, now)
|
||||||
acc.AddFields("docker",
|
acc.AddFields("docker",
|
||||||
map[string]interface{}{"memory_total": info.MemTotal},
|
map[string]interface{}{"memory_total": info.MemTotal},
|
||||||
tags,
|
tags,
|
||||||
now)
|
now)
|
||||||
|
|
||||||
// Get storage metrics
|
// Get storage metrics
|
||||||
tags["unit"] = "bytes"
|
tags["unit"] = "bytes"
|
||||||
|
|
||||||
|
var (
|
||||||
|
// "docker_devicemapper" measurement fields
|
||||||
|
poolName string
|
||||||
|
deviceMapperFields = map[string]interface{}{}
|
||||||
|
)
|
||||||
|
|
||||||
for _, rawData := range info.DriverStatus {
|
for _, rawData := range info.DriverStatus {
|
||||||
|
name := strings.ToLower(strings.Replace(rawData[0], " ", "_", -1))
|
||||||
|
if name == "pool_name" {
|
||||||
|
poolName = rawData[1]
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
// Try to convert string to int (bytes)
|
// Try to convert string to int (bytes)
|
||||||
value, err := parseSize(rawData[1])
|
value, err := parseSize(rawData[1])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
name := strings.ToLower(strings.Replace(rawData[0], " ", "_", -1))
|
|
||||||
|
switch name {
|
||||||
|
case "pool_blocksize",
|
||||||
|
"base_device_size",
|
||||||
|
"data_space_used",
|
||||||
|
"data_space_total",
|
||||||
|
"data_space_available",
|
||||||
|
"metadata_space_used",
|
||||||
|
"metadata_space_total",
|
||||||
|
"metadata_space_available",
|
||||||
|
"thin_pool_minimum_free_space":
|
||||||
|
deviceMapperFields[name+"_bytes"] = value
|
||||||
|
}
|
||||||
|
|
||||||
|
// Legacy devicemapper measurements
|
||||||
if name == "pool_blocksize" {
|
if name == "pool_blocksize" {
|
||||||
// pool blocksize
|
// pool blocksize
|
||||||
acc.AddFields("docker",
|
acc.AddFields("docker",
|
||||||
|
@ -353,12 +382,28 @@ func (d *Docker) gatherInfo(acc telegraf.Accumulator) error {
|
||||||
metadataFields[fieldName] = value
|
metadataFields[fieldName] = value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(dataFields) > 0 {
|
if len(dataFields) > 0 {
|
||||||
acc.AddFields("docker_data", dataFields, tags, now)
|
acc.AddFields("docker_data", dataFields, tags, now)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(metadataFields) > 0 {
|
if len(metadataFields) > 0 {
|
||||||
acc.AddFields("docker_metadata", metadataFields, tags, now)
|
acc.AddFields("docker_metadata", metadataFields, tags, now)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(deviceMapperFields) > 0 {
|
||||||
|
tags := map[string]string{
|
||||||
|
"engine_host": d.engineHost,
|
||||||
|
"server_version": d.serverVersion,
|
||||||
|
}
|
||||||
|
|
||||||
|
if poolName != "" {
|
||||||
|
tags["pool_name"] = poolName
|
||||||
|
}
|
||||||
|
|
||||||
|
acc.AddFields("docker_devicemapper", deviceMapperFields, tags, now)
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -702,6 +702,29 @@ func TestDockerGatherInfo(t *testing.T) {
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
acc.AssertContainsTaggedFields(t,
|
||||||
|
"docker",
|
||||||
|
map[string]interface{}{
|
||||||
|
"memory_total": int64(3840757760),
|
||||||
|
},
|
||||||
|
map[string]string{
|
||||||
|
"engine_host": "absol",
|
||||||
|
"server_version": "17.09.0-ce",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
acc.AssertContainsTaggedFields(t,
|
||||||
|
"docker",
|
||||||
|
map[string]interface{}{
|
||||||
|
"pool_blocksize": int64(65540),
|
||||||
|
},
|
||||||
|
map[string]string{
|
||||||
|
"engine_host": "absol",
|
||||||
|
"server_version": "17.09.0-ce",
|
||||||
|
"unit": "bytes",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
acc.AssertContainsTaggedFields(t,
|
acc.AssertContainsTaggedFields(t,
|
||||||
"docker_data",
|
"docker_data",
|
||||||
map[string]interface{}{
|
map[string]interface{}{
|
||||||
|
@ -710,11 +733,46 @@ func TestDockerGatherInfo(t *testing.T) {
|
||||||
"available": int64(36530000000),
|
"available": int64(36530000000),
|
||||||
},
|
},
|
||||||
map[string]string{
|
map[string]string{
|
||||||
"unit": "bytes",
|
|
||||||
"engine_host": "absol",
|
"engine_host": "absol",
|
||||||
"server_version": "17.09.0-ce",
|
"server_version": "17.09.0-ce",
|
||||||
|
"unit": "bytes",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
acc.AssertContainsTaggedFields(t,
|
||||||
|
"docker_metadata",
|
||||||
|
map[string]interface{}{
|
||||||
|
"used": int64(20970000),
|
||||||
|
"total": int64(2146999999),
|
||||||
|
"available": int64(2126999999),
|
||||||
|
},
|
||||||
|
map[string]string{
|
||||||
|
"engine_host": "absol",
|
||||||
|
"server_version": "17.09.0-ce",
|
||||||
|
"unit": "bytes",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
acc.AssertContainsTaggedFields(t,
|
||||||
|
"docker_devicemapper",
|
||||||
|
map[string]interface{}{
|
||||||
|
"base_device_size_bytes": int64(10740000000),
|
||||||
|
"pool_blocksize_bytes": int64(65540),
|
||||||
|
"data_space_used_bytes": int64(17300000000),
|
||||||
|
"data_space_total_bytes": int64(107400000000),
|
||||||
|
"data_space_available_bytes": int64(36530000000),
|
||||||
|
"metadata_space_used_bytes": int64(20970000),
|
||||||
|
"metadata_space_total_bytes": int64(2146999999),
|
||||||
|
"metadata_space_available_bytes": int64(2126999999),
|
||||||
|
"thin_pool_minimum_free_space_bytes": int64(10740000000),
|
||||||
|
},
|
||||||
|
map[string]string{
|
||||||
|
"engine_host": "absol",
|
||||||
|
"server_version": "17.09.0-ce",
|
||||||
|
"pool_name": "docker-8:1-1182287-pool",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
acc.AssertContainsTaggedFields(t,
|
acc.AssertContainsTaggedFields(t,
|
||||||
"docker_container_cpu",
|
"docker_container_cpu",
|
||||||
map[string]interface{}{
|
map[string]interface{}{
|
||||||
|
|
|
@ -47,7 +47,7 @@ var info = types.Info{
|
||||||
HTTPSProxy: "",
|
HTTPSProxy: "",
|
||||||
Labels: []string{},
|
Labels: []string{},
|
||||||
MemoryLimit: false,
|
MemoryLimit: false,
|
||||||
DriverStatus: [][2]string{{"Pool Name", "docker-8:1-1182287-pool"}, {"Pool Blocksize", "65.54 kB"}, {"Backing Filesystem", "extfs"}, {"Data file", "/dev/loop0"}, {"Metadata file", "/dev/loop1"}, {"Data Space Used", "17.3 GB"}, {"Data Space Total", "107.4 GB"}, {"Data Space Available", "36.53 GB"}, {"Metadata Space Used", "20.97 MB"}, {"Metadata Space Total", "2.147 GB"}, {"Metadata Space Available", "2.127 GB"}, {"Udev Sync Supported", "true"}, {"Deferred Removal Enabled", "false"}, {"Data loop file", "/var/lib/docker/devicemapper/devicemapper/data"}, {"Metadata loop file", "/var/lib/docker/devicemapper/devicemapper/metadata"}, {"Library Version", "1.02.115 (2016-01-25)"}},
|
DriverStatus: [][2]string{{"Pool Name", "docker-8:1-1182287-pool"}, {"Base Device Size", "10.74 GB"}, {"Pool Blocksize", "65.54 kB"}, {"Backing Filesystem", "extfs"}, {"Data file", "/dev/loop0"}, {"Metadata file", "/dev/loop1"}, {"Data Space Used", "17.3 GB"}, {"Data Space Total", "107.4 GB"}, {"Data Space Available", "36.53 GB"}, {"Metadata Space Used", "20.97 MB"}, {"Metadata Space Total", "2.147 GB"}, {"Metadata Space Available", "2.127 GB"}, {"Udev Sync Supported", "true"}, {"Deferred Removal Enabled", "false"}, {"Data loop file", "/var/lib/docker/devicemapper/devicemapper/data"}, {"Metadata loop file", "/var/lib/docker/devicemapper/devicemapper/metadata"}, {"Library Version", "1.02.115 (2016-01-25)"}, {"Thin Pool Minimum Free Space", "10.74GB"}},
|
||||||
NFd: 19,
|
NFd: 19,
|
||||||
HTTPProxy: "",
|
HTTPProxy: "",
|
||||||
Driver: "devicemapper",
|
Driver: "devicemapper",
|
||||||
|
|
Loading…
Reference in New Issue