Files
telegraf-bcachefs-input/README.md
T

116 lines
4.5 KiB
Markdown

# telegraf-bcachefs-input
Telegraf bcachefs monitoring
## Installation
Run once from the checkout:
```sh
sudo ./install.sh
```
This links `/etc/telegraf/bcachefs*.sh` to this checkout. Existing files are
preserved in a printed `/etc/telegraf/bcachefs-backup.*` directory. Re-running
is safe; unchanged links are skipped. You can pass a different destination
directory as the first argument. Keep the checkout at the same path and readable
and executable by the Telegraf service. Edits take effect on the next collection;
no copy or service restart is needed. To roll back, replace the links with the
files in the backup directory (remove any newly installed links separately).
On the original host, Telegraf runs as root with `ProtectHome=no`. Thus edits
here become code executed as root. On another host, check service permissions
and sandbox settings before installing into a home directory.
The original host loads its configuration from InfluxDB using `TELEGRAF_OPTS`
and `INFLUX_TOKEN` in `/etc/default/telegraf`. Keep these credentials outside Git.
The existing hosted commands can remain unchanged with this installation;
a new systemd environment variable is unnecessary.
## Collectors
The scripts retain the deployed host's `/mnt` mount point and, in several cases,
its filesystem UUID. Adapt those values before using them on another host.
`bcachefs_reconcile.sh` already accepts `FSPATH` (or a positional mount path) and
`BCACHEFS_UUID` overrides.
- `bcachefs.sh`: filesystem usage; imported version selects usage sections explicitly.
- `bcachefs_fs_top.sh`: parses the collector's `/fs_top` endpoint (`/s` format).
- `bcachefs_options.sh`: sysfs options.
- `bcachefs_perf.sh`: collector's `/perf_json` endpoint.
- `bcachefs_reconcile.sh`: reconcile status.
- `bcachefs_snapshot_delete_status.sh`: snapshot deletion progress.
- `bcachefs_time_stats.sh`: sysfs time statistics.
- `bcachefs_timestats.sh`: JSON time statistics from bcachefs-tools; different measurement/schema.
- `bcachefs_device_time_stats.sh`: compatibility symlink to `bcachefs_time_stats.sh`;
the old workspace file was identical and did not collect extra device metrics.
Do not configure both aliases, as that would duplicate collection.
The old `_not_finished` human-readable prototype was removed; Git retains its
history. `_not_maintained_anymore` remains as an archive.
Add the desired inputs to your Telegraf TOML configuration (local or hosted):
```toml
[[inputs.exec]]
commands = ["/etc/telegraf/bcachefs.sh"]
data_format = "influx"
[[inputs.exec]]
commands = ["/etc/telegraf/bcachefs_fs_top.sh"]
data_format = "influx"
[[inputs.exec]]
commands = ["/etc/telegraf/bcachefs_options.sh"]
data_format = "influx"
[[inputs.exec]]
commands = ["/etc/telegraf/bcachefs_perf.sh"]
data_format = "influx"
[[inputs.exec]]
commands = ["/etc/telegraf/bcachefs_time_stats.sh"]
data_format = "influx"
```
![example disks table](disks-table.png)
![example disks graphs](disks-graphs.png)
![example disks states](disks-states.png)
## Support reports and pastes
Run `./kent_report.sh` from the directory where you want `kent_report.log` and
trace output saved. It performs the existing lengthy diagnostics and uploads
the report to the paste server, printing a URL for manually sharing on IRC.
It does not send an IRC message. The diagnostics retain the original host's
Arch packages, bcachefs source checkout, device and encryption-file paths;
review those and the collected information before running on another host.
`paste_log.sh` contains the shared function and can also be run directly:
```sh
./paste_log.sh path/to/log
```
To make `paste_log` available in interactive Bash, add:
```bash
source "$HOME/telegraf-bcachefs-input/paste_log.sh"
```
`kent_report.sh` sources the same file relative to its own location; it does not
rely on interactive shell functions being exported. Uploads use the current
kubectl context/namespace and require exactly one pod named `brunner-ninja*`.
Failed uploads return an error without printing a misleading URL. Temporary
name reservations are cleaned up, and function errors do not exit your shell.
## Building the performance collector
Requires Qt 6 Core, Network, WebSockets and HttpServer development packages:
```sh
mkdir -p /tmp/bcachefs-collector-build
cd /tmp/bcachefs-collector-build
qmake6 /path/to/telegraf-bcachefs-input/perf-collector/perf-collector.pro
make
```
The collector listens on localhost:8000 and launches `bcachefs fs top /mnt`
and `sudo perf trace`. Building does not deploy or restart it.