2019独角兽企业重金招聘Python工程师标准>>>

前言:

Influxdb也是有influxdata公司(www.influxdata.com )开发的用于数据存储的时间序列数据库.可用于数据的时间排列。在整个TIG(Telegraf+influxdb+grafana)方案中,influxdb可算作一个中间件,主要负责原始数据的存储,并按照时间序列进行索引构建以提供时间序列查询接口。在整个TIG方案中,应该先构建的就是Influxdb。

Influxdb研究与实践:

influxdb介绍:

使用TSM(Time Structured Merge)存储引擎,允许高摄取速度和数据压缩; 
使用go编写,无需其他依赖; 
简单,高性能写查询httpAPI接口; 
支持其他数据获取协议的插件,比如graphite,collected,OpenTSDB; 
使用relay构建高可用https://docs.influxdata.com/influxdb/v1.0/high_availability/relay/;
扩展的类sql语言,很容易查询汇总数据; 
tag的支持,可用让查询变的更加高效和快速; 
保留策略有效地自动淘汰过期的数据; 
持续所产生的自动计算的数据会使得频繁的查询更加高效; 
web管理页面的支持

下载安装:

github:https://github.com/influxdata/influxdb 源码编译 
官网下载: 
Centos系列:wgethttps://dl.influxdata.com/influxdb/releases/influxdb-1.0.0.x86_64.rpm && sudo yum localinstall influxdb-1.0.0.x86_64.rpm 
源码包系列:wgethttps://dl.influxdata.com/influxdb/releases/influxdb-1.0.0_linux_amd64.tar.gz && tar xvfz influxdb-1.0.0_linux_amd64.tar.gz 
docker系列:docker pull influxdb 
安装手册:https://docs.influxdata.com/influxdb/v0.9/introduction/installation/

配置:

#cat /etc/influxdb/influxdb.conf
reporting-disabled = false
[registration]
[meta]
dir = "/var/lib/influxdb/meta"
hostname = "10.0.0.2"    #此hostname必须写本机,否则无法连接到数据操作的API
bind-address = ":8088"
retention-autocreate = true
election-timeout = "1s"
heartbeat-timeout = "1s"
leader-lease-timeout = "500ms"
commit-timeout = "50ms"
cluster-tracing = false
[data]
dir = "/var/lib/influxdb/data"
max-wal-size = 104857600 # Maximum size the WAL can reach before a flush. Defaults to 100MB.
wal-flush-interval = "10m" # Maximum time data can sit in WAL before a flush.
wal-partition-flush-delay = "2s" # The delay time between each WAL partition being flushed.
wal-dir = "/var/lib/influxdb/wal"
wal-logging-enabled = true
[hinted-handoff]
enabled = true
dir = "/var/lib/influxdb/hh"
max-size = 1073741824
max-age = "168h"
retry-rate-limit = 0
retry-interval = "1s"
retry-max-interval = "1m"
purge-interval = "1h"
[admin]
enabled = true
bind-address = ":8083"
https-enabled = false
https-certificate = "/etc/ssl/influxdb.pem"
[http]
enabled = true
bind-address = ":8086"
auth-enabled = false
log-enabled = true
write-tracing = false
pprof-enabled = false
https-enabled = false
https-certificate = "/etc/ssl/influxdb.pem"
[opentsdb]
enabled = false
[collectd]
enabled = false

注意:influxdb服务会启动三个端口:8086为服务的默认数据处理端口,主要用来influxdb数据库的相关操作,可提供相关的API;8083为管理员提供了一个可视化的web界面,用来为用户提供友好的可视化查询与数据管理;8088主要为了元数据的管理。需要注意的是,influxdb默认是需要influxdb用户启动,且数据存放在/var/lib/influxdb/下面,生产环境需要注意这个。

启动:

和telegraf启动方式一样,可以使用init.d或者systemd进行管理influxdb 
注意,启动之后需要查看相关的端口是否正在监听,并检查日志确保服务正常启动

使用:

如果说使用telegraf最核心的部分在配置,那么influxdb最核心的就是SQL语言的使用了。influxdb默认支持三种操作方式: 
登录influxdb的shell中操作:

创建数据库:
create database mydb
创建用户:
create user "bigdata" with password 'bigdata' with all privileges
查看数据库:
show databases;
数据插入:
insert bigdata,host=server001,regin=HC load=88
切换数据库:use mydb
查看数据库中有哪些measurement(类似数据库中的表):
show measurements
查询:
select * from cpu limit 2
查询一小时前开始到现在结束的:
#select load from cpu where time > now() - 1h
查询从历史纪元开始到1000天之间:
#select load from cpu where time < now() + 1000d
查找一个时间区间:
#select load from cpu where time > '2016-08-18' and time < '2016-09-19'
查询一个小时间区间的数据,比如在September 18, 2016 21:24:00:后的6分钟:
#select load from cpu where time > '2016-09-18T21:24:00Z' +6m
使用正则查询所有measurement的数据:
#select * from /.*/ limit 1
#select * from /^docker/ limit 3
#select * from /.*mem.*/ limit 3
正则匹配加指定tag:(=~ !~)
#select * from cpu where "host" !~ /.*HC.*/ limit 4
#SELECT * FROM "h2o_feet" WHERE ("location" =~ /.*y.*/ OR "location" =~ /.*m.*/) AND "water_level" > 0 LIMIT 4
排序:group by的用法必须得是在复合函数中进行使用
#select count(type) from events group by time(10s)
#select count(type) from events group by time(10s),type
给查询字段做tag:
#select count(type) as number_of_types group by time(10m)
#select count(type) from events group by time(1h) where time > now() - 3h
使用fill字段:
#select count(type) from events group by time(1h) fill(0)/fill(-1)/fill(null) where time > now() - 3h
数据聚合:
select count(type) from user_events merge admin_events group by time(10m)

使用API进行操作数据:

创建数据库:
curl -G "http://localhost:8086/query" --data-urlencode "q=create database mydb"
插入数据:
curl -XPOST 'http://localhost:8086/write?db=mydb' -d 'biaoge,name=xxbandy,xingqu=coding age=2'
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000'
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server02 value=0.67
cpu_load_short,host=server02,region=us-west value=0.55 1422568543702900257
cpu_load_short,direction=in,host=server01,region=us-west value=2.0 1422568543702900257'
将sql语句写入文件,并通过api插入:
#cat sql.txt
cpu_load_short,host=server02 value=0.67
cpu_load_short,host=server02,region=us-west value=0.55 1422568543702900257
cpu_load_short,direction=in,host=server01,region=us-west value=2.0 1422568543702900257
#curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary @cpu_data.txt查询数据:(--data-urlencode "epoch=s" 指定时间序列 "chunk_size=20000" 指定查询块大小)
# curl -G http://localhost:8086/query?pretty=true --data-urlencode "db=ydb" --data-urlencode "q=select * from biaoge where xingqu='coding'"
数据分析:
#curl -G http://localhost:8086/query?pretty=true --data-urlencode "db=mydb" --data-urlencode "q=select mean(load) from cpu"
#curl -G http://localhost:8086/query?pretty=true --data-urlencode "db=mydb" --data-urlencode "q=select load from cpu"
可以看到load的值分别是42 78 15.4;用mean(load)求出来的值为45,13
curl -G http://localhost:8086/query?pretty=true --data-urlencode "db=ydb" --data-urlencode "q=select mean(load) from cpu where host='server01'"

使用influxdb提供的web界面进行操作:

这里只是简单的介绍了influxdb的使用,后期如果想在grafana中汇聚并完美地展示数据,可能需要熟悉influxdb的各种查询语法。(其实就是sql语句的一些使用技巧,聚合函数的使用,子查询等等)

注意:原创著作,转载请联系作者!

转载于:https://my.oschina.net/xxbAndy/blog/751329

Docker监控方案(TIG)的研究与实践之Influxdb相关推荐

  1. Docker监控方案(TIG)的研究与实践之Grafana

    2019独角兽企业重金招聘Python工程师标准>>> Grafana研究和实践: 介绍: Grafana 是 Graphite 和 InfluxDB 仪表盘和图形编辑器.Grafa ...

  2. docker监控方案

    Docker监控方案 docker中有几个自带的监控方案:sysdig.uifd.scope sysdig是命令行界面的监控,而后两者是web页面的图形化监控 日后,作者将会去研究普鲁米修斯的容器监控 ...

  3. Docker监控方案之cAdvisor

    Docker常用监控方案 数据收集利器cAdvisor 运行cadvisor容器 sudo docker run --volume=/:/rootfs:ro --volume=/var/run:/va ...

  4. 一张表搞懂各种 Docker 监控方案 - 每天5分钟玩转 Docker 容器技术(86)

    前面我们已经介绍了ps/top/stats.Sysdig.Weave Scope.cAdvisor 和 Prometheus 多种容器监控工具和方案,是时候做一个比较了.下面将从五个方面来对比它们之间 ...

  5. 14、Docker监控方案(Prometheus+cAdvisor+Grafana)

    上一篇文章我们已经学习了比较流行的cAdvisor+InfluxDB+Grafana组合进行Docker监控.这节课来学习Prometheus+cAdvisor+Grafana组合. cAdvisor ...

  6. 斌哥的 Docker 进阶指南—监控方案的实现

    过去的一年中,关于 Docker 的话题从未断过,而如今,从尝试 Docker 到最终决定使用 Docker 的转化率依然在逐步升高,关于 Docker 的讨论更是有增无减.另一方面,大家的注意力也渐 ...

  7. docker管理监控方案

    docker相关管理可分为四类:docker基础功能.docker监控.docker集群管理和docker系统认证管理.docker管理的基础或信息来源都是docker命令行或docker API. ...

  8. Docker监控:基于阿里云容器服务构建自己的Docker监控框架

    微服务架构通过将一个复杂系统分解成一系列独立开发.部署和运维的服务,提升了整个系统的敏捷性,可以灵活的响应业务和规模的变化.而Docker技术则将服务的部署和环境完全解耦,利用Docker的可移植性和 ...

  9. 第 10 章 容器监控 - 078 - Docker 最常用的监控方案

    Docker 最常用的监控方案 当 Docker 部署规模逐步变大后,可视化监控容器环境的性能和健康状态将会变得越来越重要. Docker 自带的几个监控子命令: ps .top .stats 功能更 ...

最新文章

  1. linux 命令-f1,linux之‘cut -f1’命令详解
  2. 思科交换机vlan配置
  3. 万维网源代码正在被发明人拍卖,有人出价1800万,还在不断上涨
  4. 昆明二级计算机考试报名时间2015,4月15日开始网上报名!云南省2021年上半年中小学教师资格考试(面试)安排来了——昆明广播电视台...
  5. 【高级数据结构】[SPOJ QTREE]树链剖分/动态树各一模板
  6. 堆的应用--并查集解决“擒贼先擒王”问题(JAVA)
  7. 电大计算机机考excel,中央电大计算机应用机考excel电子表格模板题库存(118页)-原创力文档...
  8. U盘安装linux后无法引导
  9. Linux命令行操作基础练习
  10. PyTorch学习—9.模型容器与AlexNet构建
  11. cypress测试脚本_用 Cypress 拯救业务项目的前端自动化测试
  12. CSDN,hen hao,hen qiang da
  13. iOS开发之第三方登录微信-- 史上最全最新第三方登录微信方式实现
  14. 立方度量(Cubic Metric)
  15. 微信小程序----返回上一页刷新或当前页刷新
  16. 用 Python 写了一个表白神器,照片隐藏表白话语!
  17. LeetCode初级算法 2:买卖股票的最佳时机 II
  18. metabase使用教程
  19. pipe函数、read函数和write函数
  20. 解决win10系统msvcr120.dll丢失办法

热门文章

  1. uva 10570—— Meeting with Aliens
  2. java错误1601解决方法,求助解决错误
  3. leetcode283.移动零
  4. 计算机网络【五】广播通信+以太网
  5. 获取网络接口信息——ioctl()函数与结构体struct ifreq、 struct ifconf
  6. 1037. 在霍格沃茨找零钱(20)
  7. WinPcap笔记(5):不用回调方法捕获数据包
  8. Java高级开发面试,java字符串拼接的方法
  9. linux 函数手册 在线,Linux系统API函数手册
  10. 7月15号day7总结