Plugins

OpenTSDB 2.0 引入了插件框架,使各种贡献者可以快速轻松地自定义其 TSD。本文档为您提供了插件系统的概述,并将链接到一些可用的实现。

General

插件在运行时由 TSD 或命令行 Util 加载。一旦程序或守护程序运行,便无法更改插件配置。您必须重新启动程序才能使更改生效。

插件是 JAR 文件,必须将其下载到 OpenTSDB 可访问的目录中。创建目录后,必须通过tsd.core.plugin_path属性在opentsdb.conf配置文件中指定该目录。如果该插件具有未编译到该插件中且不在标准 Classpath 中的依赖项 JAR,则也必须将它们复制到此插件目录中。

一旦安装了 JAR,就必须在配置文件中为指定的插件类型选择它们。通常,这将是完全限定的 Java 类名称,例如“ net.opentsdb.search.ElasticSearch”。每个插件也应具有“已启用”属性,必须将该属性设置为true才能加载该插件。插件也可能具有必须正确添加到opentsdb.conf文件中的配置设置。请参阅插件的文档。有关详情,请参见Configuration

启动 TSD 或 CLI 工具时,由于插件问题,许多错误可能会阻止成功启动。如果发生任何事情,您应该在与插件相关的日志中看到异常。需要解决的一些问题包括:

  • 确保已配置tsd.core.plugin_path

  • 检查用户 OpenTSDB 在其下运行的路径是否可读,即检查权限

  • 检查配置文件中的拼写错误。大小写对于插件名称很重要。

  • 该插件可能无法访问其所需的依赖项。如果它具有不包含在 OpenTSDB 中或未打包到其自己的 JAR 中的依赖项,则需要在插件路径中删除该依赖项。

  • 该插件可能缺少初始化它所需的配置设置。阅读文档,看看是否有任何遗漏。

Note

在 Producing 启用新插件之前,应始终在开发或质量检查环境中对其进行测试。插件可能会对写入或读取性能产生不利影响,因此请确保进行一些负载测试,以免降低 TSD 并丢失数据。

Logging

插件及其依赖项可能很闲谈,因此您可能需要调整 Logback 设置以减少消息数量。

Serializers

HTTP API 提供了一个插件接口,用于以默认 JSON 格式以外的格式对数据进行序列化和反序列化。这些插件在配置文件中不需要插件名称或启用标志。相反,只需将插件放在插件目录中,即可在启动 TSD 时加载它。启动时可以加载多个序列化插件。序列化程序插件可能需要配置属性,因此在使用它们之前请查阅文档。

Plugins

除默认值外,目前没有实现。

Authentication

身份验证插件允许 OpenTSDB 在处理请求之前对请求进行身份验证。此插件已插入 Netty 管道,一旦身份验证完成,它将为该连接删除自身。

Note

在 2.4.0 中添加

Plugins

  • Basic Authentication-该示例根据接受的用户列表检查提供的用户名和密码。不能用于生产用途,不能持久存储或存储用户,实际上还不是那么安全。该插件旨在显示实现身份验证插件和测试插件接口的基础。

启动和服务发现

有时会在需要额外的初始化或注册的环境中使用 OpenTSDB,而 OpenTSDB 通常无法直接使用。可以启用启动插件,当 OpenTSDB 初始化时,准备为流量提供服务时以及在关闭时,将被调用。 tsd.startup.plugin属性可用于指定插件类,而tsd.startup.enable将指示 OpenTSDB 尝试加载启动插件。

Note

在 2.3.0 中添加

Plugins

  • Identity Plugin-插件示例,什么都不做,但是可以用作将来的启动插件的起点,并且可以用于测试注册机制。

  • Apache Curator-一个 Beta 插件,可使用 Apache Curator 的服务发现机制在 Zookeeper 中注册 OpenTSDB

OpenTSDB 可以将元数据和 Comments 发送到搜索引擎,以进行复杂的查询。可以为 TSD 启用单个搜索插件以推送数据或执行查询。 tsd.search.plugin属性使您可以选择搜索插件,而tsd.search.enable将开始发送数据和查询。 TSD 会加载搜索插件,并选择命令行工具(例如 UID Manager 工具)。

Plugins

实时发布

TSD 接收到的每个数据点都可以发送到另一个目标进行实时处理。可以一次启用一个此类插件。 tsd.rtpublisher.plugin属性使您可以选择插件,而tsd.rtpublisher.enable将开始发送数据。

Plugins

  • RabbitMQ-用于按度量标准名称发布到 RabbitMQ 集群的概念验证插件

  • Skyline-概念验证插件,可发布到 Etsy Skyline 处理器

RPC

本机上,OpenTSDB 支持通过 Telnet 或 HTTP 提取数据点。 RPC 插件界面允许用户实施和选择其他协议,例如 Protobufs,Thrift,Memcache 或任何其他存储信息的方式。可以通过tsd.rpc.plugins或 tsd.http.rpc.plugins 的配置属性一次加载多个插件。只需列出要加载的任何 RPC 插件的类名,如果有多个,则用逗号分隔。仅在运行 TSD 时才初始化 RPC 插件。

Plugins

目前没有任何实现。

存储异常处理程序

如果由于任何原因对基础存储层的写入失败,则会引发异常。发生这种情况时,如果启用了存储异常处理程序插件,则可以稍后通过假脱机到磁盘或传递到消息传递系统来重试无法写入的数据点。 (v2.2)

Plugins

目前没有任何实现。

HTTP RPC 插件

这是用于为 OpenTSDB 实现其他 HTTP API 端点的接口。 (v2.2)

Plugins

目前没有任何实现。

Histogram Plugins

这些是直方图,摘要或草图的实现,用于在一个时间间隔内存储多个测量值,然后以准确的方式提取数据,例如分位数。

Plugins

  • 雅虎数据草图-一组算法,用于收集各种 Metrics,合并来自分布式源的结果以及根据结果计算有用的 Metrics。此实现使用分位数草图来编码和存储固定的错误额定 await 时间测量值。

元数据缓存插件

这些是元数据缓存的实现,这些实现使插件可以减少存储时间序列元数据的成本。

Plugins

  • G-Research tsuid-ratelimiter-使用 tsuid 跟踪运行时,使用本地 LRU 缓存对 TSMeta 更新的写入进行速率限制,从而大大降低了这样做的成本。