influxDB2.2

下载安装

  1. 下载地址
  2. 下载后在解压目录中,输入cmd执行exe文件
  3. 浏览器访问localhost:8086
  4. 选择快速开始,填写用户信息,组织信息相关概念
InfluxDB是一个由InfluxData开发的开源时序型数据 。它由Go写成,着力于高性能地查询与存储时序型数据 。InfluxDB被广泛应用于存储系统的监控数据 , IoT行业的实时数据等场景 。
名词
  • bucket:相当于mysql中的数据库
  • measurement:相当于mysql中的数据表
  • tag:标签可以有多个,相当于索引
  • time:时间戳
  • field:字段
数据操作Line Protocol【influxDB2.2】
influxDB2.2

文章插图
选择Enter Manually执行语句
语法InfluxDB使用行协议写入数据点 。它是一种基于文本的格式,提供数据点的度量、标记集、字段集和时间戳 。measurementName,tagKey=tagValue fieldKey="fieldValue" 1465839830100400200--------------- --------------- --------------------- -------------------       |               |                  |                    |  Measurement       Tag set           Field set            Timestamp例:myMeasurement,tag1=value1,tag2=value2 fieldKey="fieldValue" 1556813561098000000由换行符分隔的行 \ n表示InfluxDB中的单个点 。线路协议对空格敏感 。
Explore可进行页面上的筛选,点击script Editor查看执行的语句可切换数据呈现的样式
查询数据
  • 声明数据库:from(bucket:"example-bucket")
  • 指定查询范围:|> range(start: -1h)
  • 设置筛选条件:|> filter(fn: (r) => r._measurement == "cpu" and r._field == "usage_system" and r.cpu == "cpu-total")
  • 输出结果:yield()
  • Flux自动假定在每个脚本的末尾有一个yield()函数,用于输出和可视化数据 。只有在同一个Flux查询中包含多个查询时,才需要显式地调用yield() 。每一组返回的数据都需要使用yield()函数命名 。
完整语句:
from(bucket: "example-bucket")    |> range(start: -15m)    |> filter(fn: (r) => r._measurement == "cpu" and r._field == "usage_system" and r.cpu == "cpu-total")    |> yield(name: "test")java开发引入依赖<dependency>  <groupId>com.influxdb</groupId>  <artifactId>influxdb-client-java</artifactId>  <version>3.1.0</version></dependency>数据模型@Data@Accessors(chain = true)@Measurement(name = "monitoring_data")public class MonData {  @Column(tag = true)  private String pointName;  @Column(tag = true)  private String indexName;  @Column private Double value;  @Column(timestamp = true)  private Instant time;}@InfluxColumn为自定义注解,用于拼接查询语句构造map函数使用
@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.FIELD)public @interface InfluxColumn {  String value();}@Datapublic class MonDataDTO {  // tag1名称  @InfluxColumn("pointName")  private String pointName;  // tag2名称  @InfluxColumn("indexName")  private String indexName;  // 时间片开始时间  @InfluxColumn("_start")  private String start;  // 时间片结束时间  @InfluxColumn("_stop")  private String stop;  // 数据产生时间  @InfluxColumn("_time")  private String time;  // 值  @InfluxColumn("_value")  private String value;}

推荐阅读