第7节 InfluxDB的概念和安装
❤️💕💕Go语言高级篇章,在此之前建议您先了解基础和进阶篇。Myblog:http://nsddd.top
Go语言基础篇
Go语言100篇进阶
[TOC]
写入模块的实现
- 初始化Influxdb cllient
- 从write channel中读取到监控数据
- 构造数据并且写入到influxdb
监控需求
- 某个协议下的某个请求在某一个请求方法的QPS&响应时间&流量
influxdb
InfluxDB 是一个开源时间序列平台,使用Golang编写的开源的时序型数据库。这包括用于存储和查询数据、在后台处理数据以用于 ETL 或监控和警报目的、用户仪表板以及可视化和探索数据等的 API。这个 repo 上的 master 分支现在代表最新的 InfluxDB,它现在包括 Kapacitor(后台处理)和 Chronograf(UI)的功能,所有这些都在一个二进制文件中。
特性:
- 部署简单,无依赖(Go语言特性)
- 内置http支持,使用http读写
- 类sql的灵活查询(max,min,sum等)
influxdb的重要概念
- datebase:数据库
- measurement:数据库中的表
- points:表里面的一行数据
- tags:各种有索引的属性
- fields:各种记录的值
- time:数据记录的时间戳,也是自动生成的主索引
安装influxdb
我使用的是docker镜像进行安装
查看镜像
root@ubuntu:/home/smile# docker search -f stars=3 --limit 5 influxdb
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
influxdb InfluxDB is an open source time series datab… 1582 [OK]
telegraf Telegraf is an agent for collecting metrics … 575 [OK]
chronograf Chronograf is a visualization tool for time … 313 [OK]
bitnami/influxdb
安装命令
docker pull influxdb #拉取到本地
docker run -it influxdb #运行镜像
查看镜像和绑定的端口
root@ubuntu:/home/smile# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c5541213e802 influxdb "/entrypoint.sh infl…" 20 seconds ago Up 18 seconds 8086/tcp elated_jepsen
f19e7fbc3d18 v2f
influxdb使用
显示数据库
show databases
创建数据库
create database influxdb
删除数据库
drop database influxdb
使用数据库
use influxdb
使用到的字段
type Message struct {
//使用结构体来存储提取出来的监控数据
TimeLocal time.Time //时间
BytesSent int //流量
Path, Method, Scheme, Status string //请求路径
UpstreamTime, RequestTime float64 //监控数据
}
- Tags:Path, Method, Scheme, Status
- Fields:UpstreamTime, RequestTime,BytesSent
- Time:TimeLocal