写点什么

InfluxDB 2.x 可观测最佳实践

作者:观测云
  • 2025-02-21
    上海
  • 本文字数:2279 字

    阅读完需:约 7 分钟

InfluxDB 2.x 可观测最佳实践

InfluxDB 介绍

InfluxDB 是一个高性能的时间序列数据库,专为处理大规模时间序列数据而设计。它能够高效地存储、检索和分析大量的时间序列数据,广泛应用于监控、物联网、实时分析和数据科学等领域。由于其优化的数据存储结构,InfluxDB 可以快速处理高频率的数据写入和查询,适合用于实时监控系统、传感器数据收集、金融市场分析等场景。并提供了一种灵活的查询语言(InfluxQL),使用户能够轻松地对时间序列数据执行复杂的分析。此外,它还支持丰富的可视化工具与外部集成,方便用户将数据以图表形式展示。

通过其强大的功能和灵活性,InfluxDB 已成为企业和开发者在构建实时数据驱动应用时的重要工具。为确保时序数据库能够健康稳定的运行,我们有必要对其自观测,或者说 InfluxDB 的可观测方案进行探索和实践。

使用可观测工具对 InfluxDB 进行监控,可以优化监控资源消耗,减少数据冗余,简化配置管理。并通过多维度数据关联分析,提升运维团队对监控对象的分析能力。

在确保 InfluxDB 性能和稳定性方面,监控关键指标至关重要。这些指标不仅可以帮助您及时发现和解决问题,还能优化数据库的整体运行效率。

观测云

观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。

部署 DataKit

DataKit 是一个开源的、跨平台的数据收集和监控工具,由观测云开发并维护。它旨在帮助用户收集、处理和分析各种数据源,如日志、指标和事件,以便进行有效的监控和故障排查。DataKit 支持多种数据输入和输出格式,可以轻松集成到现有的监控系统中。

登录观测云控制台,在「集成」 - 「DataKit」选择对应安装方式,当前采用 Linux 主机部署 DataKit。



开启采集器

InfluxDB 1.x 和 2.x 之间的主要区别在于架构、查询语言、API、用户界面和数据管理。1.x 使用单一数据库引擎,采用 InfluxQL 查询语言,提供基本的 HTTP API,用户界面相对简单。2.x 则集成了存储、处理和可视化功能,采用 Flux 查询语言,提供更丰富的 API 和改进的用户界面,支持更灵活的数据保留策略,安装和部署也更简化。因此,对于新项目中通常推荐使用 InfluxDB 2.x。

对于两个版本的自观测指标采集,也随着上述功能的变化而有所差异。InfluxDB 2.x 增强了内置监控指标,支持复杂查询和更全面的指标收集,用户可以直接获取和管理监控数据。它还提供了更强大的可视化工具,允许用户创建实时仪表板,并改进了告警和通知机制,使得用户能够更有效地监控和管理数据库性能。

本实践是 InfluxDB 2.x 版本为基础进行数据采集分析。 InfluxDB 2.x 提供了 Prometheus 格式的指标输出接口,可以直接使用 DataKit prom 采集器进行采集。

进入 DataKit 安装目录 /usr/local/datakit/conf.d ,复制 prom 目录下的配置文件并命名为 influxdb2.conf 。 示例如下:

cp prom.conf.sample influxdb2.conf
复制代码

调整内容如下:

[[inputs.prom]]  ## Exporter HTTP URL.  url = "http://127.0.0.1:8086/metrics"
metric_types = ["counter", "gauge", "histogram"]
interval = "10s"
## TLS configuration. tls_open = false # tls_ca = "/tmp/ca.crt" # tls_cert = "/tmp/peer.crt" # tls_key = "/tmp/peer.key"
[[inputs.prom.measurements]] prefix = "boltdb_" name = "influxdb_v2_boltdb"
[[inputs.prom.measurements]] prefix = "go_" name = "influxdb_v2_go"
# Histogram type. [[inputs.prom.measurements]] prefix = "http_api_request_" name = "influxdb_v2_http_request"
[[inputs.prom.measurements]] prefix = "influxdb_" name = "influxdb_v2"
[[inputs.prom.measurements]] prefix = "service_" name = "influxdb_v2_service"
[[inputs.prom.measurements]] prefix = "task_" name = "influxdb_v2_task"
## Customize tags. [inputs.prom.tags] # some_tag = "some_value" # more_tag = "some_other_value"
复制代码

关键指标

influxdb_runtime

运行时测量统计信息包括 Go 内存分配器的 MemStats 记录的一个子集。运行时统计信息对于确定不良的内存分配策略及相关性能问题非常有用。

Go 运行时包含与 Go 的运行时系统交互的操作,包括用于控制 goroutine 的函数。它还包括 Go 反射包使用的低级类型信息。

指标详解


Influxdb_httpd

用于描述 InfluxDB HTTP server 运行状态的相关指标。

指标详解


场景视图

登录观测云控制台,点击「场景」 -「新建仪表板」,输入 “InfluxDB”, 选择 “InfluxDB_V2 监控视图”,点击 “确定” 即可添加视图。



监控器

进程数量异常

简要描述:通过检测指定维度下的 Influxd 进程数量,跟踪当前 Influx 服务状态,及时发现进程异常。



访问请求任务失败次数

简要描述:通过对一段时间内的任务失败数量的突变检测,及时发现实例访问异常告警,并结合关联仪表板数据对故障进行分析。



GC 回收异常告警

简要描述:如果 GC 指标突然升高,通常表明 InfluxDB 的内存使用出现问题,可能是由于工作负载增加、配置不当或数据模型设计不合理。需要结合其他监控指标和系统状态进行排查,并通过优化内存使用和调整配置来缓解问题。



总结

使用观测云对 InfluxDB 进行监控,可以优化监控资源消耗,减少数据冗余,简化配置管理。并通过多维度数据关联分析,提升运维团队对监控对象的分析能力。

用户头像

观测云

关注

还未添加个人签名 2021-02-08 加入

云时代的系统可观测平台

评论

发布
暂无评论
InfluxDB 2.x 可观测最佳实践_观测云_InfoQ写作社区