influxdb 端点使用http进行sql查询,写数据

influxdb,端点,使用,http,进行,sql,查询,数据 · 浏览次数 : 34

小编点评

**端点介绍** | 端点名称 | 作用 | 传参方式 | 示例 | |---|---|---|---| | `/ping` | 检查 InfluxDB 实例状态 | GET | curl http://localhost:8086/ping2./write | | `/write` | 将数据写入 InfluxDB | POST | curl -XPOST 'http://localhost:8086/write?db=my_database' --data-binary 'measurement_name,host=example_host,ip=192.168.1.100 name=\"John Doe\",num=42 1627842300000000000' | | `/query` | 执行查询操作 | POST | curl -XPOST 'http://localhost:8086/query' -H 'Content-Type: application/x-www-form-urlencoded' --data-urlencode 'q=SELECT * FROM measurement_name WHERE time > now() - 1h' | | `/query?db=my_database` | 批量执行查询 | POST | curl -XPOST 'http://localhost:8086/query?db=my_database' --data-raw ' [ { \"measurement\": \"measurement_name1\", \"tags\": { \"tag_key\": \"tag_value\" }, \"fields\": [ \"field_key1\", \"field_key2\" ], \"time\": \"2022-01-01T00:00:00Z\", \"query\": \"SELECT field_key1, field_key2 FROM measurement_name1 WHERE tag_key = 'tag_value'\" }, { \"measurement\": \"measurement_name2\", \"tags\": { \"tag_key\": \"tag_value\" }, \"fields\": [ \"field_key1\", \"field_key2\" ], \"time\": \"2022-01-01T00:00:00Z\", \"query\": \"SELECT field_key1, field_key2 FROM measurement_name2 WHERE tag_key = 'tag_value'\" ] ]' | **异常总结** | 错误代码 | 错误描述 | 解决方法 | |---|---|---| | `unable to parse authentication credentials` | 认证凭据解析错误 | 提供正确的用户名和密码。 | | `database name required` | 数据库名称为空 | 提供正确的数据库名称。 |

正文

转载请注明出处:

InfluxDB有以下几个常用的端点,它们的作用和传参方式如下:

1./ping

端点:

  • 作用:用于检查InfluxDB实例的状态,返回InfluxDB的构建类型和版本信息。

  • 传参:无需传参,仅发送GET请求即可。

调用示例:  

curl http://localhost:8086/ping

2./write

端点:

  • 作用:用于将数据写入InfluxDB。

  • 传参:

    • 请求方式:发送POST请求。

    • 请求头:

      • Content-Type:设置为application/x-www-form-urlencodedtext/plain,表示请求体中的数据格式为InfluxDB的行协议(Line Protocol)。

    • 请求体:需要将要写入的数据按照InfluxDB的行协议格式进行编码,并作为请求体发送。

当有标签(tag)和字段(field)如下所示时,可以通过在数据点中使用逗号分隔并以键值对的形式传递参数:

curl -XPOST 'http://localhost:8086/write?db=my_database' \
    --data-binary '
measurement_name,host=example_host,ip=192.168.1.100 name="John Doe",num=42 1627842300000000000
'

  也可以添加更多的数据点,每个数据点之间使用换行符进行分隔,以传递多个标签和字段的参数。

3./query

端点:

  • 作用:用于执行查询操作,从InfluxDB中检索数据。

  • 传参:

    • 请求方式:发送POST请求。

    • 请求头:

      • Content-Type:设置为application/x-www-form-urlencodedapplication/json,表示请求体中的数据格式为InfluxDB查询语句的格式(InfluxQL或Flux)。

    • 请求体:将查询语句编写为InfluxQL或Flux格式,并作为请求体发送。

curl -XPOST 'http://localhost:8086/query' \
    -H 'Content-Type: application/x-www-form-urlencoded' \
    --data-urlencode 'q=SELECT * FROM measurement_name WHERE time > now() - 1h'

4./query

端点(批量查询):

  • 作用:用于在单个请求中执行多个查询操作。

  • 传参:

    • 请求方式:发送POST请求。

    • 请求头:

      • Content-Type:设置为application/x-www-form-urlencodedapplication/json,表示请求体中的数据格式为InfluxDB查询语句的格式(InfluxQL或Flux)。

    • 请求体:将多个查询语句按照InfluxQL或Flux格式编写,并使用分号(;)作为分隔符,将它们放在请求体中一起发送。

curl -XPOST 'http://localhost:8086/query?db=my_database' \
    --data-raw '
        [
            {
                "measurement": "measurement_name1",
                "tags": { "tag_key": "tag_value" },
                "fields": [ "field_key1", "field_key2" ],
                "time": "2022-01-01T00:00:00Z",
                "query": "SELECT field_key1, field_key2 FROM measurement_name1 WHERE tag_key = 'tag_value'"
            },
            {
                "measurement": "measurement_name2",
                "tags": { "tag_key": "tag_value" },
                "fields": [ "field_key1", "field_key2" ],
                "time": "2022-01-01T00:00:00Z",
                "query": "SELECT field_key1, field_key2 FROM measurement_name2 WHERE tag_key = 'tag_value'"
            }
        ]
    '

对每个部分的详细说明:

  • -XPOST:指定 HTTP 请求方法为 POST。

  • http://localhost:8086/query?db=my_database:设置目标 URL,其中 http://localhost:8086 是 InfluxDB 服务地址,query 是端点路径,db=my_database 是查询参数,指定要查询的数据库名称为 my_database

  • --data-raw:用于发送原始数据的 curl 选项。在这里,我们使用它来传递批量查询的 JSON 数据。

  • 这是实际的批量查询 JSON 数据示例。其中包含两个查询对象,每个对象都有以下属性:

    • measurement:测量名称;

    • tags:标签键值对;

    • fields:字段列表;

    • time:时间戳(可选);

    • query:实际的 InfluxDB 查询语句。

  请根据实际需求替换示例中的参数,并确保提供正确的查询语句和数据库名称。

  响应将返回多个查询结果,每个查询结果都以 JSON 格式表示。你可以通过解析响应来获取每个查询的结果。

 

5.异常总结

  5.1 unable to parse authentication credentials

  报错 "unable to parse authentication credentials" 表明在发送 InfluxDB 查询请求时,认证凭据解析错误。这是由于未正确配置或提供身份验证信息导致的。需要在发送 curl 请求时,提供了正确的用户名和密码来进行身份验证。可以使用 -u 参数来指定用户名和密码。以下是一个示例:

curl -XPOST 'http://localhost:8086/query' \
    -H 'Content-Type: application/x-www-form-urlencoded' \
    -u username:password \
    --data-urlencode 'q=SELECT * FROM measurement_name WHERE time > now() - 1h'

  请确保在 InfluxDB 的配置文件中启用了身份验证,并且提供了正确的用户名和密码。默认情况下,InfluxDB 的身份验证是禁用的,因此需要手动启用并配置用户凭据。

  如果问题仍然存在,请检查用户名和密码是否正确,以及 InfluxDB 配置文件中是否正确配置了身份验证。

  5.2 database name required

  报错 "database name required" 表明在发送 InfluxDB 查询请求时,未提供数据库名称。查询语句需要指定要使用的数据库。

curl -XPOST 'http://localhost:8086/query' \
    -H 'Content-Type: application/x-www-form-urlencoded' \
    -u username:password \
    --data-urlencode 'q=SELECT * FROM measurement_name WHERE time > now() - 1h' \
    --data-urlencode 'db=your_database_name'

  在上述示例中,将 your_database_name 替换为实际的数据库名称,并确保提供了正确的数据库名称。

6.使用postman请求query

  -u 需要转换为 Authorization 的请求头,使用python的base64计算的具体方法为:

import base64

username = 'admin'
password = 'password'

credentials = username + ':' + password
base64_credentials = base64.b64encode(credentials.encode()).decode()

authorization = 'Basic ' + base64_credentials
print(authorization)

  根据 生成的 Authorization 配置到  postman 中。

  将 查询 的sql,db配置到查询的body

  header部分:

   body部分

参考:

  https://docs.influxdata.com/influxdb/v1.7/tools/api/   

 

与influxdb 端点使用http进行sql查询,写数据相似的内容:

influxdb 端点使用http进行sql查询,写数据

转载请注明出处: InfluxDB有以下几个常用的端点,它们的作用和传参方式如下: 1./ping 端点: 作用:用于检查InfluxDB实例的状态,返回InfluxDB的构建类型和版本信息。 传参:无需传参,仅发送GET请求即可。 调用示例: curl http://localhost:8086/

[转帖]Jmeter连接InfluxDB2.0.4

Jmeter连接InfluxDB2.0.4 问题描述:在用Jmeter+InfluxDB构建监控时,因为docker构建的InfluxDB的版本是2.0.4,按照网上的教程进行后端监听器的填写,但是一直出现错误提示401等问题。网上的教程大多是1.X版本的,怀疑是数据库版本不一致导致的数据无法写入,

influxdb得导出与导入

转载请注明出处: 1、备份元数据 基本语法: influxd backup 备份元数据,没有任何其他参数,备份将只转移当前状态的系统元数据到path-to-backup。path-to-backup为备份保存的目录,不存在会自动创建。 该备份会备份所有数据库以及所有

[转帖]Influxdb 2.x 快速入门

Influxdb 2.x 快速入门 https://www.jianshu.com/p/268fca65f10e Influxdb是由Golang 构建的时序数据库,由于由Go语言构建使得其跨平台部署相对方便。用户只需下载其可执行文件到相应系统执行即可。 核心概念 示例数据(解释某些概念用) _ti

[转帖]【InfluxDB V2.0】介绍与使用,flux查询、数据可视化

目录 一、关键概念 二、系统结构 三、配置文件 四、Flux查询语句 五、可视化数据 附录 一、关键概念 相比V1 移除了database 和 RP,增加了bucket。 V2具有以下几个概念: timestamp、field key、field value、field set、tag key、ta

[转帖]influxdb 2.0.3 tar.gz的安装与配置

下载地址:https://dl.influxdata.com/influxdb/releases/influxdb2-2.0.3_linux_amd64.tar.gz 安装influxdb ### 解压 [root@jyzbdb2 soft]# tar -zxf influxdb2-2.0.3_li

influxdb 中得 fields 与 tag 区别总结

本位为博主原创,转载请注明出处: 1.Field与Tag说明 在 InfluxDB 表结构中,field 和 tag 是用于存储数据的两种不同类型。 Field(字段): Field 用于存储实际的数值数据,例如温度、湿度等测量值。 Field 是可变的,可以随时间的推移而改变其值。 Field 的

influxdb常用sql总结

本文为博主原创,转载请注明出处: 1.登录influxdb influx -username admin -password "password" 2.查看数据库 ##查看有哪些数据库 show databases; ##选中数据库 use database_name; 3.查看表及表结构 ##查看

influxdb 保留策略

转载请注明出处: InfluxDB 中的保留策略用于定义时间序列数据在数据库中的保留期限。保留策略决定了数据在 InfluxDB 中的存储持续时间和精度。以下是 InfluxDB 的保留策略类型以及如何设置和查看它们的详细说明: 保留策略类型: 默认保留策略(Default Retention Po

influxdb 函数 non_negative_derivative 使用

转载请注明出处: 在InfluxDB中,non_negative_derivative()函数用于计算指定字段的非负导数。它可以用来计算时间序列数据的速率或增长率。 该函数的语法如下: non_negative_derivative(column, time_interval) 其中: column