v1.9.42: full Grafana/Prometheus GUI & CLI improvements
Grafana tab: - Datasources table (Name, Type, URL, Default) - Open Grafana button (opens browser) - Switch to AlertManager endpoint for real-time active alerts Prometheus tab: - Quick query buttons (up, CPU, Memory) - Metrics browser popup with filter (loads all metric names) - Rules section (recording + alerting rules Treeview) CLI: - --grafana-datasources ALIAS - --prom-rules ALIAS i18n: 28 new keys (EN/RU/ZH) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -138,6 +138,16 @@ class GrafanaClient:
|
||||
log.error("Grafana list_alerts failed: %s", exc)
|
||||
return []
|
||||
|
||||
def get_active_alerts(self) -> list[dict]:
|
||||
"""List active (firing) alerts via AlertManager endpoint."""
|
||||
try:
|
||||
results = self._get("/api/alertmanager/grafana/api/v2/alerts")
|
||||
log.info("Grafana: %d active alerts", len(results))
|
||||
return results
|
||||
except Exception as exc:
|
||||
log.error("Grafana get_active_alerts failed: %s", exc)
|
||||
return []
|
||||
|
||||
def list_datasources(self) -> list[dict]:
|
||||
"""
|
||||
List all datasources via GET /api/datasources.
|
||||
|
||||
90
core/i18n.py
90
core/i18n.py
@@ -429,6 +429,19 @@ _EN = {
|
||||
"grafana_connected": "Connected to {alias}",
|
||||
"grafana_no_dashboards": "No dashboards found",
|
||||
"grafana_no_alerts": "No alerts",
|
||||
"grafana_loading": "Loading...",
|
||||
"grafana_loaded": "{dashboards} dashboards, {alerts} alerts, {datasources} datasources",
|
||||
"grafana_no_server": "No server selected",
|
||||
"grafana_open_browser": "Open Grafana",
|
||||
"grafana_datasources": "Datasources",
|
||||
"grafana_ds_name": "Name",
|
||||
"grafana_ds_type": "Type",
|
||||
"grafana_ds_default": "Default",
|
||||
"grafana_dash_title": "Title",
|
||||
"grafana_dash_folder": "Folder",
|
||||
"grafana_alert_state": "State",
|
||||
"grafana_alert_name": "Name",
|
||||
"grafana_alert_severity": "Severity",
|
||||
|
||||
# Prometheus tab
|
||||
"prom_refresh": "Refresh",
|
||||
@@ -444,6 +457,23 @@ _EN = {
|
||||
"prom_no_targets": "No targets",
|
||||
"prom_no_alerts": "No alerts",
|
||||
"prom_placeholder": "up",
|
||||
"prom_loading": "Loading...",
|
||||
"prom_loaded": "{targets} targets, {alerts} alerts, {rules} rules",
|
||||
"prom_no_server": "No server selected",
|
||||
"prom_executing": "Executing...",
|
||||
"prom_results": "Results",
|
||||
"prom_query_placeholder": "e.g. up, node_cpu_seconds_total",
|
||||
"prom_metrics_browser": "Metrics",
|
||||
"prom_filter_metrics": "Filter metrics...",
|
||||
"prom_rules": "Rules",
|
||||
"prom_rule_type": "Type",
|
||||
"prom_rule_name": "Name",
|
||||
"prom_rule_group": "Group",
|
||||
"prom_rule_health": "Health",
|
||||
"prom_target_job": "Job",
|
||||
"prom_target_instance": "Instance",
|
||||
"prom_target_health": "Health",
|
||||
"prom_target_scrape": "Last Scrape",
|
||||
|
||||
# PowerShell tab
|
||||
"ps_execute": "Execute",
|
||||
@@ -956,6 +986,19 @@ _RU = {
|
||||
"grafana_connected": "Подключено к {alias}",
|
||||
"grafana_no_dashboards": "Дашборды не найдены",
|
||||
"grafana_no_alerts": "Нет оповещений",
|
||||
"grafana_loading": "Загрузка...",
|
||||
"grafana_loaded": "{dashboards} дашб., {alerts} оповещ., {datasources} источн.",
|
||||
"grafana_no_server": "Сервер не выбран",
|
||||
"grafana_open_browser": "Открыть Grafana",
|
||||
"grafana_datasources": "Источники данных",
|
||||
"grafana_ds_name": "Имя",
|
||||
"grafana_ds_type": "Тип",
|
||||
"grafana_ds_default": "По умолч.",
|
||||
"grafana_dash_title": "Название",
|
||||
"grafana_dash_folder": "Папка",
|
||||
"grafana_alert_state": "Состояние",
|
||||
"grafana_alert_name": "Имя",
|
||||
"grafana_alert_severity": "Серьёзность",
|
||||
|
||||
# Prometheus tab
|
||||
"prom_refresh": "Обновить",
|
||||
@@ -971,6 +1014,23 @@ _RU = {
|
||||
"prom_no_targets": "Нет целей",
|
||||
"prom_no_alerts": "Нет оповещений",
|
||||
"prom_placeholder": "up",
|
||||
"prom_loading": "Загрузка...",
|
||||
"prom_loaded": "{targets} целей, {alerts} оповещ., {rules} правил",
|
||||
"prom_no_server": "Сервер не выбран",
|
||||
"prom_executing": "Выполнение...",
|
||||
"prom_results": "Результаты",
|
||||
"prom_query_placeholder": "напр. up, node_cpu_seconds_total",
|
||||
"prom_metrics_browser": "Метрики",
|
||||
"prom_filter_metrics": "Фильтр метрик...",
|
||||
"prom_rules": "Правила",
|
||||
"prom_rule_type": "Тип",
|
||||
"prom_rule_name": "Имя",
|
||||
"prom_rule_group": "Группа",
|
||||
"prom_rule_health": "Здоровье",
|
||||
"prom_target_job": "Job",
|
||||
"prom_target_instance": "Инстанс",
|
||||
"prom_target_health": "Здоровье",
|
||||
"prom_target_scrape": "Последний опрос",
|
||||
|
||||
# PowerShell tab
|
||||
"ps_execute": "Выполнить",
|
||||
@@ -1483,6 +1543,19 @@ _ZH = {
|
||||
"grafana_connected": "已连接到 {alias}",
|
||||
"grafana_no_dashboards": "未找到仪表盘",
|
||||
"grafana_no_alerts": "无告警",
|
||||
"grafana_loading": "加载中...",
|
||||
"grafana_loaded": "{dashboards}仪表盘, {alerts}告警, {datasources}数据源",
|
||||
"grafana_no_server": "未选择服务器",
|
||||
"grafana_open_browser": "打开Grafana",
|
||||
"grafana_datasources": "数据源",
|
||||
"grafana_ds_name": "名称",
|
||||
"grafana_ds_type": "类型",
|
||||
"grafana_ds_default": "默认",
|
||||
"grafana_dash_title": "标题",
|
||||
"grafana_dash_folder": "文件夹",
|
||||
"grafana_alert_state": "状态",
|
||||
"grafana_alert_name": "名称",
|
||||
"grafana_alert_severity": "严重程度",
|
||||
|
||||
# Prometheus tab
|
||||
"prom_refresh": "刷新",
|
||||
@@ -1498,6 +1571,23 @@ _ZH = {
|
||||
"prom_no_targets": "无目标",
|
||||
"prom_no_alerts": "无告警",
|
||||
"prom_placeholder": "up",
|
||||
"prom_loading": "加载中...",
|
||||
"prom_loaded": "{targets}目标, {alerts}告警, {rules}规则",
|
||||
"prom_no_server": "未选择服务器",
|
||||
"prom_executing": "执行中...",
|
||||
"prom_results": "结果",
|
||||
"prom_query_placeholder": "例如 up, node_cpu_seconds_total",
|
||||
"prom_metrics_browser": "指标",
|
||||
"prom_filter_metrics": "过滤指标...",
|
||||
"prom_rules": "规则",
|
||||
"prom_rule_type": "类型",
|
||||
"prom_rule_name": "名称",
|
||||
"prom_rule_group": "组",
|
||||
"prom_rule_health": "健康",
|
||||
"prom_target_job": "任务",
|
||||
"prom_target_instance": "实例",
|
||||
"prom_target_health": "健康",
|
||||
"prom_target_scrape": "最后抓取",
|
||||
|
||||
# PowerShell tab
|
||||
"ps_execute": "执行",
|
||||
|
||||
Reference in New Issue
Block a user