开始使用InfluxDB
InfluxDB 2.7是专为收集、存储、处理和可视化时间序列数据而构建的平台。时间序列数据是按时间顺序索引的数据点序列。数据点通常由来自同一来源的连续测量组成,用于跟踪随时间变化的情况。
时间序列数据的例子包括:
工业传感器数据 服务器性能指标 每分钟心跳次数 大脑电活动 降雨量测量 股票价格
这个多部分教程将引导您逐步完成将时间序列数据写入InfluxDB 2.7,查询数据,处理和对数据进行警报,然后可视化数据。
开始之前的关键概念
在开始使用InfluxDB之前,了解时间序列数据在InfluxDB中的组织和存储方式,以及在本文档中使用的一些关键定义是很重要的。
数据组织
InfluxDB数据模型将时间序列数据组织成桶(buckets)和测量(measurements)。一个桶可以包含多个测量。测量包含多个标签(tags)和字段(fields)。
桶(Bucket):存储时间序列数据的命名位置。一个桶可以包含多个测量。 测量(Measurement):时间序列数据的逻辑分组。给定测量中的所有点应具有相同的标签。测量包含多个标签和字段。 标签(Tags):具有不经常更改的不同值的键值对。标签用于存储每个点的元数据,例如用于标识数据来源的东西,如主机、位置、站点等。 字段(Fields):随时间变化的键值对,例如温度、压力、股票价格等。 时间戳(Timestamp):与数据关联的时间戳。当存储在磁盘上并查询时,所有数据都按时间排序。 有关InfluxDB数据模型的详细信息和示例,请参阅数据元素。
重要定义
在使用InfluxDB时,以下是需要理解的重要定义:
数据点(Point):由其测量、标签键、标签值、字段键和时间戳标识的单个数据记录。
系列(Series):具有相同测量、标签键和标签值的一组数据点。
示例InfluxDB查询结果
_time _measurement city country _field _value 2022-01-01T12:00:00Z weather London UK temperature 12.0 2022-02-01T12:00:00Z weather London UK temperature 12.1 2022-03-01T12:00:00Z weather London UK temperature 11.5 2022-04-01T12:00:00Z weather London UK temperature 5.9 _time _measurement city country _field _value 2022-01-01T12:00:00Z weather Cologne DE temperature 13.2 2022-02-01T12:00:00Z weather Cologne DE temperature 11.5 2022-03-01T12:00:00Z weather Cologne DE temperature 10.2 2022-04-01T12:00:00Z weather Cologne DE temperature 7.9
使用的工具
在整个教程中,有多个工具可用于与InfluxDB 2.7进行交互。
每个工具都有相应的示例,包括以下几种:
-
InfluxDB用户界面(UI)
-
influx CLI
-
InfluxDB HTTP API
-
InfluxDB用户界面(UI)
InfluxDB UI提供了一个基于Web的可视化界面,用于与InfluxDB进行交互和管理。UI与InfluxDB捆绑在一起,作为InfluxDB服务的一部分运行。要访问UI,请在InfluxDB运行时,在浏览器中访问localhost:8086。
influx CLI influx CLI允许您通过命令行与和管理InfluxDB 2.7进行交互。CLI与InfluxDB分开打包,必须单独下载并安装。有关详细的CLI安装说明,请参阅使用influx CLI。
InfluxDB HTTP API InfluxDB API提供了使用HTTP(S)客户端与InfluxDB 2.7进行交互的简单方法。本教程中的示例使用cURL,但任何HTTP(S)客户端都可以使用。
InfluxDB客户端库 InfluxDB客户端库是与InfluxDB HTTP API进行交互的特定语言的客户端。本教程中没有提供客户端库的示例,但可以使用这些库执行本教程中概述的所有操作。
授权
InfluxDB 2.7要求使用API令牌进行身份验证。每个API令牌与一个用户和InfluxDB资源的特定权限集相关联。
chat
InfluxDB 和 InfluxData 是一个东西吗?
InfluxDB 和 InfluxData 是相关但不同的概念。
-
InfluxDB: InfluxDB 是一个由 InfluxData 公司开发的开源时间序列数据库管理系统(TSDB)。它被设计用于高性能、高可用性和易于扩展的时间序列数据存储和检索。InfluxDB 是这个公司的核心产品之一,专门用于处理时间序列数据,如传感器数据、监控数据、应用程序性能数据等。
-
InfluxData: InfluxData 是 InfluxDB 的开发公司,也是一个软件公司。除了 InfluxDB 之外,InfluxData 还提供一整套开源的数据平台,其中包括 Telegraf(数据采集代理)、Chronograf(数据可视化和查询工具)以及 Kapacitor(数据处理和警报工具)。这些工具一起构成了 TICK(Telegraf、InfluxDB、Chronograf、Kapacitor)堆栈,用于构建端到端的时间序列数据解决方案。
因此,可以说 InfluxDB 是 InfluxData 公司的一个产品,而 InfluxData 公司提供了包括 InfluxDB 在内的整套解决方案,以帮助用户采集、存储、处理和可视化时间序列数据。
详细介绍一下 influxdb
InfluxDB 是一个开源的分布式时间序列数据库管理系统(TSDB),专门设计用于高性能、高可用性以及易于扩展的时间序列数据存储和检索。它由 InfluxData 公司开发,成为该公司的核心产品之一。
以下是 InfluxDB 的一些关键特点和概念:
-
时间序列数据库: InfluxDB 的主要设计目标是处理时间序列数据,如传感器数据、监控数据、日志数据等。它优化了时间序列数据的写入和查询操作,使得在大规模数据环境中能够快速、有效地进行处理。
-
数据模型: InfluxDB 使用一种被称为“measurement”的概念来组织数据。每个 measurement 包含一系列时间序列数据点,其中每个数据点都包括一个时间戳和一个或多个字段。字段可以是数字、字符串或布尔值等类型。这种数据模型的灵活性使得 InfluxDB 适用于各种类型的时间序列数据。
-
标签(Tags): InfluxDB 引入了标签的概念,用于对数据进行更细粒度的分类和过滤。标签是键值对,可以附加到 measurement 和数据点上。标签的使用使得用户能够更灵活地组织和查询数据。
-
查询语言: InfluxDB 使用类似 SQL 的查询语言(InfluxQL)来执行数据查询和分析操作。用户可以按时间范围、标签、测量等条件进行查询,并支持聚合函数和时序函数来进行数据分析。
-
持续查询(Continuous Queries): InfluxDB 允许用户定义持续查询,这是一种定期执行的查询,用于计算和存储聚合结果。这有助于在数据量增长时保持查询性能。
-
分布式和水平扩展: InfluxDB 被设计为一个分布式系统,可以水平扩展以处理大规模的时间序列数据。通过水平扩展,用户可以添加更多的节点来增加存储容量和查询性能。
-
数据保留策略: InfluxDB 允许用户定义数据保留策略,以确定数据保存的时长和精度。这有助于控制数据库的存储空间和性能。
-
插件和集成: InfluxDB 可以通过插件轻松集成到不同的数据处理和可视化工具中。例如,Telegraf 是 InfluxData 提供的数据采集代理,用于从各种源收集数据并将其发送到 InfluxDB 中。
总体而言,InfluxDB 是一个强大而灵活的时间序列数据库,适用于许多应用场景,包括监控、IoT(物联网)、应用程序性能监测等领域。
InfluxDB 的特点和应用场景
InfluxDB 具有许多特点,这些特点使其在特定的应用场景中表现出色。
以下是 InfluxDB 的主要特点和一些常见的应用场景:
特点:
-
时间序列数据处理: InfluxDB 专注于高效地处理时间序列数据,包括存储、查询和分析。其数据模型和查询语言针对时间序列数据进行了优化。
-
灵活的数据模型: InfluxDB 的数据模型允许用户存储不同类型的数据,包括数字、字符串和布尔值等。这种灵活性使得它适用于多种应用场景。
-
标签和标签索引: 使用标签可以更好地组织和检索数据,提高灵活性和性能。标签索引加速了对标签进行的查询。
-
SQL-like 查询语言: InfluxDB 使用类似 SQL 的查询语言(InfluxQL),这使得用户能够以熟悉的方式执行数据查询和分析操作。
-
分布式和水平扩展: InfluxDB 被设计为分布式系统,可以轻松水平扩展,以处理大规模的时间序列数据。这使得它适用于高流量和大容量的应用场景。
-
数据保留策略: 用户可以定义数据保留策略,以确定数据保存的时长和精度。这有助于优化存储空间和性能。
-
开源和活跃的社区: InfluxDB 是开源软件,拥有活跃的社区支持。这意味着用户可以获得社区的帮助、参与讨论,并从开源社区的贡献中受益。
应用场景:
-
监控和运维: InfluxDB 适用于存储和分析系统和应用程序的监控数据。它能够处理大量的实时指标数据,支持快速的查询和可视化。
-
物联网(IoT): InfluxDB 可以用于存储和分析物联网设备生成的传感器数据。其标签和灵活的数据模型使其适用于各种 IoT 应用场景。
-
应用程序性能监测(APM): 开发人员可以使用 InfluxDB 存储和分析应用程序的性能指标,以便及时发现和解决潜在的性能问题。
-
日志分析: InfluxDB 可以用于存储和分析大规模的日志数据,支持快速的查询和检索。
-
工业自动化: 在工业环境中,InfluxDB 可以用于监测和分析生产数据,以提高效率和预测设备故障。
-
能源管理: InfluxDB 可以用于跟踪和分析能源使用情况,帮助组织实现能源效益和减少能源成本。
总体而言,InfluxDB 的特点使其成为处理时间序列数据的理想选择,广泛应用于各种需要高性能时间序列数据库的行业和应用领域。
类似 InfluxDB 的开源数据库有哪些?
有许多类似于 InfluxDB 的开源数据库,它们专注于时间序列数据存储和处理。以下是一些与 InfluxDB 相似的开源时间序列数据库:
-
OpenTSDB(Open Time Series Database): OpenTSDB 是一个基于 HBase 的开源时间序列数据库。它支持大规模的数据存储和检索,并具有类似于 InfluxDB 的分布式和水平扩展性能。
-
Prometheus: Prometheus 是一个开源的监控和警报工具,具有内置的时间序列数据库。它被广泛用于云原生环境中的监控任务,可以通过 Prometheus 查询语言(PromQL)进行数据查询。
-
Graphite: Graphite 是一个开源的时间序列数据库和可视化工具。它主要用于监控和度量,支持灵活的数据模型和简单的查询语言。
-
Cassandra: Cassandra 是一个高度可扩展、分布式的 NoSQL 数据库,但它也可以用于存储时间序列数据。一些用户选择在 Cassandra 中实现时间序列数据库的功能。
-
Druid: Druid 是一个实时分析数据存储系统,可以用于存储和查询大规模的事件数据,包括时间序列数据。它适用于 OLAP(联机分析处理)工作负载。
-
KairosDB: KairosDB 是一个构建在 Apache Cassandra 上的开源时间序列数据库。它提供了灵活的数据模型,支持多维度的标签和查询。
这些数据库在设计和用途上有一些差异,因此在选择时应该根据具体的需求和环境来进行评估。
每个数据库都有其独特的特性和优势,以满足不同类型的时间序列数据处理需求。
给出 InfluxDB 的学习资料,包含网址
以下是学习 InfluxDB 的一些建议资源,包括官方文档、社区支持和其他参考资料:
- InfluxDB 官方文档:
- InfluxDB Documentation: 官方文档是深入了解 InfluxDB 的最佳途径。它包括安装指南、基本概念、查询语言、配置和性能调整等方面的详细信息。
- InfluxDB GitHub 存储库:
- InfluxDB GitHub: 在 GitHub 存储库中,你可以找到 InfluxDB 的源代码、问题跟踪和社区讨论。
- InfluxData 社区:
- InfluxData Community: InfluxData 社区是一个讨论和交流的地方,你可以在这里提问问题、分享经验,并与其他 InfluxDB 用户互动。
- InfluxDB YouTube 频道:
- InfluxData YouTube: InfluxData 在 YouTube 上有一些教育和演示视频,这对于视觉化学习可能会很有帮助。
- InfluxDB 学习路径:
- InfluxDB Learning Path: InfluxData 提供了一些在线培训资源,包括免费的学习路径,涵盖了 InfluxDB 和其他 InfluxData 产品。
- 社区教程和博客:
- 在社区和博客中,你可能会找到一些有关 InfluxDB 的教程和实际应用的文章。通过搜索引擎或社交媒体查找可能会得到一些不错的资源。
- 书籍:
- 《InfluxDB: Up and Running》是一本由 O’Reilly Media 出版的书籍,提供了深入的学习体验。
请注意,由于技术领域的不断变化,建议检查官方文档和社区资源,以确保获取最新和准确的信息。
参考资料
https://iceberg.apache.org/docs/latest/