grafana-wtf - 本着 git-wtf 的精神 grep 所有 Grafana 实体.
注意力!
该程序可能会给您的 Grafana 实例和底层数据库机器带来巨大的负载。小心处理!
在 Grafana(仪表板和数据源)中搜索字符串“weatherbase”。
grafana-wtf 查找weatherbase
显示所有仪表板中的 50 个最新更改。
grafana-wtf 日志 --number=50
更详细地探索仪表板和数据源。
grafana-wtf 探索仪表板 grafana-wtf 探索数据源
探索插件。
grafana-wtf 插件列表 grafana-wtf 插件状态
使用 Docker 运行:
# 访问本地主机上的 Grafana 实例,无需身份验证。 docker run --rm -it --env GRAFANA_URL="http://host.docker.internal:3000" ghcr.io/grafana-toolbox/grafana-wtf grafana-wtf 信息 # 通过身份验证访问 Grafana 实例。 docker run --rm -it --env GRAFANA_URL="https://grafana.example.org/grafana" --env GRAFANA_TOKEN="eyJrIjoiWHg...dGJpZCI6MX0=" ghcr.io/grafana-toolbox/grafana-wtf grafana-wtf 信息
grafana-wtf find
grafana-wtf log
grafana-wtf
pip 安装 grafana-wtf
请按照以下步骤使用您的 Grafana 实例创建 API 密钥:
https://daq.example.org/grafana/org/apikeys
。curl -H "Authorization: Bearer eyJrIjoiWHg...dGJpZCI6MX0=" ...
,请记下 Bearer 令牌。这是您的 Grafana API 密钥。 要配置要连接到的 Grafana 实例以及如何进行身份验证,请使用--grafana-url
和--grafana-token
命令行选项。
或者,在运行grafana-wtf
之前,您可以使用环境变量定义 Grafana 实例的 URL 和访问令牌:
导出 GRAFANA_URL=https://daq.example.org/grafana/ 导出 GRAFANA_TOKEN=eyJrIjoiWHg...dGJpZCI6MX0=
为了接受不受信任的 SSL 证书,请将?verify=no
查询字符串附加到GRAFANA_URL
:
导出 GRAFANA_URL=https://daq.example.org/grafana/?verify=no
grafana-wtf
默认情况下会缓存 HTTP 响应 60 分钟,以节省资源,不会对每个服务器进行访问。您可以使用--cache-ttl
选项或CACHE_TTL
环境变量来配置该设置。
当使用--drop-cache
选项调用程序时,它将预先删除其缓存。
# 显示一堆元信息和统计信息。 grafana-wtf 信息 --format=yaml # 显示Grafana版本。 grafana-wtf 信息 --format=json | jq -r '.grafana.version'
如何找到未使用的数据源?
# 显示所有数据源和使用它们的仪表板,以及未使用的数据源。 grafana-wtf 探索数据源 --format=yaml # 将未使用的数据源的名称显示为平面列表。 grafana-wtf 探索数据源 --format=json | jq -r '.unused[].datasource.name'
如何查找使用不存在数据源的仪表板?
# 显示所有仪表板的一些详细信息,包括缺少的数据源的名称。 grafana-wtf 探索仪表板 --format=yaml # 仅显示缺少数据源的仪表板及其名称。 grafana-wtf 探索仪表板 --format=json | jq '.[] |选择(.datasources_missing)| .dashboard + {ds_missing: .datasources_missing[] | [。姓名]}'
如何使用特定数据源查找仪表板?
# 显示使用特定数据源的所有仪表板,按数据源名称过滤。 grafana-wtf 探索仪表板 --format=json | jq '.[] | select(.datasources | .[].type=="<datasource_name>")' # 显示使用特定类型数据源的所有仪表板。这里:InfluxDB。 grafana-wtf 探索仪表板 --format=json | jq '.[] | select(.datasources | .[].type=="influxdb")'
如何列出所有仪表板中使用的所有查询?
grafana-wtf 探索仪表板 --data-details --queries-only --format=json | jq '.[].详细信息 |值[] | .[]| .expr、.jql、.query、.rawSql | select( . != null 和 . != "" )'
在所有仪表板和数据源中查找字符串weatherbase
:
grafana-wtf 找到weatherbase
将仪表板中所有出现的ldi_v2
替换为ldi_v3
并使用 UID _JJ22OZZk
:
grafana-wtf --select-dashboard=_JJ22OZZk 替换 ldi_v2 ldi_v3
为了预览更改,您应该事先使用--dry-run
选项:
grafana-wtf --select-dashboard=_JJ22OZZk 替换 ldi_v2 ldi_v3 --dry-run
留意任何仪表板上最近的编辑活动吗?
# 在所有仪表板上显示 50 个最新更改。 grafana-wtf 日志 --number=50
要发现更多命令行参数及其参数,请调用grafana-wtf --help
并查看 grafana-wtf 示例。
git 克隆 https://github.com/grafana-toolbox/grafana-wtf cd grafana-wtf # 运行所有测试。 进行测试 # 运行选定的测试。 pytest --keepalive -vvv -k test_find_textual