文档章节

Graphite简介

摩云菜
 摩云菜
发布于 2016/06/28 09:45
字数 1042
阅读 149
收藏 0
点赞 1
评论 2

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做二次开发,视自己的实际情况而定,应该来说都不复杂。

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

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

© 著作权归作者所有

共有 人打赏支持
摩云菜
粉丝 27
博文 34
码字总数 42147
作品 0
闵行
高级程序员
加载中

评论(2)

摩云菜
摩云菜

引用来自“摩云飞”的评论

nms 系统技术栈内容又扩展了啊~~原来那一套东西打算彻底换掉了吧~13
不是换掉,是新增,mysql数据库做不了数据统计,增加的graphite主要用来做数据统计用的
摩云飞
摩云飞
nms 系统技术栈内容又扩展了啊~~原来那一套东西打算彻底换掉了吧~13
Graphite 介绍

Overview 概述 What Graphite is and is not ? Graphite能做什么和不能做什么? Graphite does two things: Graphite 做两件事情: Store numberic time-series data 存储 numberic time-seri......

nao
2016/08/19
413
0
graphite的搭建

因为公司打算监控kafka队列信息,但是又不想直接安装KafkaOffsetMonitor这个工具,希望能够将kafka的监控信息内嵌到grafana上面,在这个项目的github上面无意中看到这个个工具可以当作一个插...

liuhuang9496
2017/04/01
0
0
使用apache和nginx部署graphite的相关配置

写在前面 我们在测试的时候,可以使用下面的命令来启动graphite 但是这种启动方式只可用于测试,生产环境下,启动graphite不能用这种方式。 生产环境下需要使用apache或者nginx来部署graphit...

摩云菜
2016/07/14
195
0
如果查看应用性能图表是一种信仰

**Esty 当年发布 statsd 写过一篇文章:[Measure Anything, Measure Everything](https://codeascraft.com/2011/02/15/measure-anything-measure-everything/](https://codeascraft.com/201......

OneAPM蓝海讯通
2015/12/11
47
0
用graphite diamond做监控

用graphite diamond做监控 文章 开局先贴两个文章,值得一读 很赞的blog 另一篇介绍graphite的文章 恩怨 无论是什么系统,只要上线,就需要运维,这时候很想看一些监控的图表,graphite就很方...

duoduo3_69
2014/10/28
0
0
使用graphite和grafana进行应用程序监控

graphite+grafana 介绍 grafana,按照官方的说法是 。grafana 负责数据的展示,可以配置各种不同的数据源,其中包括 graphite。 graphite 包含多个模块,这里我们使用的模块包括: Whisper:...

ChanningBJ
2016/11/21
631
0
奥美前高管段培力入Graphite Software任首席营销官

近日,业界领先的安卓多角色解决方案提供商Graphite Software宣布,正式任命段培力为公司首席营销官(CMO),他将向首席执行官(CEO)Alec Main直接汇报。 段培力是数字营销与广告行业的专家...

玄学酱
04/18
0
0
Grafana 2.5 发布,仪表盘和图形编辑器

Grafana 2.5 发布,主要更新如下: 详细介绍请看:发行说明 下载地址:src="http://grafana.org/download" href="http://grafana.org/download">http://grafana.org/download Grafana 是 Gr......

oschina
2015/10/29
2.2K
4
StatsD!次世代系统监控的核心

在互联网业务蒸蒸日上的今时今日,系统架构日渐复杂,随着软件产品和工程团队的变革,许多开源的监控工具应运而生,其中有一些相当出名,比如 Zabbix、Nagios 还有 StatsD。也有一些问题被大...

OneAPM蓝海讯通
2015/12/15
70
0
如何深入理解 StatsD 与 Graphite ?

众所周知,StatsD 负责收集并聚合测量值。之后,它会将数据传给 Graphite,后者以时间序列为依据存储数据,并绘制图表。但是,我们不知道,基于 http 访问的图表在展示时,是基于每秒钟的请求...

OneAPM蓝海讯通
2015/09/28
82
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

idea tomcat 远程调试

tomcat 配置 编辑文件${tomcat_home}/bin/catalina.sh,在文件开头添加如下代码。    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7829" Idea端配......

qwfys
今天
1
0
遍历目录下的文件每250M打包一个文件

#!/usr/bin/env python # -*- utf-8 -*- # @Time : 2018/7/20 0020 下午 10:16 # @Author : 陈元 # @Email : abcmeabc@163.com # @file : tarFile.py import os import tarfile import thr......

寻爱的小草
今天
1
0
expect同步文件&expect指定host和要同步的文件&构建文件分发系统&批量远程执行命令

20.31 expect脚本同步文件 expect通过与rsync结合,可以在一台机器上把文件自动同步到多台机器上 编写脚本 [root@linux-5 ~]# cd /usr/local/sbin[root@linux-5 sbin]# vim 4.expect#!/...

影夜Linux
今天
1
0
SpringBoot | 第九章:Mybatis-plus的集成和使用

前言 本章节开始介绍数据访问方面的相关知识点。对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数...

oKong
今天
13
0
win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
今天
2
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
今天
2
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 vim 4.expect [root@yong-01 sbin]# vim 4.expect#!/usr/bin/expectset passwd "20655739"spawn rsync -av ro...

lyy549745
今天
1
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
今天
1
0
matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
今天
3
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部