关于influxdb基础理解和用法

influxdb介绍

  • InfluxDB用Go语言编写的一个开源分布式时序、事件和指标数据库
  • 提供了Http接口的API来操作数据
  • 提供了类似sql的数据库语句
  • linux(centos)下安装

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.2.2.x86_64.rpm
yum localinstall influxdb-1.2.2.x86_64.rpm

  • 使用docker安装,使用

1.docker pull influxdb
2.sudo docker run -d -p 8083:8083 -p8086:8086 --expose 8090 --expose 8099 --name influxDbService influxdb
3.进入influxdb docker
4.cd /usr/bin/ find | grep influx
5. ./influx
也可以在外部直接使用http方式
curl -G ‘http://127.0.0.1:8086/query?pretty=true’ --data-urlencode “db=xxx” --data-urlencode “q=show measurements;”

表解释

  • 每一条数据称为Point,有三部分组成 time,fields,tags
  • time:代表时间,每个数据记录时间,是数据库中的主索引
  • fields:没有索引的属性, 类似于mysql中的字段
  • tags: 有索引的字段
  • 在一张表中,只有时间和tags可以用来分组(group by),fields不可以
  • 表与表之间没有非常明确的关联关系(外键)
  • series集合 简单理解为对tags进行分组,所有tags相同为一组(show series from xxx)
  • 支持的http形式
    在这里插入图片描述

部分经常使用的基本语句

  • 连接数据库:influx -host ‘xxx’ -port ‘xx’
  • 创建数据库:create database “db_name”
  • 查看有哪些数据库:show databases; 使用:use xxx; 查看表:show measurements;
  • 创建表,tags,fields如下
  • insert test_data,host=127.0.0.2,monitor_name=test1 count=11

简单的查询语句

  • 语句查询:select * from “cpu_detail” where time > now() - 5m group by device_name limit 10;(根据最近五分钟的时间查询根据cpu名称分组的十条数据)

在这里插入图片描述

  • http查询:curl -G ‘http://xxx.xxx.xx.xx:8060/query?pretty=true’ --data-urlencode “db=system” --data-urlencode “q=SELECT * FROM cpu_detail where time > now() - 5m group by device_name LIMIT 10” (查询同上,会返回json数据)

在这里插入图片描述

比较重要的数据保存策略

  • 简单解释就是多久删一次数据,应为influxdb不支持删除和修改操作
  • 官方解释:InfluxDB没有提供直接删除Points的方法,但是它提供了Retention Policies。主要用于指定数据的保留时间:当数据超过了指定的时间之后,就会被删除
  • 查看当前数据库的Retention Policies:show RETENTION POLICIES ON “xxx”

在这里插入图片描述

创建保存策略

  • CREATE RETENTION POLICY “2_hours” ON “telegraf” DURATION 2h REPLICATION 1 DEFAULT(通过这份语句可以添加策略,本例在 telegraf 库添加了一个2小时的策略,名字叫做 2_hours, duration为2小时,副本为1,设置为默认策略)
  • 其中duration 它具有各种时间参数,比如:h(小时),w(星期)

修改保存策略

  • ALTER RETENTION POLICY “2_hours” ON “telegraf” DURATION 4h DEFAULT(把添加的过期时间改为4小时)

删除策略

  • drop retention POLICY “2_hours” ON “telegraf”

对某张表进项单独的数据策略

  • insert into “2_hours” devops-idc-sz,host=server01 cpu=23.1,mem=0.63(需要在新增数据的时候对这个数据进行选用保存策略)

第三方库API接口

  • https://docs.influxdata.com/influxdb/v0.10/clients/api/
  • 用python举例
from influxdb import InfluxDBClient
client = InfluxDBClient('xxx', xx, '', '', 'xx')
result = client.query('SELECT * FROM xxx WHERE time > now() - 5m limit 1;')
print "Result: {0}".format(result)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值