插件的协议

有一个物理连线协议,Grafana服务器使用与后端插件通信。这是Grafana和后端插件之间的契约,为了使Grafana和后端插件能够相互通信,必须达成协议。插件协议是在此基础上构建的gRPC并且定义为协议缓冲区(又名protobuf)

我们建议后端插件不要直接根据这个协议来实现。相反,更喜欢使用Grafana插件SDK for Go它实现了这个协议,并提供了更高级别的api。

插件协议可在GitHub库.插件协议存在于Grafana插件SDK for Go因为Grafana本身使用部分SDK作为依赖。

版本控制

在插件协议的最新版本中,服务、消息和字段的添加是可以预料的,但不应该引入任何破坏性的更改。如果需要对插件协议进行突破性的更改,则会创建一个新的主要版本的插件协议,并与新的主要的Grafana版本一起发布。Grafana将在一段时间内同时支持旧的和新的插件协议,以确保现有的后端插件能够继续工作。

由于Grafana维护插件协议,插件协议试图遵循Grafana的版本控制,然而,这并不意味着当一个新的主要版本的Grafana发布时,会自动创建一个新的主要版本的插件协议。

不使用Go编写插件

如果你想用Go以外的语言写一个后端插件,那么只要语言支持就可以gRPC.然而,在Go中编写插件是推荐的,它有几个优点,在继续之前应该仔细考虑:

  • 有一个官员SDK可用。
  • 单个二进制文件作为编译后的输出。
  • 为多个平台构建和编译非常简单。
  • 静态编译的二进制文件(在大多数情况下)不需要在目标平台上安装任何额外的依赖项,使其能够“在任何地方”运行。
  • 在二进制文件大小和资源使用方面占用空间小。