InfluxDB和Grafana集成

时间:2022-07-24
本文章向大家介绍InfluxDB和Grafana集成,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

在这个例子中,我们将在同一台机器(Ubuntu 16.04)上安装InfluxDB和Grafana,然后配置两者,以便Grafana可以可视化存储在InfluxDB中的数据。我们将使用InfluxDB版本1.3.5和Grafana版本4.4.3

InfluxDB

信息 在撰写本文时,InfluxDB被认为是最佳和最高性能的时间序列数据存储。

默认情况下,InfluxDB使用:

  • TCP端口8086,用于通过InfluxDB的HTTP API进行客户端 - 服务器通信。
  • 用于备份和还原目的的RPC服务的TCP端口8088。

您可以通过/etc/influxdb/influxdb.conf文件配置端口映射和其他属性。您可以通过运行journalctl -u influxdb命令查看日志。

注意: 如果数据从其他主机推送到InfluxDB,则必须使用网络时间协议(NTP)同步所有主机之间的时间。如果不这样做,写入InfluxDB的数据的时间戳可能不准确。时间戳数据以UTC格式存储。您可以使用date命令检查时间。

如果您愿意,可以安装和使用Chronograf作为InfluxDB的基于Web的GUI。

安装 添加InfluxDB存储库

$ curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
$ source /etc/lsb-release
$ echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list

安装并启动InfluxDB服务

$ sudo apt-get update
$ sudo apt-get install Influxdb
$ sudo service Influxdb start

如果运行influxd命令,您将看到有关该服务的基本详细信息。如果运行influxd config命令,您将看到服务的默认配置。

注意: 默认情况下,您无需通过身份验证即可登录数据库,然后运行您希望的任何查询。我们稍后将启用身份验证。

连接 连接数据库

$ influx
Connected to http://localhost:8086 version 1.3.5
InfluxDB shell version: 1.3.5
>

检查当前用户。默认情况下,不会定义任何用户

> SHOW USERS
user admin
---- -----
>

检查当前数据库

> SHOW DATABASES
name: databases
name
----
_internal
>

列出_internal数据库中的表

> USE _internal
Using database _internal
> SHOW MEASUREMENTS
name: measurements
name
----
cq
database
httpd
queryExecutor
runtime
shard
subscriber
tsm1_cache
tsm1_engine
tsm1_filestore
tsm1_wal
write
>

数据库中的查询httpd表从数据_internal

> SELECT * FROM httpd
>

退出influxDB

> EXIT

用户认证 执行以下操作以防止对数据库进行未经身份验证的访问。我们将创建一个管理员用户,并且只允许管理员用户使用用户名和密码访问数据库。

创建具有所有权限的管理员用户

$ influx
Connected to http://localhost:8086 version 1.3.5
InfluxDB shell version: 1.3.5
>
> CREATE USER inanzzz WITH PASSWORD '123123' WITH ALL PRIVILEGES
>
> SHOW USERS
user    admin
----    -----
inanzzz true
>
> EXIT

auth-enabled/etc/influxdb/influxdb.conf配置文件中查找并将其设置为auth-enabled = true启用身份验证。

重启服务

$ sudo service Influxdb restart

没有用户名和密码的测试甚至不允许我们列出数据库。

$ influx
Connected to http://localhost:8086 version 1.3.5
InfluxDB shell version: 1.3.5
>
> SHOW DATABASES
ERR: unable to parse authentication credentials
Warning: It is possible this error is due to not setting a database.
Please set a database with the command "use ".

使用身份验证进行测试与预期一致。

$ influx -username inanzzz -password 123123
Connected to http://localhost:8086 version 1.3.5
InfluxDB shell version: 1.3.5
>
> SHOW DATABASES
name: databases
name
----
_internal
>

写数据 在下面的示例中,我们将创建:

  • 一个名为server_stats的数据库
  • 一个名为cpu的表

存储一些有关CPU的统计信息。

然后我们将分配:

  • 一个名为host的标签
  • 一个名为region的标签

在我们的查询中使用。它将帮助我们区分每个host或每个的统计数据region。然后我们将浮动数据value作为stat分配给字段。

注意: 如果需要,可以手动为数据提供Unix纳秒时间戳。如果不这样做,系统的时间将被使用。

如果我们以更加技术性的方式解释它,它将类似于下面的内容。

SELECT value FROM server_stats.cpu WHERE host = 'server01'
SELECT value FROM server_stats.cpu WHERE host = 'server01' AND/OR region = 'europa'

创建数据库

$ curl -i -XPOST http://localhost:8086/query -u inanzzz:123123 --data-urlencode "q=CREATE DATABASE server_stats"

创建表并填充虚拟数据。只有在表不存在时才创建表。

$ curl -i -XPOST 'http://localhost:8086/write?db=server_stats' -u inanzzz:123123 --data-binary 'cpu,host=server01,region=europa value=0.01 1504879906'
$ curl -i -XPOST 'http://localhost:8086/write?db=server_stats' -u inanzzz:123123 --data-binary 'cpu,host=server01,region=europa value=0.01 1504879943'
$ curl -i -XPOST 'http://localhost:8086/write?db=server_stats' -u inanzzz:123123 --data-binary 'cpu,host=server01,region=europa value=0.02'
$ curl -i -XPOST 'http://localhost:8086/write?db=server_stats' -u inanzzz:123123 --data-binary 'cpu,host=server02,region=europa value=1.00 1504879906'
$ curl -i -XPOST 'http://localhost:8086/write?db=server_stats' -u inanzzz:123123 --data-binary 'cpu,host=server02,region=europa value=1.00 1504879943'
$ curl -i -XPOST 'http://localhost:8086/write?db=server_stats' -u inanzzz:123123 --data-binary 'cpu,host=server02,region=europa value=2.00'

正如你所看到的上方和下方确认,我们插入了属于虚拟数据server01server02主机在同一europa区域。每个主机的前两个数据集基于相同的时间,最后一个数据集基于不同的时间。

$ influx -username inanzzz -password 123123
Connected to http://localhost:8086 version 1.3.5
InfluxDB shell version: 1.3.5
>
> SHOW DATABASES
name: databases
name
----
_internal
server_stats
>
> USE server_stats
Using database server_stats
>
> SHOW MEASUREMENTS
name: measurements
name
----
cpu
>
> SELECT * FROM cpu
name: cpu
time                host     region value
----                ----     ------ -----
1504879906          server01 europa 0.01
1504879906          server02 europa 1
1504879943          server01 europa 0.01
1504879943          server02 europa 1
1504880003297061860 server01 europa 0.02
1504880123219102389 server02 europa 2

关于InfluxDB的一些链接:

  • InfluxDB
  • InfluxDB Install
  • Chronograf (Web GUI)
  • Authentication
  • Schema exploration (CLI/CURL)
  • User management commands
  • Writing data
  • Querying data

Grafana

信息 除了可视化数据外,您还可以使用它触发Slack,电子邮件等警报。

安装 下载包

$ wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_4.4.3_amd64.deb
$ sudo apt-get install -y adduser libfontconfig
$ sudo dpkg -i grafana_4.4.3_amd64.deb

添加InfluxDB存储库

$ echo "deb https://packagecloud.io/grafana/stable/debian/ jessie main" | sudo tee -a /etc/apt/sources.list
$ curl https://packagecloud.io/gpg.key | sudo apt-key add -

安装并启动Grafana服务

$ sudo apt-get update
$ sudo apt-get install grafana
$ sudo service grafana-server start

Web GUI 浏览http://192.168.99.30:3000并登录admin:admin

关于Grafana的一些链接:

  • Grafana
  • 安装和配置

集成 访问GUI: 转到http://192.168.99.30:3000并登录admin:admin

添加数据源

  1. 单击顶部标题中的Grafana图标,然后选择“数据源”选项。
  2. 单击页面中的“添加数据源”按钮。
  3. 如下图所示填写字段,然后单击“添加”按钮。

如果单击顶部标题中的Grafana图标并选择“数据源”,则应在下面看到图像。

添加仪表板

  1. 单击顶部标题中的Grafana图标,选择“仪表板”选项,然后选择“新建”。
  2. 单击页面中的“图形”图标。
  3. 单击图形的“面板标题”标题,然后选择“编辑”。
  4. 配置“指标”如下图所示。
  5. 单击页面顶部的磁盘图标将其另存为“主机统计信息”。这将在下面生成图表。

如果启用图形的自动刷新选项并使用更多数据填充InfluxDB,您会看到图形实时更改。您可以在下面运行命令以针对server02主机添加更多数据,并查看图表以进行测试。

$ for((i=1;i<=10;i+=1)); do curl -XPOST "http://localhost:8086/write?db=server_stats" -u inanzzz:123123 --data-binary "cpu,host=server02,region=europa value=$i.00"; sleep 5; done

图形应如下图所示:

集成链接:http://docs.grafana.org/features/datasources/influxdb/