如何使用 Grafana 与 InfluxDB 监控时间序列数据
作者 Gunnar Aasen / 产品,开发者,公司
2017年11月2日
导航至
“美观分析与监控的开源平台”,Grafana 支持各种存储时间序列数据的后端。其中之一就是 InfluxDB。InfluxDB 是一个专为存储时间序列数据而构建的时间序列数据库,而 Grafana 是一个时间序列数据的可视化工具。鉴于这种完美的匹配,Grafana 与 InfluxDB 集成紧密。
Grafana 的时间序列监控简介
Grafana 无疑是我们推荐与 InfluxDB 一起使用的最受欢迎的时间序列数据可视化工具之一。以下是一些基本步骤,介绍如何使用 InfluxDB 设置您的 Grafana 仪表板,如何使用 Grafana InfluxDB 解决方案充分利用您的时间序列数据,以及如何使用 InfluxDB 时间序列数据库以您想要的方式可视化您想要的内容。
InfluxDB 的 Grafana 仪表板设置
首先,下载 InfluxDB 和 Grafana。基本设置是将 InfluxDB 和 Grafana 监控连接在一起。InfluxDB 有一个 API,通常默认端口为 8086,而 Grafana 的 API 在端口 3000。Grafana 将在需要查询数据时调用 InfluxDB API。
当您设置 InfluxData 时间序列平台时,您需要有一个收集指标的收集代理。对于 InfluxDB,使用 Telegraf,它已经拥有超过 200 个插件。
一些需要记住的 Grafana InfluxDB 设置基本要点
- InfluxDB 实质上是一个运行在服务器上的时间序列数据库进程。该进程也可以运行在 Grafana 运行的同一台机器上。Grafana 有一个非常轻量级的服务器端应用程序,并且大部分 Grafana 监控都在浏览器中运行。
- 在同一实例上设置 Grafana 和 InfluxDB 最简单,但如果您发现您的 InfluxDB 安装非常大,或者您的组织中有许多 Grafana 用户,或者存在特定的安全或部署配置文件,那么在单独的服务器上设置 InfluxDB 和 Grafana 也是完全可以接受的。
- InfluxDB将是两个应用中更占用内存和CPU的那个,因为Grafana的大部分工作都在浏览器中完成。为了保持最佳性能,我们建议您使用最新的浏览器来监控Grafana。
Grafana和InfluxDB的设置配置
InfluxDB默认设置中大部分都可以保留。请注意,您可以选择启用查询日志,这将在执行或发送到InfluxDB API时记录所有查询,这对于调试Grafana问题非常有用。
在设置Grafana与InfluxDB时,需要注意的一个重要事项是配置配置中的协调器部分——具体来说,设置最大并发查询数
- 如果您遇到不同Grafana用户同时使用不同打开的浏览器访问InfluxDB,并发送大量时间序列数据库查询的问题,我们建议设置最大并发查询数。您还可以设置查询超时,并将耗时超过一定时间的查询记录下来。
- 关于最大选择点、最大选择系列和最大选择桶的设置也非常有用,可以限制可以返回的结果数量,从而防止特别复杂的查询可能使InfluxDB服务器崩溃或导致其他人速度变慢。
在探索Grafana的配置文件时,您会发现许多其他方法来配置Grafana监控,使其更易于使用。这些包括设置Grafana HTTP端口、路由日志以及启用用户使您的浏览器页面加载更快。
了解Grafana安全设置
至于安全设置,每个Grafana实例都有一个默认的管理员用户和默认密码。如果您在任何人都能访问您的实例的地方设置Grafana监控,请设置自己的自定义用户名或至少密码以防止人们访问。
以下是一些基本的Grafana安全设置
- 默认情况下,Grafana将允许用户注册和创建组织,并允许非管理员用户创建组织。因此,我们建议将“启用匿名访问”选项设置为“false”,以防止人们在您不希望他们设置用户的情况下在组织上设置用户。
- 此外,匿名访问默认是禁用的,但您可以启用匿名访问,这对于您想要推广的公开Grafana仪表板非常有用。
- 如果您进行密码重置,需要用户接收电子邮件,您需要在SMTP部分设置此操作。
- Grafana还具有多个日志级别,因此如果您正在尝试调试,请确保将日志级别提高到调试。
- Grafana将公开有关自身的指标——Telegraf内置了Prometheus输入,因此您可以将其指向该输入并接收或收集内部Grafana指标,然后将它们放入InfluxDB中,然后在Grafana中再次图形化。
如果您使用InfluxDB Cloud并需要配置对Grafana不同组和用户的访问权限以查看InfluxDB Cloud收集的时间序列数据,请观看简短的网络研讨会“InfluxDB Cloud with Multi-Tenant Grafana。”
为Grafana指标设置图表
InfluxData的“如何使用Grafana与InfluxDB”网络研讨会解释了如何使用Grafana UI设置图表并使用InfluxDB查询构建器。
以下是一些关于构建您的Grafana仪表板和自定义图表的预期网络研讨会亮点
- 在配置中添加数据源后,选择InfluxDB类型,并为该源命名。您可能希望将其设置为Grafana监控实例的默认数据源。您选择InfluxDB URL并输入数据库、用户和凭证。一旦收到“成功”通知,然后添加Grafana仪表板。
- Grafana仪表板基于行和面板。您可以在一行上拥有多个面板,并且可以编辑面板。
- 在编辑模式下,您可以看到Grafana度量路径,其中指定您的InfluxDB查询。您还可以指定要使用的InfluxDB策略。
- 默认情况下,使用“值”作为字段和“平均值”,但您可以使用您选择的任何聚合器。您还可以选择多个字段,或者选择相同的字段两次并使用不同的聚合器。
- 您可以添加各种类型的转换,如移动平均。
- 在Grafana度量标签页中,还有另一个属性是它们是如何按组分的。默认情况下,Grafana按预定义的间隔值分组,该值基于屏幕和面板宽度计算。您还可以指定InfluxDB应该如何处理空值。
- 您可以更改图形的显示方式(如线条、条形图、点等)并利用不同的显示设置。
使用Grafana优化时间序列监控
InfluxDB和Grafana表现良好,但您肯定会遇到一些性能问题。如果您收集大量时间序列数据,或者查询大量数据并对InfluxDB施加压力,通常会发现InfluxDB——因为它在服务器端做大量工作——是Grafana InfluxDB链中首先出现问题的部分。
每个Grafana图形实际上是对InfluxDB的查询。您拥有的图形越多,InfluxDB服务器上的负载就越大。因此,如果您有一个包含30个图形的Grafana仪表板,那么您将向InfluxDB发送30个查询,并将需要由InfluxDB整理并通过Grafana监控发送回的30个查询。如果您有很多查询或图形,考虑您正在绘制的图形以及您显示的所有图形是否实际上对您有用。
为了进一步提高InfluxDB和Grafana的性能,这里有一些有用的提示
- 将您的行设置为可折叠的 - 当您折叠行时,Grafana将不会显示或渲染该图形,因此不会生成到InfluxDB的查询。因此,如果您恰好有一个包含许多有用图形的Grafana仪表板,而这些图形可能不是一次都很有用,那么使用可折叠行是一种减少或加快您使用InfluxDB的Grafana监控体验的绝佳方法。
- 您还可以向图形添加几种图形类型和其他选项。例如,如果您只关心执行的查询数量,您只需返回执行的最新查询数量,而不是随时间变化的图形。您还可以进行模板化和注释。
- 由Grafana图形生成的每个查询通常都有一个GROUP BY选项,因此您将在每次加载图形时看到大量的重新计算。
- 如果您进行了一个非常耗时的查询计算,InfluxDB 响应需要一段时间,并且查询超时导致您在 Grafana 图表中出现错误,请在点击刷新按钮前稍等片刻。
- InfluxDB 和 Grafana 监控都提供了许多日志选项。如果 Grafana 显示图形错误,检查并找出为什么它会产生错误,如果刷新一两次后仍然显示,那么 InfluxDB 不缓存查询,每次您发送查询时,它都会重新计算结果。通常,如果您正在缩放或选择更大的时间范围,例如 24 小时,InfluxDB 拉取所有这些结果将需要更长的时间。积累的数据越多,Grafana 和 InfluxDB 需要处理的数据就越多,以加载这些数据。
结论
在一张图上显示的 Grafana 指标数量没有限制,但请记住跟踪对您最有用的指标,用于时间序列监控性能、提取见解或启用预测。如果您正在考虑一次性显示多少个 Grafana 指标,您可能还想考虑这些时间序列数据实际上向您展示了什么,以及您通过阅读所有这些数据试图实现什么目标。