influxdb相关

InfluxDB:

https://www.yuque.com/zhangnio
springboot 集成 influxdb:E:\project\java_date_project\20240202_influxdb\influxdb_demo

使用场景:

InfluxDB 主要被设计用于存储和查询时间序列数据,其使用场景涵盖了多个领域。以下是一些常见的 InfluxDB 使用场景:

  1. 监控和运维: InfluxDB 适用于存储和分析系统的监控数据,如服务器性能指标、网络流量、硬件健康状态等。与监控工具集成,可以实时地追踪系统的性能和健康状况。
  2. 物联网(IoT): InfluxDB 在物联网领域中广泛应用,用于存储传感器和设备生成的时间序列数据。这包括温度、湿度、压力等传感器数据,以及设备状态信息。
  3. 日志数据存储: InfluxDB 可以作为日志数据存储的解决方案,特别是对于生成大量时间戳相关的日志数据的应用。通过 InfluxDB 存储日志数据,可以更轻松地进行检索、分析和监视。
  4. 应用性能监控: 对于开发人员和运维团队来说,InfluxDB 可以用于存储应用程序的性能监控数据,包括请求响应时间、数据库查询性能等,以便迅速发现和解决问题。
  5. 能源监控: 在能源行业,InfluxDB 可以用于存储电力消耗、生产数据和其他与能源相关的时间序列数据。这有助于监测能源使用情况,进行效率分析,并支持可持续能源管理。
  6. 金融数据分析: 金融领域通常需要处理大量的时间序列数据,如股票价格、汇率、交易数据等。InfluxDB 可以作为存储这些数据的后端,为金融分析提供支持。
  7. 天气预报: 气象站和气象卫星产生大量的时间序列数据,包括温度、湿度、风速等。InfluxDB 可以用于存储和分析这些数据,支持气象预测和研究。

总的来说,InfluxDB 的设计使其非常适用于需要高效存储和查询时间序列数据的场景,尤其是那些需要实时性、高性能和可伸缩性的应用程序

基本概念:
  1. 数据库(Database): InfluxDB中的数据库,用于存储和管理数据。每个数据库可以独立管理和操作,具有不同的数据存储和数据保留策略。
  2. 测量(Measurement): InfluxDB中的测量是数据的逻辑容器,类似于关系型数据库中的表。一个测量通常对应一种类型的数据,如温度、湿度等。每个测量可以包含多个数据点。
  3. 标签(Tags): InfluxDB中的标签是用来标识和分类数据的关键字,是键值对的形式。标签通常用于筛选和分组数据,可以作为查询的条件。
  4. 字段(Fields): InfluxDB中的字段用于存储实际的数据值,可以包含各种记录值,如温度、湿度等测量值。字段是键值对的形式,通常用于数据的计算和分析。
  5. 时间戳(Timestamp): InfluxDB中的时间戳用于标识数据点的时间信息,即数据记录的时间。时间戳是数据库中的主索引,可自动生成,也可由用户指定。
  6. 点(Point): InfluxDB中的点是由时间戳、标签和字段组成的数据元素。一个点表示了某个时间点下的一组标记数据。每个点存储了特定时间的一组测量数据。

  1. 数据库(Database): 数据库是 InfluxDB 中的最高级别的存储单元。每个数据库都是独立的,包含其自己的数据和配置。
  2. 数据点(Data Point): 数据点是时间序列数据库中的基本单元。它由时间戳、测量(Measurement)、字段(Field)和标签(Tag)组成。数据点表示在某个时间戳上测量的一组值。
  3. 时间戳(Timestamp): 时间戳是数据点的一个重要组成部分,表示数据被记录的时间。在 InfluxDB 中,时间戳通常是纳秒级别的精度。
  4. 测量(Measurement): 测量是一组数据点的集合,它们通常具有相同的测量对象。例如,如果你正在测量服务器的 CPU 使用率,那么该测量可能包含诸如 cpu_usage 等字段的数据点。
  5. 字段(Field): 字段是数据点中存储的实际数值。字段通常包含与测量相关的度量值,例如温度、湿度、数量等。
  6. 标签(Tag): 标签是键值对,用于标识和过滤数据点。与字段不同,标签的值不是度量的实际数据,而是用于对数据进行分组和筛选。
  7. 连续查询(Continuous Query): 连续查询是一种周期性执行的查询,它将查询结果存储到新的测量中。这对于聚合和降低存储数据的粒度非常有用。
  8. 保留策略(Retention Policy): 保留策略定义了数据在数据库中的保存期限和存储策略。它决定了数据存储的持续时间和存储精度。
  9. 分片(Shard): InfluxDB 使用分片来水平扩展存储容量。每个分片包含一定时间范围内的数据。 influxdb自定进行分片及管理
  10. 持续写(Continuous Write): 持续写是一种优化技术,允许 InfluxDB 在写入时立即返回,而不是等待数据完全持久化。
  11. 线协议(Line Protocol): 线协议是 InfluxDB 的数据传输格式,用于通过 HTTP 或 UDP 将数据发送到 InfluxDB。

数据保存策略:
  1. 数据存储策略(Retention Policies):数据存储策略用于定义数据在InfluxDB中的存储时间,或者定义保存某个期间的数据。每个数据库可以有多个数据存储策略,但每个策略必须是独一无二的。数据存储策略包括以下几个重要的参数:
    • 名称(Name): 策略的名称。
    • 持续时间(Duration): 定义数据保留的时间段。
    • 分片组持续时间(Shard Group Duration): 定义分片组的时间段,用来划分数据存储的基本单位。
    • 复制因子(Replication Factor): 定义数据的复制因子,用于数据的冗余备份。
    • 默认策略(Default): 指定是否将该策略作为数据库的默认策略。
  2. 默认存储策略(Default Retention Policy): 新创建的数据库默认具有一个保存无限时间的存储策略,即数据的永久保存。

InfluxDB通过数据存储策略实现数据的保留和清理功能,可以根据业务需求设置不同的数据保留策略。数据保留策略可用于控制数据存储的时间,避免数据过期或占用过多的存储空间。每个数据库可以拥有多个数据保留策略,但需要设置一个默认的策略,用于处理未指定策略的数据。
可以通过创建、修改和删除数据存储策略来管理数据库中数据的保留时间。通过查询命令可以查看当前数据库的保留策略,以及每个保留策略的名称、持续时间和其他相关信息。

https://blog.51cto.com/lxw1844912514/5687294
https://www.chenxie.net/archives/2649.html

进入容器内容:docker exec -it compose-cig_influxdb_1 /bin/bash
输入,进入命令行:influx

常用命令:
  1. **show retention policies on server_metrics (库名); 查看每个库的数据保存策略: – **
  2. SHOW CONTINUOUS QUERIES 查看创建的连续查询
  3. show databases:显示所有数据库的列表。可以使用该命令查看当前InfluxDB实例中可用的数据库。
  4. create database <database_name>:创建一个新的数据库,要指定数据库的名称。
  5. use <database_name>:切换到指定的数据库,以后的操作将在该数据库中进行。
  6. show measurements:显示当前数据库中所有表的列表(也称为measurement),可以查看表名。
  7. show tag keys:显示指定表中的标签(tag)的键列表。
  8. show field keys:显示指定表中的字段(field)的键列表。
  9. **SELECT * FROM **:查询指定表中的所有数据。
  10. INSERT INTO <field_key>=<field_value>:向指定表中插入数据。
  11. DROP DATABASE <database_name>:删除指定的数据库,注意,此操作将永久删除数据库及其所有数据,请谨慎使用。
  12. DROP MEASUREMENT <measurement_name>
  13. quitexit:退出InfluxDB Shell。

influxdb中没有建表语句,而是直接写入测量
INSERT server_stats,server_name=“Server1”,location=“US”,operating_system=“Linux” cpu_usage=0.9,memory_usage=0.56,disk_usage=0.65,network_traffic=300.4,io_operations=1000
在这个例子中,我们在 “server_stats” 这个测量中添加了一个新数据点,设置了三个标签 “server_name”, “location”, “operating_system” 并附加了他们的值, 设置了五个字段 “cpu_usage”, “memory_usage”, “disk_usage”, “network_traffic”, “io_operations” 和他们对应的值。如果你不指定时间戳,就会自动应用服务器的当前时间。
请注意,字段值的类型不需要明确的定义,它们会根据你插入的数据的类型自动设置。在这个例子中,“cpu_usage”, “memory_usage”, “disk_usage”, “network_traffic” 是浮点数,而 “io_operations” 是整数,你在插入数据时直接使用这些类型的值,不需要添加引号。对于字符串类型的标签值,你需要使用双引号。

image.png

CREATE DATABASE server_metrics 

-- 直接写入测量
INSERT server_stats,server_name="Server1",location="US",operating_system="Linux" cpu_usage=0.6,memory_usage=0.7,disk_usage=0.5,network_traffic=300.4,io_operations=1000

-- 测量保存策略
ALTER RETENTION POLICY "two_weeks_only" ON "server_metrics" DEFAULT

-- 这个查询会在每个小时的开始时执行,计算 "server_stats" measurement 中上一个小时内的平均 CPU 和内存使用量,
-- 并将结果写入到 "hourly_server_stats" 这个新的 measurement中。在 GROUP BY 子句中,* 表示所有的tag。

CREATE CONTINUOUS QUERY "cq_hourly_server_stats" ON "server_metrics"
BEGIN
  SELECT mean("cpu_usage") AS "mean_cpu_usage", mean("mem_usage") AS "mean_mem_usage"
  INTO "hourly_server_stats"
  FROM "server_stats"
  GROUP BY time(1h), *
END


-- Continuous Query for hourly averages
-- 每小时平均值的连续查询

CREATE CONTINUOUS QUERY "cq_hourly_averages" ON "server_metrics"
-- 在 "server_metrics" 数据库上创建名为 "cq_hourly_averages" 的连续查询

BEGIN
-- 开始定义查询

  SELECT MEAN("cpu_usage") AS "avg_cpu_usage",
         MEAN("memory_usage") AS "avg_memory_usage",
         MEAN("disk_usage") AS "avg_disk_usage",
         MEAN("network_traffic") AS "avg_network_traffic",
         MEAN("io_operations") AS "avg_io_operations"
  -- 选择计算字段的平均值

  INTO "autogen"."hourly_averages"
  -- 将结果写入 "autogen" 数据库中的 "hourly_averages" 测量中

  FROM "autogen"."server_stats"
  -- 从 "autogen" 数据库的 "server_stats" 测量中获取数据

  GROUP BY time(1h), "server_name"
  -- 按每小时和服务器名称进行分组
END
-- 结束查询

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值