插件 〉Plotly
Plotly
Plotly 面板用于 Grafana
使用 Plotly.js 在 Grafana 中创建高级交互式图表。
主要特性
- 使用完整的 Plotly.js 功能灵活创建图表
- 支持 YAML/JSON 以便于配置
- 兼容深色/浅色主题
- 自动和手动时区调整
- 跨轨迹数据应用
- 可扩展的代码编辑器以进行自定义
- Grafana 变量集成
- 全面错误处理
- 多格式(SVG、PNG、JPEG、WebP)的高分辨率图像导出
有关最新更新的完整列表,请参阅我们的 变更日志。
入门指南
由 nLine 开发的 Plotly 面板为 Grafana 中的数据可视化提供了增强的控制。它采用基于组件的方法,允许您独立修改图表元素,而无需复杂的 JavaScript 交互。
面板结构
面板配置由五个主要组件组成
- allData:应用于 Plotly 图表上的所有轨迹
- data:定义图表的数据系列(轨迹)
- layout:控制图表的外观和坐标轴
- config:设置图表的全局选项
- frames:(可选)用于动画图表
这些组件遵循 Plotly.js 架构。您可以使用 YAML 或 JSON 在面板选项中配置它们。
数据转换
您可以在渲染之前使用自定义脚本转换您的数据。脚本可以访问
data
:来自您的 Grafana 数据源的原始数据variables
:Grafana 仪表板和系统变量options
:当前面板配置utils
:辅助函数(例如,时区转换、dayjs 用于日期操作)
上下文变量
脚本可以访问多个上下文变量,这些变量提供了有用的信息和功能。
变量
此对象包含Grafana仪表板变量和本地Grafana变量。具有相同名称的本地变量优先于仪表板变量。
关键的本地变量包括
__from
和__to
:当前时间范围的起始和结束时间戳__interval
和__interval_ms
:以字符串格式(例如,“1h”)和毫秒表示的时间间隔__timezone
:当前仪表板时区__timeFilter
:一个生成时间范围过滤表达式的函数__dashboard
:当前仪表板对象
utils
utils
对象提供了几个实用函数和服务,以帮助进行数据处理和面板交互
timeZone
:仪表板时区dayjs
:一个轻量级的日期操作库matchTimezone
:一个便利函数,用于将时间序列数据转换为用户的时区locationService
:Grafana的URL操作位置服务getTemplateSrv
:Grafana的模板服务,用于变量替换replaceVariables
:一个用于在字符串中替换Grafana变量的函数
处理脚本
脚本必须返回一个对象,该对象定义了图表配置。此对象可以包含以下一个或多个属性
data
:一个定义图表数据系列的跟踪对象数组layout
:一个控制图表外观和轴的对象config
:一个设置图表全局选项的对象frames
:一个动画图表的帧对象数组
注意: data
和frames
属性应该是对象数组。 "跨跟踪数据"字段可以是对象,它将参数应用于脚本部分中返回的所有跟踪。对象将与脚本对象合并,并给予优先级(例如,脚本的data
> allData
> data
)。
脚本定义在“处理脚本”编辑器中。
// Example: Basic timeseries plot const { data, variables, options, utils } = arguments; let series = data.series[0]; let x = series.fields[0]; let y = series.fields[1];
return { data: [ { x: x.values || x.values.buffer, y: y.values || y.values.buffer, type: ‘scatter’, mode: ’lines’, name: x.name, }, ], layout: { xaxis: { title: x.name }, yaxis: { title: y.name }, }, };
点击事件处理
面板支持点击、选择和缩放事件。您可以使用“事件触发”编辑器为这些事件定义自定义行为。
// Event handling const { type: eventType, data: eventData } = event; const { timeZone, dayjs, locationService, getTemplateSrv } = utils;
switch (eventType) { case ‘click’: console.log(‘Click event:’, eventData.points); break; case ‘select’: console.log(‘Selection event:’, eventData.range); break; case ‘zoom’: console.log(‘Zoom event:’, eventData); break; }
屏幕截图
有关屏幕截图,请参阅src/img
文件夹。
在Grafana Cloud上安装Plotly
在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工具从命令行安装Plotly
grafana-cli plugins install
插件将被安装到您的Grafana插件目录中;默认为/var/lib/grafana/plugins。有关CLI工具的更多信息,请参阅CLI工具信息。
2. 将面板添加到仪表板
已安装的面板立即在Grafana主菜单的仪表板部分可用,可以像添加任何其他核心面板一样添加。
要查看已安装面板的列表,请单击主菜单中的插件项。核心面板和已安装面板都将显示。
变更日志
此文件将记录本项目的所有重大更改。
[1.8.1] - 2024-09-30
更改
- 在utils中添加了适当的replaceVariables函数(与作用域变量一起工作)
修复
- 检测到空的dataframe
[1.8.0] - 2024-08-27
更改
- 添加了对点击、选择和缩放事件的支撑
- 实现仪表板时间范围与图表缩放的同步
- 扩展脚本上下文,包括更多的Grafana变量和实用工具
- 更新README,包括详细的用法说明和示例
- 改进错误处理和代码组织
- 添加迁移脚本以兼容旧版本
修复
- 标题正确替换变量
[1.7.0] - 2024-08-07
更改
- 主要的重构,包含多个修复和改进
- 图像导出反映了所有配置选项
- 与Grafana匹配的浅色/深色主题
- 更新主题颜色
- 更好的错误显示
- 当源中没有数据时,显示更清晰的提示信息
- 更新边距(所有默认为0)
- 更多缓存以减少重绘
- 修复工作流并更新Node版本
- 使用grafana/create-plugin更新
- 更新许可证
- 添加了变更日志
修复
- 修复高度/宽度调整问题
- 修复脚本验证可能导致的崩溃
[1.6.7] - 2024-04-08
修复
- 1.6.7的小修复
[1.6.6] - 2024-03-27
更改
- 将图像渲染功能从面板中移除
- 改进错误处理
- 更新到create-plugin
[1.6.5] - 2024-01-08
更改
- 更新README.md
- 修复可调整大小的问题
[1.6.4] - 2023-11-16
修复
- 修复时区匹配器
[1.6.3] - 2023-11-16
添加
- 添加了选择时间校正列的能力
[1.6.2] - 2023-10-26
改进
- 增强matchTimezone逻辑
[1.6.1] - 2023-10-06
添加
- 添加图像导出格式选择器
更改
- 现在传递整个变量对象
[1.6.0] - 2023-09-25
修复
- 修复“浏览器”时区问题
更改
- 移除强制默认值
- 添加matchTimezone函数