介绍
收集和可视化数据是对服务器和项目做出明智决策的重要方式。
在 上一篇指南 中,我们讨论了如何安装和配置 Graphite 以可视化我们服务器上的数据。 但是,我们没有很好的方法来收集甚至将数据传递到 Graphite。
在本指南中,我们将讨论 collectd 的安装和使用,这是一个系统统计信息收集器,可以收集和组织有关您的服务器和正在运行的服务的指标。
我们将向您展示如何安装和配置 collectd 以将数据传递到 Graphite 进行渲染。 我们将假设您已在 Ubuntu 14.04 服务器上启动并运行 Graphite,正如我们在上一个指南中向您展示的那样。
安装收集
我们要做的第一件事是安装collectd。 我们可以从默认存储库中获取它。
刷新本地包索引,然后输入:
sudo apt-get update sudo apt-get install collectd collectd-utils
这将安装守护进程和一个辅助控制界面。 我们仍然需要对其进行配置,以便它知道将收集到的数据传递给 Graphite。
配置收集
首先使用 root 权限在编辑器中打开 collectd 配置文件:
sudo nano /etc/collectd/collectd.conf
我们应该设置的第一件事是我们所在机器的主机名。 Collectd 可用于将信息发送到远程 Graphite 服务器,但我们在本指南的同一台机器上使用它。 您可以选择任何您喜欢的名称:
主机名“ graph_host ”
如果你配置了一个真实的域名,你可以跳过这一步,只留下脚趾 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 插件:
URL “http:// domain_name_or_IP /server-status?auto” 服务器 “apache”
在生产环境中,您可能希望将服务器统计信息保护在身份验证层后面。 您可以查看文件此部分中的注释代码以了解其工作原理。 为简单起见,我们将演示一个未经身份验证的开放式设置。
我们将为 Apache 创建 server-status
页面,它为我们提供了我们需要的详细信息。
对于告诉我们磁盘已满的 df
插件,我们可以添加如下所示的简单配置:
设备 “/dev/ vda ” MountPoint “/” FSType “ext3”
您应该将设备指向系统上驱动器的设备名称。 您可以通过在终端中键入命令来找到它:
df
文件系统 1K-blocks Used 可用 Use% Mounted on /dev/vda 61796348 1766820 56867416 4% / none 4 0 4 0% /sys/fs/cgroup udev 2013364 12 2013352 1% /dev tmpfs 404836 340 4044296 1% /run none 51 0 5120 0% /run/lock 无 2024168 0 2024168 0% /run/shm 无 102400 0 102400 0% /run/user
选择您要监控的网络接口:
接口“ eth0 ” IgnoreSelected false
最后,我们来到 Graphite 插件。 这将告诉 collectd 如何连接到我们的 Graphite 实例。 使该部分看起来像这样:
graphing ”> Host “localhost” Port “2003” Protocol “tcp” LogSendErrors true 前缀“collectd”。 StoreRates true AlwaysAppendDS false EscapeCharacter “_”
这告诉我们的守护进程如何连接到 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
页面上提供统计信息。 添加以下部分:
别名 /content/ /usr/share/graphite-web/static/ SetHandler 无 <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
:
http:// domain_name_or_IP /服务器状态
您应该会看到如下所示的页面:
设置存储架构和聚合
现在我们已经将 collectd 配置为收集有关您的服务的统计信息,我们需要调整 Graphite 以正确处理它接收到的数据。
让我们从创建存储模式定义开始。 打开存储模式配置文件:
sudo nano /etc/carbon/storage-schemas.conf
在内部,我们需要添加一个定义,该定义将指示信息保留多长时间,以及数据在各个级别上的详细程度。
我们将告诉 Graphite 以 10 秒为间隔存储一天,以 1 分钟为间隔存储 7 天,以 10 分钟为间隔存储一年。
这将使我们在近期活动的详细信息和长期总体趋势之间取得良好的平衡。 Collectd 以字符串 collectd
开头传递其指标,因此我们将匹配该模式。
我们描述的策略可以通过添加这些行来添加。 请记住,将这些 添加到 上方的默认策略,否则它们将永远不会被应用:
[collectd] pattern = ^collectd.* retentions = 10s:1d,1m:7d,10m:1y
完成后保存并关闭文件。
重新加载服务
现在 collectd 已经配置好并且 Graphite 知道如何处理它的数据,我们可以重新加载服务。
首先,重启 Carbon 服务。 使用“停止”和“启动”命令之间的几秒钟而不是“重新启动”命令是一个好主意。 这可确保在重新启动之前完全刷新数据:
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 之前缓存数据的服务。 这将使我们能够解决我们在上一篇文章中描述的太快发送统计信息时数据丢失的问题。 它还将为我们提供一个界面来跟踪我们自己的计划和项目中的统计数据。