Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gridscale/linux-psi-telegraf-plugin
A plugin for telegraf which will add pressure stall information (psi) from the Linux kernel to influxdb
https://github.com/gridscale/linux-psi-telegraf-plugin
influxdata-telegraf influxdb metrics metrics-gathering monitoring psi telegraf telegraf-plugin
Last synced: 5 days ago
JSON representation
A plugin for telegraf which will add pressure stall information (psi) from the Linux kernel to influxdb
- Host: GitHub
- URL: https://github.com/gridscale/linux-psi-telegraf-plugin
- Owner: gridscale
- License: mit
- Created: 2022-01-13T13:06:23.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2022-01-18T08:30:53.000Z (almost 3 years ago)
- Last Synced: 2024-06-20T13:40:31.419Z (5 months ago)
- Topics: influxdata-telegraf, influxdb, metrics, metrics-gathering, monitoring, psi, telegraf, telegraf-plugin
- Language: Go
- Homepage:
- Size: 107 KB
- Stars: 7
- Watchers: 6
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
# linux-psi-telegraf-plugin
This telegraf plugin will push the pressure stall information (PSI) from the Linux Kernel to influx.
For more information about the PSI metrics read [facebooks documentation](https://facebookmicrosites.github.io/psi/).
The following metrics will be pushed to telegraf:
- avg10, avg60, avg300, total for
- `/proc/pressure/cpu` (some)
- `/proc/pressure/memory` (some and full)
- `/proc/pressure/io` (some and full)## Configuration
```
[[inputs.execd]]
command = ["/usr/local/bin/psi"]
signal = "none"
```## Measurements & Fields
- pressureTotal
- total
- pressure
- avg10
- avg60
- avg300## Tags
- All measurement have the following tags:
- resource: one of `cpu`, `memory` or `io`
- type: either `some` or `full`## Example Output
```
pressureTotal,resource=cpu,type=some total=2302995431i 1642080601757211558
pressureTotal,resource=memory,type=some total=7459296i 1642080601757229544
pressureTotal,resource=io,type=some total=113202241i 1642080601757233510
pressureTotal,resource=memory,type=full total=3378729i 1642080601757326002
pressureTotal,resource=io,type=full total=90569049i 1642080601757329299
pressure,resource=cpu,type=some avg60=1.69,avg300=1.56,avg10=1.38 1642080601757332616
pressure,resource=memory,type=some avg10=0,avg60=0,avg300=0 1642080601757545386
pressure,resource=io,type=some avg10=0,avg60=0,avg300=0 1642080601757564081
pressure,resource=memory,type=full avg60=0,avg300=0,avg10=0 1642080601757567428
pressure,resource=io,type=full avg60=0,avg300=0,avg10=0 1642080601757625827
```## Building the binary
1. Build the binary
```
go build -o psi cmd/main.go
```2. Copy the binary to desired location
3. Adjust your telegraf.conf
```
[[inputs.execd]]
command = ["/usr/local/bin/psi"]
signal = "none"
```4. Testing the output
On a linux machine the binary can be called and should output something like the [example output](#example-output).
## Usage with docker
If you use telegraf with docker you can build your own telegraf image with a multi stage build and just add the binray to keep the image size small:
```Dockerfile
# Get repo
FROM bitnami/git AS git-psi
WORKDIR /app
RUN git clone --depth 1 --branch v0.1.0 https://github.com/gridscale/linux-psi-telegraf-plugin.git linux-psi-telegraf-plugin# Build psi binary
FROM golang:1.16-alpine AS binary-psi
WORKDIR /go/src/app/
COPY --from=git-psi /app/ ./
WORKDIR /go/src/app/linux-psi-telegraf-plugin
RUN go build -o psi cmd/main.go# Build telegraf container
FROM telegraf:alpineCOPY --from=binary-psi /go/src/app/linux-psi-telegraf-plugin/psi /usr/local/bin/psi
```