用graphite把收集到的数据渲染成图片-阿里云开发者社区

开发者社区> 技术小胖子> 正文

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


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
数据系统架构——Lambda architecture
传统系统的问题 “我们正在从IT时代走向DT时代(数据时代)。IT和DT之间,不仅仅是技术的变革,更是思想意识的变革,IT主要是为自我服务,用来更好地自我控制和管理,DT则是激活生产力,让别人活得比你好”——阿里巴巴董事局主席马云。 数据量从M的级别到G的级别到现在T的级、P的级别。数据量的变化
7916 0
QT编写图片数据转换工具
学习QT已经一个月了,觉得QT真是个好东西,他的这种跨平台机制简直太棒了!还有QML这东西,真牛B!在这段学习期间,因为一个项目的需要,需要将图片转成数据,然后传出去,那边接收到数据后再对应转换成图片,才有了下面这个小工具,开发环境:QT 4.7.0,在LINUX下面重新编译也可以在LINUX下面运行,代码不用改!先放张截图吧。
759 0
AGS无服务化分析基因数据 - mutect2 肿瘤样本分析
通过调用AGS的远程任务,可以完成一序列的基因数据的二级分析,不需要申请和持有云计算资源,就可以完成对海量数据的批量处理,目前可以支持人类全基因组,外显子,基因比对,宏基因组比对,Somatic胚系变异发现等业务场景的加速和低成本处理。 通过AGS调用mutect2任务来检测体细胞短突变, 短突变包括单核苷酸(SNV)以及插入和缺失(Indel)的改变。本文介绍如何通过AGS分析肿瘤样本。
392 0
DL之Attention:基于ClutteredMNIST手写数字图片数据集分别利用CNN_Init、ST_CNN算法(CNN+SpatialTransformer)实现多分类预测(二)
DL之Attention:基于ClutteredMNIST手写数字图片数据集分别利用CNN_Init、ST_CNN算法(CNN+SpatialTransformer)实现多分类预测
39 0
DL之Attention:基于ClutteredMNIST手写数字图片数据集分别利用CNN_Init、ST_CNN算法(CNN+SpatialTransformer)实现多分类预测(一)
DL之Attention:基于ClutteredMNIST手写数字图片数据集分别利用CNN_Init、ST_CNN算法(CNN+SpatialTransformer)实现多分类预测
39 0
浅析图数据库 Nebula Graph 数据导入工具——Spark Writer
本文主要讲解 Nebula Graph 基于 Spark 的分布式数据导入工具—— Spark Writer,它基于 DataFrame 实现,能够将多种数据源中的数据转化为图的点和边批量导入到图数据库中
307 0
Function Compute构建高弹性大数据采集系统
解决问题: 1.利用服务器自建数据采集系统成本高,弹性不足。 2.利用服务器自建数据采集系统运维复杂,成本高。
95 0
ML之DR之PCA:利用PCA对手写数字图片识别数据集进行降维处理(理解PCA)
ML之DR之PCA:利用PCA对手写数字图片识别数据集进行降维处理(理解PCA)
16 0
MaxCompute自定义extractor访问OSS文本文件DateTime类型数据
MaxCompute自定义extractor访问OSS文本文件,官方示例无法支持DateTime数据读入。该文档示范引入joda-time,解决自定义时间日期格式,读入外部非结构化数据。
1384 0
21119
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载