collectd简述

collectd 是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制。它会在系统运行和存储信息时周期性的统计系统的相关统计信息。利用这些信息有助于查找当前系统性能瓶颈(如作为性能分析 performance analysis)和预测系统未来的 load(如能力部署capacity planning)等

下面简单介绍一下: collectd的部署以及与logstash对接的相关配置实例

collectd的安装

解决依赖

  1. rpm -ivh "http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm"
  2. yum -y install libcurl libcurl-devel rrdtool rrdtool-devel perl-rrdtool rrdtool-prel libgcrypt-devel gcc make gcc-c++ liboping liboping-devel perl-CPAN net-snmp net-snmp-devel

源码安装collectd

  1. wget http://collectd.org/files/collectd-5.4.1.tar.gz
  2. tar zxvf collectd-5.4.1.tar.gz
  3. cd collectd-5.4.1
  4. ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=/usr/lib --mandir=/usr/share/man --enable-all-plugins
  5. make && make install

安装启动脚本

  1. cp contrib/redhat/init.d-collectd /etc/init.d/collectd
  2. chmod +x /etc/init.d/collectd

启动collectd

  1. service collectd start

collectd的配置

以下配置可以实现对服务器基本的CPU、内存、网卡流量、磁盘 IO 以及磁盘空间占用情况的监控:

  1. Hostname "host.example.com"
  2. LoadPlugin interface
  3. LoadPlugin cpu
  4. LoadPlugin memory
  5. LoadPlugin network
  6. LoadPlugin df
  7. LoadPlugin disk
  8. <Plugin interface>
  9. Interface "eth0"
  10. IgnoreSelected false
  11. </Plugin>
  12. <Plugin network>
  13. <Server "10.0.0.1" "25826"> ## logstash 的 IP 地址和 collectd 的数据接收端口号
  14. </Server>
  15. </Plugin>

logstash的配置

以下配置实现通过 logstash 监听 25826 端口,接收从 collectd 发送过来的各项检测数据:

示例一:

  1. input {
  2. collectd {
  3. port => 25826 ## 端口号与发送端对应
  4. type => collectd
  5. }

示例二:(推荐)

  1. udp {
  2. port => 25826
  3. buffer_size => 1452
  4. workers => 3 # Default is 2
  5. queue_size => 30000 # Default is 2000
  6. codec => collectd { }
  7. type => "collectd"
  8. }

运行结果

下面是简单的一个输出结果:

  1. {
  2. "_index": "logstash-2014.12.11",
  3. "_type": "collectd",
  4. "_id": "dS6vVz4aRtK5xS86kwjZnw",
  5. "_score": null,
  6. "_source": {
  7. "host": "host.example.com",
  8. "@timestamp": "2014-12-11T06:28:52.118Z",
  9. "plugin": "interface",
  10. "plugin_instance": "eth0",
  11. "collectd_type": "if_packets",
  12. "rx": 19147144,
  13. "tx": 3608629,
  14. "@version": "1",
  15. "type": "collectd",
  16. "tags": [
  17. "_grokparsefailure"
  18. ]
  19. },
  20. "sort": [
  21. 1418279332118
  22. ]
  23. }

参考资料