插件 〉Riemann streams


开发者

Fᴀʙɪᴇɴ Wᴇʀɴʟɪ

注册以接收不定期产品新闻和更新



数据源
社区

Riemann streams

  • 概述
  • 安装
  • 相关内容

Grafana Riemann 流数据源

CircleCI

此 Grafana 插件实现了一个流式 Riemann 数据源。

目的

此数据源使用 websockets 连接到 riemann 服务器并订阅流。

Animation showing timeseries being streamed to Grafana

安装

Grafana.com 上最新发布

grafana-cli plugins install ccin2p3-riemann-datasource

或者使用 github 上的 releases 链接下载 .zip 文件。然后将其 unzip 到您的 Grafana 插件文件夹,或者运行以下命令

version=0.1.5
grafana-cli --pluginUrl ./ccin2p3-riemann-datasource-${version}.zip plugins install ccin2p3-riemann-datasource

自行构建

您也可以使用 yarn build 命令自行构建,然后将 dist 文件夹移动到您的 grafana 插件目录中,并将其命名为 ccin2p3-riemann-datasource

配置您的 Riemann 后端

有关如何安装 riemann 服务器的说明,请参阅其 网站

对于急于求成者

如果您想测试 grafana 插件,这里是一个最小化的 riemann 配置文件

; this will let you check riemann startup and websocket connections
(logging/init {:file "/var/log/riemann/riemann.log"})
; this will enable internal riemann instrumentation events at 1s interval, so you don't need to generate events yourself
(instrumentation {:interval 1 :enabled? true})
; this will enable the insecure ws server on localhost:5556
(ws-server {:host "127.0.0.1" :port 5556})
; this is to actually index events
(let [index (index)] (streams index))

详情

插件工作的唯一要求是有一个已准备好且启用了 websockets 的 riemann 实例。这意味着您需要像下面这样的一行

(ws-server {:host "0.0.0.0" :port 5556})

由于 Riemann 尚不支持安全 websockets,我们强烈建议您通过您喜欢的 Web 代理对其进行隧道传输。无论如何,如果 Grafana 是通过 https 提供页面的,由于浏览器安全限制,您将别无选择,只能这样做。传统的方法是让 riemann 绑定到本地主机且不安,并让代理监听服务器的公共接口。

(ws-server {:host "127.0.0.1" :port 5556})

为了方便您,这里是一个 HAProxy 1.5.18 的工作配置(请确保替换您的公共 IP 地址)

#
defaults
  mode http
  log global
  option httplog
  option  http-server-close
  option  dontlognull
  option  redispatch
  option  contstats
  retries 3
  backlog 10000
  timeout client          25s
  timeout connect          5s
  timeout server          25s
  timeout tunnel        3600s
  timeout http-keep-alive  1s
  timeout http-request    15s
  timeout queue           30s
  timeout tarpit          60s
  default-server inter 3s rise 2 fall 3
  option forwardfor

frontend ft_riemann bind <PUBLIC_IP_ADDRESS>:5556 name http ssl crt /etc/riemann/ssl.pem maxconn 10000 default_backend bk_riemann

backend bk_riemann balance roundrobin server websrv1 localhost:5556 maxconn 10000 weight 10 cookie websrv1 check

您还需要一个索引,否则数据源将永远看不到任何事件。

数据源配置

基本 URL

riemann 服务器的基本 URL。

示例

wss://my-haproxy-frontend:5556
ws://my-insecure-riemann:5556

查询配置

查询文本

这是将定义 websocket 订阅的查询文本。riemann 查询语言尚未有正式文档,但在其 网站测试套件 上有很多示例。

如果使用变量插值并进行多重选择,请确保使用 regexp 匹配。

示例

tagged "collectd" and plugin = "load"
tagged "riemann"
metric and state = "ok"
metric = 42
service ~= "$service"
# When multiple services are selected, this will expand to
# service ~= "service1|service2|service3"

GroupBy

Riemann 可能会向您发送大量不相关的事件,除非您的查询足够具体。如果您不想让这些事件最终显示在同一个 Grafana 系列中,您必须决定哪些 riemann 字段或属性可以唯一标识您的 Grafana 系列。这就是 GroupBy 的作用。它将根据事件的属性为每个系列分配一个唯一的名称。例如,如果您使用 GroupBy=host,所有共享相同 host riemann 属性的事件将最终显示在同一个 Grafana 系列中。因此,您将获得与您拥有的主机数量一样多的系列。如果您使用 GroupBy=host,service,您将获得 numHosts * numSeries 个系列。

但是,您将获得的系列数量受到参数 MaxSeries 的约束。

Max*

为了防止您的浏览器崩溃,riemann Grafana 插件的开发者体贴地实现了 MaxSeriesMaxDataPointsMaxFreq 参数。

MaxSeries

它将导致您的浏览器忽略与 MaxSeries 个系列不匹配的事件。这并不意味着它不会处理这些事件:一旦您订阅了 riemann 事件流,您的浏览器将接收所有与查询匹配的事件。但只有那些其前 MaxSeriesGroupBy 子句与系列标识符匹配的事件才会在屏幕上绘制。其他的将被忽略。

MaxDataPoints

此参数限制每个系列保留在内存中的数据点数量。因此,如果您选择 MaxSeries=10MaxDataPoints=1000,浏览器中的 Grafana 面板最多将显示 10000 个点。较旧的点将以 FIFO 的方式被较新的事件替换。

MaxFreq

此参数限制每秒添加到您的系列中的数据点数量。如果您选择 MaxFreq=1,并且在一秒内消耗了两个 riemann 事件,插件将忽略第二个事件。它仍然会处理 websocket 事件,但会立即将其丢弃。同样,这是按系列计算的,因此如果您设置 MaxSeries=10,MaxFreq=10,屏幕上每秒最多绘制 100 个点。

StringFields

Riemann 事件可以包含许多不同的属性,以及 hostservicestatedescription。此参数让您可以决定哪些属性将作为 Grafana 字段提供给面板。

NumericFields

Riemann 事件通常包含 metric 字段,用于存储时间序列的值。但它们也包含 ttl 字段,用于存储事件的过期时间。此参数允许您提供逗号分隔的列表,以指定应获取哪些字段并将其作为数字字段提供给 Grafana。默认为 metric

注意事项

Websocket 连接

此数据源通过为每个查询打开一个 websocket 来工作。当仪表盘重新加载或查询修改时,它会重用这些 socket。它通过跟踪查询的 QueryText 来实现这一点。这会带来以下后果

  1. 当创建两个使用相同查询的面板,或者一个面板中有两个相同查询时,可能会出错
  2. 当修改查询的参数(而非文本)时,您必须保存面板并重新加载才能使更改生效(仅点击 Grafana 的刷新按钮不足以实现)

此外,开发者尚未找到一种方法来正确关闭连接,以便在离开仪表盘时(或切换 Grafana 组织时)关闭连接。这意味着您的 websocket 将保持打开状态,直到您关闭浏览器选项卡。

因此请遵循以下指南

  1. 切勿在同一个仪表盘中多次使用同一个查询。如果您想以两种不同的方式表示相同的数据,请改用 Grafana 的“重用查询”功能
  2. 如果您修改了查询的参数(例如 MaxFreq),请先保存,然后重新加载选项卡
  3. 如果您不需要实时仪表盘,请关闭选项卡,这对您的 riemann 服务器有好处

混合数据源

Grafana 提供了通过使用 --Mixed-- 数据源将来自多个数据源的数据添加到面板的功能。不幸的是,此功能尚不支持流式数据源。如果您想使用此功能,请通过添加一个赞来帮助我们提升此 bug 的可见性

了解更多

在 Grafana Cloud 上安装 Riemann streams

更多信息请访问关于插件安装的文档。