用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 ,如需转载请自行联系原作者


相关文章
|
10月前
|
前端开发 JavaScript UED
前端性能的性能指标之首次内容绘制(FCP)
首次内容绘制(First Content Paint)是前端性能的一个重要指标,因为它是用户体验的一部分,并且对于网页的响应速度和可接受性有很大的影响。
298 0
|
2月前
|
数据可视化
GEE错误——影像加载过程中出现的图层无法展示的解决方案
GEE错误——影像加载过程中出现的图层无法展示的解决方案
27 0
|
4月前
|
监控 C#
C# | 使用Chart动态展示实时折线图数据
实时折线图是展示数据变化趋势的有效方式,可以用于监控系统性能、物理实验、股票走势等多个领域。 在C#中,我们可以使用Chart控件来实现实时折线图的展示,其动态性和可交互性可以帮助用户更好地理解数据。 本文将介绍如何使用Chart控件展示实时折线图数据,希望能帮助读者快速掌握这个技能,应用于实际场景中。
203 0
C# | 使用Chart动态展示实时折线图数据
|
7月前
|
数据可视化 5G 云计算
干货:实时渲染和离线渲染的区别?实时云渲染又是什么?
常见的渲染类型有以下几种:实时渲染、离线渲染、实时云渲染、混合渲染。那么什么是实时渲染?实时渲染和离线渲染有哪些区别?各自有哪些典型应用场景...... 有没有人感觉知道了,但又没完全知道? 今天小编就尽量为大家用简单易懂的方式先解释下实时渲染、离线渲染、实时云渲染这3个概念。
干货:实时渲染和离线渲染的区别?实时云渲染又是什么?
|
8月前
|
前端开发 JavaScript
前端动画(动态)图标库收集
前端动画(动态)图标库收集
99 0
|
运维 数据可视化 物联网
1分钟解读什么是实时渲染
点量云实时渲染系统通过将3D模型放在服务器上,通过实时渲染技术流化出网页地址,让用户可以在网页上直接和3D模型交互实时渲染,让用户像看视频一样看到交互的实时效果。举个简单的例子,在智慧城市、园区等3D模型中,常用的有天气变化、白昼交替。用户在点了不同的季节或者天气(雨雪风电)等按钮后,就可以在网页里直接看到模型在相应场景下的效果。
220 0
1分钟解读什么是实时渲染
|
iOS开发
检索业务:基本数据渲染和排错
检索业务:基本数据渲染和排错
检索业务:基本数据渲染和排错
|
JavaScript Go
埋点统计优化,首屏加载速度提升
埋点统计在我们业务里经常有遇到,或者很普遍的,我们自己网站也会加入第三方统计,我们会看到动态加载方式去加载jsdk,也就是你常常看到的insertBefore操作,我们很少考虑到为什么这么做,直接同步加载不行吗?统计代码会影响业务首屏加载吗?同步引入方式,当然会,我的业务代码还没加载,首屏就加载一大段统计的jsdk,在移动端页面打开要求比较高的苛刻条件下,首屏优化,你可以在埋点统计上做些优化,那么页面加载会有一个很大的提升
138 0
埋点统计优化,首屏加载速度提升
|
JavaScript 前端开发
vue中使用echarts实现动态图表多数据展示,带源码(x轴动态时间刷新,实时更新展示数据)
之前写项目,需要写一个图表动态展示出当前服务器的信息,在网上找了很多相关的文章,但是关于vue中使用echarts动态图表的内容比较少,自己写过之后就在这里记录一下,希望能够对大家有所帮助
782 0
vue中使用echarts实现动态图表多数据展示,带源码(x轴动态时间刷新,实时更新展示数据)
|
存储 运维 并行计算
实时渲染和预渲染有什么区别
实时渲染用于交互式渲染场景,如在3D电脑游戏中,通常每帧必须在几毫秒内渲染。它的意思是计算机在计算屏幕的同时输出和显示屏幕。典型代表是Unreal和Unity。像《黑色神话:悟空》这样的游戏便是使用虚幻引擎4创造出来的。实时绘制的特点是可以实时控制,交互非常方便。