【Collectd插件】的收集度量(时间序列数据)的方法

image.png

首先

Collectd是一款数据收集软件,可以从本地监视的机器中提取指标,并将它们推送到Graphite、Prometheus等平台。所有的工作都是通过插件完成的,collectd插件可以收集与CPU、内存、Postgres、JVM以及其他许多指标相关的数据。通过使用插件,还可以将这些指标推送到Graphite,进行数据聚合,发送警报,并将通知发送到电子邮件中。

在本文中,我们将创建一个具有collectd插件的测试系统,用于监视Linux机器并将这些指标推送到Graphite。最后,我们还将确保所有内容在Grafana仪表板上正常运作。

为了缩短设置时间,可以使用MetricFire的免费试用,来运行Graphite和Grafana。MetricFire是一个托管的Graphite和Grafana服务,应该能够立即发送指标并进行可视化。

CollectD是什么?

Collectd是一款旨在收集度量数据的软件。它还是一个用于设置和管理运行各种插件的平台。要监控的应用程序所在的每台机器都需要安装Collectd。

在中国,插件能做些什么呢?最常见的插件可以监控CPU、内存、网络和交换空间的使用情况。还有许多插件可以监控软件,如Nginx、Apache、JVM、Postgres等。

然而,也有能够汇总度量、发送警报、通知和推送到数据库的插件。Collectd非常灵活,可以配置所需的各种插件。

让我们实际确认一下它是如何运作的。

如何将collectd插件连接到Graphite和Grafana。

能够收集多种指标是一件很棒的事情,但是如果没有合适的可视化工具来处理这些指标,就会很困难。因此,建议将Grafana附加到系统中。虽然Graphite提供了自己的Web界面,对于某些情况可能已经足够了,但使用Grafana的更高级仪表盘系统,监控将确保更加顺畅。

让我们定义任务:
使用这些插件来监控本地系统。
a) CPU
b) 磁盘
c) DF
d) 交换内存
e) 内存

所有的数据都会被发送到Graphite,并且还有一个连接到Graphite的Grafana实例。

为了避免无用的大量软件包在本地机器上存在,只安装了collectd本地。对于其他所有服务,则使用Docker-compose。这应该有助于方便部署此系统。

使用Grafana配置Graphite的设置

在本节中,我们将介绍如何在Grafana中设置Graphite。在接下来的一节中,我们将解释如何安装collectd并配置插件。

让我们定义一个docker-compose.yml文件:

version: '3'
services: 
 graphite:
  image: "graphiteapp/graphite-statsd"
  ports: 
   - 80:80 
   - 2003-2004:2003-2004 
   - 2023-2024:2023-2024 
   - 8080:8080
 grafana:
  image: "grafana/grafana"
  ports:
   - 3000:3000
  network_mode: host
  depends_on:
   - graphite

在这个配置文件中,我描述了两个服务(Graphite 和 Grafana)。

石墨

使用Graphite的镜像来安装Graphite,其中包含StatsD的实施图像。但是在本文中,仅使用Graphite。此镜像还公开了容器可以访问的一些端口。

以下是对上述内容的中文本地化改写:

映射端口
80 – Nginx
2003 – carbon接收器(纯文本)
2004 – carbon接收器(pickle)
2023 – carbon聚合器(纯文本)
2024 – carbon聚合器(pickle)
8080 – Graphite内部gunicorn端口(无需Nginx代理)

StatsD有两个端口,分别是8125和8126,但在本文中并不适用。此外,我们将跳过Carbon Aggregator的高级配置,仅使用接收器。

如果你对StatsD感兴趣,想要了解collectd和StatsD的区别,请查看其他文章。

Grafana 可以用中文翻译为 “石墨”。

接下来,我们将创建Grafana服务。由于端口3000用于访问用户界面,我们需要首先将端口3000公开。此外,由于Grafana需要向Graphite发送请求并导入数据,我们需要启用此功能(network_mode:host)。然后,我们需要指定该服务依赖于Graphite。

收集和Graphite和Grafana的连接
collectd从本地计算机收集指标,并将其发送到端口号2003上的Graphite。将Graphite添加为Grafana的数据源,并可视化它们的工作方式。
运行docker-compose.yml
运行docker-compose up

然后,在进行设置后重新启动collectd:
sudo service collectd restart

在等待一段时间,直到指标被collectd收集并传输到Graphite上(大约需要一分钟的时间来分析指标)。

接下来,转到地址http://localhost/,查看Graphite。

image.png

然后,访问http://localhost:3000登录Grafana。然后,在Grafana中配置新的数据源。有关配置Grafana数据源的详细信息,请参阅此文章。

image.png
image.png

让我们创建第一个仪表板吧。

image.png

为了监视服务器参数,使用Collectd插件。

让我们在本地计算机上安装Collectd:
sudo apt 安装collectd

接下来,需要使用插件来配置collectd服务。要做到这一点,需要停止collectd服务。
运行以下命令停止collectd服务:sudo service collectd stop。

接下来,打开包含配置的文件(建议保留之前的备份)。
sudo gedit /etc/collectd/collectd.conf

以下是文件示例。

Hostname "my-local-pc.local" 
FQDNLookup true

LoadPlugin cpu

LoadPlugin disk

LoadPlugin df

LoadPlugin swap

LoadPlugin memory

# LoadPlugin write_prometheus
# <Plugin "write_prometheus">
#  Port "9103"
# </Plugin>

LoadPlugin write_graphite
<Plugin write_graphite>
  <Node "Graphite">  # random name in this case
    Host "127.0.0.1"
    Port "2003"
    Protocol "tcp"
    LogSendErrors true
    Prefix "collectd." # will be used in metrics name
    Postfix "collectd." # will be used in metrics name
    StoreRates true
    AlwaysAppendDS true
    EscapeCharacter "-"
  </Node>
</Plugin>

第一行定义了当前主机的名称(可以随机选择),第二行控制了主机名的选择方式。如果启用,节点的主机名将设置为完全限定域名(FQDN)。在实际服务器中,可以跳过第一行。

使用这个文件,您也可以指定更新间隔等信息。

下一步,则在下一个文件中配置要使用的插件。

LoadPlugin <plugin_name>
<Plugin <plugin_name>> # optional for some plugins
# ... configuration
</Plugin>

在这个示例中,我们没有进行特殊的设置就使用了插件。在上述的代码示例中,我们可以通过注释掉插件来配置将数据发送到Prometheus实例。该插件被称为write_prometheus,并且你可以找到一行代码<LoadPlugin “write_prometheus”>。

让我们解释一下这些collectd插件。

中央处理器

CPU插件会收集CPU在各种状态下所花费的时间,尤其是用户代码执行、系统代码执行、等待IO操作和空闲状态。

CPU插件不收集百分比数据,而是收集“jiffies”作为调度单位。但是,它可以按以下方式配置。

<Plugin cpu> 
    ReportByState = true 
    ReportByCpu = true 
    ValuesPercentage = true 
</Plugin>

收集的指标取决于系统。这是在Windows上运行时收集的指标的一个例子。

    • Iddle

 

    • User

 

    • System

 

    IRQ ( interrupt requests )

度量标准是由每个CPU单独收集的,并且每个核心都有从0到N的编号。

硬盘

磁盘插件会收集硬盘和分区的性能统计数据。

例如设定:
For example,

<Plugin "disk">
  Disk "sda" # which partition to monitor
  IgnoreSelected false
</Plugin>

这也是一个依赖于平台的插件。从Linux环境收集到的指标示例包括以下内容。

    • マージ済み(1つのディスクが一度に実行できる操作の数)

 

    • 時間(I / O操作が完了するまでにかかった平均時間)

 

    • 保留中の操作

 

    • IO時間(IO操作の実行に必要な時間)

 

    加重IO時間(I / O完了時間と累積されている可能性のあるバックログの両方の尺度)。

DF

DF插件会收集文件系统的使用情况信息(已使用和可用空间的挂载分区)。其输出类似于Linux的“df”命令。

您可以将设置为仅监视特定的分区、文件系统类型或挂载点。您也可以监视所有数据。以下是示例。

<Plugin "df">
  Device "/dev/hda1"
  FSType "ext3"
  IgnoreSelected false
</Plugin>

这个度量标准由每个挂载的分区分别组成两个值(可用和已使用)。

交换

Swap插件用于显示已使用的交换空间的数量。

请给我一杯咖啡。

<Plugin swap>
  ReportByDevice false
  ReportBytes true
</Plugin>

应该能够在那里确认到三个值(Free、Cached、Used)。

记忆

Memory插件用于收集物理内存的使用情况。
示例:

<Plugin memory> 
  ValuesAbsolute true 
  ValuesPercentage true 
</Plugin>

在Linux中,会显示以下指标。

    • Used

 

    • Buffered

 

    • Cached

 

    Free

整理

collectd是一个构建用于管理执行指标收集的所有有效负载的插件的平台。例如,它可以用于监控基础设施和应用程序,如JVM、Nginx、MongoDB等。该系统非常灵活可配置,每个插件都可以独立配置。通过各种collectd插件,可以随时收集、处理和推送指标到收集系统中。也可以通过功能如邮件通知来设置报警。

为了执行collectd监控,需要有开发和设置监控架构的知识。这可能会使在生产环境中的维护变得困难。此外,一些插件没有足够的文档记录。避免这个昂贵的过程并节省监视基础设施成本的最佳方法是使用已经安装并且有适当文档支持的服务,例如MetricFire。例如,MetricFire提供了一个托管的图形化代理,使用户可以完全跳过使用collectd或StatsD。

请登录免费试用版,尝试托管的collectd、Graphite、Grafana堆栈。您还可以预约演示,并直接与我们讨论公司的监控需求。

广告
将在 10 秒后关闭
bannerAds