116 lines
4.5 KiB
Markdown
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"
|
|
```
|
|
|
|

|
|

|
|

|
|
|
|
## 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.
|