
在这个例子中,我们将在同一台机器(Ubuntu 16.04)上安装InfluxDB和Grafana,然后配置两者,以便Grafana可以可视化存储在InfluxDB中的数据。我们将使用InfluxDB版本1.3.5和Grafana版本4.4.3。
信息 在撰写本文时,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
>
> EXITauth-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'正如你所看到的上方和下方确认,我们插入了属于虚拟数据server01和server02主机在同一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的一些链接:
信息 除了可视化数据外,您还可以使用它触发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 startWeb GUI
浏览http://192.168.99.30:3000并登录admin:admin。
关于Grafana的一些链接:
集成
访问GUI: 转到http://192.168.99.30:3000并登录admin:admin。

添加数据源

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

添加仪表板




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