InfluxDB 在监控中大量使用

InfluxDB heavy usage in monitoring

InfluxDB 应该用于监控网络、服务器状态(如 MySQL)和 API 数据(例如 Yahoo Finance)吗?与 Wireshark 等客户端软件相比,主要优点是什么?

InfluxDB 即使是社区版(仅单个实例)也可以处理大量传入数据:如果您有足够的存储空间来存储给定的数据量,则可以处理数千个时间序列和数百万个数据值。默认情况下,InfluxDB 将永远保留传入数据,如果您有兴趣,可以为每个命名空间配置 data retention policy,例如在过去 30 天内。

要监控 MySQL,请查看 Telegraf's MySQL plugin,它是一个数据收集器,应该 运行 在 MySQL 服务器上。 InfluxDB 是 "just" 时间序列数据库,既不是数据收集器也不是监控工具。

通过简单配置(在 /etc/telegraf/telegraf.conf 中)您可以获得一些基本指标:

[[inputs.mysql]]
  servers = ["tcp(127.0.0.1:3306)/"]

除了数据库本身,您可能还想监控系统状态(CPU、内存):

[[inputs.cpu]]
  fielddrop = ["time_*"]
  percpu = false
  totalcpu = true
[[inputs.disk]]
[[inputs.diskio]]
[[inputs.io]]
[[inputs.kernel]]
[[inputs.mem]]
[[inputs.net]]
  interfaces = ["eth0"]

当然,您不限于仅使用 Telegraf 收集指标,您可以使用 collectd, statsd 等,但与 Telegraf 集成可能是最简单的方法。

Wireshark 是一个包检测工具,它是完全不同类别的工具。 Wireshark 的输出可能用于实时监控 SQL 查询(在进行大量解析之后)。但是这种数据不适合时间序列数据库(你可以将它存储在 Elasticsearch 或一些列数据库中)。

时间序列数据库通常存储指标:数据包数、查询数、连接数。并随着时间的推移汇总它们。