influxdb使用  ## 打开授权 创建一个admin用户 ``` CREATE USER admin WITH PASSWORD 'admin' GRANT ALL PRIVILEGES TO admin 查看权限: SHOW GRANTS FOR admin 撤销权限: REVOKE ALL ON mydb FROM admin ``` 然后修改配置文件http中的 ``` auth-enabled = true ``` 重启进程,此时再登录,将需要用户和密码 ``` ./influx -username admin -password admin ``` 开启权限后,在api可以加入query param: ``` u=username&p=password ``` ##插入数据 在influxdb中插入一条数据将直接创建一个表(measurement)。具体的语法是: ``` weather,location=us-midwest temperature=82 1465839830100400200 |measurement|,tag_set| |field_set| |timestamp| ``` 注意的是,tag是有索引数据,而field是无索引数据,field必须存在。 sql: ``` insert snmpdata,dev_id=1,attr_id=17,port_name=p1xxx value=1 ``` 命令行: ``` curl -i -XPOST 'http://localhost:8086/write?db=test&u=admin&p=admin' --data-binary 'snmpdata,dev_id=1,attr_id=17,port_name=p1xxx value=1' ``` python接口 ```python data = "mycomputer,uuser=yzh cpu={}".format(cpu) async with session.post("http://localhost:8086/write?db=test", data=data) as resp: pass ``` 有时可以对已有数据设计一个插入取样(continuous query),类似于一个自动生成的子表。语法如下: 插入取样 ``` create continuous query cpu_1 on test begin select mean(cpu) into cpu_1min from mycomputer group by time(1m) end ``` ## 查询 ### 普通查询 ``` # 查询表 show measurements; # 查询series show series from test; # 查询continuous queries show continuous queries # 基础查询 select * from mycomputer where uuser='yzh' # 查询行数 select count(value) from snmpdata; ``` ### curl操作 查询数据 ``` curl -i -XPOST "http://localhost:8086/query?db=test&u=admin&p=admin" --data-urlencode "q=select * from (select sum(value) from snmpdata where dev_id='62014' and attr_id='16' group by time(1m)) tz('Asia/Shanghai')" ``` 查询返回值为json ``` curl -G 'http://localhost:8086/query' --data-urlencode "db=mydatabase" --data-urlencode "q=SELECT * FROM mymeasurement" --data-urlencode "format=json" ``` 写入数据 ``` curl -i -XPOST 'http://localhost:8086/write?db=test&u=admin&p=admin' --data-binary 'snmpdata,dev_id=1,attr_id=17,port_name=p1xxx value=5' ``` ### 分组查询 有时,可以按时间和某个tag进行分组,例:查询dev_id 62014,按属性和每分钟分组 ``` select sum(value) from snmpdata where dev_id='62014' group by attr_id, time(1m) # 忽略掉空行 select * from (select sum(value) from snmpdata where dev_id='62014' group by attr_id, time(1m)) ``` 忽略空行结果: ``` name: snmpdata time attr_id sum ---- ------- --- 1587540180000000000 16 392941 1587540180000000000 214 0 1587540240000000000 214 0 1587540600000000000 16 393001 1587540600000000000 214 0 1587540660000000000 214 0 1587540780000000000 16 393061 ``` ### 时间格式 有时不想显示timestamp,只需要在查询语句后加上: ``` tz('Asia/Shanghai') ``` ## 删库跑路 ``` drop database test drop measurement mycomputer; ``` ## 添加用户 ``` CREATE USER ti_monitor WITH PASSWORD 'ti-matrix' WITH ALL PRIVILEGES ``` # telegraph ``` 安装 wget https://dl.influxdata.com/telegraf/releases/telegraf_1.3.0-1_amd64.deb dpkg -i telegraf_1.3.0-1_amd64.deb 修改配置:定位到 outputs.influxdb 然后service telegraf restart ``` 来自 大脸猫 写于 2019-03-19 13:00 -- 更新于2023-05-24 10:32 -- 0 条评论