构建 Dashboard 的方法
方式一、创建面板
Build your first dashboard | Grafana documentation
Textbox 较小,目前暂未添加配置其宽度的特性:
The text box is too small! (variables) · Issue #29672 · grafana/grafana · GitHub
Variables: Make TextBox variable width adjustable. by STEELBADGE · Pull Request #29794 · grafana/grafana · GitHub
方式二、导入面板
helm-charts/charts/grafana at main · grafana/helm-charts
Export and import | Grafana documentation
Provision dashboards and data sources | Grafana Labs
导入面板的方法分为两类:
1)通过 Web GUI 直接导入面板配置;
2)此外 Dashboard 仅支持通过目录来自动加载,即:Grafana 将自动扫描目录,并从中加载 Dashboard 配置;
在 Web UI 中,导入面板的方法如下:
1)导入:左侧栏 => + => Import
2)导出:在 Dashboard 中,右上角,单击 Save Dashboard 按钮(软盘形状);
在 Helm Chart 中,导入面板的方法如下:
1)将 Chart 解压:其中的 dashboards/ 目录用于存放 Dashboard 设置,其将被自动引入到部署中;
2)下载 Dashboard 并将 .json 保存到 dashboards/ 目录中,
3)修改 values.yaml 文件:通过 dashboards.<name>.file: dashboard/dashboard.json 引入;
4)然后,取消 dashboardProviders 的注释;
5)最后,helm install/upgrade 即可;
X)此外 Chart 还支持其他方式来获取 Dashboard(例如 通过 HTTP 下载 等等),但其本质还是目录发现;
将 Panel 模板化
Grafana documentation/Manage library panels
Pannel,用于显示数据(图标),为了完成数据对比,我们需要在多个 Dashboard 中显示相同的图表,即使用相同的 Panel 配置;
在 Grafana 中,通过 Panel Library 能够实现 Panel 的复用,并且能够进行同步修改(或单独修改)
# 11/08/2022 Grafana v8.5.3,我们还未找到通过 Provision 来配置 Library Panel 的方法;
使用 Dashboard 的方法
Use dashboards | Grafana documentation
动态创建 Panel 实例
Learn Grafana: How to automatically repeat rows and panels in dynamic dashboards | Grafana Labs
在页面中,我们希望 Panel 是动态创建的,而非提前预先配置好数量的;
例如,当我们选择某个 Variable 后,如果其有多个值,则页面将对每个值创建与之对应的 Panel 实例;
解决方案,通过 Row 实现:
1)首先,添加 Panel 然后添加 Row,此时 Panel 将被绑定到该 Row 中;
2)然后,针对该 Row 进行配置 Repeat for 选项,选定某个 Variable 参数;
3)更新,保存;
在 Title 中,能够使用变量,以显示动态的 Title 名称;
在 Variable 中,能够隐藏 Value 以将其在下拉选项中隐藏;
配置默认主页
Grafana documentation/Configure Grafana
配置默认的主页面
通过 grafana.ini 配置,例如 users.home_page: /dashboards 直接跳转到 /dashboards 页面;
配置用户默认面板
通过 Web GUI 配置:
1)针对当前用户,其能够配置默认 Dashboard 页面;
2)针对 Team 配置,能够配置当前 Team 的默认 Dashboard 页面;
在 Dashboard 中,嵌入第三方页面
Grafana Labs Community Forums/Disable_sanitize_html change without any effects
Embedding a website in a Grafana dashboard – Stack Overflow
X-Frame-Options – HTTP | MDN
asp.net – X-Frame-Options Allow-From multiple domains – Stack Overflow
1)修改 grafana.ini 文件:
[panels] disable_sanitize_html=true
2)创建 Panel 并选择 Text 类型;
3)Display -> Mode -> HTML,并填写 <iframe></iframe>
补充说明:
1)第三方页面的 HTTP Header 要返回 Content-Security-Policy 以允许 iframe 嵌套;
Pannel
Logs
Line limit: 1000,针对我们当前使用的 Grafana 版本,Query 将返回最多 1000 行日志;
Variable
Add a data source variable | Grafana Labs
在 Dashboard 的 JSON 中,可以为 datasource 使用变量,以进行快速切换。因为有些模板使用这种方式,因此需要我们手动定义变量。
Q:在变量值中,如果包含字符,那么其值将被自动转义?
A:通过 ${has_important_details:raw} 形式,以保持值的原始状态;
R:elasticsearch – How to avoid escaping custom Grafana variable?