目录
- telegraf收集服务的各指标信息。
- influxdb存储收集的信息
- grafana显示收集出来的数据
参考资料
1. InfluxDB
1. 特征:
1. 时序性(Time Series)
与时间相关的函数的灵活使用(诸如最大、最小、求和等);
2. 度量(Metrics)
对实时大量数据进行计算;
3. 事件(Event)
支持任意的事件数据,换句话说,任意事件的数据我们都可以做操作。
2. 特点:
- schemaless(无结构),可以是任意数量的列;
- min, max, sum, count, mean, median 一系列函数,方便统计;
- Native HTTP API, 内置http支持,使用http读写;
- Powerful Query Language 类似sql;
- 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搭建
-
docker-compose.yml
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