4.3 KiB
Grafana and Prometheus Monitoring Stack
7. Grafana / Influx exporters
После cc9e4a0 Influx exporters для Grafana включены как production default:
aw_worktime_influx_enabled: true
aw_dlp_influx_enabled: true
Оба exporter'а пишут в InfluxDB bucket:
org: proxmox
bucket: aw_metrics
url: http://<INFLUXDB_HOST>:8086
Grafana datasource InfluxDB-AW читает тот же bucket.
Token parameters
Новые обязательные параметры:
| Ansible var | Env source | Назначение |
|---|---|---|
aw_worktime_influx_token |
AW_WORKTIME_INFLUX_TOKEN |
Write-token для aw-worktime-influx-exporter.service. |
aw_dlp_influx_token |
AW_DLP_INFLUX_TOKEN |
Write-token для aw-dlp-influx-exporter.service. |
Эти token'ы должны иметь write-bucket permission на aw_metrics. Grafana read-token не подходит для exporters.
Deploy validation
deploy_aw_server.yml теперь содержит preflight assert'ы:
- если
aw_worktime_influx_enabled=true,aw_worktime_influx_tokenобязан быть непустым; - если
aw_dlp_influx_enabled=true,aw_dlp_influx_tokenобязан быть непустым. - если exporter включен, Influx URL, org, bucket и список hosts не могут быть
пустыми,
HOST-EXAMPLE,WINDOWS_USER_EXAMPLEили TEST-NET/example значениями; - token не может быть пустым или placeholder вроде
CHANGE_ME,TOKEN,YOUR_*,<TOKEN>.
Кроме того, разовый запуск exporters больше не маскируется failed_when: false. Если запись в Influx сломана, playbook должен явно упасть, а не оставлять Grafana со старыми рядами.
Public defaults vs production runtime
В публичном репозитории Influx defaults должны оставаться обезличенными:
aw_worktime_influx_url: "http://192.0.2.10:8086"
aw_worktime_influx_hosts: "HOST-EXAMPLE"
aw_dlp_influx_url: "http://192.0.2.10:8086"
aw_dlp_influx_hosts: "HOST-EXAMPLE"
Это нормальный public-safe вид для expert/release materials. В production эти
значения обязательно переопределяются через private inventory, private env или
уже существующий server-side /etc/activitywatch/aw-server.env.
Защита от повторения ошибки:
- Ansible не даст записать
/etc/activitywatch/aw-server.env, если включенный exporter получил public placeholder вместо live destination/token; - Rust exporter дополнительно завершится с понятной ошибкой по переменной
AW_*_INFLUX_URL,AW_*_INFLUX_ORG,AW_*_INFLUX_BUCKET,AW_*_INFLUX_TOKENилиAW_*_INFLUX_HOSTS, если такой env все же попал в runtime; - живые URL, hosts и tokens не переносятся в tracked files.
Expected measurements
После успешного запуска в aw_metrics должны быть свежие ряды:
aw_window_eventaw_afk_eventaw_rdp_worktime_dailyaw_rdp_worktime_hourlyaw_rdp_worktime_summary_dailyaw_dlp_endpoint_self_testaw_dlp_fileops_healthaw_dlp_signal- DLP case/review/rule/incident measurements, если в источниках есть соответствующие события.
Быстрая диагностика:
systemctl start aw-worktime-influx-exporter.service
systemctl start aw-dlp-influx-exporter.service
journalctl -u aw-worktime-influx-exporter.service -n 30 --no-pager
journalctl -u aw-dlp-influx-exporter.service -n 30 --no-pager
Успешный результат: wrote ... points to aw_metrics.
Grafana checks
Через API:
curl -u "$GRAFANA_USER:$GRAFANA_PASSWORD" \
http://<GRAFANA_HOST>:3000/api/datasources/uid/influxdb_aw/health
Ожидается:
{"message":"datasource is working. 1 buckets found","status":"OK"}
Dashboard UID, которые должны открываться:
detmir-aw-maindetmir-rdp-user-activitydetmir-dlp-securitydetmir-dlp-managementawatch-dlp-overview