fix systemd job

This commit is contained in:
2026-08-13 18:19:32 +02:00
parent addb16b6b0
commit 59d1d29458
3 changed files with 20 additions and 3 deletions
+9 -1
View File
@@ -103,7 +103,7 @@ sudo systemctl status vw-eu-data-act-exporter
| `vins` | List of vehicle VINs to scrape |
| `scrape_interval_minutes` | Poll interval per vehicle. The portal only delivers new datasets for "continuous" data requests roughly every ~15 min anyway - a shorter interval will not yield fresher data, but will increase the login frequency against the account |
| `persist_raw_json` | `False` by default. When set to `True`, the JSON extracted from every downloaded dataset is written to disk (one file per VIN per scrape), including the JSON extracted from `_no_content_found.zip` placeholders when they carry one. ZIP files are never written to disk, only the extracted JSON - useful while tuning the field mapping in `vw-eu-data-act-exporter.py`. Not needed for normal operation |
| `persist_raw_json_dir` | Directory the raw JSON files are written to when `persist_raw_json` is enabled (default: `./raw_json`, relative to the working directory) |
| `persist_raw_json_dir` | Directory the raw JSON files are written to when `persist_raw_json` is enabled. Defaults to `$STATE_DIRECTORY` (set automatically by the systemd unit's `StateDirectory=vw-eu-data-act-exporter`, i.e. `/var/lib/vw-eu-data-act-exporter`), falling back to `./raw_json` for ad-hoc/local runs outside systemd |
Prerequisite in the portal (one-time, in a browser): connect vehicle ->
"Get customised data" -> enable continuous, 15-minute frequency (see the
@@ -136,3 +136,11 @@ be independent of, and significantly shorter than, `scrape_interval_minutes`
- `WARNING ... Unknown enum value`: a new, not-yet-listed value for an enum
metric - the state is exported as `UNKNOWN`, extend the list in the
source code if needed.
- Service fails immediately with `status=226/NAMESPACE` /
`Failed to set up mount namespacing`: usually a stale unit file from
before `StateDirectory=` was introduced (e.g. still using
`ReadWritePaths=.../raw_json` pointing at a directory that was never
created). Re-copy the current `vw-eu-data-act-exporter.service`, run
`sudo systemctl daemon-reload`, and restart - `StateDirectory=` makes
systemd create that directory (with correct ownership) itself, no manual
`mkdir`/`chown` needed.
+4 -1
View File
@@ -48,7 +48,10 @@ scrape_interval_minutes = 15
# carry one. ZIP files themselves are never written to disk. Disabled by
# default, since the exporter is designed to be stateless (see README.md).
persist_raw_json = False
persist_raw_json_dir = "./raw_json"
# Under the systemd unit, StateDirectory=vw-eu-data-act-exporter makes
# systemd export $STATE_DIRECTORY (an already-created, correctly-owned
# directory) - fall back to a relative path for ad-hoc/local runs.
persist_raw_json_dir = os.environ.get("STATE_DIRECTORY", "./raw_json")
# --- Logging ---------------------------------------------------------------
log_level = "INFO"
+7 -1
View File
@@ -13,7 +13,13 @@ Restart=on-failure
RestartSec=30
# Hardening
ReadWritePaths=/opt/vw-eu-data-act-exporter/raw_json
# StateDirectory is created automatically (with correct ownership) before
# the service starts and is writable under ProtectSystem=strict without a
# ReadWritePaths= entry - systemd exposes its absolute path via
# $STATE_DIRECTORY, which config.py picks up for persist_raw_json_dir.
# Unlike ReadWritePaths=, this does not require the directory to already
# exist on disk.
StateDirectory=vw-eu-data-act-exporter
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true