插件 〉Tree View
Tree View
Grafana Tree 面板插件
此面板插件可以根据数据源提供的记录显示一个树状结构。该插件已针对JSON API数据源进行了优化和测试。
此插件用于呈现 JSON API 响应,例如从 Kubernetes API 接收的 Kubernetes 资源。可能的生产环境在https://github.com/pgillich/grafana-kubernetes中有所描述。
关于 Kubernetes Namespace 的示例截图
面板编辑器截图
数据源
数据源的所有值都转换为字符串。对象类型则转换为 JSON 字符串。最好的数据源是JSON API,但也可能使用其他数据源,例如 TestData Logs
字段中的值数量必须相同,因此必须替换缺失值。JSON API支持 JSONata,因此这是可能的。
用于 Kubernetes API 的示例 JSONata 表达式,它替换了缺失值(appName
、containerState
)并生成关于列表(containerImage
、containerState
)的字符串
$map(items, function($v) {{"namespace": $v.metadata.namespace, "name": $v.metadata.name, "appName": $v.metadata.labels."app.kubernetes.io/name" ? $v.metadata.labels."app.kubernetes.io/name" : ($v.metadata.labels."app" ? $v.metadata.labels."app" : "-"), "statusPhase": $v.status.phase, "containerCount": $count($v.spec.containers), "containerImage": $join($v.spec.containers[*].image, " "), "containerState": $v.status.containerStatuses[*].state ? $string($v.status.containerStatuses[*].state) : "-"}})
如果 Grafana 在 Kubernetes 集群外部运行,可以通过kubectl proxy
命令为JSON API创建 API 端点,以便访问集群
kubectl proxy --address 0.0.0.0 --accept-hosts='.*' --reject-methods=POST,PUT,PATCH -v5
强烈建议在字段定义中使用相同的 JSONata 表达式,只需更改选定的字段即可,例如
面板选项
选项说明可在面板选项编辑器中查看
默认模板引擎是一个简单快速的${field}
-风格表达式处理器,例如
${statusPhase}
${namespace}
${appName} ${name}
${containerImage}
如果需要更复杂的模板引擎,可以使用Handlebars,它是一个{{field}}
-风格的引擎,例如
面板编辑器截图,使用 Handlebars 引擎
Handlebars 扩展
Pod 信息
已向Handlebars添加了额外功能,以便更好地获取 Kubernetes Pods 的信息。从 Kubernetes API 响应评估STATUS
和其他kubectl get pod -o wide
列是很复杂的,因此我们将printPod()函数移植到了 TypeScript。语法为:{{printPodColumn <whole_pod> "<column>"}}
,其中<whole_pod>
是包含整个 pod 的字段,<column>
是kubectl get pod -o wide
列名称,例如
NAME
READY
STATUS
RESTARTS
AGE
IP
NODE
NOMINATED_NODE
READINESS_GATES
MESSAGE
AGE
的行为稍有不同:它更精确一些。MESSAGE
列包含有关STATUS
的附加信息(原因)。printPodColumn
示例
{{printPodColumn rawPod "STATUS"}}
{{namespace}}
{{appName}} {{name}}
{{containerImage}} {{printPodColumn rawPod "MESSAGE"}}
上述模板的示例 JSONata 数据源表达式
$map(items, function($v) {{"rawPod": $v, "namespace": $v.metadata.namespace, "name": $v.metadata.name, "appName": $v.metadata.labels."app.kubernetes.io/name" ? $v.metadata.labels."app.kubernetes.io/name" : ($v.metadata.labels."app" ? $v.metadata.labels."app" : "-"), "statusPhase": $v.status.phase, "containerCount": $count($v.spec.containers), "containerImage": $join($v.spec.containers[*].image, " "), "containerState": $v.status.containerStatuses[*].state ? $string($v.status.containerStatuses[*].state) : "-"}})
比较来自原始 Kubernetes API 和printPodColumn
函数的 Pod 状态信息的示例截图
示例仪表盘
示例仪表盘可在examples中找到。
Namespace Pods.json
所选 Namespace 的 Pods,简单模板引擎All Pods.json
所有 Namespaces 的 Pods,使用kubectl
列的 Handlebars 模板引擎。
创建 Issue
请在新 Issue 中附加示例 JSON 文件。
贡献
更多详情请见CONTRIBUTING.md。
在 Grafana Cloud 上安装 Tree View
在 Grafana Cloud 实例上安装插件只需一次点击;更新也是如此。很酷,对吧?
请注意,插件可能需要长达 1 分钟才能在您的 Grafana 中显示。
在 Grafana Cloud 实例上安装插件只需一次点击;更新也是如此。很酷,对吧?
请注意,插件可能需要长达 1 分钟才能在您的 Grafana 中显示。
在 Grafana Cloud 实例上安装插件只需一次点击;更新也是如此。很酷,对吧?
请注意,插件可能需要长达 1 分钟才能在您的 Grafana 中显示。
在 Grafana Cloud 实例上安装插件只需一次点击;更新也是如此。很酷,对吧?
请注意,插件可能需要长达 1 分钟才能在您的 Grafana 中显示。
在 Grafana Cloud 实例上安装插件只需一次点击;更新也是如此。很酷,对吧?
请注意,插件可能需要长达 1 分钟才能在您的 Grafana 中显示。
在 Grafana Cloud 实例上安装插件只需一次点击;更新也是如此。很酷,对吧?
请注意,插件可能需要长达 1 分钟才能在您的 Grafana 中显示。
在 Grafana Cloud 实例上安装插件只需一次点击;更新也是如此。很酷,对吧?
请注意,插件可能需要长达 1 分钟才能在您的 Grafana 中显示。
更多信息,请访问文档关于插件安装。
在本地 Grafana 上安装
对于本地实例,插件通过简单的 CLI 命令进行安装和更新。插件不会自动更新,但在您的 Grafana 中会收到可用更新的通知。
1. 安装面板
使用 grafana-cli 工具从命令行安装 Tree View
grafana-cli plugins install
插件将安装到您的 grafana 插件目录中;默认目录为 /var/lib/grafana/plugins。有关 CLI 工具的更多信息。
2. 将面板添加到仪表盘
已安装的面板会立即显示在 Grafana 主菜单的“仪表盘”部分,并且可以像 Grafana 中的任何其他核心面板一样添加。
要查看已安装面板列表,请单击主菜单中的“插件”项。核心面板和已安装面板都会显示。
变更日志
<!-- 0.1.9 START -->
0.1.9 (2022-06-)
特性和增强
错误修复
- 移除 kubernetes/client-node 依赖
- 处理空的和未定义的 JSON 列表
<!-- 0.1.9 END -->
<!-- 0.1.8 START -->
0.1.8 (2022-02-)
特性和增强
- 添加Handlebars模板引擎。
- 添加生成的@kubernetes/client-node模型到源代码
- 向 Handlebars 模板引擎添加类似
kubectl get pod -o wide
列的评估功能。
错误修复
- 更好地处理空的 JSON 列表
- Kubernetes 开发者信息
<!-- 0.1.8 END -->
<!-- 0.1.7 START -->
0.1.7 (2022-05-26)
特性和增强
已签名插件。
错误修复
<!-- 0.1.6 START -->
0.1.6 (2022-02-01)
首次提交给 Grafana 评审的版本。
特性和增强
错误修复
<!-- 0.1.6 END -->