Influxdb+Grafana+Telegraf及docker中运行


  • telegraf收集服务的各指标信息。
  • influxdb存储收集的信息
  • grafana显示收集出来的数据

参考资料

1. InfluxDB

1. 特征:

1. 时序性(Time Series)

与时间相关的函数的灵活使用(诸如最大、最小、求和等);

2. 度量(Metrics)

对实时大量数据进行计算;

3. 事件(Event)

支持任意的事件数据,换句话说,任意事件的数据我们都可以做操作。

2. 特点:

  1. schemaless(无结构),可以是任意数量的列;
  2. min, max, sum, count, mean, median 一系列函数,方便统计;
  3. Native HTTP API, 内置http支持,使用http读写;
  4. Powerful Query Language 类似sql;
  5. Built-in Explorer 自带管理工具。

3. 功能及默认

  • 时序数据库
  • 默认端口为Web端8083 , API端8086 , 默认登陆信息admin

4. 主要概念

1) 与SQL的名词做比较

influxDB中的名词 SQL中的概念 概念
database 数据库 数据库
measurement 数据库中的表 fields,tags以及time列的容器
points 表中的一行数据 同一个series中具有相同时间的field set

2) InfluxDB的独有概念

Point

属性 SQL中的概念
timestamp 每个数据都需要一个时间戳(主索引&自动生成),在TSM存储引擎中会特殊对待,以为了优化后续的查询操作
field 1. 各种记录值(必须存在,没有索引的属性),eg:温度
2. 由field key,field value组成
3. field key和field value对组成field set
4. 如果使用字段作为查询条件,会扫描符合查询条件的所有字段值,性能不及tag。fields相当于SQL的没有索引的列。
5. field value可以为string,float,integer或boolean类型
tag 1. 各种有索引的属性,eg:地区
2. tag key,tag value组成
3. tag key和tag value对组成tag set
4. tags相当于SQL中的有索引的列
5. tag value只能是string类型

series

  • series是共享同一个retention policy,measurement以及tag set的数据集合
  • series相当于是InfluxDB中一些数据的集合。所有在数据库中的数据,都要通过图表展示出来,而series则表示表里面的数据,可以在图表上画成几条线(通过tags排列组合算出来)

shard

每个存储策略下会存在许多shard,每个shard存储一个指定时间段的数据,例如7点-8点的数据落入shard0中,8点-9点的数据落到shard1中,每个shard都对应一个底层的tsm存储引擎,有独立的cache,wal,tsm file。

retention policy

保留策略(RP)是用来定义数据在InfluxDB存放的时间,或者定义保存某个期间的数据。当你创建数据库时,InfluxDB会自动创建一个autogen(具有无限保留的保留策略)

5. 常用命令

1. 用户管理:

  • 显示用户

    SHOW USERS
  • 创建用户和设置密码  

    CREATE USER "username" WITH PASSWORD 'password'
  • 创建管理员权限的用户

    CREATE USER "username" WITH PASSWORD 'password' WITH ALL PRIVILEGES
  • 删除用户

    DROP USER "username"
  • 授权数据库给指定用户

    GRANT ALL PRIVILEGES ON cadvisor TO testuse

2. database:

  • 创建数据库: CREATE DATABASE testDB
  • 显示所有数据库: SHOW DATABASES
  • 删除数据库: DROP DATABASE testDB
  • 使用数据库: USE testDB
  • 创建默认的数据保留策略,设置保存时间30天,副本为1

    CREATE RETENTION POLICY "xx_retention" ON "xx" DURATION 30d REPLICATION 1 DEFAULT

6. 函数

  • 聚合函数:FILL(), INTEGRAL(),SPREAD(), STDDEV(),MEAN(), MEDIAN() 等。
  • 选择函数: SAMPLE(), PERCENTILE(), FIRST(), LAST(), TOP(), BOTTOM()等。
  • 转换函数: DERIVATIVE(), DIFFERENCE()等。
  • 预测函数:HOLT_WINTERS()

7. golang中使用

直接看 git


2. Grafana

1. 主要特性

  • 灵活丰富的图形化选项
  • 可以混合多种风格
  • 支持白天和夜间模式
  • 多个数据源。

2. 功能及默认

  • 访问各类数据源 , 自定义报表、显示图表等等 , 用于提供界面监控
  • 默认端口为3000 , 默认登陆信息admin

3. Telegraf

1. 功能

收集系统和服务的统计数据, 并写入到InfluxDB数据库, 在需要监控的机器上安装

4. docker-compose搭建

influxdb:
image: influxdb:latest
container_name: tig-influxdb
ports:
- "8083:8083"
- "8086:8086"
- "8090:8090"
env_file:
- 'env.influxdb'
volumes:
# Data persistency
# sudo mkdir -p ./influxdb/data
- ./influxdb/data:/var/lib/influxdb
# 配置docker里的时间为东八区时间
- ./etc/timezone:/etc/timezone:ro
- ./etc/localtime:/etc/localtime:ro
restart: unless-stopped #停止后自动 telegraf:
image: telegraf:latest
container_name: tig-telegraf
links:
- influxdb
volumes:
- ./telegraf.conf:/etc/telegraf/telegraf.conf:ro
- ./etc/timezone:/etc/timezone:ro
- ./etc/localtime:/etc/localtime:ro
restart: unless-stopped grafana:
image: grafana/grafana:latest
container_name: tig-grafana
ports:
- "3000:3000"
env_file:
- 'env.grafana'
links:
- influxdb
volumes:
# Data persistency
# sudo mkdir -p ./grafana/data; chown 472:472 ./grafana/data
- ./grafana/data:/var/lib/grafana
- ./etc/timezone:/etc/timezone:ro
- ./etc/localtime:/etc/localtime:ro
restart: unless-stopped
上一篇:Imageloader框架


下一篇:【细语】C#之扩展方法原理及其使用