InfluxDB和Grafana集成

in 互联网技术 with 0 comment  访问: 5,727 次

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

InfluxDB

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

默认情况下,InfluxDB使用:

您可以通过/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
>

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

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

然后我们将分配:

在我们的查询中使用。它将帮助我们区分每个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的一些链接:

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的一些链接:

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

添加数据源

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

15350390116821.jpg
如果单击顶部标题中的Grafana图标并选择“数据源”,则应在下面看到图像。
15350390647544.jpg
添加仪表板

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

15350393658097.jpg
15350393795755.jpg
15350393978816.jpg
15350394103218.jpg
如果启用图形的自动刷新选项并使用更多数据填充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

图形应如下图所示:
15350395093325.jpg

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

原文链接:http://suo.im/5edX8G

WeZan