插件 〉simple grpc datasource
simple grpc datasource
Grafana Simple gRPC 数据源插件
这个插件是什么?
这个后端 Grafana 数据源插件提供用户友好的 Grafana 体验,只需配置少量的简单通用参数。它带有一个专用的 API 规范,需要在数据提供商的后端实现。实施此 API 有助于将前端可视化解决方案与后端数据层实现解耦,使开发人员能够自由更新和改进后端,而不会破坏最终用户体验。
protobuf API 规范可以在 pkg/proto 目录中找到。在配置数据源插件时,最终用户提供一个端点 URL,也可以选择提供 API 密钥。数据源将尝试建立 gRPC 连接,并根据 API 规范向给定的端点发出调用。
有关 gRPC 或 protobuf 的更多信息,请参阅 gRPC 文档。
为什么选择 gRPC?
gRPC 是一个快速高效的框架,用于服务间通信,并通过 protobuf 为 API 实施提供可靠且简化的工作流程。
gRPC 还支持所有必要的流式传输功能,这些功能可以在未来的版本中实现。
安全性
数据源插件通过 TLS 建立安全的 gRPC 连接。此外,数据源还支持 API 密钥授权。API 密钥将作为调用元数据的一部分包含在每个 API 调用中。
用法
指标
随着时间序列数据点流的追加而更新的新值的变量。
维度
维度是度量的可选标识属性。每个维度都建模为键值对。一个度量可以有零个或多个维度,这些维度共同唯一地标识它。
查询类型
类型 | 描述 |
---|---|
获取指标历史记录 | 获取历史时间序列值 |
获取指标聚合 | 获取聚合时间序列 |
获取指标值 | 获取最后已知值 |
入门指南
- 在本地启动示例 grpc 服务器
docker run -p 50051:50051 innius/sample-grpc-server
安装 innius-simple-grpc-datasource
启用数据源
- 配置端点
localhost:50051
- 配置端点
配置仪表板
实施您自己的后端 API
此数据源插件期望后端实施 Simple 或 Advanced 接口。
Simple API (GrafanaQueryAPI)
此 API 提供以下操作
名称 | 描述 |
---|---|
ListDimensionKeys | 返回所有可用维度键的列表 |
ListDimensionValues | 返回维度键的所有可用维度值的列表 |
ListMetrics | 返回维度组合的所有指标的列表。 |
GetMetricValue | 返回指标的最后已知值。 |
GetMetricHistory | 返回指标的历史值 |
GetMetricAggregate | 返回聚合指标值 |
可以在此处找到示例实现。
此 API 有一些限制
- 它每个查询仅支持一个指标
- 它不支持具有多个选项的变量
- 它不支持指标的增强元数据(例如单位等)
- 它不支持灵活的查询选项
Advanced API (GrafanaQueryAPIV3)
此 API 提供的操作几乎与 Simple API 相同,但有一个主要区别:它支持同一查询的多个指标。因此,此 API 可以与 Grafana 模板功能无缝集成。此外,它还支持增强的指标元数据,例如度量单位。另一个区别是它支持 Grafana 标签。
高级 API 支持由后端系统定义的动态查询选项。这使得可以为特定后端定制 Grafana 查询的行为。自定义选项的一个示例是 GetMetricAggregate 查询的聚合。API 的 v1 版本具有固定数量的聚合,由插件定义。后端系统无法添加不同的选项。但是,V3 API 支持这一点。目前,选项可以是枚举类型或布尔类型。
此 API 提供以下操作
名称 | 描述 |
---|---|
ListDimensionKeys | 返回所有可用维度键的列表 |
ListDimensionValues | 返回维度键的所有可用维度值的列表 |
ListMetrics | 返回维度组合的所有指标的列表。 |
GetMetricValue | 返回一个或多个指标的最后已知值。 |
GetMetricHistory | 返回一个或多个指标的历史值 |
GetMetricAggregate | 返回一个或多个指标的聚合值 |
GetQueryOptions | 返回所选查询类型的选项 |
可以在此处找到示例实现。
用例示例
- 具有不同标签的同一指标的不同时间序列。例如:温度度量是一个房间。房间有四个区域:北、南、东和西。除非为每个温度/区域组合定义了四个不同的指标,否则 V1 API 不支持这种情况。高级 API 通过为同一指标
temperature
返回多个时间序列来支持这种情况,每个时间序列都使用不同的标签zone
进行注释。 - 不同指标的不同时间序列。例如:一个房间有多个温度传感器。V1 API 通过为每个指标定义多个查询来支持这一点。高级 API 可以通过单个查询来完成此操作。
重要提示:为了使用高级 API,后端服务器需要支持 gRPC 反射。插件使用它来确定后端是否支持 V2 或 V3 协议。如果不支持,则回退到 Simple API 实现。
请注意,gRPC 与编程语言无关,这使得可以使用您选择的语言实现后端。查看您语言的 gRPC 文档。
(GrafanaQueryAPIV2) 和 (GravanaQueryAPIV3) 之间的更改
最重要的区别是 V2 API 的聚合类型在 V3 API 中不可用,除非它们在后端定义。
后端代码必须实现类似这样的代码
const ( // this id is important because it matches the current v2 aggregate type option AggregationTypeOptionID = iota // these enum values are important because they match the values of the V2 options AggregationTypeAverage = 0 AggregationTypeMax = 1 AggregationTypeMin = 2 AggregationTypeCount = 3 )
func (backend *BackendServerV3) GetQueryOptions(ctx context.Context, in *v3.GetOptionsRequest) (*v3.GetOptionsResponse, error) { var Options []*v3.Option switch in.GetQueryType() { case v3.GetOptionsRequest_GetMetricAggregate: Options = append(Options, []*v3.Option{ { Id: strconv.Itoa(AggregationTypeOptionID), Label: “Aggregate”, Description: “Aggregate the query results”, Type: v3.Option_Enum, EnumValues: []*v3.EnumValue{ {Label: “Average”, Description: “Calculate the average of the values”, Id: strconv.Itoa(AggregationTypeAverage)}, {Label: “Min”, Description: “Calculate the minimum of the values”, Id: strconv.Itoa(AggregationTypeMin)}, {Label: “Max”, Description: “Calculate the maximum of the values”, Id: strconv.Itoa(AggregationTypeMax)}, {Label: “Count”, Description: “Calculate the sum of the values”, Id: strconv.Itoa(AggregationTypeCount)}, }, }, }…) case v3.GetOptionsRequest_GetMetricValue: return &v3.GetOptionsResponse{}, nil case v3.GetOptionsRequest_GetMetricHistory: return &v3.GetOptionsResponse{}, nil } return &v3.GetOptionsResponse{Options: Options}, nil }
可以在此处找到 V3 后端的示例实现
功能
- 在一个查询中选择多个指标
- 灵活的维度选择
- 与 Grafana 变量和模板集成
- 允许后端系统提供额外的元数据,例如值映射、度量单位等。
- 支持通知
- 支持分页
- 如果后端服务器容量达到最大值,则支持 gRPC 调用的重试
- 允许后端系统定义自定义查询选项。
路线图
- 支持注释
- 支持流式查询
在 Grafana Cloud 上安装 simple grpc datasource
在 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 工具从命令行安装 simple grpc datasource
grafana-cli plugins install
插件将安装到您的 grafana 插件目录中;默认目录是 /var/lib/grafana/plugins。有关 cli 工具的更多信息。
2. 配置数据源
从 Grafana 主菜单访问,新安装的数据源可以立即在“数据源”部分中添加。
接下来,单击右上角的“添加数据源”按钮。数据源将在“类型”选择框中可用。
要查看已安装数据源的列表,请单击主菜单中的“插件”项。核心数据源和已安装的数据源都将显示。
更新日志
1.2.12
- 修复:按“名称”字段对帧进行排序
1.2.10
- chore:更新依赖项
1.2.7
- refactor:将分页逻辑移动到插件后端
- chore:更新依赖项
- chore:更新
docker-compose.yml
中的 grafana 版本 - chore:将
sample-grpc-server
添加到docker-compose.yml
1.2.6
- 修复:确保单值统计查询适应字符串值。
1.2.5
- feature:允许后端系统返回字符串值
1.2.3
- refactor:改进的后端错误消息 feat:增强查询编辑器中指标选择控件的宽度
- chore:更新到最新的 grafana 框架 fix:在更改查询类型后重置查询选项
1.2.2
bugfix:修复后端资源路径
1.2.1
- feature:提供具有默认值的后端查询选项
- feature:在检索查询选项时,将当前选定的查询选项发送到后端
- feature:在 GetMetricQuery 中包含 grafana 时间范围
- feature:查询选项编辑器的布局改进
1.1.1.
- docs:解释 API 版本之间的差异
1.1.0
- feature:添加新的 v3 API,允许后端定义查询选项
1.0.14
upgrade grafana 依赖项和 grafana 工具
1.0.12
- feature:支持后端值映射
1.0.11
- fix:指定正确的 grafana 版本依赖项
1.0.10
- feature:后端 grpc 调用的重试机制
- feature:将维度值过滤器添加到 VariableQueryEditor
- feature:更新到最新的 grafana 框架
1.0.9
- feature:改进的维度选择组件
- feature:添加支持维度键和指标的变量编辑器
1.0.8
- bugfix:从仪表板面板触发“浏览”时指标不正确
- bugfix:修复 Chrome 浏览器的维度下拉列表故障
1.0.7
- feature:提供带有选定维度的 ListDimensions 以启用高级后端筛选
- feature:支持帧元数据以启用来自后端的用户通知
- bugfix:具有多个帧的查询的分页无法正常工作
1.0.6
- upgrade:升级到最新的 grafana 工具包
- feature:添加 v2 API,更好地与 grafana dataframe API 对齐
- feature:将字段名称添加到显示名称表达式
1.0.5
- feature:将
COUNT
聚合类型添加到可能的聚合列表中 - feature:支持显示名称表达式(也称为别名)
- bugfix:从 metricFind 查询中排除变量
1.0.4
- 改进的指标选择
- 支持 Count 聚合类型
- 将 grafana
intervalMS
和MaxItems
属性添加到查询定义
1.0.3
从用户界面隐藏技术 grpc 错误;后端插件记录错误详细信息并返回用户友好的消息给用户。
1.0.2
- 添加对 GetMetricAggregate 查询的支持
- 修复 Readme 中的一些错别字
- 将插件 ID 更正为标准 grafana 插件 ID 约定
1.0.0(未发布)
初始版本。