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

使用 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 上创建一个名为 collectd 的数据库,可以用命令行创建,也可以用 Web 管理界面操作:


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

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

安装 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

原文发布时间:2015-04-13

本文来自云栖合作伙伴“linux中国”

时间: 2024-11-05 23:30:58

使用 Grafana、collectd 和 InfluxDB 打造现代监控系统的相关文章

网络人手把手教你打造远程监控系统

网络人远程控制软件这款利器,对于远程监控环境的打造有自身得天独厚的优势,力求用最简单的操作实现最强大的远程监控功能,从而为用户建立起安全.高效的远程监控体系. 话不多说,下面小编跟大家一起到网络人官网免费下载(http://netman123.cn/download.asp)远程监控软件后,开始一步步地安装,Let's Go! 网络人监控软件安装方法: 要实现远程监控,首先要在控制双方电脑都安装网络人软件.可以到网站上免费下载安装软件.解压后里面有办公版和监控版两个版本,双击安装监控版.默认安装

开源倾情奉献:基于.NET打造IP智能网络视频监控系统

转载自 http://www.cnblogs.com/gaochundong/p/opensource_ip_video_surveillance_system_part_1_introduction.html     开源倾情奉献系列链接 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(二)基础类库介绍 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(三)命令行工具集 开源倾情奉献:基于.NET打造IP智能

打造立体化监控体系的最佳实践——分布式调用跟踪和监控实践

摘要: 本文将从分布式系统调用的复杂现状说起,具体分析调用链的三大使用场景,以及调用链的最佳实践,简述如何将调用链作为排查问题的核心,通过其可以将各类数据关联在一起,提高问题排查能力. [最新快讯]EDAS上线方法追踪新特性,打通应用诊断的"最后一公里". 1. 分布式调用系统的现状 当前,随着互联网架构的扩张,分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如微服务.消息收发.分布式数据库.分布式缓存.分布式对象存储.跨域调用,这些组件共同构成了繁杂的分布式网络. 如上图右侧

打造立体化监控体系的最佳实践

1. 分布式调用系统的现状 当前,随着互联网架构的扩张,分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如微服务.消息收发.分布式数据库.分布式缓存.分布式对象存储.跨域调用,这些组件共同构成了繁杂的分布式网络. 如上图右侧所示,当应用A发出某个请求时,其背后可能有数十个甚至更多的服务被调用,可谓是"牵一发而动全身". 如果将分布式系统比作高速公路网,每个前端的请求就相当于高速上行驶的车辆,而处理请求的应用就是高速上的收费站,在收费站上将车辆通行信息记录成日志,包括时间.车牌.

移动4G助力咸宁打造排污视频监控系统

针对排污企业分布零散.监管部门无法实时掌握和发现企业污染情况与环境安全隐患等问题,湖北省咸宁市环保局联合咸宁移动,在重点排污企业安装视频监控系统,利用高速.稳定的移动4G网络,实现排污情况24小时实时监控. 据了解,咸宁市环保局联合咸宁移动打造的环保视频监控系统,是利用目前我国最为先进的视频监控技术,通过专线连接企业排污口将企业排放的污染数据和视频接入咸宁市环保局监控机房,实现环保局对重污染企业水.气排放的实时监控.监测人员通过手机终端.电脑等移动终端与4G网络,对重点污染企业.污染源的废水.废

关于.NET/C#/WCF/WPF 打造IP网络智能视频监控系统的介绍_实用技巧

OptimalVision网络视频监控系统 OptimalVision(OV)网络视频监控系统(Video Surveillance System),是一套基于.NET.C#.WCF.WPF等技术构建的IP网络视频监控系统.设计与实现该系统的初衷是希望在家用电脑中部署该系统,连接本地或局域网设备,通过浏览器或手机客户端浏览宝宝实时视频,也就是俗称的"宝宝在线"或"家庭看护". 但由于业余时间总是有限,完成系统中的服务.配置.采集.传输和桌面GUI部分后,继续完成后续

咸宁移动打造环保视频监控系统

近日,针对排污企业分布零散.监管部门无法实时掌握和发现企业污染情况等问题,湖北省咸宁市环保局联合咸宁移动,在重点排污企业安装环保视频监控系统,利用高速.稳定的移动4G网络实现对排污情况的24小时实时监控. 该环保视频监控系统利用视频监控技术,通过专线连接企业排污口,将企业排放的污染数据和视频接入至咸宁市环保局监控机房,实现对重污染企业水.气排放的实时监控.监测人员通过手机终端.电脑等移动终端与4G网络,对重点污染企业和污染源的废水.废气.废渣等进行实时监测,从而将重点污染源管理.排污数据在线监测

DockOne微信分享(一二四):轻松筹监控系统实现方案

本文讲的是DockOne微信分享(一二四):轻松筹监控系统实现方案[编者的话]监控系统是服务管理最重要的组成部分之一,可以帮助开发人员更好的了解服务的运行状况,及时发现异常情况.虽然阿里提供收费的业务监控服务,但是监控有很多开源的解决方案,可以尝试自建监控系统,满足基本的监控需求,以后逐步完善优化.这样既可以更灵活的满足自身业务的监控需求,也可以为以后自建机房提供技术积累.通过以下7个方面来建设监控系统. [3 天烧脑式 Docker 训练营 | 上海站]随着Docker技术被越来越多的人所认可

基于关键帧提取技术的网络视频监控系统

由于宽带网络近年来在世界各地的高速发展,高品质的音视频压缩技术不断推陈出新,更高的压缩比率加上更宽的带宽,使得互联网用户在互联网上观看高品质电视节目的愿望不再是幻想.美国.意大利.法国.加拿大等国网络视频市场的日渐成熟,国内哈尔滨.泉州.上海等地的小试牛刀,都证明了以更强的互动性作为卖点.基于互联网技术和P2P传输技术的网络视频服务已经渐成气候. 网络视频是对基于互联网技术传播的所谓宽带视频的统称,可以是用户自己制作.在线上传或点播视频节目,自主性和自助性强.各种视频网站和流媒体服务器随着人们对