Improved the overview graphs. and MCP fetching poll
This commit is contained in:
@@ -50,7 +50,7 @@ def _range_seconds(value: object) -> int:
|
||||
try:
|
||||
return max(60, int(value))
|
||||
except (TypeError, ValueError):
|
||||
return 3600
|
||||
return 300
|
||||
|
||||
|
||||
def _stream_coverage(runtime_values: dict[str, object], stream_profiles: dict[str, object], stream_status: dict[str, object], profile_readiness: list[dict[str, object]], stream_titles: dict[str, str]) -> list[dict[str, object]]:
|
||||
@@ -128,7 +128,8 @@ def build_status(
|
||||
stream_configs = [{"id": str(runtime_values.get("graylog_stream", "")), "title": "Graylog"}]
|
||||
stream_statuses = []
|
||||
events = []
|
||||
range_seconds = _range_seconds(runtime_values.get("graylog_range_seconds", 3600))
|
||||
range_seconds = _range_seconds(runtime_values.get("graylog_range_seconds", 300))
|
||||
max_events_per_stream = max(1, int(runtime_values.get("graylog_max_events_per_stream", 5000) or 5000))
|
||||
for stream_config in stream_configs:
|
||||
stream_id = str(stream_config["id"])
|
||||
profile = stream_profiles.get(stream_id)
|
||||
@@ -140,10 +141,23 @@ def build_status(
|
||||
*tuple(str(field) for field in getattr(profile, "numeric_fields", ())),
|
||||
) if profile else ()
|
||||
stream_name = str(stream_config.get("title", "") or stream_titles.get(stream_id) or stream_id)
|
||||
stream_events, stream_status = GraylogStreamSource(GraylogMcpClient(url, token), stream_id, str(runtime_values.get("graylog_query", "*")), str(runtime_values.get("graylog_field_mapping", "")), stream_name, profile_fields).fetch(range_seconds=range_seconds)
|
||||
stream_events, stream_status = GraylogStreamSource(GraylogMcpClient(url, token), stream_id, str(runtime_values.get("graylog_query", "*")), str(runtime_values.get("graylog_field_mapping", "")), stream_name, profile_fields).fetch(max_events=max_events_per_stream, range_seconds=range_seconds)
|
||||
events.extend(stream_events)
|
||||
stream_statuses.append({"stream_id": stream_id, "stream_name": stream_name, **stream_status})
|
||||
mcp_status = {"status": "connected", "streams": stream_statuses, "events_fetched": len(events), "range_seconds": range_seconds}
|
||||
truncated_streams = [item for item in stream_statuses if item.get("truncated")]
|
||||
mcp_status = {
|
||||
"status": "connected",
|
||||
"streams": stream_statuses,
|
||||
"events_fetched": len(events),
|
||||
"range_seconds": range_seconds,
|
||||
"max_events_per_stream": max_events_per_stream,
|
||||
"truncated_streams": len(truncated_streams),
|
||||
"coverage_status": "truncated" if truncated_streams else "complete_window",
|
||||
"coverage_warning": (
|
||||
f"{len(truncated_streams)} stream(s) hit max_events_per_stream; high EPS means the analysis window is only partially sampled."
|
||||
if truncated_streams else ""
|
||||
),
|
||||
}
|
||||
except RuntimeError as exc:
|
||||
mcp_status = {"status": "error", "error": str(exc)}
|
||||
events = []
|
||||
|
||||
Reference in New Issue
Block a user