query_prometheus_range
Retrieve Prometheus metrics over specified time ranges using PromQL queries to analyze historical performance data and identify trends.
Instructions
Execute PromQL query over a time range. Returns time series data. Use this for getting metrics over time.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | PromQL query string | |
| start | No | Start time. Can be: relative like '1h' (last hour), '30m', '7d', or absolute RFC3339/Unix timestamp. Default: 1h ago | |
| end | No | End time. Can be: 'now', relative, or absolute. Default: now | |
| step | No | Query resolution step (e.g., '15s', '1m', '5m'). Default: 15s |
Implementation Reference
- src/tools/prometheus_tools.py:55-97 (handler)The implementation of the `query_prometheus_range` function in `prometheus_tools.py`. It handles range query execution, time parsing, and error reporting.
async def query_prometheus_range( client: PrometheusClient, query: str, start: Optional[str] = None, end: Optional[str] = None, step: str = "15s" ) -> Dict[str, Any]: """ Execute PromQL range query. Args: client: Prometheus client query: PromQL query string start: Start time (relative like '1h' or absolute) end: End time (relative like 'now' or absolute) step: Query resolution step Returns: Query results with time series data """ try: # Parse time range start_dt, end_dt = parse_time_range(start, end) start_ts = to_prometheus_time(start_dt) end_ts = to_prometheus_time(end_dt) result = await client.query_range(query, start_ts, end_ts, step) return { "success": True, "query": query, "start": start or "auto", "end": end or "now", "step": step, "result": result } except Exception as e: logger.error(f"Error executing Prometheus range query: {e}") return { "success": False, "error": str(e), "query": query }