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,40 @@
# Swap Input Plugin
The swap plugin collects system swap metrics. This plugin ONLY supports Linux.
For more information on what swap memory is, read [All about Linux swap
space](https://www.linux.com/news/all-about-linux-swap-space).
## Global configuration options <!-- @/docs/includes/plugin_config.md -->
In addition to the plugin-specific configuration settings, plugins support
additional global and plugin configuration settings. These settings are used to
modify metrics, tags, and field or create aliases and configure ordering, etc.
See the [CONFIGURATION.md][CONFIGURATION.md] for more details.
[CONFIGURATION.md]: ../../../docs/CONFIGURATION.md#plugins
## Configuration
```toml @sample.conf
# Read metrics about swap memory usage
[[inputs.swap]]
# no configuration
```
## Metrics
- swap
- fields:
- free (int, bytes): free swap memory
- total (int, bytes): total swap memory
- used (int, bytes): used swap memory
- used_percent (float, percent): percentage of swap memory used
- in (int, bytes): data swapped in since last boot calculated from page number
- out (int, bytes): data swapped out since last boot calculated from page number
## Example Output
```text
swap total=20855394304i,used_percent=45.43883523785713,used=9476448256i,free=1715331072i 1511894782000000000
```

View file

@ -0,0 +1,3 @@
# Read metrics about swap memory usage
[[inputs.swap]]
# no configuration

View file

@ -0,0 +1,51 @@
//go:generate ../../../tools/readme_config_includer/generator
package swap
import (
_ "embed"
"fmt"
"github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/plugins/common/psutil"
"github.com/influxdata/telegraf/plugins/inputs"
)
//go:embed sample.conf
var sampleConfig string
type Swap struct {
ps psutil.PS
}
func (*Swap) SampleConfig() string {
return sampleConfig
}
func (ss *Swap) Gather(acc telegraf.Accumulator) error {
swap, err := ss.ps.SwapStat()
if err != nil {
return fmt.Errorf("error getting swap memory info: %w", err)
}
fieldsG := map[string]interface{}{
"total": swap.Total,
"used": swap.Used,
"free": swap.Free,
"used_percent": swap.UsedPercent,
}
fieldsC := map[string]interface{}{
"in": swap.Sin,
"out": swap.Sout,
}
acc.AddGauge("swap", fieldsG, nil)
acc.AddCounter("swap", fieldsC, nil)
return nil
}
func init() {
ps := psutil.NewSystemPS()
inputs.Add("swap", func() telegraf.Input {
return &Swap{ps: ps}
})
}

View file

@ -0,0 +1,40 @@
package swap
import (
"testing"
"github.com/shirou/gopsutil/v4/mem"
"github.com/stretchr/testify/require"
"github.com/influxdata/telegraf/plugins/common/psutil"
"github.com/influxdata/telegraf/testutil"
)
func TestSwapStats(t *testing.T) {
var mps psutil.MockPS
var err error
defer mps.AssertExpectations(t)
var acc testutil.Accumulator
sms := &mem.SwapMemoryStat{
Total: 8123,
Used: 1232,
Free: 6412,
UsedPercent: 12.2,
Sin: 7,
Sout: 830,
}
mps.On("SwapStat").Return(sms, nil)
err = (&Swap{&mps}).Gather(&acc)
require.NoError(t, err)
swapfields := map[string]interface{}{
"total": uint64(8123),
"used": uint64(1232),
"used_percent": float64(12.2),
"free": uint64(6412),
}
acc.AssertContainsTaggedFields(t, "swap", swapfields, make(map[string]string))
}