使用 InfluxDB Cloud 监控您的 InfluxDB 开源实例
作者:Russ Savage / 产品,用例,开发者
2021年5月25日
导航到
大家都说云是未来。当然,但试着告诉那些在本地 InfluxDB 开源(OSS)实例中存储了数以兆字节敏感数据的人,他们就会提出一系列理由,说明他们现在迁移到云上并不合适。还有一些用例更适合本地软件部署。
也许你是一家大型游戏公司,每天要托管数百万场在线游戏比赛。在每一场比赛中,你需要闪电般快速的数据访问,但比赛结束后,原始数据并不很有用(尽管摘要聚合可能有用)。启动本地 InfluxDB 实例并利用它进行实时游戏数据是非常有意义的。你仍然需要确保本地 InfluxDB 实例健康,而跨所有开源实例进行汇总操作非常有意义。
本文不是关于将时序数据迁移到云上。本文是关于将您本地 InfluxDB OSS 实例的监控指标导出到单个 InfluxDB Cloud 账户。这使得您可以快速查看所有 InfluxDB 实例的状态,并添加对重要事件的监控。希望这能帮助您晚上睡得更好,谁不想这样呢?
在这篇博客中,我将从一个简单的架构开始,它可以应用于您管理的任意数量的 InfluxDB OSS 实例,您可以将监控信息推送到集中的 InfluxDB Cloud 账户,并利用其中的一些仪表板和警报功能。因为我们通过简单的 边车模式 来完成所有这些操作,所以您根本不需要更改您的 InfluxDB 实例。让我们开始吧。
架构概述
如前所述,我们将利用位于您的 InfluxDB 实例旁边的 Telegraf 边车。它将从每个实例中抓取 Prometheus 指标并将它们推送到集中的 InfluxDB Cloud 账户。不用担心您是否了解 Telegraf 或如何读取 Prometheus 指标,这一切都只需几行配置即可为您完成。在过程结束时,您将得到类似以下这样的东西。
这可以部署给单个 InfluxDB OSS 实例,也可以自动化数百个实例。
注册免费 InfluxDB Cloud 账户
如果您已经拥有 InfluxDB 云账户,您可以跳过本节。只需确保在继续之前您能 登录您的账户。
由于我们将要将 InfluxDB OSS 指标推送到 InfluxDB Cloud,因此注册免费账户是合理的。您只需要一个有效的电子邮件地址和一个浏览器,所以请前往 InfluxDB Cloud 并注册免费账户。
验证您的电子邮件并选择您的区域后,您将进入您全新的 InfluxDB Cloud 账户,它看起来可能像这样
您可以自由地探索一下,熟悉一下界面。有一些 演示数据 可供您入门。
设置 InfluxDB OSS
默认情况下,InfluxDB OSS 具有一个可用的 /metrics
端点,用于导出 Prometheus 样式的指标。如果您已将任何默认设置更改为禁用此端点,则需要在本次设置中重新启用它们。
如果您在浏览器中打开 http://hostname:port/metrics
(默认为 https://127.0.0.1:8086/metrics),您应该会看到如下内容:
在这里,您将找到有关您的 InfluxDB 实例正在发生的事情的大量信息,包括内存使用情况、boltdb 访问、API 请求等等。随着您的刷新,您应该会看到这些数字发生变化,因为您的开源实例正在被使用。这是我们打算抓取并发送到您的 InfluxDB 云账户的数据。现在是部署和配置我们的数据收集代理的时候了。
部署和配置 Telegraf
如上所述,Telegraf 是我们广受欢迎的开源数据收集代理,它可以配置为从几乎任何地方获取数据。它是基于插件的,因此您可以根据需要配置任意数量的输入插件(有超过100个)和输出插件,Telegraf 会为您处理所有获取、抓取、缓冲和重试。这对于将数据导入 InfluxDB 非常有用。
Telegraf 代理应该部署在与 InfluxDB OSS 运行相同的机器上。在此不涉及该安装和部署,因为有太多模式。它很可能在您的首选包管理器中可用,只需简单执行 install telegraf
命令即可。您也可以非常容易地通过 Docker 或 Kubernetes 进行部署。
安装 Telegraf 后,是时候创建配置文件了。Telegraf 通过一个 简单的 TOML 文件 进行配置,可以包含您想要的所有插件。在这种情况下,我们将启用两个输入:一个用于从 InfluxDB 实例 抓取 Prometheus 指标,另一个用于 监控 Telegraf 本身。这种内部监控可以帮助诊断 Telegraf 中出现的问题,而与您的 InfluxDB 实例无关。
以下是输入参数的示例配置。您可以将此内容复制到一个名为 telegraf.conf
的文件中,该文件将是所有 Telegraf 代理的配置文件。
如您所见,我们已配置了 inputs.internal
和 inputs.prometheus
插件。内部插件只有一个用于启用内存统计的单个配置选项,但 Prometheus 输入插件需要有关如何从您本地的 InfluxDB 实例抓取数据的信息。
我还添加了一个名称覆盖,将测量名称从默认的“prometheus”更改为更有用的名称。最后,我将指标格式更改为 v2,以便在 InfluxDB 中更容易处理。
现在我们已经处理了输入,但接下来我们需要配置一个输出插件,以便将数据发送到您刚刚注册的 InfluxDB 云账户。幸运的是,在 InfluxDB 云界面中很容易获取连接信息。
当您登录到您的InfluxDB云账户,并导航到“加载数据”>“Telegraf”页面时,您应该在右上角看到一个标注为“InfluxDB输出插件”的紫色按钮。这为您提供设置Telegraf将数据写入InfluxDB所需的最小配置。
复制InfluxDB云界面中Telegraf页面的配置,并将其添加到之前描述的输入插件之后,到您的telegraf.conf
文件末尾。
在此输出插件配置中,有一些需要注意的事项。
- 首先,由于您正在从另一个工具连接到您的InfluxDB云账户,您将需要一个API令牌。您可以通过快速切换到UI中的“令牌”标签并生成新的令牌来创建一个。您可以选择创建一个新的“读/写”令牌,并仅授予它对您想要存储OSS度量数据的单个桶的写入权限。一个完全访问令牌将使用户能够访问InfluxDB云账户中的任何资源。
- 最后,您需要指定一个桶来写入OSS度量数据。这完全取决于您,但为了将此数据与其他时间序列信息区分开来,我创建了一个名为
oss_metrics
的新桶。请确保您生成的令牌具有写入此新桶的权限。您的免费账户中可以创建多达两个桶,因此请选择最适合您的选项。该桶的名称应放入Telegraf输出配置中。
您最终的telegraf配置可能看起来像这样
您可以使用以下命令在运行InfluxDB实例的同一台机器上启动Telegraf
telegraf --config /path/to/telegraf.conf
当然,根据您的部署设置,您也可以以服务形式启动Telegraf。
结合InfluxDB云中的信息
那么,您如何知道数据是否实际上流入您的InfluxDB云账户?您可以通过打开数据探索器或创建一个新的笔记本并选择在Telegraf配置中选择的桶和度量来快速验证这一点(在这种情况下,我的桶是oss_metrics
,我的度量是influxdb_oss
)。如果您正在使用笔记本,它应该看起来像这样
让我们将这些信息整合到一个仪表板中,这样我们就可以在单个页面上查看每个实例正在做什么。为此,我创建了一个包含预先配置为我的桶和度量的仪表板的InfluxDB模板。InfluxDB模板是跨多个InfluxDB实例(云或开源)共享资源的绝佳方式。您可以将此模板安装到您的InfluxDB云账户中,以创建一个对所有报告数据的宿主机的好概览。
这是现有开源InfluxDB 2.0监控模板的一个变体,去除了桶和宿主机变量。
在您的InfluxDB云UI中,您可以导航到设置 > 模板,并输入原始URL以快速将其导入到您的InfluxDB云账户。
完成此操作后,您应该拥有一个看起来像这样的仪表板
现在,如您所见,InfluxDB 模板中硬编码了桶名(oss_metrics
)和测量名(influxdb_oss
)。如果您使用了不同的名称,只需对 gist 进行分支,然后在导入实例之前对模板进行修改。
当然,这仅查看进入您 InfluxDB OSS 实例的众多指标中的一部分。根据您的用例,您可以使用 InfluxDB OSS 实例报告的任何指标来自定义此仪表板。
添加死信警报
这一切都很不错,但在我写这篇博客文章的开头,我承诺要帮助您睡得更好。为了做到这一点,我们需要添加一些监控和警报。InfluxDB Cloud 内置了一个强大的监控和警报系统。要全面了解,请参阅Anais 关于此主题的全面博客文章。
让我们添加一个检查从我们的 InfluxDB OSS 实例中停止显示数据的情况。这被称为死信检查。我们只需要导航到 UI 中的警报部分,并添加一个新的死信检查。
对于您的死信查询,您可以选择从您的 InfluxDB OSS 实例报告的任何字段,例如 influxdb_info
。如果这些数据停止显示,您就知道可能需要检查的问题。
最后,您可以设置多久检查一次数据(计划每),以及切换到关键警报之前等待的时间。这些选项取决于您需要通知的频率以及您使用 Telegraf 从实例抓取数据的频率。您可以在需要时随时调整它。每分钟检查一次并在90秒后转为关键警报对我来说听起来不错。
一旦您满意,您就可以保存该检查,并单击检查的“查看历史记录”选项以验证它是否正在运行。一分钟后,您应该会看到该页面上的某些状态。
接收通知
该检查将监视您的数据,并将状态(如 ok
或 crit
)写入 InfluxDB Cloud 账户中的 _monitoring
桶,但您需要配置一个通知规则,以确保信息发送给您。在您的免费账户中,您可以配置一个发送到 Slack 的通知。如果您需要发送到 PagerDuty,只需升级到任一按使用付费的账户。
要向 Slack 添加通知,您只需要一个 Slack Webhook url,并可以创建一个新的通知端点以发送数据。最后,您可以配置一个新通知规则以检查关键状态并发送消息到该端点。
在设置通知规则时,请务必选择对检查有意义的通知频率。例如,如果您的检查每分钟运行一次,请确保您的通知规则也每分钟运行一次,并设置一个偏移量以考虑检查运行所需的时间(不应超过 10s)。
一旦您完成所有配置,您可以通过停止一个 Telegraf 代理并查找 Slack 中的通知来测试它。
当然,您还可以设置更复杂的检查来查找类似高内存使用或查询计数增加的问题。您还可以配置它们以监控新令牌生成或新用户添加等情况。
将通知规则单独定义的好处是,您只需定义一次,就可以添加所需的所有检查。
结论
通过本文,我们介绍了如何配置Telegraf作为您的InfluxDB OSS实例的边车,以便您可以收集所有监控信息到单一位置,并密切关注各项事务。随着您开始扩大对InfluxDB的使用并了解对您重要的指标,您可以添加大量增强功能。
InfluxDB Cloud拥有大量功能,即使是无法在云端存储数据的用户也不例外。使用InfluxDB Cloud快速监控您的InfluxDB OSS实例提供了一种简单的方法,可以轻松地将监控添加到您的本地部署中,并让您能够在一个位置监控所有内容。
如果您对此设置有任何评论或问题,请前往我们的社区Slack频道并询问我们的团队。我们喜欢听取用户的反馈,并不断改进。