注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

linux系统监控和统计c语言级工具: collectd  

2014-04-03 17:01:00|  分类: linux系统监测 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

       collectd是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制。比如以RRD 文件形式。

        当系统运行和存储信息的时候,Collectd会周期性统计系统的相关统计信息。那些信息可以用来找到当前系统性能瓶颈。(如作为性能分析 performance analysis)和预测系统未来的load(如能力部署capacity planning).如果你需要美观的图形来显示您的数据,并且已经厌烦了内部解决方案,恭喜您,你找到了正确的地方。

下图显示了某个系统在过去60分钟内的CPU利用率图形。

linux系统监控和统计以语言级工具: collectd - itoedr - itoedr的it学苑
                在互联网上还有其他的免费,开源的项目类似于collectd的项目。为什么你要选择collectd呢?和其他项目相比,我们觉得 collectd有一些主要的特点:

         第一,它完全是由C语言编写,故性能很高,可移植性好,它允许运行在系统没有脚本语言支持或者cron daemon的系统上,比如嵌入式系统。

        第二:它包含优化以及处理成百上千种数据集的新特性。collectd包含有超过70多种插件,其中有标准的 case到非常特殊和高级的专题。同时,collectd提供强大的网络联网特性,它能以多种方式来扩充。最后,collectd开发及时同时文档支持也是非常好的。

         虽然collectd能够很大程度满足您的管理需求,但是它还是存在一些不足:
          1-它本身不能生成图形。虽然它能写RRD文件,但是它不能从这些文件生成图形。在contrib/ 目录下包含简单的脚本,可以看看kcollectd,一个X window前端和drraw,一个非常通用的解决方案。

          当然,使用Collectd_Graph_Panel(CGP)来展示数据也是一个好办法,php的方案:http://pommi.nethuis.nl/category/cgp/

          perl方案可以是:https://collectd.org/wiki/index.php/Collectd-web;


          2-监控功能已经被添加到了4.3版本,但是至今它只能进行简单门阀检测。

附:collectd的组件系统

linux系统监控和统计以语言级工具: collectd - itoedr - itoedr的it学苑
  关于cgp的一点注意事项:
     在修改/var/www/cgp/conf/config.php中内容时,做到如下修改:
            #collectd's datadir
            $CONFIG['datadir'] = '/var/lib/collectd';
           此处/var/lib/collectd是rrd收集的文件所在,当然/var/lib/collectd/rrd就是rrd的图像数据所在。这项配置由collectd安装因默认形成。
            collectd-web php-style:https://github.com/pommi/CGP/archive/v0.4.1.zip;
             其中jsrrdgraph已经可以将rrd数据直接在客户端使用html5的技术将数据展示为可读图像。减少了服务器方面的压力。

**********************************
Grafana、collectd 和 InfluxDB 打造现代监控系统
**********************************

想打造 New Relic 那样漂亮的实时监控系统我们只需要 InfluxDB/collectd/Grafana 这三个工具,这三个工具的关系是这样的:

采集数据(collectd)-> 存储数据(InfluxDB) -> 显示数据(Grafana)。

  • InfluxDB 是 Go 语言开发的一个开源分布式时序数据库,非常适合存储指标、事件、分析等数据,看版本号(v0.8.8)就知道这个项目还很年轻;
  • collectd 就不用介绍了吧,C 语言写的一个系统性能采集工具;
  • Grafana 是纯 Javascript 开发的前端工具,用于访问 InfluxDB,自定义报表、显示图表等。

下面的安装和配置步骤在 Ubuntu 14.04 Server 64bit 版上完成。升级整个系统后重启:

  1. $ sudo apt-get update
  2. $ sudo apt-get upgrade
  3. $ sudo reboot

安装 InfluxDB

InfluxDB 是 Go 写的,不依赖任何其他包或库,很干净。安装很容易:

  1. $ wget https://s3.amazonaws.com/influxdb/influxdb_latest_amd64.deb
  2. $ sudo dpkg -i influxdb_latest_amd64.deb

启动 InfluxDB:

  1. $ sudo /etc/init.d/influxdb start
  2. Setting ulimit -n 65536
  3. Starting the process influxdb [ OK ]
  4. influxdb process was started [ OK ]

启动后打开 web 管理界面 http://192.168.2.183:8083/ 默认用户名和密码是 root 和 root. InfluxDB 的 Web 管理界面端口是 8083,HTTP API 监听端口是 8086,如果需要更改这些默认设定,修改 InfluxDB 的配置文件 /opt/influxdb/current/config.toml 后重启 InfluxDB 就可以了。

InfluxDB 

InfluxDB

在刚安装好的 InfluxDB 上创建一个名为 collectd 的数据库,可以用命令行创建,也可以用 Web 管理界面操作:

  1. $ curl "http://192.168.2.183:8086/db?u=root&p=root" -d "{\"name\": \"collectd\"}"

InfluxDB

InfluxDB

安装 collectd

安装 collectd:

  1. $ sudo apt-get install collectd

配置 collectd 为客户端,收集到数据后直接发给 InfluxDB:

  1. $ sudo vi /etc/collectd/collectd.conf
  2. ...
  3. LoadPlugin network
  4. ...
  5. <Plugin network>
  6. Server "192.168.2.183" "25826"
  7. </Plugin>
  8. ...

重启 collectd:

  1. $ sudo /etc/init.d/collectd restart

InfluxDB 现在自带一个 collectd 插件来获取 collectd 客户端发来的数据,以前可没这么方便哦,0.8.4 版本以前只能通过 influxdb-collectd-proxy 这样的第三方程序来连接 collectd 和 InfluxDB. 如果你检查一下服务器上打开的端口就会发现 influxdb 插件启动了一个 25826 端口,如果发现 InfluxDB 数据库里没有(收集到)数据,务必检查这个 25826 端口是否正常启动了:

  1. $ sudo netstat -tupln
  2. Active Internet connections (only servers)
  3. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  4. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 622/sshd
  5. tcp6 0 0 :::8086 :::* LISTEN 668/influxdb
  6. tcp6 0 0 :::22 :::* LISTEN 622/sshd
  7. tcp6 0 0 :::8090 :::* LISTEN 668/influxdb
  8. tcp6 0 0 :::8099 :::* LISTEN 668/influxdb
  9. tcp6 0 0 :::8083 :::* LISTEN 668/influxdb
  10. udp6 0 0 :::25826 :::* 668/influxdb

InfluxDB 自带的 collectd 插件默认是关闭的,需要手动配置打开 enabled = true,并填上 database = “collectd” 这一行,这里的 “collectd” 就是我们上面创建的那个数据库,更改配置后记得重启 InfluxDB:

  1. $ sudo vi /opt/influxdb/current/config.toml
  2. $ sudo vi /opt/influxdb/shared/config.toml
  3. ...
  4. # Configure the collectd api
  5. [input_plugins.collectd]
  6. enabled = true
  7. # address = "0.0.0.0" # If not set, is actually set to bind-address.
  8. # port = 25826
  9. database = "collectd"
  10. # types.db can be found in a collectd installation or on github:
  11. # https://github.com/collectd/collectd/blob/master/src/types.db
  12. # typesdb = "/usr/share/collectd/types.db" # The path to the collectd types.db file
  13. ...

  14. $ sudo /etc/init.d/influxdb restart
  15. Setting ulimit -n 65536
  16. Setting ulimit -n 65536
  17. influxdb process was stopped [ OK ]
  18. Setting ulimit -n 65536
  19. Starting the process influxdb [ OK ]
  20. influxdb process was started [ OK ]

现在 InfluxDB 已经准备好接受和处理 collectd 传来的数据了。用命令行或者 Web 管理界面验证一下数据库里是否有数据:

  1. $ curl -G 'http://192.168.2.183:8086/db/collectd/series?u=root&p=root&q=list+series&pretty=true'
  2. [
  3. {
  4. "name": "list_series_result",
  5. "columns": [
  6. "time",
  7. "name"
  8. ],
  9. "points": [
  10. [
  11. 0,
  12. "192.168.2.183/cpu-0/cpu-idle"
  13. ],
  14. ...
  15. ]
  16. }
  17. ]

InfluxDB

InfluxDB

安装 Grafana

下载 grafana 后解压放到 web 服务器上就可用。这里省去配置 Nginx/Apache 之类的麻烦,直接用最简单的 Web 服务器 python -m SimpleHTTPServer 驱动:

  1. $ wget http://grafanarel.s3.amazonaws.com/grafana-1.9.1.tar.gz
  2. $ tar xzvf grafana-1.9.1.tar.gz
  3. $ cd grafana-1.9.1.tar.gz
  4. $ cp config.sample.js config.js

  5. $ vi config.js
  6. ...
  7. // InfluxDB example setup (the InfluxDB databases specified need to exist)
  8. datasources: {
  9. influxdb: {
  10. type: 'influxdb',
  11. url: "http://192.168.2.183:8086/db/collectd",
  12. username: 'root',
  13. password: 'root',
  14. },
  15. ...
  16. },
  17. ...

  18. $ sudo python -m SimpleHTTPServer

用浏览器访问 Grafana,这里的默认端口是 8000:

Grafana

Grafana


  评论这张
 
阅读(132)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017