亚马逊AWS官方博客

新功能- Collectd的Amazon CloudWatch插件

原文:https://aws.amazon.com/blogs/aws/new-cloudwatch-plugin-for-collectd/

作者:Jeff Barr


我在2011年已介绍过Cloud Watch的特性,“您可以在Cloud Watch中查看图表、设置告警、并根据这些指标启动自动化操作,所使用的这些AWS资源指标会被存储于Cloud Watch中 。”您目前已有能力在Amazon Cloud Watch中存储一段时间范围内的业务、应用及系统的指标数据(参阅“Amazon Cloud Watch定制新指标”了解更多信息)。

今天我们将简化系统统计信息的采集过程,使用一个新的 CloudWatch plug for colletd将采集数据发送至CloudWatch中 。并通过collectd 多种类型信息的统计采集能力与cloudwatch存储、展示、警报和告警的功能的整合,您可以更好地获取EC2实例、本地硬件以及运行于其上应用程序的运行状态及其性能信息。该插件已经作为一个开源项目发布,我们期待您的反馈。

Collectd守护进程采用C语言编写,具有高性能和可移植性。它支持上百个插件 ,允许您收集有关ApacheNginx Web服务器性能统计数据、memory usage uptime等信息。

安装与配置

为了演示这些功能,我在EC2实例上安装并配置了Collectd服务及新Cloudwatch插件。

首先我创建了一条IAM策略,它具备将指标数据写入CloudWatch的权限:

然后我创建了一个IAM角色,允许EC2(运行collectd程序的实例)使用上述所建的策略:

如果我计划使用Collectd 插件从本地服务器或运行中的EC2实例收集统计信息,那请跳过这些步骤,采用创建一个具有适当权限的IAM用户作为替代方法。在我完成上述工作后,会将该用户的证书放在本地服务器或EC2实例中。

在策略和角色配置完毕后,选择该角色来启动一个EC2实例

登录并安装Collectd :

$ sudo yum -y install collectd

然后获取插件和安装脚本,设置脚本为可执行,并运行该脚本:

$ chmod a+x setup.py

$ sudo ./setup.py

回答一些交互问题确认安装过程无误,在完成配置之后就可启动Collectd :

Installing dependencies ... OK

Installing python dependencies ... OK

Copying plugin tar file ... OK

Extracting plugin ... OK

Moving to collectd plugins directory ... OK

Copying CloudWatch plugin include file ... OK

Choose AWS region for published metrics:

1. Automatic [us-east-1]

2. Custom

Enter choice [1]: 1

Choose hostname for published metrics:

1. EC2 instance id [i-057d2ed2260c3e251]

2. Custom

Enter choice [1]: 1

Choose authentication method:

1. IAM Role [Collectd_PutMetricData]

2. IAM User

Enter choice [1]: 1

Choose how to install CloudWatch plugin in collectd:

1. Do not modify existing collectd configuration

2. Add plugin to the existing configuration

Enter choice [2]: 2

Plugin configuration written successfully.

Stopping collectd process ... NOT OK

Starting collectd process ... OK

$

在Collectd运行并且插件安装配置完成后,下一步是确定感兴趣的统计信息,并配置插件将它们发布至CloudWatch中(每个指标的采集成本也是一个需考虑因素)。

文件/opt/collectd-plugins/cloudwatch/config/blocked_metrics包含已收集但尚未发布到CloudWatch的指标列表:


$ cat /opt/collectd-plugins/cloudwatch/config/blocked_metrics

# This file is automatically generated - do not modify this file.

# Use this file to find metrics to be added to the whitelist file instead.

cpu-0-cpu-user

cpu-0-cpu-nice

cpu-0-cpu-system

cpu-0-cpu-idle

cpu-0-cpu-wait

cpu-0-cpu-interrupt

cpu-0-cpu-softirq

cpu-0-cpu-steal

interface-lo-if_octets-

interface-lo-if_packets-

interface-lo-if_errors-

interface-eth0-if_octets-

interface-eth0-if_packets-

interface-eth0-if_errors-

memory--memory-used

load--load-

memory--memory-buffered

memory--memory-cached

如您对内存消耗关注,可添加了一行到

/opt/collectd-plugins/cloudwatch/config/whitelist.conf

memory--memory-.*

Collectd配置文件(/etc/collectd.conf)中包含Collectd附加设置及插件设置。不需要做任何修改。

重新启动Collectd,以便所做的调整生效:

$ sudo service collectd restart

为了模拟内存消耗,可执行了一些消耗内存的程序,然后打开CloudWatch Console来查找并显示自定义指标:

该截图包括了对CloudWatch控制台即将推出增强功能的预览;如果看起来不一致也不必担心(请关注获取更多信息)。
如果监控一个生产实例,您还可以安装更多Collectd插件。以下是Amazon Linux AMI可用插件列表:

$ sudo yum list | grep collectd
collectd.x86_64                        5.4.1-1.11.amzn1               @amzn-main

collectd-amqp.x86_64                   5.4.1-1.11.amzn1               amzn-main

collectd-apache.x86_64                 5.4.1-1.11.amzn1               amzn-main

collectd-bind.x86_64                   5.4.1-1.11.amzn1               amzn-main

collectd-curl.x86_64                   5.4.1-1.11.amzn1               amzn-main

collectd-curl_xml.x86_64               5.4.1-1.11.amzn1               amzn-main

collectd-dbi.x86_64                    5.4.1-1.11.amzn1               amzn-main

collectd-dns.x86_64                    5.4.1-1.11.amzn1               amzn-main

collectd-email.x86_64                  5.4.1-1.11.amzn1               amzn-main

collectd-generic-jmx.x86_64            5.4.1-1.11.amzn1               amzn-main

collectd-gmond.x86_64                  5.4.1-1.11.amzn1               amzn-main

collectd-ipmi.x86_64                   5.4.1-1.11.amzn1               amzn-main

collectd-iptables.x86_64               5.4.1-1.11.amzn1               amzn-main

collectd-ipvs.x86_64                   5.4.1-1.11.amzn1               amzn-main

collectd-java.x86_64                   5.4.1-1.11.amzn1               amzn-main

collectd-lvm.x86_64                    5.4.1-1.11.amzn1               amzn-main

collectd-memcachec.x86_64              5.4.1-1.11.amzn1               amzn-main

collectd-mysql.x86_64                  5.4.1-1.11.amzn1               amzn-main

collectd-netlink.x86_64                5.4.1-1.11.amzn1               amzn-main

collectd-nginx.x86_64                  5.4.1-1.11.amzn1               amzn-main

collectd-notify_email.x86_64           5.4.1-1.11.amzn1               amzn-main

collectd-postgresql.x86_64             5.4.1-1.11.amzn1               amzn-main

collectd-rrdcached.x86_64              5.4.1-1.11.amzn1               amzn-main

collectd-rrdtool.x86_64                5.4.1-1.11.amzn1               amzn-main

collectd-snmp.x86_64                   5.4.1-1.11.amzn1               amzn-main

collectd-varnish.x86_64                5.4.1-1.11.amzn1               amzn-main

collectd-web.x86_64                    5.4.1-1.11.amzn1               amzn-main

需了解事项

如果您使用的是5.5或更新版本的Collectd ,则会在默认情况下发布四个指标:

  • df-root-percent_bytes-used – disk utilization
  • memory–percent-used – memory utilization
  • swap–percent-used – swap utilization
  • cpu–percent-active – cpu utilization

如果您不希望发布它们,您可以从whitelist.conf文件中删除这些指标。

在Amazon Linux AMI,Ubuntu,RHEL和CentOS的软件仓库中,目前提供了较旧版本的Collectd; 如果从源代码或自定义repo进行构建安装,请注意默认行为的变化。

更多

除了本次所展示的内容外, 您可以安装更多的插件,然后配置whitelist.conf来向CloudWatch发布更多的指标。同时您可以创建CloudWatch警报 ,自定义仪表盘等。

要开始使用,请访问AWS Lab on GitHub,并下载collectd plugin for CloudWatch

译者介绍

 

倪晓峻,AWS专业服务顾问,负责基于AWS云计算项目的咨询和设计,具有超过十五年以上企业客户服务经验,致力于AWS服务在国内和全球的项目实施。在企业级解决方案,混合云架构,运营集成等领域有着广泛的设计与实践经验。在加入AWS之前曾任职VMware;HPE专业服务顾问,从事云计算/虚拟化架构设计及运维咨询工作,两次获得省部级科技进步奖励,参与OGC ITIL V3中文版的审定工作 。