介绍
收集和可视化数据是做出有关服务器和项目的明智决策的重要方式。
在 之前的指南中,我们讨论了如何安装和配置 Graphite,以便在我们的服务器上可视化数据。然而,我们没有一个好方法来收集或甚至传输数据到 Graphite。
在本指南中,我们将讨论安装和使用 collectd ,该系统统计收集器可以收集和组织有关您的服务器和运行服务的指标。
我们将向您展示如何安装和配置收集以将数据传输到Graphite进行渲染,我们将假设您有Graphite并在Ubuntu 14.04服务器上运行,正如我们在上一本指南中向您展示的那样。
安装 Collectd
我们要做的第一件事是安装 collectd. 我们可以从默认存储库中获取。
更新本地包索引,然后通过键入安装:
1sudo apt-get update
2sudo apt-get install collectd collectd-utils
这将安装戴蒙和一个辅助控制接口,我们仍然需要配置它,以便它知道如何将收集的数据传输到Graphite。
配置 Collectd
首先,在您的 root 特权编辑器中打开 collectd 配置文件:
1sudo nano /etc/collectd/collectd.conf
Collectd 可以用来将信息发送到远程 Graphite 服务器,但我们正在为本指南使用相同的机器。
Hostname "graph_host"
如果您配置了真正的域名,您可以跳过这一点,只需留下FQDNLookup
,使服务器使用DNS系统获得适当的域名。
您可能会注意到有一个参数为间隔
,这是收集在查询数据在主机上之前等待的间隔。 这是默认设置为10秒。 如果您在Graphite文章中跟进,您会注意到这是Graphite追踪统计数据的通常最短间隔。
接下来,我们直接进入 Collectd 将收集信息的服务。 Collectd 通过使用插件来收集信息。大多数插件用于读取系统的信息,但插件也用于定义发送信息的地方。
对于本指南,我们将确保下列插件已启用,您可以评论任何其他插件,或者您可以努力正确配置它们,如果您想在您的主机上尝试它们:
1LoadPlugin apache
2LoadPlugin cpu
3LoadPlugin df
4LoadPlugin entropy
5LoadPlugin interface
6LoadPlugin load
7LoadPlugin memory
8LoadPlugin processes
9LoadPlugin rrdtool
10LoadPlugin users
11LoadPlugin write_graphite
其中一些需要配置,其中一些将顺利工作。
继续下载文件,我们进入每个插件的配置部分. 插件通过为每个配置部分定义一个块
进行配置. 这有点类似于Apache如何在块中分区指令。
我们启用了Apache插件,因为我们安装了Apache来服务Graphite。
<Plugin apache>
<Instance "Graphite">
URL "http://domain_name_or_IP/server-status?auto"
Server "apache"
</Instance>
</Plugin>
在生产环境中,您可能希望将服务器统计数据保护在身份验证层后面。您可以在该文件的这个部分查看评论的代码,以了解该如何工作。
我们将为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以传输其数据,我们指定它应该寻找Carbon用于收听TCP连接的2003端口的本地计算机。
接下来,我们告诉它使用该协议可靠地将数据交给Carbon,然后将错误记录下来,然后为数据设置前缀,因为我们用点结束了这个值,所以这个主机的所有收集统计数据将存储在一个collectd
目录中。
存储率决定是否将统计数据转换为指标,然后通过。附件数据源行将附加节点名称到我们的指标中,如果启用,逃避字符决定如何转换某些含有点的值,以避免碳将它们分成目录。
保存并关闭文件,当你完成。
配置 Apache 来报告统计数据
在我们的配置文件中,我们启用了Apache统计跟踪,但我们仍然需要配置Apache来允许这一点。
在我们为 Graphite 启用的 Apache 虚拟主机文件中,我们可以添加一个简单的位置块,该块将告诉 Apache 报告统计数据。
打开文本编辑器中的文件:
1sudo 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以获取新的统计数据:
1sudo service apache2 reload
我们可以通过访问我们网页浏览器的页面来检查,以确保一切正常工作,我们只需要进入我们的域名,然后是/server-status
:
http://domain_name_or_IP/server-status
你应该看到一个看起来像这样的页面:
设置存储计划和聚合
现在我们已经收集了有关您的服务的统计数据的配置,我们需要调整Graphite以正确处理所接收的数据。
让我们先创建一个存储方案定义,打开存储方案配置文件:
1sudo nano /etc/carbon/storage-schemas.conf
内部,我们需要添加一个定义,该定义将决定信息保存在多长时间,以及数据应该在不同层面有多详细。
我們會告訴 Graphite 以 10 秒的間隔儲存所收集的資訊,在 1 天內儲存 1 分鐘,在 7 天內儲存 1 分鐘,在 1 年內儲存 10 分鐘。
这将为我们提供近期活动的详细信息和长期趋势之间的良好平衡, Collectd 通过其指标,从字符串collectd
开始,所以我们将匹配该模式。
我们所描述的策略可以通过添加这些行来添加,请记住,添加这些 **在默认策略之上,否则它们永远不会应用:
1[collectd]
2pattern = ^collectd.*
3retentions = 10s:1d,1m:7d,10m:1y
保存并关闭文件,当你完成。
重新加载服务
现在 collectd 已配置,Graphite 知道如何处理其数据,我们可以重新加载服务。
首先,重新启动碳服务. 使用停止
命令,然后使用开始
命令,而不是重新启动
命令之间有几秒钟。
1sudo service carbon-cache stop ## wait a few seconds here
2sudo service carbon-cache start
在 Carbon 服务重新启动并运行后,我们可以对 collectd 做同样的事情. 该服务可能尚未运行,但这将确保它正确处理数据:
1sudo service collectd stop
2sudo service collectd start
此后,您可以再次访问您的域名,您应该看到一棵新的树与您收集的信息:
结论
我们的 collectd 配置已经完成,我们的统计数据已经被记录下来! 现在,我们已经配置了一个 DAEMON 来跟踪我们的服务器和服务。
我们可以根据需要配置或编写额外的 plugins for collectd. 额外的服务器与 collectd 也可以将数据发送到我们的 Graphite 服务器. Collectd 主要用于收集有关常见服务和您的机器整体的统计数据。
在 下一篇文章,我们将设置StatsD,一个可以缓存数据在扫描它到Graphite之前的服务。这将使我们能够在发送统计数据时快速处理数据损失的问题,就像我们在上一篇文章中描述的那样。它还将为我们提供一个界面来跟踪我们自己的程序和项目中的统计数据。