下载安装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,即求平均值