1
0
Fork 0

Adding upstream version 1.34.4.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-05-24 07:26:29 +02:00
parent e393c3af3f
commit 4978089aab
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
4963 changed files with 677545 additions and 0 deletions

View file

@ -0,0 +1,32 @@
package inputs_io
import (
"github.com/influxdata/toml"
"github.com/influxdata/toml/ast"
"github.com/influxdata/telegraf/migrations"
)
// Migration function
func migrate(tbl *ast.Table) ([]byte, string, error) {
// Load the plugin config and directly encode it again as we do not want to
// modify anything beyond the name.
// Decode the old data structure
var plugin interface{}
if err := toml.UnmarshalTable(tbl, &plugin); err != nil {
return nil, "", err
}
// Create the corresponding metric configurations
cfg := migrations.CreateTOMLStruct("inputs", "diskio")
cfg.Add("inputs", "diskio", plugin)
output, err := toml.Marshal(cfg)
return output, "", err
}
// Register the migration function for the plugin type
func init() {
migrations.AddPluginMigration("inputs.io", migrate)
}

View file

@ -0,0 +1,61 @@
package inputs_io_test
import (
"os"
"path/filepath"
"testing"
"github.com/stretchr/testify/require"
"github.com/influxdata/telegraf/config"
_ "github.com/influxdata/telegraf/migrations/inputs_io" // register migration
_ "github.com/influxdata/telegraf/plugins/inputs/diskio" // register plugin
)
func TestCases(t *testing.T) {
// Get all directories in testdata
folders, err := os.ReadDir("testcases")
require.NoError(t, err)
for _, f := range folders {
// Only handle folders
if !f.IsDir() {
continue
}
t.Run(f.Name(), func(t *testing.T) {
testcasePath := filepath.Join("testcases", f.Name())
inputFile := filepath.Join(testcasePath, "telegraf.conf")
expectedFile := filepath.Join(testcasePath, "expected.conf")
// Read the expected output
expected := config.NewConfig()
require.NoError(t, expected.LoadConfig(expectedFile))
require.NotEmpty(t, expected.Inputs)
// Read the input data
input, remote, err := config.LoadConfigFile(inputFile)
require.NoError(t, err)
require.False(t, remote)
require.NotEmpty(t, input)
// Migrate
output, n, err := config.ApplyMigrations(input)
require.NoError(t, err)
require.NotEmpty(t, output)
require.GreaterOrEqual(t, n, uint64(1))
actual := config.NewConfig()
require.NoError(t, actual.LoadConfigData(output, config.EmptySourcePath))
// Test the output
require.Len(t, actual.Inputs, len(expected.Inputs))
actualIDs := make([]string, 0, len(expected.Inputs))
expectedIDs := make([]string, 0, len(expected.Inputs))
for i := range actual.Inputs {
actualIDs = append(actualIDs, actual.Inputs[i].ID())
expectedIDs = append(expectedIDs, expected.Inputs[i].ID())
}
require.ElementsMatch(t, expectedIDs, actualIDs, string(output))
})
}
}

View file

@ -0,0 +1,29 @@
# Read metrics about disk IO by device
[[inputs.diskio]]
## By default, telegraf will gather stats for all devices including
## disk partitions.
## Setting devices will restrict the stats to the specified devices.
## NOTE: Globbing expressions (e.g. asterix) are not supported for
## disk synonyms like '/dev/disk/by-id'.
# devices = ["sda", "sdb", "vd*", "/dev/disk/by-id/nvme-eui.00123deadc0de123"]
## Uncomment the following line if you need disk serial numbers.
# skip_serial_number = false
#
## On systems which support it, device metadata can be added in the form of
## tags.
## Currently only Linux is supported via udev properties. You can view
## available properties for a device by running:
## 'udevadm info -q property -n /dev/sda'
## Note: Most, but not all, udev properties can be accessed this way. Properties
## that are currently inaccessible include DEVTYPE, DEVNAME, and DEVPATH.
# device_tags = ["ID_FS_TYPE", "ID_FS_USAGE"]
#
## Using the same metadata source as device_tags, you can also customize the
## name of the device via templates.
## The 'name_templates' parameter is a list of templates to try and apply to
## the device. The template may contain variables in the form of '$PROPERTY' or
## '${PROPERTY}'. The first template which does not contain any variables not
## present for the device is used as the device name tag.
## The typical use case is for LVM volumes, to get the VG/LV name instead of
## the near-meaningless DM-0 name.
# name_templates = ["$ID_FS_LABEL","$DM_VG_NAME/$DM_LV_NAME"]

View file

@ -0,0 +1,29 @@
# Read metrics about disk IO by device
[[inputs.io]]
## By default, telegraf will gather stats for all devices including
## disk partitions.
## Setting devices will restrict the stats to the specified devices.
## NOTE: Globbing expressions (e.g. asterix) are not supported for
## disk synonyms like '/dev/disk/by-id'.
# devices = ["sda", "sdb", "vd*", "/dev/disk/by-id/nvme-eui.00123deadc0de123"]
## Uncomment the following line if you need disk serial numbers.
# skip_serial_number = false
#
## On systems which support it, device metadata can be added in the form of
## tags.
## Currently only Linux is supported via udev properties. You can view
## available properties for a device by running:
## 'udevadm info -q property -n /dev/sda'
## Note: Most, but not all, udev properties can be accessed this way. Properties
## that are currently inaccessible include DEVTYPE, DEVNAME, and DEVPATH.
# device_tags = ["ID_FS_TYPE", "ID_FS_USAGE"]
#
## Using the same metadata source as device_tags, you can also customize the
## name of the device via templates.
## The 'name_templates' parameter is a list of templates to try and apply to
## the device. The template may contain variables in the form of '$PROPERTY' or
## '${PROPERTY}'. The first template which does not contain any variables not
## present for the device is used as the device name tag.
## The typical use case is for LVM volumes, to get the VG/LV name instead of
## the near-meaningless DM-0 name.
# name_templates = ["$ID_FS_LABEL","$DM_VG_NAME/$DM_LV_NAME"]

View file

@ -0,0 +1,10 @@
# Read metrics about disk IO by device
[[inputs.diskio]]
name_override = "foo"
devices = ["nvme0n1", "sda", "sdb", "vd*", "/dev/disk/by-id/nvme-eui.00123deadc0de123"]
skip_serial_number = true
device_tags = ["ID_FS_TYPE"]
name_templates = ["$ID_FS_LABEL", "$DM_VG_NAME/$DM_LV_NAME", "test"]
[[inputs.diskio.tags]]
should = "work"

View file

@ -0,0 +1,34 @@
# Read metrics about disk IO by device
[[inputs.io]]
name_override = "foo"
# By default, telegraf will gather stats for all devices including
# disk partitions.
# Setting devices will restrict the stats to the specified devices.
# NOTE: Globbing expressions (e.g. asterix) are not supported for
# disk synonyms like '/dev/disk/by-id'.
devices = ["nvme0n1", "sda", "sdb", "vd*", "/dev/disk/by-id/nvme-eui.00123deadc0de123"]
# Uncomment the following line if you need disk serial numbers.
skip_serial_number = true
# On systems which support it, device metadata can be added in the form of
# tags.
# Currently only Linux is supported via udev properties. You can view
# available properties for a device by running:
# 'udevadm info -q property -n /dev/sda'
# Note: Most, but not all, udev properties can be accessed this way. Properties
# that are currently inaccessible include DEVTYPE, DEVNAME, and DEVPATH.
device_tags = ["ID_FS_TYPE"]
# Using the same metadata source as device_tags, you can also customize the
# name of the device via templates.
# The 'name_templates' parameter is a list of templates to try and apply to
# the device. The template may contain variables in the form of '$PROPERTY' or
# '${PROPERTY}'. The first template which does not contain any variables not
# present for the device is used as the device name tag.
# The typical use case is for LVM volumes, to get the VG/LV name instead of
# the near-meaningless DM-0 name.
name_templates = ["$ID_FS_LABEL","$DM_VG_NAME/$DM_LV_NAME", "test"]
[[inputs.io.tags]]
should = "work"