用graphite把收集到的数据渲染成图片

简介:

在这里我先讲解下他和cacti nagios的区别~  还有我们为什么要用他~

cacti 是通过snmp来进行抓数据,当然后期可以通过snmp进行exec调取脚本中的数据

nagios是用来监控服务器的各种的状态,当然通过pnp也可以实现画图

但是我为什么要用graphite,其实他就一个功能,把收到的数据展现到页面上~  

就这一个功能,我感觉就够用了~  

需求:

脚本的执行的效率

系统某个日志的分析得到的数值

在线人数

到各个网络节点的质量,延迟

公司的开发人员想看看api的调用次数

某个程序的调用的次数

每个进程延迟的时间统计

这些都可以很好的画图,比自己用rrdtool画图要方便的多~

http://graphite.readthedocs.org/en/latest/index.html


一、 Graphite 项目简介

Graphite是一个企业级的监控工具,可以在廉价机硬件上运行。

二、 Graphite 功能

Graphite是一个画图工具,将数据以图形的方式展现出来。它主要做两件事:

  1. 存储时间序列数据

  2. 根据需要呈现数据的图形

Graphite不收集数据,有一些工具知道如何发送数据给Graphite。虽然需要一点代码,但是非常简单。

三、 简单架构

Graphite由三个软件组件组成:

  1. carbon - 一个Twisted守护进程,监听时间序列数据

  2. whisper - 一个简单的数据库库,用来存储时间序列数据,在设计上类似于RRD

  3. graphite webapp - Django webapp,使用 Cairo来根据需要呈现图形

架构图如下:
Graphite High Level

Graphite High Level

在这个图中我们可以看到Carbon先将数据写入到Whisper数据库文件中,然后Graphite Webapp去读取这个数据,然后显示出图形。但是实际上这个体系采用了缓存,数据可能先到缓存中,然后Webapp读取,显示出图形。这也是为什么在主机I/O反应不过来时Webapp的图形仍能以接近实时的方式显示。

喂数据相当简单,通常大部分的精力花在最开始收集数据时。当你发送数据点给Carbon, 他们马上可以在webapp中画图。webapp 提供几种方式创建和显示图形,包括简单的URL API ,这种呈现的方式可以很方便地将图形嵌入到其它Web页面。

四、 使用效果

下图是在浏览器中的效果:


000553402.jpg

shell的例子

 
  1. ORT=2003

  2. SERVER=graphite.your.org

  3. echo "local.random.diceroll 4 `date +%s`" | nc ${SERVER} ${PORT};

python的例子

 
  1. #!/usr/bin/python

  2. import sys

  3. import time

  4. import os

  5. import platform

  6. import subprocess

  7. from socket import socket

  8. CARBON_SERVER = '127.0.0.1'

  9. CARBON_PORT = 2003

  10. delay = 60

  11. if len(sys.argv) > 1:

  12. delay = int( sys.argv[1] )

  13. def get_loadavg():

  14.  # For more details, "man proc" and "man uptime"

  15.  if platform.system() == "Linux":

  16.    return open('/proc/loadavg').read().strip().split()[:3]

  17.  else:

  18. command = "uptime"

  19. process = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)

  20.    os.waitpid(process.pid, 0)

  21. output = process.stdout.read().replace(',', ' ').strip().split()

  22. lenlength = len(output)

  23.    return output[length - 3:length]

  24. sock = socket()

  25. try:

  26.  sock.connect( (CARBON_SERVER,CARBON_PORT) )

  27. except:

  28.  print "Couldn't connect to %(server)s on port %(port)d, is carbon-agent.py running?" % { 'server':CARBON_SERVER, 'port':CARBON_PORT }

  29.  sys.exit(1)

  30. while True:

  31. now = int( time.time() )

  32. lines = []

  33.  #We're gonna report all three loadavg values

  34. loadavg = get_loadavg()

  35.  lines.append("system.loadavg_1min %s %d" % (loadavg[0],now))

  36.  lines.append("system.loadavg_5min %s %d" % (loadavg[1],now))

  37.  lines.append("system.loadavg_15min %s %d" % (loadavg[2],now))

  38. message = '\n'.join(lines) + '\n' #all lines must end in a newline

  39.  print "sending message\n"

  40.  print '-' * 80

  41.  print message

  42.  print

  43.  sock.sendall(message)

  44.  time.sleep(delay)



 本文转自 rfyiamcool 51CTO博客,原文链接:http://blog.51cto.com/rfyiamcool/1184015 ,如需转载请自行联系原作者


相关文章
|
5月前
|
数据采集 JSON 数据处理
加载数据模型:在数据采集中实现动态数据处理
在现代网络爬虫技术中,动态数据处理对于提升采集效率和准确性至关重要。本文以拼多多为例,探讨了如何通过加载数据模型实现动态数据处理,并结合代理IP、Cookie、User-Agent设置及多线程技术提升数据采集效率。文中详细分析了动态数据模型的必要性、代理IP的应用、Cookie和User-Agent的设置,以及多线程技术的实现。通过Python代码示例展示了如何加载拼多多的商品数据模型,并实时获取商品信息,显著提升了数据采集的速度和稳定性。此方法在面对复杂网站结构和防爬虫机制时表现出色,适用于多种应用场景。
239 1
加载数据模型:在数据采集中实现动态数据处理
|
6月前
|
存储 编解码 关系型数据库
使用Graphite、StatsD和CollectD进行统计数据跟踪简介
使用Graphite、StatsD和CollectD进行统计数据跟踪简介
54 0
|
9月前
|
监控 C#
C# | 使用Chart动态展示实时折线图数据
实时折线图是展示数据变化趋势的有效方式,可以用于监控系统性能、物理实验、股票走势等多个领域。 在C#中,我们可以使用Chart控件来实现实时折线图的展示,其动态性和可交互性可以帮助用户更好地理解数据。 本文将介绍如何使用Chart控件展示实时折线图数据,希望能帮助读者快速掌握这个技能,应用于实际场景中。
1059 0
C# | 使用Chart动态展示实时折线图数据
|
前端开发 JavaScript 数据可视化
数据可视化大屏人员停留系统的开发实录(默认加载条件筛选、单击加载、自动刷新加载、异步加载数据)
数据可视化大屏人员停留系统的开发实录(默认加载条件筛选、单击加载、自动刷新加载、异步加载数据)
155 0
|
监控 搜索推荐 数据可视化
漏刻有时垃圾分类回收数据可视化大屏监控源代码百度地图标注及地图个性化处理方案
漏刻有时垃圾分类回收数据可视化大屏监控源代码百度地图标注及地图个性化处理方案
123 0
|
Web App开发 数据采集 测试技术
如何隐藏Selenium特征实现自动化网页采集
Selenium是一个流行的自动化网页测试工具,可以通过模拟用户在Chrome浏览器中的操作来完成网站的测试。然而,有些网站会检测浏览器是否由Selenium驱动,如果是,就会返回错误的结果或拒绝访问。为了避免这种情况,我们需要隐藏Selenium的特征,让网站认为我们是正常的用户。
953 0
如何隐藏Selenium特征实现自动化网页采集
|
JavaScript 前端开发
vue中使用echarts实现动态图表多数据展示,带源码(x轴动态时间刷新,实时更新展示数据)
之前写项目,需要写一个图表动态展示出当前服务器的信息,在网上找了很多相关的文章,但是关于vue中使用echarts动态图表的内容比较少,自己写过之后就在这里记录一下,希望能够对大家有所帮助
1011 0
|
SQL 监控 前端开发
网站流最日志分析--数据可视化--动态加载数据--数据格式排序问题剖析 | 学习笔记
快速学习网站流最日志分析--数据可视化--动态加载数据--数据格式排序问题剖析
网站流最日志分析--数据可视化--动态加载数据--数据格式排序问题剖析 | 学习笔记
【火车头采集】如何采集一个网页的多张图片并且下载
【火车头采集】如何采集一个网页的多张图片并且下载
166 0
【火车头采集】如何采集一个网页的多张图片并且下载