如何在 Ubuntu 14.04 上配置 Collectd 以收集 Graphite 的系统指标
介绍
收集和可视化数据是做出有关服务器和项目的明智决策的重要方式。
在之前的指南中,我们讨论了如何安装和配置 Graphite 以可视化我们服务器上的数据。然而,我们没有一个好的方法来收集甚至将数据传递到 Graphite。
在本指南中,我们将讨论 collectd 的安装和使用,这是一个系统统计信息收集器,可以收集和组织有关您的服务器和运行服务的指标。
我们将向您展示如何安装和配置 collectd 以将数据传递到 Graphite 进行渲染。我们将假设您已在 Ubuntu 14.04 服务器上启动并运行 Graphite,正如我们在上一指南中向您展示的那样。
安装 Collectd
我们要做的第一件事是安装 collectd。我们可以从默认存储库中获取它。
刷新本地包索引,然后键入以下命令进行安装:
sudo apt-get update
sudo apt-get install collectd collectd-utils
这将安装守护进程和辅助控制界面。我们仍然需要对其进行配置,以便它知道将收集到的数据传递给 Graphite。
配置收集
首先使用 root 权限在编辑器中打开 collectd 配置文件:
sudo nano /etc/collectd/collectd.conf
我们应该设置的第一件事是我们所在机器的主机名。 Collectd 可用于将信息发送到远程 Graphite 服务器,但我们在本指南的同一台机器上使用它。您可以选择任何您喜欢的名称:
<前>
如果您配置了真实域名,则可以跳过此步骤,只留下 FQDNLookup
,这样服务器将使用 DNS 系统获取正确的域。
你可能会注意到\Interval有一个参数,它是collectd在查询主机上的数据之前等待的时间间隔。默认设置为10秒。如果你跟着Graphite文章,你会注意到这个是 Graphite 跟踪统计数据的通常最短间隔。这两个值必须匹配才能可靠地记录数据。
接下来,我们直接进入 Collectd 将收集有关信息的服务。 Collectd 通过使用插件来做到这一点。大多数插件用于从系统读取信息,但插件也用于定义向何处发送信息。 Graphite 是这些写入插件之一。
对于本指南,我们将确保启用以下插件。你可以注释掉任何其他插件,或者如果你想在你的主机上试用它们,你可以正确配置它们:
LoadPlugin apache
LoadPlugin cpu
LoadPlugin df
LoadPlugin entropy
LoadPlugin interface
LoadPlugin load
LoadPlugin memory
LoadPlugin processes
LoadPlugin rrdtool
LoadPlugin users
LoadPlugin write_graphite
其中一些需要配置,其中一些可以开箱即用。
继续向下看文件,我们到达每个插件的配置部分。插件通过为每个配置部分定义一个“块”来配置。这有点类似于 Apache 在块内划分指令的方式。我们只会看其中的一些,因为我们的大多数插件都可以正常工作他们是。
我们启用了 Apache 插件,因为我们安装了 Apache 来为 Graphite 提供服务。我们可以使用如下所示的简单部分来配置 Apache 插件:
<前>
在生产环境中,您可能希望将服务器统计信息保护在身份验证层之后。您可以查看文件这一部分中的注释代码,了解它是如何工作的。为了简单起见,我们将演示一个未经过身份验证的开放设置。
我们将为 Apache 创建 server-status
页面,稍后为我们提供所需的详细信息。
对于告诉我们磁盘有多满的 df
插件,我们可以添加一个简单的配置,如下所示:
<前>
您应该将设备指向系统上驱动器的设备名称。您可以通过在终端中键入命令来找到它:
<前>
选择您要监控的网络接口:
<前>
最后,我们来到 Graphite 插件。这将告诉 collectd 如何连接到我们的 Graphite 实例。使该部分看起来像这样:
<前>
这告诉我们的守护进程如何连接到 Carbon 以传递其数据。我们指定它应该在端口 2003 上查找本地计算机,Carbon 使用该端口来侦听 TCP 连接。
接下来,我们告诉它使用该协议将数据可靠地传递给 Carbon。我们告诉它记录有关切换的错误,然后为数据设置前缀。由于我们以点结束此值,因此此主机的所有 collectd 统计信息都将存储在 \collectd 目录中。
商店费率决定统计数据是否会在通过之前转换为仪表。如果启用,附加数据源行会将节点名称附加到我们的指标。转义字符确定如何转换某些带有点的值,以避免 Carbon 将它们拆分到目录中。
完成后保存并关闭文件。
配置 Apache 以报告统计信息
在我们的配置文件中,我们启用了 Apache 统计跟踪。我们仍然需要配置 Apache 以允许这样做。
在我们为 Graphite 启用的 Apache 虚拟主机文件中,我们可以添加一个简单的位置块,告诉 Apache 报告统计信息。
在文本编辑器中打开文件:
sudo nano /etc/apache2/sites-available/apache2-graphite.conf
在“内容”位置块下方,我们将添加另一个块,以便 Apache 将在 /server-status
页面提供统计信息。添加以下部分:
<前>
<span class="highlight"><Location "/server-status"></span>
<span class="highlight">SetHandler server-status</span>
<span class="highlight">Require all granted</span>
<span class="highlight"></Location></span>
ErrorLog ${APACHE_LOG_DIR}/graphite-web_error.log
完成后保存并关闭文件。
现在,我们可以重新加载 Apache 以访问新的统计信息:
sudo service apache2 reload
我们可以通过在网络浏览器中访问该页面来检查以确保一切正常。我们只需要转到我们的域,然后是 /server-status
:
<前>
你应该看到一个看起来像这样的页面:

设置存储模式和聚合
现在我们已经将 collectd 配置为收集有关您的服务的统计信息,我们需要调整 Graphite 以正确处理它接收到的数据。
让我们从创建存储模式定义开始。打开存储架构配置文件:
sudo nano /etc/carbon/storage-schemas.conf
在内部,我们需要添加一个定义,该定义将规定信息保留多长时间,以及数据在各个级别的详细程度。
我们会告诉 Graphite 以十秒为间隔存储一天,以一分钟为间隔存储七天,以十分钟为间隔存储一年。
这将使我们在近期活动的详细信息和长期的总体趋势之间取得良好的平衡。 Collectd 传递以字符串 collectd
开头的指标,因此我们将匹配该模式。
我们描述的策略可以通过添加这些行来添加。请记住,将这些添加到默认策略之上,否则它们将永远不会被应用:
[collectd]
pattern = ^collectd.*
retentions = 10s:1d,1m:7d,10m:1y
完成后保存并关闭文件。
重新加载服务
现在 collectd 已经配置好并且 Graphite 知道如何处理它的数据了,我们可以重新加载服务了。
首先,重启 Carbon 服务。最好使用 \stop 然后 \start 命令,中间间隔几秒钟而不是 \restart 命令。这可以确保数据在重启之前完全刷新:
sudo service carbon-cache stop ## wait a few seconds here
sudo service carbon-cache start
Carbon 服务重新启动并运行后,我们可以用 collectd 做同样的事情。该服务可能尚未运行,但这将确保它正确处理数据:
sudo service collectd stop
sudo service collectd start
在此之后,您可以再次访问您的域,您应该会看到一个包含您收集的信息的新树:

结论
我们的 collectd 配置已经完成,我们的统计数据已经被记录下来了!现在,我们配置了一个守护进程来跟踪我们的服务器和服务。
我们可以根据需要为 collectd 配置或编写额外的插件。带有 collectd 的其他服务器也可以将数据发送到我们的 Graphite 服务器。 Collectd 主要用于收集有关公共服务和整个机器的统计信息。
在下一篇文章中,我们将设置 StatsD,这是一种可以在将数据刷新到 Graphite 之前缓存数据的服务。这将使我们能够解决在上一篇文章中描述的过快发送统计信息时数据丢失的问题。它还将为我们提供一个界面来跟踪我们自己的程序和项目中的统计信息。