使用 InfluxDB Cloud 监控您的 InfluxDB 开源实例
作者:Russ Savage / 产品, 用例, 开发者
2021年5月25日
导航至
每个人都说云是未来。当然,但如果你对一个将 TB 级敏感数据存储在本地 InfluxDB 开源 (OSS) 实例中的人说这句话,他们会提出一堆理由,说明为什么现在迁移到云端对他们来说没有意义。还有一些用例更适合本地软件部署。
也许你是一家大型游戏公司,每天托管数百万场在线游戏比赛。在每场比赛中,你需要闪电般的数据访问速度,但比赛结束后,原始数据就没什么用处了(尽管汇总聚合可能有用)。启动本地 InfluxDB 实例并将其用于实时游戏数据非常有意义。你仍然需要确保本地 InfluxDB 实例是健康的,并且汇总监控所有开源实例的健康状况非常有意义。
这篇文章不是关于将你的时间序列数据迁移到云端。这篇文章是关于将本地 InfluxDB OSS 实例的监控指标导出到单个 InfluxDB Cloud 帐户。这使你可以快速查看所有 InfluxDB 实例的状态,并为重要事件添加监控。希望这能让你晚上睡得更好一点,谁不希望这样呢?
在这篇博客中,我将从一个简单的架构开始,该架构可以应用于你管理的任意数量的 InfluxDB OSS 实例,你可以将监控信息推送到集中的 InfluxDB Cloud 帐户,并利用一些包含的仪表板和警报功能。由于我们通过简单的 sidecar 模式 完成所有这些操作,因此你根本不需要更改你的 InfluxDB 实例。让我们开始吧。
架构概述
正如我之前提到的,我们将利用一个 Telegraf sidecar,它与你的 InfluxDB 实例位于同一位置。它将从每个实例中抓取 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
(默认情况下为 http://localhost:8086/metrics),你应该会看到如下所示的内容
在这里,你将找到有关 InfluxDB 实例中正在发生的事情的大量信息,包括内存使用情况、boltdb 访问、api 请求等等。当你刷新时,你应该会看到这些数字随着你的开源实例的使用而变化。这就是我们将要抓取并发送到你的 InfluxDB Cloud 帐户的数据。现在是部署和配置数据收集代理的时候了。
部署和配置 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
插件。internal 插件只有一个用于启用内存统计信息的配置选项,但 Prometheus Input 插件需要一些关于如何从你的本地 InfluxDB 实例抓取数据的信息。
我还添加了一个名称覆盖,将测量名称从默认的“prometheus”更改为更有用的名称。最后,我将指标格式更改为 v2,以便在 InfluxDB 中更易于使用。
这处理了输入,但现在我们需要配置一个输出插件,将数据发送到你刚刚注册的 InfluxDB Cloud 帐户。幸运的是,有一种简单的方法可以在 InfluxDB Cloud UI 中获取该连接信息。
当你登录你的 InfluxDB 云帐户,并导航到 Load Data > Telegraf 页面时,你应该在右上角看到一个标记为“InfluxDB Output Plugin”的紫色按钮。这为你提供了设置 Telegraf 以将数据写入 InfluxDB 所需的最低配置。
从 InfluxDB Cloud 界面中的 Telegraf 页面复制配置,并将其添加到你的 telegraf.conf
文件末尾,在前面描述的输入插件之后。
此输出插件配置中有几件事需要注意。
- 首先,由于你要从另一个工具连接到你的 InfluxDB Cloud 帐户,因此你需要一个 API 令牌。你可以通过快速前往 UI 中的 Tokens 选项卡并生成一个新令牌来生成一个。你可以选择创建一个新的“Read/Write”令牌,并使其仅有权写入你想要存储 OSS 指标的单个存储桶。 All Access 令牌将使用户能够访问你的 InfluxDB Cloud 帐户中的任何资源。
- 最后,你需要指定一个存储桶来写入 OSS 指标数据。这完全取决于你,但我创建了一个名为
oss_metrics
的新存储桶,以便我可以将此数据与我的其他时间序列信息分开。只需确保你生成的令牌具有写入此新存储桶的权限。你最多可以在你的免费帐户中创建 两个存储桶,因此请选择对你来说有意义的任何一个。该存储桶的名称应放入 Telegraf 输出配置中。
你的最终 telegraf 配置将如下所示
你可以使用以下命令在运行 InfluxDB 实例的同一台计算机上启动 Telegraf
telegraf --config /path/to/telegraf.conf
当然,你也可以 将 Telegraf 作为服务启动,具体取决于你的部署设置。
在 InfluxDB Cloud 中合并信息
那么你如何知道数据是否真的流入你的 InfluxDB Cloud 帐户呢?你可以通过打开 Data Explorer 或创建一个新的 Notebook 并选择你在 Telegraf 配置中选择的存储桶和测量值来快速验证(在本例中,我的存储桶是 oss_metrics
,我的测量值是 influxdb_oss
)。如果你使用的是 Notebooks,它应该看起来像这样
让我们将这些信息整合到一个仪表板中,以便我们可以在单个页面上查看每个实例正在做什么。为了快速完成此操作,我创建了一个 InfluxDB 模板,其中包含一个预先为我的存储桶和测量值配置的仪表板。InfluxDB 模板是在多个 InfluxDB 实例(Cloud 或 OSS)之间共享资源的好方法。你可以将此模板安装到你的 InfluxDB Cloud 帐户中,为所有报告数据的主机创建一个漂亮的概览。
它是现有 开源 InfluxDB 2.0 监控模板 的变体,其中删除了存储桶和主机变量。
在你的 InfluxDB Cloud UI 中,你可以导航到 Settings > Templates 并输入 raw url,以便快速将其导入你的 InfluxDB Cloud 帐户。
完成此操作后,你应该会得到一个如下所示的仪表板
现在,正如你所看到的,InfluxDB 模板在其中硬编码了存储桶名称 (oss_metrics
) 和测量名称 (influxdb_oss
)。如果你使用了不同的名称,只需创建 gist 的一个分支,并在将其导入到你的实例之前对模板进行这些更改。
当然,这只查看了流入你的 InfluxDB OSS 实例的众多指标中的几个。根据你的用例,你可以使用 InfluxDB OSS 实例报告的任何指标自定义此仪表板。
添加 Deadman 警报
这一切都很棒,但在本博文的开头,我承诺帮助你睡得更好。为此,我们需要添加一些监控和警报。InfluxDB Cloud 内置了强大的监控和警报系统。有关完整概述,请查看 Anais 关于此主题的综合博文。
让我们添加一个检查,以检查何时数据停止从我们的 InfluxDB OSS 实例显示。这被称为 deadman 检查。我们只需要导航到 UI 的 Alerts 部分,并添加一个新的 Deadman 检查。
对于你的 Deadman 查询,你可以选择从你的 InfluxDB OSS 实例报告的任何字段,例如 influxdb_info
。如果此数据停止显示,你就知道你可能需要检查的问题。
最后,你可以设置你希望检查数据的频率(Schedule Every),以及在切换到严重警报之前等待的时间量。这些选项取决于你需要接收通知的频率以及你使用 Telegraf 从实例中抓取数据的频率。如果需要,你可以随时稍后调整它。每分钟检查一次,并在 90 秒后变为 CRIT,这听起来不错。
一旦你满意,你可以保存该 Check,然后单击 Check 的 View History 选项以验证它是否正在运行。一分钟后,你应该会在该页面上看到一些状态。
接收通知
Check 将监控你的数据并将诸如 ok
或 crit
之类的状态写入你的 InfluxDB Cloud 帐户中的 _monitoring
存储桶,但你需要配置 Notification 规则以确保该信息到达你手中。在你的免费帐户中,你可以配置 Notification 以发送到 Slack。如果你需要发送到 PagerDuty,只需升级到按需付费帐户之一。
要将通知添加到 Slack,你只需要一个 Slack Webhook url,你可以创建一个新的 Notification Endpoint 以将数据发送到它。最后,你可以配置一个新的 Notification Rule 以检查 crit 状态并将消息发送到该端点。
当你设置 Notification Rule 时,请务必选择对你的检查有意义的通知频率。例如,如果你的检查每分钟运行一次,请确保你的通知规则也每分钟运行一次,并留出偏移量以考虑检查运行所需的时间量(不应超过 10 秒)。
配置完所有内容后,你可以通过简单地停止其中一个 Telegraf 代理并查找 Slack 中的通知来对其进行测试。
当然,你可以设置更复杂的检查来查找诸如高内存使用率或查询计数增加之类的问题。你还可以将它们配置为监控诸如生成新令牌或添加新用户之类的事情。
单独定义 Notification Rule 的好处是,你只需要定义一次,并且你可以根据需要添加任意数量的检查。
结论
在这篇文章中,我们介绍了将 Telegraf 配置为你的 InfluxDB OSS 实例的 sidecar 的过程,以便你可以将所有监控信息收集到一个地方并密切关注事物。当你开始增加 InfluxDB 的使用量并了解对你重要的指标时,你可以添加大量增强功能。
即使对于无法将数据存储在云中的用户,InfluxDB Cloud 也具有大量功能。使用 InfluxDB Cloud 快速监控你的 InfluxDB OSS 实例的能力提供了一种简单的方法,可以将监控添加到你的本地部署中,并使你能够在单个位置监控所有内容。
如果你对设置此内容有任何意见或问题,请跳转到我们的 社区 Slack 频道 并咨询我们的团队。我们喜欢听取用户的意见,并在不断改进。