介绍
InfluxDB是一个时间序列,指标和分析数据库。 时间序列数据库被设计为解决存储由在一段时间内进行的连续测量所产生的数据的问题。 该数据可以包括诸如系统度量(如CPU和内存使用)和应用程序度量(如应用程序错误和REST端点调用)之类的项目。
系统运行时间越长,累积的数据量越大。 InfluxDB提供了一种有效存储此数据的解决方案。 它针对DevOps,度量,传感器数据和实时监控和分析的用例。 使用InfluxDB,您可以快速构建强大的实时监控框架,还提供历史分析。
在本指南中,我们将介绍:
- 如何在CentOS 7上安装和配置InfluxDB。
- 如何将系统监视数据从collectd系统统计守护程序提供到InfluxDB。
- 如何使用InfluxDB SQL样查询语言来快速了解和分析受监视系统的性能。
- 如何使用Grafana可视化工具栈创建丰富的仪表板解决方案,以更好地探索和呈现存储在InfluxDB实例中的数据。
先决条件
开始之前,您需要具备以下条件:
一个64位CentOS 7 Droplet。 服务器将需要的CPU,RAM和存储量取决于要收集的数据量,但2 GB RAM和2个CPU通常足以开始。
一个sudo非root用户。 在CentOS 7初始服务器设置教程介绍了如何做到这一点。
4 GB的交换空间。 该在CentOS 7教程如何添加交换解释如何做到这一点。
第1步 - 安装InfluxDB
在这一步中,我们将安装InfluxDB。
InfluxDB作为自包含系统分发。 这意味着它没有外部依赖; 在安装期间使用的发行包中提供运行数据库所需的一切,这使安装变得容易。
首先,更新系统以确保您具有最新的错误和安全修复程序。
sudo yum -y update
接下来,安装最新版本的InfluxDB,在写入时是v0.8.8。
sudo yum -y install https://s3.amazonaws.com/influxdb/influxdb-latest-1.x86_64.rpm
包已成功安装后,许多文件将被安装在/opt/influxdb/versions/0.8.8
和符号链接会被创建/etc/init.d
的InfluxDB服务管理脚本。
第2步 - 配置和启动InfluxDB
在此步骤中,我们将自定义InfluxDB配置以禁用匿名数据报告并扩展默认的读取超时限制。
InfluxDB的主配置文件是/opt/influxdb/shared/config.toml
。 此使用TOML格式,它看起来非常相似,INI配置格式,被设计为容易,因为其明显的语义来阅读。
在我们定制我们的配置之前,做一个原始的备份。
sudo cp /opt/influxdb/shared/config.toml /opt/influxdb/shared/config.toml_backup
随着0.7.1版本,InfluxDB每24小时报告匿名数据一次m.influxdb.com
。 为了尽量减少带宽使用,我们将禁用此报告。 首先,使用nano或您喜欢的文本编辑器打开要编辑的配置文件。
sudo nano /opt/influxdb/shared/config.toml
找到配置关键reporting-disabled
并更改为true
。 编辑后,该部分应如下所示:
. . .
# Change this option to true to disable reporting.
reporting-disabled = false
[logging]
. . .
接下来,我们将更新默认的读超时,以允许连接的稍长的提前期。 读取超时控制连接到数据库的连接在它们关闭之前允许等待的时间。
在相同的配置文件,找到配置键read-timeout
,它改变从5s
到10s
。
. . .
# However, if a request is taking longer than this to complete, could be a problem.
read-timeout = "10s"
[input_plugins]
. . .
保存并关闭文件,然后启动InfluxDB后台驻留程序。
sudo /etc/init.d/influxdb start
成功启动后,服务管理器脚本将提供以下输出。
Setting ulimit -n 65536
Starting the process influxdb [ OK ]
influxdb process was started [ OK ]
InfluxDB开始导航至后http:// your_server_ip :8083
在Web浏览器来验证InfluxDB启动并运行。 这将显示您默认的管理界面,这将有标记的连接和主机名和端口设置两部分。
第3步 - 更改默认InfluxDB管理凭据
每个InfluxDB附带一组默认的管理凭据。 为了安全起见,您应该更改此密码。
登录到InfluxDB UI使用默认用户名root和密码的根在连接部分。 数据库保持空,然后点击蓝色的连接按钮。
在接下来的页面顶端的菜单中,单击群集管理员 。 这将带您到用户管理页面。 根据该用户名部分,单击根并在您的新密码填写两次并点击蓝色的更改密码按钮更改密码。
最后,注销使用蓝色断开连接按钮,并重新登录使用新密码。
第4步 - 创建数据库
当InfluxDB首次设置时,它不包含任何实际的数据库,因此我们需要创建一个数据库,我们将最终用于存储我们的度量。
点击从网络用户界面顶部菜单中的数据库菜单上。 在创建数据库部分,在数据库详细信息 ,输入指标作为数据库名。 在碎片空间选项的默认选项可以保持。 蓝色下一步点击右下角创建数据库创建数据库按钮。
该数据库已成功创建后,你会看到它列在屏幕顶部旁边的一个探索数据链接。
要验证我们创建的数据库是否正常工作,我们可以使用数据UI编写并检查一些示例数据。 点击浏览数据链接,达到数据的用户界面。 您将看到此屏幕:
在此屏幕中,您可以将一些测试数据写入数据库。 您还可以针对存储在数据库中的数据发出即席查询,并查看基本可视化。 让我们写一点数据来验证我们的数据库是否正常运行。
要使用Web UI输入数据,您需要为系列提供系列名称和值。 该系列名称是不带空格的字母数字字符串,其值字段应该在提供JSON键值格式。
在写点部分,对于时间序列名称输入test_metric,和值 ,输入{"value": 23.4}
然后,点击蓝色的写点按钮输入数据。 你会看到200 OK弹出绿色按钮旁边。
重复这个过程,用相同的时间序列名称,每个以下值: {"value": 13.1}
{"value": 13.1}
{"value": 78.1}
和{"value": 90.4}
注意,我们有意写两次值13.1。 您将添加总共五点。
现在我们已经写了一些示例数据点,我们可以检查它们。 在读取在查询框中点在页面的顶部,输入以下查询:
select * from test_metric
然后按蓝色执行查询按钮。 这个查询的结果将显示存储在数据库中的所有数据点test_metric
系列。 然后,您将看到一个如下所示的图形:
此屏幕显示一个折线图,其汇总了时间序列上的度量趋势以及汇总数据库中存储的数据的数据表。
我们还可以使用列标识符来缩小我们的搜索范围。 例如,要查找事件值为13.1的事件,请输入以下搜索查询:
select * from test_metric where value = 13.1
这将导致为我们的示例数据返回两行:
为了给出一个更详细一点,在InfluxDB数据是通过时间序列,这是有组织的test_metric
在我们的例子。 每个系列具有对应于事件的一组数据点。 当我们输入数据时,我们创建了以上五个事件。 每个事件都有一个时间,一个序列号和一些类似于我们为一个事件测量的指标的列。 在我们的例子,我们有一个指标叫做value
在每个我们的五个事件。
第5步 - 安装和配置collectd
在这一步中,我们将设置和配置collectd收集度量我们的制度。 collectd是一个Unix守护程序收集,传输,存储性能数据。 它有助于维护可用资源的概述,以检测现有或即将出现的瓶颈。
首先,启用EPEL(企业Linux的额外软件包)存储库:
sudo yum -y install http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
然后安装collectd。
sudo yum -y install collectd
成功安装软件包后,将创建大量二进制文件,共享库和配置文件。 主文件要注意的是collectd配置文件, /etc/collectd.conf
和主collectd守护二进制, /usr/sbin/collectd
。 与之前的InfluxDB一样,让我们先复制原始配置文件。
sudo cp /etc/collectd.conf /etc/collectd.conf_backup
接下来打开配置文件进行编辑。
sudo nano /etc/collectd.conf
主collectd配置文件包含许多设置,其中大多数设置默认情况下不处于活动状态,因为它们已注释掉。 我们将取消注释和修改其中的一些。
在文件配置的顶部,在“全局”部分中,您将看到以下内容。 您要编辑的部件以红色突出显示。
. . .
#Hostname "localhost"
#FQDNLookup true
#BaseDir "/var/lib/collectd"
#PIDFile "/var/run/collectd.pid"
#PluginDir "/usr/lib64/collectd"
#TypesDB "/usr/share/collectd/types.db"
. . .
通过删除注释主机名,的BaseDir,PIDFILE,PluginDir和TypesDB领域#
在该行的开头。 此外,设置主机名外地influxdb
。 完成后,文件的此部分应如下所示:
Hostname "influxdb"
#FQDNLookup true
BaseDir "/var/lib/collectd"
PIDFile "/var/run/collectd.pid"
PluginDir "/usr/lib64/collectd"
TypesDB "/usr/share/collectd/types.db"
接下来,向下滚动到LoadPlugin部分,其中按字母顺序列出了大量的插件。 滚动查看,并取消对LoadPlugin network
和LoadPlugin uptime
通过删除线#
在该行的开头。
最后,我们将配置collectd将数据直接发送到InfluxDB。
向下滚动到插件配置部分。 在段分隔符(如下所示)后,添加网络插件配置(以红色突出显示)。
. . .
##############################################################################
# Plugin configuration #
#----------------------------------------------------------------------------#
# In this section configuration stubs for each plugin are provided. A desc- #
# ription of those options is available in the collectd.conf(5) manual page. #
##############################################################################
<Plugin network>
Server "127.0.0.1" "8096"
</Plugin>
#<Plugin "aggregation">
. . .
现在保存并退出文件。 我们应该检查配置,以确保我们没有无意中引入任何打字错误或语法错误。 我们可以使用collectd来测试配置,如下所示:
sudo /usr/sbin/collectd -t
如果collectd配置没有错误,则此命令将返回而不输出。 如果在文件中发现任何错误,它们将列在终端中。
一旦配置无错误,请重新启动collectd以激活新配置。 这可能需要一些时间。
sudo service collectd start
第6步 - 配置InfluxDB以使用collectd度量
要存储collectd在InfluxDB中收集的collectd系统指标,我们需要启用并配置InfluxDB collectd输入插件。
首先,打开InfluxDB配置文件进行编辑。
sudo nano /opt/influxdb/shared/config.toml
找到了input_plugins.collectd
插件配置,这将是这样。 要修改的行以红色突出显示。
. . .
# Configure the collectd api
[input_plugins.collectd]
enabled = false
# address = "0.0.0.0" # If not set, is actually set to bind-address.
# port = 25826
# database = ""
# types.db can be found in a collectd installation or on github:
# https://github.com/collectd/collectd/blob/master/src/types.db
# typesdb = "/usr/share/collectd/types.db" # The path to the collectd types.db file
. . .
修改它以匹配下面的摘录进行以下更改:
- 将enabled设置为true。
- 将端口更改为8096。
- 将数据库更改为度量标准。
- 取消注释port,database和typesdb行。
. . .
# Configure the collectd api
[input_plugins.collectd]
enabled = true
# address = "0.0.0.0" # If not set, is actually set to bind-address.
port = 8096
database = "metrics"
# types.db can be found in a collectd installation or on github:
# https://github.com/collectd/collectd/blob/master/src/types.db
typesdb = "/usr/share/collectd/types.db" # The path to the collectd types.db file
. . .
保存文件并重新启动InfluxDB以激活新配置。
sudo /etc/init.d/influxdb restart
接下来,让我们检查InfluxDB从collectd接收系统指标。 在数据接口在用户界面中,我们在第5步不放过,进入下个读取点的查询文本框下面的查询,然后按下蓝色的执行查询按钮。
list series
如果你从collectd收到数据,你应该观察一系列类似于下面的系列:
我们现在可以开始分析系统的性能,通过探索这些数据,如第5步.例如,发出以下查询将允许您观察系统中的内存使用情况:
select * from "influxdb/memory/memory-used"
结果数据显示清楚地显示了已记录到InfluxDB实例中的内存使用情况的变化。 这里有一个例子:
第7步 - 安装和启动Grafana
我们可以使用InfluxDB的Web界面来探索数据,并根据时间序列数据可视化系统趋势。 然而,Web UI有点基本,并不是理想的呈现我们收集的指标数据。
Grafana是一个功能丰富度量仪表板,它与InfluxDB很好地结合。 Grafana将为我们提供创建仪表板的能力,该仪表板提供系统概述,适合作为墙面显示器共享或使用。
要安装Grafana,请输入以下命令。
sudo yum -y install https://grafanarel.s3.amazonaws.com/builds/grafana-2.0.2-1.x86_64.rpm
首先重新加载systemd的守护进程启动Grafana。
sudo systemctl daemon-reload
然后启动Grafana服务器。
sudo systemctl start grafana-server
最后,检查其状态。
sudo systemctl status grafana-server
成功启动后,服务管理器状态将确认Grafana服务已启动并且正在服务Web UI。 您在终端中接收的输出将以以下内容开始:
grafana-server.service - Starts and stops a single grafana instance on this system
Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled)
Active: active (running) since Tue 2015-06-02 18:59:17 EDT; 3s ago
. . .
第8步 - 更改默认Grafana管理员凭据
每个Grafana实例都附带一组默认的管理凭据。 为了安全起见,您应该更改此密码。 您可以使用Web UI或Grafana配置文件执行此操作,但由于易于使用,我们将使用Web UI。
Grafana启动后,导航到http:// your_server_ip :3000
。 登录到Grafana UI使用默认的用户名admin和密码admin。 点击屏幕左上角的标志Graphana,然后在出现的菜单管理 。 这将带您到以下配置文件管理页面。
单击顶部标题菜单更改密码链接。 填写在相应的字段中输入您的新密码,然后单击更改密码 。
第9步 - 添加InfluxDB数据库到Grafana
在这一步中,我们将在Grafana中添加我们的InfluxDB数据库作为源。
要添加数据源,请单击顶部标题中的Grafana图标打开侧面菜单。 在侧边菜单中,单击数据源 。 单击顶部标题中添加新的链接,弹出数据源定义屏幕。
使用以下设置填充此屏幕:
- 名称 :influxdb
- 类型 :请从下拉菜单中InfluxDB 0.8.4。
- 默认值 :确保此复选框被选中。 默认数据源意味着它将为新面板预先选择。
- 网址 :
http://localhost:8086
- 访问 :选择从下拉菜单中的代理 。
- 基本认证 :将此复选框选中。
- 数据库 :指标
- 用户 :根
- 密码 :您在第4步中选择的根InfluxDB数据库密码。
最后,点击屏幕底部的绿色添加按钮。
第10步 - 创建Grafana仪表板
Grafana提供了一个强大的,用户友好的方式来创建信息图表和仪表板。 在此步骤中,我们将创建一个系统概述仪表板,以显示我们在InfluxDB中收集的系统指标的趋势。
在Grafana, 仪表盘是你工作的基本托盘。 仪表板包含显示元素 (如图形和文本窗格)。 显示元素包含用于从数据源(在本例中为InfluxDB)中获取数据的查询。 因此,我们首先需要创建一个空的仪表板,它将作为我们显示的基础。
导航到Grafana主页, http:// your_server_ip :3000
。 单击顶部标题中的主页链接,弹出的仪表板上市的屏幕。 在该屏幕的底部,点击+新建 。 这将带给你新的,空白的仪表板。
点击您的信息中心的标题菜单齿轮,然后点击设置 。 您将看到以下屏幕:
此屏幕用于更改仪表板的主要设置。 从仪表板的新 标题字段更改为系统概述 。 接下来,单击顶部标题中的软盘图标以保存信息中心。
我们现在将用显示元素填充仪表板,以创建可视系统概述信息散热器。
在信息中心中,点击行控制菜单,即位于信息中心左上方的小绿色矩形。 在此菜单中,将鼠标悬停在添加面板 ,然后单击图表 。 这将在您的仪表板上创建一个空白图表。
单击图表标题在图表,其内容没有标题(点击这里),而旁边点击编辑从得到的菜单的顶部。 这将带您进入图表管理菜单。 单击常规选项卡上,并在标题字段更改为网络 。
接下来,按版式选项卡上给您带来的查询生成器。 在这一系列领域,我们可以指定我们希望作为我们数据的图形源使用的度量标准。 开始输入接口 ; 您将看到一个自动完成选择。 选择influxdb /接口eth0的/ if_errors指标。
接下来,点击+在图表管理菜单底部的添加查询 。 这将向查询构建器添加第二个查询行。 用同样的方法如前为influxdb /接口eth0的/ if_packets度量添加查询为influxdb /接口eth0的/ if_octets度量,并再次。
添加三个查询后,您的指标屏幕应如下所示:
最后,单击返回控制台链接给您带来您的仪表板,它现在包含显示您的系统的网络趋势图,并在顶端标题点击软盘上的图标保存新的显示图形和仪表板。
可以重复上述过程以创建可视图形,以显示存储到InfluxDB系列中的任何数据。
结论
InfluxDB是一个强大的工具,用于存储和分析时间序列数据,例如在监视运行系统的性能时生成的数据。 将InfluxDB与Grafana结合可提供有效存储和可视化此类数据的解决方案。
完成本教程后,您应该对InfluxDB有一个大致的了解:如何安装它,如何配置数据库以供使用,以及如何向其发送数据。 此外,您可以设置Grafana并使用它来构建通用的系统监控仪表板。
InfluxDB和Grafana有许多进一步的功能和用例。 您可以使用您的系统的行为进行更深入的分析汇总功能由InfluxDB提供。 您还可以开始从分布式系统收集数据,以便比较多个系统的性能,或开始收集和分析其他非系统级度量标准类型(例如每个用户的页面访问次数或API调用数量对于REST端点)。 InfluxDB是非常非常适合于这样的数据,并有许多的工具和库的基本InfluxDB文档中列出。