InfluxDB和Grafana入门指南
作者:Charles Mahler / 产品,用例,入门
2022年12月20日
导航到
如果你正在处理数据,你可能会希望能够用不同类型的图表来可视化它,并使用仪表板来组织这些图表。你还需要一个地方来存储这些数据,以便可以有效地查询。
存储和可视化时间序列数据最流行的组合之一是Grafana和InfluxDB。InfluxDB作为数据存储,然后使用Grafana从InfluxDB(以及可能的其他数据源)中提取数据以创建仪表板来可视化数据。
在这篇文章中,你将学习如何
-
使用Grafana安装Grafana和InfluxDB
-
将Grafana连接到InfluxDB
-
创建你的第一个Flux查询
-
使用更高级的查询可视化财务数据
InfluxDB概述
InfluxDB是一个开源的时间序列数据库,针对快速和高可用性数据存储进行优化,适用于监控、应用程序度量、IoT传感器数据、实时分析等用例。
Grafana概述
Grafana是一个开源的数据可视化和监控平台。它用于创建仪表板并可视化来自Prometheus或InfluxDB等不同源的数据。
Grafana允许用户快速创建数据的可视化,例如图表、表格和热图。它还提供警报功能,允许用户在满足特定条件时收到通知。
设置InfluxDB和Grafana
现在让我们开始安装InfluxDB和Grafana。首先,你需要在电脑上确保以下内容
Docker设置
本教程将使用docker-compose来管理Grafana和InfluxDB。在运行以下脚本之前,请确保您已导航到您希望项目所在的目录。
进入目标文件夹后,请在命令行中运行以下脚本
mkdir influxdb-getting-started-with-grafana
cd influxdb-getting-started-with-grafana
cat > ./docker-compose.yml <<EOF
version: "3"
networks:
monitoring:
services:
influxdb:
image: influxdb:2.3.0
ports:
- 8086:8086
networks:
- monitoring
grafana:
image: grafana/grafana:9.0.4
ports:
- 3000:3000
networks:
- monitoring
EOF
此脚本将创建一个docker-compose.yml
文件,该文件定义了用于InfluxDB和Grafana的网络和镜像。要启动容器,只需运行以下命令
docker-compose up -d
InfluxDB设置
初始化连接到InfluxDB所需的凭据设置如下。
创建初始的超级管理员凭据、组织、桶和全访问安全令牌。运行influx setup
命令
influx setup --name myinfluxdb2 --host https://127.0.0.1:8086 \
-u admin -p admin54321 -o my-org \
-b my-bucket -t my-token -r 0 -f
已创建超级用户、组织、桶和访问令牌。此外,influx
命令创建了一个新的服务器配置对象,并将其存储在名为myinfluxdb
的活动配置中。
注意:您可以定义任意数量的配置,以便轻松地与多个InfluxDB2服务器一起工作。配置对象存储在您的计算机上本地的$HOME/.influxdbv2/configs
文件中。要列出所有可用的服务器配置,请使用命令influx config ls
。
Grafana和InfluxDB连接设置
在Grafana UI中添加数据源
-
以用户
admin
和密码admin
登录。 -
点击
跳过
以跳过关于新密码的问题。 -
在左侧菜单中,点击图标为
Gear
的齿轮图标,以打开数据源。 -
点击
添加数据源
。 -
选择
InfluxDB
。 -
在名为
Query Language
的下拉菜单中将InfluxQL
替换为Flux
。 -
在
HTTP
部分的URL
字段中输入http://influxdb:8086/
。 -
在
InfluxDB Details
部分的Organization
字段中输入my-org
。 -
在
Token
字段中输入my-token
。(点击保存并测试
按钮后,密码将隐藏并替换为配置的。) -
保存 & 测试:成功将显示两个绿色通知(3个桶找到 + 数据源更新)。请参见下文。
注意:地址http://influxdb:8086/是从docker-compose内部网络中Grafana容器可见的地址。
从Grafana执行您的第一个Flux查询
(更新:InfluxDB 3.0已从Flux和内置任务引擎中移除。用户可以使用基于Python的Quix等外部工具在InfluxDB 3.0中创建任务。)
在Grafana GUI的左侧菜单中找到并打开位于Compass图标的Grafana Explorer。
在Explorers的第1行中输入以下简单查询
buckets()
点击位于右上角的运行查询
按钮。结果是一个列出3个桶的表格。
桶_monitoring
和_tasks
是内部InfluxDB桶。桶名为my-bucket
,它是由之前运行的influx setup命令创建的。
InfluxDB还在https://127.0.0.1:8086运行。您可以使用以下凭据登录InfluxDB UI
-
用户:admin
-
密码:admin54321
使用Flux和Grafana进行更多操作
在本节中,您将学习如何使用Flux以及如何使用Grafana仪表板创建更高级的可视化。
重点内容
-
将金融数据CSV文件导入InfluxDB
-
使用简单的Flux查询提取时间序列数据
-
在Grafana仪表板中保存为面板的K线图数据可视化
这些数据代表从选定公司选择的每日股票价格的历史时间序列,时间范围为2010年至2016年。
以下图像显示了CSV文件的开头,以预览电子表格的外观
数据集是一个50MB的文件,包含2010年至2016年间的每日数据,所有数据都是双精度数字,包括__开盘价、最低价、最高价和收盘价__以及交易量,涉及502家公司。
在电子表格处理程序中分析如此大量的数据是一项繁琐的过程。
将数据导入InfluxDB
首先,您需要将金融数据CSV下载到您的计算机上。打开您的终端,导航到已下载CSV文件的文件夹。在开始使用influx
CLI之前,请确保您正在使用正确的活动配置。
使用以下命令查看可用的配置
influx config ls
输出应产生一条包含InfluxDB设置配置的行
Active Name URL Org
* myinfluxdb2 https://127.0.0.1:8086 my-org
注意:星号表示活动配置,这意味着在每次使用influx命令时,不需要在CLI中重复输入–host和–org参数。
将CSV数据导入InfluxDB
运行此influx
CLI数据导入与注释CMD
influx write -b my-bucket -f ./stock-prices-example.csv \
--header "#constant measurement,stocks" \
--header "#datatype dateTime:2006-01-02,tag,double,double,double,double,double"
注意:此influx写入命令大约需要12-15秒才能完成。要在导入数据的输出结果中打印运行时间,请将此“dry run”脚本添加到查询中:time influx write -b my-bucket
在Grafana探索器中可视化时间序列数据
要开始创建仪表板,请使用下拉选择器选择InfluxDB作为您的数据源
查询和可视化
运行以下Flux查询
from(bucket: "my-bucket")
|> range(start: 2016-01-01T00:00:00Z, stop: 2016-01-31T00:00:00Z)
|> filter(fn: (r) => r["_measurement"] == "stocks")
|> filter(fn: (r) => r["symbol"] == "AAPL")
|> aggregateWindow(every: 1d, fn: mean, createEmpty: false)
|> yield(name: "mean")
图形区域仍然是空的,因为结果超出了数据范围。单击Zoom to data
按钮以查看2016年1月的AAPL原始数据。
注意:在Grafana UI中调整查询的时间范围以满足用户需求是简化的。在Grafana UI中调整数据时间范围是交互式的,调整简单(参见下方的图)。
创建您的第一个Grafana仪表板
单击页面顶部的Add to Dashboard
按钮。
消息框出现选项。选择新建仪表板,并在新窗口中打开Grafana仪表板,以免丢失探索器标签页。
在新浏览器标签页打开后
-
在键盘上输入
e
,等待几秒钟,页面上将出现面板的编辑模式。 -
在右侧选择K线图类型。
然后
-
修改之前的Flux命令,并将第2行的时间范围从
2010-01-01
扩展到2016-12-31
。 -
单击应用按钮。
要缩放,您可以使用Grafana工具栏上的带有减号的放大镜按钮。键盘快捷键是Ctrl+Z
。
要放大,请使用鼠标选择更大的时间范围或只需使用时间范围选择器(下拉控件)。
进入编辑模式并尝试其他可能性。享受您的新仪表板。
使用Grafana仪表板和Flux做更多的事情
使用Flux与Grafana结合,提供了一些其他查询语言无法实现的功能和选项,例如从多个数据源联合数据,以及在返回查询之前对数据进行高级操作和转换。
-
联合查询 - 创建跨越多个桶的图表。例如,您可能需要一个Grafana图表来显示已传输的字节数和每秒请求数;Flux允许您查询这两个度量并将它们联合成一个单一表格。
-
多个数据源 - 使用来自MySQL、MariaDB、Postgres、Microsoft SQL Server、Snowflake、SQLite、AWS Athena和Google BigTable等关系型数据库的元数据丰富时间序列数据;或者来自CSV文件。当您的时间序列数据包含客户编号字段但不包含客户名称时,这非常有用。Flux允许您拉取客户名称,以便在Grafana仪表板上显示。
一些可能对您有用的Flux附加功能
关于使用InfluxDB和Grafana的更多资源: 如何将Grafana与Home Assistant集成