目录
1.安装 (以docker安装为例)
2.防火墙开放8083/8086端口。
3.Web访问主机IP:8086;创建账户并登录。
4.创建访问token编辑编辑
5.客户端访问 (注意:网络上的influxdb Studio客户端工具只适用于1.8之前的版本)
这是官方地址-根据需要进行不通平台的安装:Install InfluxDB | InfluxDB OSS 2.4 DocumentationDownload, install, and set up InfluxDB OSS.
前情提示:安装之前一定要确定好安装的版本,二者的客户端访问是不一样的。
influxdb 1.x 客户端需要使用账号密码进行访问。
influxdb 2.x 客户端需要使用token进行访问(不支持账号密码的形式)。
1.安装 (以docker安装最新版本influxdb为例)
docker run -d -p 8083:8083 -p 8086:8086 --name influxdb influxdb
2.防火墙开放8083/8086端口。
3.Web访问主机IP:8086;创建账户并登录。
4.创建访问token
5.客户端访问 (注意:网络上的influxdb Studio客户端工具只适用于1.8之前的版本)
这里以python访问为例:
import datetime
from influxdb_client import Point, WritePrecision, InfluxDBClient
from influxdb_client.client.flux_table import TableList
from influxdb_client.client.write_api import SYNCHRONOUS
bucket = "one"
org = "test"
token = "RxQh-j102QUD1q57jukoWNNEc299O9aq6ibV0WUjh0gk3F04_o7jbmSQzh5jtlAA=="
url = "http://192.168.4.17:8086"
if __name__ == '__main__':
# 初始化连接
client = InfluxDBClient(url=url, token=token, org=org)
# 初始化写入API句柄
write_api = client.write_api(write_options=SYNCHRONOUS)
""" 概念介绍
1.org:组织,每个组织至少关联一个bucket。
2.bucket:存储桶,相当于mysql的数据库,bucket属于某个org,且bucket都必须设置数据保存的时长。
3.measurement_name:度量,相当于mysql的表。
4.point:点位,相当于mysql的一行。
5.time:主键索引,相当于mysql的主键。
6.field:字段,相当于mysql的无索引的列字段。
7.tags:标签,相当于mysql的有索引的列字段
"""
# 构建数据
point = Point(measurement_name="my_measurement") \
.tag("fast", "f1") \
.field("temperature", 24.43234543) \
.time(datetime.datetime.utcnow(), WritePrecision.NS)
# 写入数据
write_api.write(bucket, org, point)
# 初始化查询API句柄
query_api = client.query_api()
# 与mysql不同,这里是直接检索bucket,相当于在数据库里检索,返回检索到的表及其数据。
query = 'from(bucket:"one")' \
'|>range(start:-10m)' \
'|>filter(fn:(r)=>r._measurement=="my_measurement")'
tables: TableList = query_api.query(org=org, query=query)
for table in tables:
for record in table.records:
measurement = record.get_measurement() # 返回记录的测量名称。
field = record.get_field() # 返回字段名称。
value = record.get_value() # 返回实际的字段值。
values = record.values # 返回列值的映射。
vg = record.values.get("<your tag>") # 从给定列的记录中返回一个值。
time = record.get_time() # 返回记录的时间。
start = record.get_start() # 返回当前表中所有记录的包含下限。
stop = record.get_stop() # 返回当前表中所有记录的独占时间上限。
print(measurement, field, value, vg, time, start, stop)
# 用完关闭
client.close()
6.web查看数据
此时发现报错了: unsupported input type for mean aggregate: string
是因为默认生成的Query与有问题:修改一下即可