下载安装docker desktop

出现WSL相关的错误。WSL是一个linux内核的子系统,docker是基于linux内核的,所以运行docker需要WSL。

以管理员权限打开powershell,查看WSL状态

wsl --status

我遇到的错误是因为我关闭了windows的某些更新

执行上述命令后提示我启动wsl更新,使用wsl –update命令更新后变正常

正常后如下:

部署容器

再images的hub中搜到grafana和influxDB,pull到本地

点镜像的启动按钮会弹出配置窗口,配置完后即启动了一个容器

配置容器名和端口映射(此处使用默认的端口, 不做修改。grafana是3000,influxDB是8086)

配置influxDB

浏览器打开localhost:8086访问influxDB

organization name随便写,记住后边要用

bucket name后边也要用。bucket相当于关系数据库的一个database

配置完继续,点quick start会生成一个密钥token长字符串,存下来之后用

grafana配置influxDB数据源

浏览器访问localhost:3000

设置用户名和密码

配置数据源名、查询语言、查询URL

注意

1.URL填写本机地址,不要写localhost,查看本机地址在命令行中使用ipconfig命令

2.influxDB2.x 刚才生成了密钥,因此不再需要用户名密码验证,所以此处取消Basic auth勾选

3.influxDB2.x 可以选Flux这种查询语言

配置上文influxDB中配置的组织名,密钥,bucket名

测试成功

此时在grafana的explore中即可看到刚刚导入的数据源

可以看到,grafana到数据库的连接地址用的是本地计算机的地址,为了防止本机ip变更导致断连,登录路由器管理页,将本机mac地址与ip地址绑定。这样路由器给本机就不会分配其他ip了。

python写入数据

influxDB数据格式

InfluxDb的一个Point为一条记录,每个point包含四个key:measurements, tags, fields, time。他们的值可以直接写,不需要提前创建

1)measurement,他的值相当于关系数据库中的table,包含tag,field,time

2)time 每个数据记录时间,是数据库中的主索引(会自动生成)

3) tags 是可选的,用来做索引的属性,以字符串的形式存放的

4) fields 各种记录值(没有索引的属性),随时间变化的值

用关系型数据库的SQL来描述上述四个要素的关系:

select 随时间变化的field值 from measurements where tags=xxx

show case

红框中的参数是上述“配置influxDB”时写的/生成的参数

bucket相当于关系型数据库的一个database

注意:

url跟前文“配置grafana”中用的url一样

我的项目中订阅了一个价格频道,不停的循环写point

influxDB查看数据

浏览器登陆influxDB

找到刚写入数据的bucket

根据写入的measurement、tags、field筛选写入的数据,点submit查询

grafana查询influxDB

浏览器登陆grafana

新建一个dashboard

选择上文中配置的influxDB数据源

查询语言用上文配置数据源时选择的Flux

filter方法承担了相当于关系数据库SQL中的select、from、where三个的作用。filter可以写在一行中,也可以拆开

选多个field或者tags时,也是用and,不用or

添加更多panel就有了自己的grafana看板

聚合查询

直接查询返回的数据量太大导致grafana不能展示,需要条件聚合函数

如下,聚合时间用的5s,方法是mean,即求平均值