您的位置:首页 > 大数据 > 云计算

如何在Ubuntu 14.04上配置Collectd为Graphite收集系统指标

2017-02-24 10:15 344 查看
提供:ZStack云计算

系列教程

本教程为如何在服务器上进行统计追踪四篇中的第三篇。

内容介绍

通过收集数据并进行可视化处理,我们能够对服务器与项目拥有更为深入的了解。

上一篇教程,我们探讨了如何安装并配置Graphite,从而对服务器上的数据进行可视化。然而,我们还不具备收集数据并将其发送至Graphite的方案。

在本教程中,我们将探讨如何安装并使用collectd,一套负责收集并整理服务器与运行中服务相关指标的系统。

安装Collectd

首先安装collectd。我们可以从默认库中获取collectd。

更新本地软件包目录而后安装:

sudo apt-get update
sudo apt-get install collectd collectd-utils


其将安装此守护程序与一套帮助控制界面。不过我们还需要配置才能加以使用。

配置Collectd

以root权限打开collectd配置文件:

sudo nano /etc/collectd/collectd.conf


这里我们先要设置所在设备的主机名称。Collectd可用于向远程Graphite服务器发送信息,但本示例中二者将处于同一设备:

Hostname "graph_host"


如果大家已经配置了域名,则可跳过此步骤,直接提供FQDNLookup即可。

大家可能注意到了Interval这项参数,其代表collectd在本主机上查询数据前的等待时间间隔。其默认为10秒,不过我们需要将其与Graphite追踪频率相匹配才能更为可靠地实现数据记录。

下面我们为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


其中部分插件需要配置,而有些即可开箱即用。

在此文件中,我们推进至各插件的配置部分。我们需要针对各插件定义一个“block”作为配置单元。

在本示例内,我们启用Apache插件,因为我们安装了Apache以支持Graphite。我们可以利用以下内容轻松实现Apache插件配置:

<Plugin apache>
<Instance "Graphite">
URL "http://domain_name_or_IP/server-status?auto"
Server "apache"
</Instance>
</Plugin>


在生产环境中,大家可能希望将服务器状态信息保留在验证层之后。要实现这一目标,大家可以查看该文件对应部分中的注释代码以了解起效方式。出于演示需要,这里我们只使用未经验证的开放设置。

我们为Apache创建server-status页面,并在这里显示全部必要信息。

在负责告知如何使用磁盘资源的df插件中,我们可以使用以下配置:

<Plugin df>
Device "/dev/vda"
MountPoint "/"
FSType "ext3"
</Plugin>


大家应当将该设备指定至系统内驱动器的设备名称,此名称可通过以下命令在终端中找到:

df

Filesystem     1K-blocks    Used Available 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    404496   1% /run
none                5120       0      5120   0% /run/lock
none             2024168       0   2024168   0% /run/shm
none              102400       0    102400   0% /run/user


选择希望监控的网络接口:

<Plugin interface>
Interface "eth0"
IgnoreSelected false
</Plugin>


最后,让我们看看Graphite插件。其负责告知collectd如何接入我们的Graphite实例:

<Plugin write_graphite>
<Node "graphing">
Host "localhost"
Port "2003"
Protocol "tcp"
LogSendErrors true
Prefix "collectd."
StoreRates true
AlwaysAppendDS false
EscapeCharacter "_"
</Node>
</Plugin>


这样我们的守护程序就了解了如何接入Carbon以传递其数据。我们要求其使用本地计算机的端口2003,Carbon正是利用此端口监听TCP连接。

接下来,我们告知其使用协议向Carbon传递数据,将错误信息记录下来而后为数据设置前缀。由于我们以.作为值结尾,因此全部此主机上的collectd状态都将被保存在“collectd”目录当中。

附加数据源一行在启用后,负责将主机名称附加至指标当中。而Escape character检测其中带有.的特定值,避免Carbon将其拆分至多个目录。

完成后保存并退出。

配置Apache以报告状态

在我们的配置文件中,我们启用Apache状态追踪。我们还需要配置Apache以允许此种操作。

在Apache虚拟主机文件中,我们可以添加位置块以告知Apache将状态报告至哪里。

打开该文件:

sudo nano /etc/apache2/sites-available/apache2-graphite.conf


在“content”位置部分下,我们添加新的部分,这样Apache就会将服务器状态显示在/server-status页面当中:

Alias /content/ /usr/share/graphite-web/static/
<Location "/content/">
SetHandler None
</Location>

<Location "/server-status">SetHandler server-statusRequire all granted</Location>

ErrorLog ${APACHE_LOG_DIR}/graphite-web_error.log


完成后保存并退出。

现在重载Apache以访问新状态信息:

sudo service apache2 reload


在浏览器中访问/server-status以确保一切正常起效:

http://domain_name_or_IP/server-status


这时显示界面应如下所示:

设置Storage Schema与聚合方式

现在我们的collectd已经能够收集服务的状态信息,接下来调整Graphite以正确处理接收到的数据。

首先创建存储模式定义。打开storage schema配置文件:

sudo nano /etc/carbon/storage-schemas.conf


在其中,我们需要添加定义以指定信息的保留时长,以及如何分级设定数据细节程度。

我们还将告知Graphite每十秒存储一次当天collectd信息,每一分钟存储一次近七天信息,每十分钟存储一次今年信息。

我们可以使用以下行添加上述策略。请注意,将其添加至default策略之上,否则系统会优先执行默认设置:

[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之前将其纳入缓存。如此一来,我们将能够在处理数据丢失问题的同时,继续保证状态数据的快速发送。另外,它还能够提供一套界面,用于在我们的程序与项目之内进行状态信息追踪。

本文来源自DigitalOcean Community。英文原文:How To Configure Collectd to Gather System Metrics for Graphite on Ubuntu 14.04 By Mitchell Anicas

翻译:diradw
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息