1# Prometheus alert rules for FinData OS (scrape http://<node-lan-ip>:8600/metrics from a private address; the2# endpoint also evaluates docs/OPERATIONS.md health checks on every scrape).3groups:4 - name: findata5 rules:6 - alert: FinDataLakeDiskLow7 expr: findata_lake_free_gb < 1208 for: 30m9 labels: {severity: warning}10 annotations: {summary: "Lake volume below 120 GB free"}11 - alert: FinDataLakeDiskCritical12 expr: findata_lake_free_gb < 6013 for: 5m14 labels: {severity: critical}15 annotations: {summary: "Lake volume below the 60 GB hard stop — ingestion refuses to write"}16 - alert: FinDataIngestDeadJobs17 expr: findata_jobs{status="dead"} > 018 for: 10m19 labels: {severity: critical}20 annotations: {summary: "Jobs in the dead-letter queue"}21 - alert: FinDataStaleBars22 expr: findata_vendor_lag_days{dataset="market_bars.stock.1m.raw"} > 023 for: 6h24 labels: {severity: warning}25 annotations: {summary: "1-minute bars are behind the vendor's last_update"}26 - alert: FinDataNoRecentSession27 expr: findata_dataset_freshness_days{dataset="market_bars.stock.1m.raw"} > 528 for: 1h29 labels: {severity: warning}30 - alert: FinDataBackupStale31 expr: findata_backup_age_hours > 4832 for: 1h33 labels: {severity: warning}34 - alert: FinDataApiLatency35 expr: histogram_quantile(0.95, sum(rate(findata_http_request_seconds_bucket[5m])) by (le, route)) > 536 for: 15m37 labels: {severity: warning}38 - alert: FinDataQualityErrors39 expr: findata_quality_anomalies_7d{severity="error"} > 10040 for: 1h41 labels: {severity: warning}42