介绍
收集和可视化数据是对您的服务器和项目做出明智决策的重要方法。
在先前的指导 ,我们讨论了如何安装和配置Graphite想象我们的服务器上的数据。 然而,我们没有一个好的方法收集或甚至传递数据到Graphite。
在本指南中,我们将讨论的安装和使用collectd的,一个系统的统计数据采集,可以收集和整理有关您的服务器和运行的服务指标。
我们将向您展示如何安装和配置collectd将数据传递到Graphite进行渲染。 我们将假设您已经在Ubuntu 14.04服务器上启动并运行Graphite,正如我们在上一个指南中所展示的。
安装Collectd
我们要做的第一件事是安装collectd。 我们可以从默认的仓库得到这个。
刷新本地软件包索引,然后键入以下内容安装:
sudo apt-get update
sudo apt-get install collectd collectd-utils
这将安装守护程序和辅助控制接口。 我们仍然需要配置它,以便它知道将收集的数据传递给Graphite。
配置Collectd
首先使用root权限在编辑器中打开collectd配置文件:
sudo nano /etc/collectd/collectd.conf
我们应该设置的第一件事是我们所在的机器的主机名。 Collectd可以用于向远程Graphite服务器发送信息,但是我们在本指南的同一台机器上使用此信息。 您可以选择任何您想要的名称:
Hostname "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插件,如下所示:
<Plugin apache> <Instance "Graphite"> URL "http://domain_name_or_IP/server-status?auto" Server "apache" </Instance> </Plugin>
在生产环境中,您可能希望将服务器统计信息保护在身份验证层之后。 您可以查看文件此部分中的注释代码,了解如何工作。 为了简单起见,我们将演示未经验证的开放式设置。
我们将创建的server-status
的Apache网页,为我们提供了我们需要一点细节。
对于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”目录中。
存储速率决定了统计信息在通过之前是否转换为度量。 如果启用,附加数据源行会将节点名称附加到我们的指标。 转义字符决定如何转换某些带有点的值,以避免Carbon将它们分成目录。
保存并在完成后关闭文件。
配置Apache报告统计信息
在我们的配置文件中,我们启用了Apache stats跟踪。 我们仍然需要配置Apache允许这样。
在我们为Graphite启用的Apache虚拟主机文件中,我们可以添加一个简单的位置块,告诉Apache报告统计信息。
在文本编辑器中打开文件:
sudo nano /etc/apache2/sites-available/apache2-graphite.conf
下面的“内容”所在地块,我们要添加其他块,使Apache将服务于统计/server-status
页。 添加以下部分:
Alias /content/ /usr/share/graphite-web/static/ <Location "/content/"> SetHandler None </Location> <Location "/server-status"> SetHandler server-status Require 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
您应该看到一个看起来像这样的页面:
设置存储架构和聚合
现在我们已经配置collectd来收集有关您的服务的统计信息,我们需要调整Graphite来处理它正确接收的数据。
让我们从创建存储模式定义开始。 打开存储模式配置文件:
sudo nano /etc/carbon/storage-schemas.conf
在内部,我们需要添加一个定义,该定义将决定信息保存多长时间,以及数据在各个级别的详细程度。
我们将告诉Graphite以10秒的间隔存储collectd信息一天,一分钟七天,一年间隔十分钟。
这将使我们在最近活动的详细信息和长期的总体趋势之间取得良好的平衡。 Collectd通过其指标开始以字符串collectd
,所以我们会匹配这个模式。
我们描述的策略可以通过添加这些行来添加。 请记住,这些添加上面默认的策略,否则他们将永远不会被应用:
[collectd]
pattern = ^collectd.*
retentions = 10s:1d,1m:7d,10m:1y
保存并在完成后关闭文件。
重新加载服务
现在collectd被配置,Graphite知道如何处理它的数据,我们可以重新加载服务。
首先,重新启动Carbon服务。 最好使用“stop”,然后使用“start”命令,而不是“restart”命令,而不是“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的附加插件。 具有collectd的其他服务器也可以将数据发送到我们的Graphite服务器。 Collectd主要用于收集有关公共服务和整个机器的统计信息。
在接下来的文章中,我们将建立StatsD,可以刷新它在Graphite之前缓存数据的服务。 这将允许我们解决数据丢失的问题,当发送统计太快,我们在上一篇文章中描述。 它还将为我们提供一个界面,以跟踪我们自己的计划和项目中的统计数据。