2019独角兽企业重金招聘Python工程师标准>>>

Graphite引入的前提

之前公司的监控系统使用mysql做过物理设备cpu,内存,磁盘和网卡等资源的数据统计功能,但是效果并不好。因为这些统计数据不适合用mysql来存储,它们的量太大了,量一大,mysql数据库查询响应就变得非常缓慢。所以后来就把cpu,内存,磁盘和网卡等资源的数据统计功能去掉了。

最近对监控系统又增加了一些需求,主要也是一些数据统计的功能。所以如果还按以前的路来走,使用mysql来做,那么结局必然跟cpu,内存,磁盘和网卡等资源的数据统计功能是一样的。所以我们不能走老路,我们必须寻找新的解决方案。

后来经过调研,我们找到了Graphite这个工具。它天生就是用来做数据统计功能的,正好满足我们目前的需求,所以我们对它进行了研究。

Graphite简介

Graphite是一个用Python写的web应用,是一个企业级的系统监控工具,可以在廉价机硬件上运行。它由三个软件组件组成:

1:carbon - 一个Twisted守护进程,监听并接收时间序列数据

2:whisper - 一中固定大小的数据库,用来存储时间序列数据,在设计上类似于RRD

3:graphite-web – 使用Django框架实现的一个webapp,它可以从whisper数据库获取时间序列数据并且进行展示。

Graphite的系统架构如下所示:

图中的metrics就是发送给Graphite系统的数据指标,这些发送过来的数据指标,首先通过carbon模块进行收集,然后存储在whisper数据库中,最后graphite-web从whisper数据库中获取这些数据指标并进行展示。

如何给Graphite喂数据

Graphite不负责收集数据,数据的收集工作是由使用Graphite的人来做的。也就是说图中metrics的发送工作是由使用Graphite的人来做的。你想使用Graphite存储什么数据,你就给Graphite发送什么数据。Graphite采用简单的文本协议,给Graphite发送数据指标时,使用它定义好的数据格式给他发送数据指标就可以。

Graphite的指标数据的文本格式定义如下:

metric_path value timestamp\n

1:metric_path : 指标名称

2:value : 指标值

3;timestamp : 时间戳

下面是使用shell给Graphite发送指标的例子:

ORT=2003

SERVER=graphite.your.org

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

如果要使用代码给Graphite喂数据,那么应该是使用下面几个步骤:

1:使用Graphite所在机器的IP和端口(2003或者2004)建立一个到Graphite的网络连接

2:收集数据指标

3:把收集的数据指标格式化成“metric_path value timestamp\n“格式的字符串

4:把格式化后的字符串通过之前建立的网络连接发送出去

Graphite跟现有监控系统整合

如果现有的监控系统想使用Graphite来做数据统计相关的功能,需要做以下三件事情:

1:在收集端添加给Graphite发送数据指标的代码

2:在展示端使用graphite-web提供的API接口获取whisper数据库里面的数据,并生成适合现有监控系统的API接口,供监控系统前端页面使用

3:增加各项指标的前端展示页面,展示这些指标

当然目前对于收集端和展示端,都有很多现成的开源组件可以使用,比如指标收集端的工具有Statsd等,指标展示端口的工具有grafana等。

使用开源的工具,还是基于graphite做二次开发,视自己的实际情况而定,应该来说都不复杂。

-----------------------------------------------------

欢迎关注我的微信公众号 ^_^

转载于:https://my.oschina.net/u/1263964/blog/701664

Graphite简介相关推荐

  1. Graphite 简介

    2019独角兽企业重金招聘Python工程师标准>>> 一. Graphite 项目简介 Graphite是一个企业级的监控工具,可以在廉价机硬件上运行.最初由Chris Davis ...

  2. 数据库简史(精简版)

    目录 一.RDBMS(关系数据库,Relational DBMS) 数据库 早期史 1.1 Oracle 简史 1.2 MySQL 简史 1.3 Microsoft SQL Server 简史 1.4 ...

  3. linux查找influx的安装位置,InfluxDB学习之InfluxDB的安装和简介 | Linux大学

    最近用到了 InfluxDB,在此记录下学习过程,同时也希望能够帮助到其他学习的同学. 本文主要介绍InfluxDB的功能特点以及influxDB的安装过程.更多InfluxDB详细教程请看:Infl ...

  4. RedAlert简介

    RA简介 RedAlert(一下简称RA)是神马搜索引擎团队打造的一个基于指标的监控服务,它从类似ganglia或graphite这样的数据源获取指标,并在指标异常的时候通过邮件发送告警 RA服务由两 ...

  5. InfluxDB学习之InfluxDB的安装和简介

    系列详情请看:<InfluxDB系列教程>: InfluxDB是一个当下比较流行的时序数据库,InfluxDB使用 Go 语言编写,无需外部依赖,安装配置非常方便,适合构建大型分布式系统的 ...

  6. InfluxDB简介,InfluxDB的基本操作

    一.InfluxDB 简介 InfluxDB 是用Go语言编写的一个开源分布式时序.事件和指标数据库,无需外部依赖. 类似的数据库有Elasticsearch.Graphite等. 其主要特色功能 1 ...

  7. 【Grafana】【一】Grafana 简介

    Grafana 简介 Grafana 是一个可视化工具,简单点说就是用来展示数据的.它和Zabbix.Prometheus 有本质区别,在于它不能解决监控问题,仅用于展示.也就是说,在监控领域,Gra ...

  8. Graphite系统监控

    转载至 : http://my.oschina.net/fufangchun/blog/232895?p=1 目录[-] 一.简介: 二.Graphite的安装及配置 0.Graphite目录 1.安 ...

  9. metrics和graphite监控

    简介   Graphite 是一个数据绘图工具,安装完成之后需要喂它数据,就可以根据你的需要将数据生成制定的格式(绘图.json.xml等),还可以和Nagios结合完成报警功能.具体的数据采集工具是 ...

最新文章

  1. cygwin中写c语言程序,在windows下怎么利用Cygwin进行编程
  2. mvp 在 flutter 中的应用
  3. linux 网络服务器 源码下载,linux下 各类tcp网络服务器的实现源代码.doc
  4. 【LeetCode】回文数
  5. cf#582div3 D——暴力
  6. python中括号的作用_Python3--中括号[]与冒号:在列表中的作用
  7. requestmapping注解访问404_开发人员都必须知道的Spring注解概览
  8. python encodings模块_python-ImportError:没有名为“ encodings”的模块
  9. github项目上传与克隆
  10. DataGrid固定列宽
  11. 队列Q----双数组下标查找
  12. 泰拉瑞亚tModLoader 模组浏览器离线解决方法
  13. SpringBoot中Session超时原理说明
  14. 第七篇,STM32串口通信编程
  15. 计算机数据类型误差怎么解决,误差分析与数据处理
  16. 基于Arduino的双向交通灯系统
  17. windows 资源监视器
  18. 电力行业工程设计资质怎么办?专业类别有哪些?
  19. H.265/HEVC解码器 C 参考代码
  20. 第8章第14节:制作企业宣传册的公司团队第一页面 [PowerPoint精美幻灯片实战教程]

热门文章

  1. 开启「浏览器多线程下载」选项
  2. tomcat HTTP与HTTPS同时开启并且同时可以访问
  3. IBM研究院院长:量子计算“大爆发”将在十年内到来
  4. getReader()/getInputStream() has already been called for this request
  5. 【Python习题】简易英汉字典(project-ssss)(题目的坑解析+实现代码)
  6. 抓取chrome所有版本密码
  7. 【stm32f407】时钟树以及SystemInit剖析
  8. 【更新】【封装必备】封装辅助 - 清理优化工具 For Win7(IT天空会员专版)
  9. MPLS原理和配置实验
  10. mysql 触发器delete_MySQL之触发器