Adding upstream version 1.34.4.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
e393c3af3f
commit
4978089aab
4963 changed files with 677545 additions and 0 deletions
40
plugins/inputs/swap/README.md
Normal file
40
plugins/inputs/swap/README.md
Normal 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
|
||||
```
|
3
plugins/inputs/swap/sample.conf
Normal file
3
plugins/inputs/swap/sample.conf
Normal file
|
@ -0,0 +1,3 @@
|
|||
# Read metrics about swap memory usage
|
||||
[[inputs.swap]]
|
||||
# no configuration
|
51
plugins/inputs/swap/swap.go
Normal file
51
plugins/inputs/swap/swap.go
Normal 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}
|
||||
})
|
||||
}
|
40
plugins/inputs/swap/swap_test.go
Normal file
40
plugins/inputs/swap/swap_test.go
Normal 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))
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue