设置Grafana生活
Grafana住是一个实时的消息传递引擎中引入Grafana v8.0。
Grafana住,你可以把事件数据前端当事件发生。
这可能是仪表板通知更改,新框架呈现数据,等等。生活功能可以帮助消除重新加载页面或轮询在许多地方,它能流物联网(物联网)传感器或者其他实时数据面板。
注意:通过
实时
,我们表明软实时。由于网络延迟,垃圾收集周期,等等,延迟交付消息可达几百毫秒或更高。
概念
Grafana活在持续的WebSocket连接将数据发送给客户端。Grafana前端订阅通道接收数据发表到频道——换句话说PUB / SUB力学。页面上的所有订阅在一个WebSocket连接多路复用。有一些规则关于生活频道的名字——看到的Grafana生活频道。
处理持久连接像WebSocket规模可能需要调优操作系统和基础设施。这就是为什么默认Grafana生活最多支持100个并发连接。更多细节关于如何优化这一限制,请参考活配置节。
特性
在实时的方式将数据发送给客户打开一条路的数据交互和可视化的新方法。下面我们描述Grafana生活特性的支持。
仪表板更改通知
只要有一个仪表板布局变化,它是自动反映在其他设备连接到Grafana生活。
数据流从插件
Grafana住,后端数据源更新插件可以流前端面板。
对数据源插件频道,Grafana用途ds
范围。名称空间数据源的通道是一个数据源惟一的ID (UID)出具Grafana目前创建的数据源。路径是一个自定义字符串,插件作者自由选择自己(确保它包含允许符号)。
例如,一个数据来源渠道是这样的:ds / < DATASOURCE_UID > / < CUSTOM_PATH >
。
请参考教程建立一个流数据源端插件为更多的细节。
基本流的例子包括在Grafana核心流帧生成一些数据面板。看它创建一个新的面板,点它——Grafana
数据源。接下来,选择现场测量
并选择插件/ testdata / random-20Hz-stream
通道。
数据流从Telegraf
一个新的API端点/ api /生活/推/:streamId
在从Telegraf涌入格式允许接受的度量数据。这些指标转换为Grafana数据帧和发布渠道。
请参考教程从Telegraf Grafana流指标为更多的信息。
Grafana生活频道
Grafana住是一个发布/订阅服务器,客户端订阅频道接收实时更新发布到这些渠道。
渠道结构
通道是一个字符串标识符。在Grafana通道包含3部分分隔/
:
- 范围
- 名称空间
- 路径
例如,通道grafana /仪表板/ xyz
有范围grafana
、名称空间指示板
,和路径xyz
。
范围、名称空间和路径只能ASCII字母数字符号(a - z、a - z 0 - 9),_
(下划线)和- - - - - -
(dash)。路径可以另外一部分/
,。
和=
符号。的意义范围、名称空间和路径是上下文相关的。
一个通道的最大长度是160个符号。
范围确定在Grafana通道的目的。例如,对于数据源插件Grafana使用渠道ds
范围。仪表板等内置功能编辑通知Grafana用途grafana
范围。
根据范围名称空间有不同的意义。例如,对于grafana
这可能是一个范围名称的内置实时特性指示板
(即仪表板事件)。
的道路,这是最后一个通道的一部分,通常包含一些具体资源的标识符,如仪表板的ID,用户目前看。但是一个路径可以是任何东西。
频道是轻量级和短暂的——它们是自动创建用户订阅和移除最后一个用户留下了一个频道。
数据格式
所有数据在旅行生活频道必须json编码的。
配置Grafana生活
Grafana住默认情况下是启用的。在Grafana v8.0,它有一个严格的默认为最大连接数/ Grafana服务器实例。
最大连接数
Grafana生活使用持久连接(WebSocket此刻)向客户提供实时更新。
WebSocket升级是一个持久连接,始于一个HTTP请求(使用相同的HTTP端口Grafana的休息),然后切换到一个TCP模式WebSocket帧可以在客户端和服务器之间的两个方向。每个登录用户打开一个WebSocket连接——一个浏览器选项卡。
最大WebSocket连接的数量,用户可以建立默认Grafana仅限于100。看到max_connections选择。
如果你想提高这个限制,确保您的服务器和基础设施允许处理更多的连接。下面的章节将讨论几种常见问题可能发生在管理持久连接,特别是WebSocket连接。
请求来源检查
为了避免劫持WebSocket连接Grafana现场检查原点升级请求头由一个客户端发送一个HTTP请求。请求没有起源头通过没有任何检查。
默认情况下,现场接受与起源头配置相匹配root_url(这是一个公共Grafana URL)。
可以提供额外的起源的列表模式允许WebSocket连接。这可以通过使用allowed_origins选择Grafana生活配置。
资源使用情况
每个服务器上一些内存持久连接成本。通常情况下,这应该是大约50 KB此刻每个连接。因此1 GB RAM的服务器将处理20 k连接max。每个活动客户机和服务器连接消耗额外的CPU资源自寄萍/ PONG帧互相保持联系。
使用流媒体功能导致额外的CPU使用率。确切的CPU资源利用率很难估计,因为它严重依赖于Grafana住使用模式。
打开文件限制
每个WebSocket连接成本一个文件描述符Grafana服务器机器上运行。大多数操作系统有一个相当低的描述符的最大数量的默认限制这个过程可以打开。
看当前限制在Unix上运行:
ulimit - n
在Linux系统上,你也可以看看当前限制运行的流程:
猫/proc/< PROCESS_PID > /限制
打开的文件限制显示大约有多少用户连接服务器现在可以处理。
增加这个极限,请参考这些指令为流行的操作系统。
短暂的港口疲惫
短暂的港口疲惫问题之间可能发生负载均衡器(或反向代理)软件和Grafana服务器。例如,当您请求负载平衡/不同Grafana实例之间的连接。如果你直接连接到一个Grafana服务器实例,那么你不应该遇到这个问题。
这个问题的产生是因为每一个TCP连接4-part-tuple惟一确定的操作系统:
源ip源端口目的地ip | | |目的地港口
默认情况下,在负载平衡器/服务器边界将会限制你的65535种可能的变体。但实际上,由于一些操作系统限制(例如在Unix中定义的可用端口ip_local_port_range
sysctl参数)和套接字TIME_WAIT状态,数量更少。
为了消除问题,您可以:
- 增加的临时端口范围调优
ip_local_port_range
内核选项。 - 部署更多Grafana服务器实例的负载平衡。
- 部署更多的负载平衡器实例。
- 使用虚拟网络接口。
WebSocket和代理
不是所有的代理都能透明地默认代理WebSocket连接。例如,如果您正在使用Nginx Grafana之前,您需要配置WebSocket代理如下:
http{地图http_upgrade connection_upgrade美元{默认升级;“关闭;上游grafana}{服务器127.0.0.1:3000;}服务器{听8000;位置/ {proxy_http_version 1.1;proxy_set_header升级http_upgrade美元;proxy_set_header连接connection_upgrade美元;proxy_set_header主机http_host美元;proxy_pass http://grafana;}}}
看到Nginx的博客网站为更多的信息。同时,参考你的负载均衡器/反向代理文档了解更多信息处理WebSocket连接。
一些公司代理可以删除标题需要正确地建立WebSocket连接。在这种情况下,你应该调整中间代理不移除所需的头。然而,更好的选择是使用Grafana TLS。现在WebSocket连接将继承TLS,因此必须由代理透明地处理。
代理Nginx和特使有默认限制最大连接数,可以建立。确保你有一个合理的限制最大数量的传入和传出联系你的代理配置。
Grafana住HA配置设置
默认情况下,Grafana生活使用内存中的数据结构和内存PUB / SUB中心处理订阅。
在一个高可用性Grafana设置涉及几个Grafana服务器实例在一个负载平衡器,您可以找到以下限制:
- 内置的功能,如仪表板更改通知才会播放用户连接到同一个Grafana服务器流程实例。
- 流从Telegraf只传送数据到客户收到Telegraf数据连接到同一个实例,活动流缓存不是不同Grafana实例之间共享。
- 之间一个单独的单向流Grafana和后端数据源可能打开不同Grafana服务器相同的频道。
绕过这些限制,Grafana v8.1实验生活HA引擎,要求复述工作。
配置复述,生活引擎
复述,引擎配置时,Grafana生活保持其状态在复述,并使用复述,发布/订阅功能将消息传递到所有的用户在所有Grafana服务器节点。
下面是一个示例配置:
【生活】ha_engine =复述,ha_engine_address = 127.0.0.1:6379
有关更多信息,请参考ha_engine和ha_engine_address选项。
在运行:
- 所有内置实时通知如仪表板更改交付给所有Grafana服务器实例和广播给所有用户。
- 流从Telegraf传递消息给所有用户。
- 之间一个单独的单向流Grafana和后端数据源不同Grafana服务器上打开。发布数据通道传递消息实例用户,因此,出版物的不同实例在不同的机器上不产生重复数据面板。
目前我们只支持单一的复述,节点。
注意:可以使用复述,哨兵和Haproxy达到一个高度可用的复述,设置。复述,应该由节点复述,哨兵实现自动故障转移。Haproxy配置的例子:
听复述,服务器redis-01 127.0.0.1:6380检查端口6380检查国米2 s重量1国米2 s downinter 5 s上升10下降2 on-marked-down shutdown-sessions on-marked-up shutdown-backup-sessions服务器redis-02 127.0.0.1:6381检查端口6381检查国米2 s重量1国米2 s downinter 5 s上升10下降2备份绑定*:6379模式tcp选项tcpka选项tcplog选项tcp-check tcp-check寄萍\ r \ n tcp-check预计字符串+ PONG tcp-check发送信息复制\ \ r \ n tcp-check期望字符串角色:主tcp-check发送退出\ r \ n tcp-check期望此字符串+好的平衡循环
接下来,点Grafana活到Haproxy地址:端口。