poc3
This commit is contained in:
+42
-1
@@ -21,6 +21,7 @@ from .flow_tracker import FlowTracker
|
||||
from .forensics import ForensicPcapRing
|
||||
from .live import EventBus, LiveEventPipeline, TrafficHistory, TrafficNormalizer
|
||||
from .maintenance import clear_suricata_logs, storage_info
|
||||
from .metrics import PrometheusMetrics
|
||||
from .ndr import NDRAnalyzer, ThreatIntelManager
|
||||
from .notifier import WebhookNotifier
|
||||
from .policy import PolicyEngine
|
||||
@@ -210,7 +211,7 @@ def main() -> int:
|
||||
cfg.redis_snapshot_seconds,
|
||||
cfg.redis_aof,
|
||||
)
|
||||
if cfg.redis_managed and not redis_supervisor.start(wait_ready_seconds=15):
|
||||
if cfg.redis_managed and not redis_supervisor.start(wait_ready_seconds=120):
|
||||
raise RuntimeError(
|
||||
f"managed Redis failed to start: {redis_supervisor.status().get('last_error') or 'unknown error'}"
|
||||
)
|
||||
@@ -422,6 +423,45 @@ def main() -> int:
|
||||
"runtime": stats.snapshot(),
|
||||
}
|
||||
|
||||
version_path = Path(__file__).resolve().parents[1] / "VERSION"
|
||||
try:
|
||||
app_version = version_path.read_text(encoding="ascii").strip() or "unknown"
|
||||
except OSError:
|
||||
app_version = "unknown"
|
||||
|
||||
def metrics_state() -> dict:
|
||||
return {
|
||||
"components": {
|
||||
"web": True,
|
||||
"tzsp": receiver.is_alive() and receiver.sock is not None,
|
||||
"tap": tap.fd is not None,
|
||||
"suricata": suricata.poll() is None,
|
||||
"eve": watcher.is_alive(),
|
||||
},
|
||||
"features": {
|
||||
"auto_block": cfg.auto_block,
|
||||
"ndr": cfg.ndr_enabled,
|
||||
"notifications": notifier.enabled,
|
||||
"routeros": routeros.configured,
|
||||
"redis_managed": cfg.redis_managed,
|
||||
"forensic_pcap": cfg.forensic_pcap_mode != "off",
|
||||
},
|
||||
}
|
||||
|
||||
prometheus_metrics = PrometheusMetrics(
|
||||
stats,
|
||||
version=app_version,
|
||||
mode="full",
|
||||
started_at=started_at,
|
||||
state_provider=metrics_state,
|
||||
flow_tracker=flow_tracker,
|
||||
event_bus=event_bus,
|
||||
live_pipeline=live_pipeline,
|
||||
ndr_analyzer=ndr_analyzer,
|
||||
notifier=notifier,
|
||||
forensic_pcap=forensic_pcap,
|
||||
)
|
||||
|
||||
web = WebServer(
|
||||
cfg,
|
||||
store,
|
||||
@@ -437,6 +477,7 @@ def main() -> int:
|
||||
ndr_analyzer=ndr_analyzer,
|
||||
backup_manager=backup_manager,
|
||||
forensic_pcap=forensic_pcap,
|
||||
metrics_provider=prometheus_metrics.render,
|
||||
)
|
||||
|
||||
def housekeeping() -> None:
|
||||
|
||||
Reference in New Issue
Block a user