在这个例子中,我们将在同一台机器(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存储库
代码语言:javascript复制$ 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服务
代码语言:javascript复制$ sudo apt-get update
$ sudo apt-get install Influxdb
$ sudo service Influxdb start
如果运行influxd
命令,您将看到有关该服务的基本详细信息。如果运行influxd config
命令,您将看到服务的默认配置。
注意: 默认情况下,您无需通过身份验证即可登录数据库,然后运行您希望的任何查询。我们稍后将启用身份验证。
连接 连接数据库
代码语言:javascript复制$ influx
Connected to http://localhost:8086 version 1.3.5
InfluxDB shell version: 1.3.5
>
检查当前用户。默认情况下,不会定义任何用户
代码语言:javascript复制> SHOW USERS
user admin
---- -----
>
检查当前数据库
代码语言:javascript复制> 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
代码语言:javascript复制> EXIT
用户认证 执行以下操作以防止对数据库进行未经身份验证的访问。我们将创建一个管理员用户,并且只允许管理员用户使用用户名和密码访问数据库。
创建具有所有权限的管理员用户
代码语言:javascript复制$ 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
启用身份验证。
重启服务
代码语言:javascript复制$ sudo service Influxdb restart
没有用户名和密码的测试甚至不允许我们列出数据库。
代码语言:javascript复制$ 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 ".
使用身份验证进行测试与预期一致。
代码语言:javascript复制$ 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纳秒时间戳。如果不这样做,系统的时间将被使用。
如果我们以更加技术性的方式解释它,它将类似于下面的内容。
代码语言:javascript复制SELECT value FROM server_stats.cpu WHERE host = 'server01'
SELECT value FROM server_stats.cpu WHERE host = 'server01' AND/OR region = 'europa'
创建数据库
代码语言:javascript复制$ curl -i -XPOST http://localhost:8086/query -u inanzzz:123123 --data-urlencode "q=CREATE DATABASE server_stats"
创建表并填充虚拟数据。只有在表不存在时才创建表。
代码语言:javascript复制$ 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的一些链接:
- InfluxDB
- InfluxDB Install
- Chronograf (Web GUI)
- Authentication
- Schema exploration (CLI/CURL)
- User management commands
- Writing data
- Querying data
Grafana
信息 除了可视化数据外,您还可以使用它触发Slack,电子邮件等警报。
安装 下载包
代码语言:javascript复制$ 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存储库
代码语言:javascript复制$ 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服务
代码语言:javascript复制$ 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
。
添加数据源
- 单击顶部标题中的Grafana图标,然后选择“数据源”选项。
- 单击页面中的“添加数据源”按钮。
- 如下图所示填写字段,然后单击“添加”按钮。
如果单击顶部标题中的Grafana图标并选择“数据源”,则应在下面看到图像。
添加仪表板
- 单击顶部标题中的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/