开源监控系统,大名鼎鼎的有nagois,catis。公司就有运维采用nagios作服务器与服务状态监控,同时结合插件提供邮件短信报警功能;catis通过snmp协议对服务器进行监控,利用RRDTool绘制漂亮的报表供你做性能分析。
这些是运维人员的利器,然而服务开发人员却很少去使用这样的工具,因为它们难以做到对我们开发的服务内部运行状态的监控。假如,你想监控自己开发服务的响应时间,五分钟一个点去绘制报表,或者监控你的服务各个时间内部缓存命中率等信息,这些工具基本帮上不忙。
常用方案
为了满足这类需求,很多时候,开发人员会是自行开发一套监控系统,将服务内部的状态,定时发往监控服务器,将这些状态存入数据库,然后自行汇制报表。如果你要监控的服务是个集群的话,就还需要解决监控数据汇总的问题。
另一种常用方案,将各种状态数据打印到日志文件中,定时将这些日志进行汇总,然后对汇总结果运行job分析(有些是汇总到hadoop中,跑mapreduce job),这样做的话监控效果的实时性较差。
为了避免上述的工作量,我们接触并使用了两种可用于服务内部数据监控,提供出色报表效果的的开源系统,分别是Graphite与Ganglia。
Graphite
Graphite给我最大的体会是它使用方式的简单易用。catis采用snmp协议,意味着需要在被监控节点上安装snmp代理;ganglia的监控也需要你在被监控节点上安装gmond用于采集信息。Graphite使用简单的文本协议,只需要简单地通过TCP socket向graphite server发送文本数据
quentinxxz.server.count 1234 1440245016
其中quentinxxz.server.count是一项具体的监控指标的名称, 1440245016是数据产生的时间戳,1234是该时间截下的指标数值。随后你就可以在graphite web上看到相应的数据曲线。
Graphite使用python实现,主要包含三个部份:
1.whisper
Whisper is a fixed-size database, similar in design to RRD (round-robin-database)
whipser是一个固定文件大小的数据库。这意味着whipser的数据文件被创建时具有固定的大小。
例我们对quentinxxz.server.count条目,在/opt/graphite/conf/storage-schemas.conf文件中
做如下配置
[quentinxxz]
pattern = quentinxxz.server.count
retentions = 1min:50d,10min:50d
1min表示以1分种为精度记录一个点,50d表存储50天。所以创建文件的需要保存的点数量,应为1 * 60 * 24 * 50.
whisper另一个有趣的地方是其强大的聚合功能,上述配置中10min表示我们配置的另一精度,whisper会根据我们指定的聚合方式(例如,取10个点中的最大值,最小值,平均值),按照10min一个点的精度将结果存储到另一个存储区中。具体聚合方式的配置位于/opt/graphite/conf/storage-aggregation.conf文件中。
此外,RRD是不接收先于当前最近时间截的update的,而whisper则可以做到(但是这种需求好像不多)。关于更多RRD与whisper的比较,可以参考文档 http://graphite.wikidot.com/whisper
2. carbon (监控数据的 Twisted 守护进程)
Carbon是基于Twisted实现,是Graphite的后端实现。
Carbon的主要作用,是接收被监控节点的连接,收集各个指标的数据,将这些数据写入缓存并最终持久化到whisper存储文件中去。Carbonr能保证Graphite web 绘制出实时接到的指标更新,其原理也很简单位,有点类似lucence,carbon接收到的数据会先存在缓存中,然后再一起写入whisper的硬盘存储。Graphite web通过向carbon-cache发起请求,会同时查询位于缓存与硬盘中的数据。
3. graphite-web
Graphite web是基于Django实现的webapp,其主要功能自然是绘制报表与展示。我不并建议直接使用Graphite web,因为尽管其功能还是比较强大,但界面让我觉得丑得要死。这里我推荐使用第三方的一个Graphite前端开源应用Tessera。
使用Tessera的前提还是需要Graphite web的安装,因为它会直接请求Graphite web获取数据。Tessera的界面还是相当酷炫的,比较符合技术人员的审美。这是它吸引我去使用Graphite的一个重要的加分项。
此外,其灵活的配置,可以让我们自由组合,我们的Dashboard。 不多说,直接上图。
Graphite使用总结
个人使用感受,Graphite配合Tessera,最主要的优点是在于界面简洁漂亮,传输协议简单。其的缺点在于,当你的应用是一个大集群时,目前Graphite没有为你把集群中来自不同服务器的数据整合汇总的能力,例如,对集群中有10个搜索结点的缓存命中情况进行监控,就需要采用10个不同的指标名称(一般在其中加入主机名区分),意味着10条不同的曲线,但无法直接利用Graphite进行汇总成一个指标或曲线,让你看到搜索集群整体的缓存命中情况。
20150822首发于3dobe.com http://3dobe.com/archives/160/
相关推荐
Grafana是一个开源的数据可视化和监控平台。 Grafana是一个开源的,拥有丰富dashboard和图表编辑的指标分析平台,和Kibana不同的是Grafana专注于时序类图表分析,而且支持多种数据源,如Graphite、InfluxDB、Elastic...
在网上找了很久,没有一篇很完整很清晰地介绍Statsd+Graphite搭建监控平台,正好边摸索边尝试边写下来,方便大家。 (Notice: 一开始我是在macOs Sierra下安装, 后来在Ubuntu上也安装)
前端开源库-graphitegraphite,一个用于graphite的node.js客户端。
dockerana, 支持Grafana和 Graphite的Docker 监控 dockeranaDocker hackathon幻灯片Docker dockercon14幻灯片概述:时间系列 Docker 仪器和可视化构建/测试在Ubuntu信任的时候,需要在boot2docker上测试需要跨多个
graphite-api-experiment, 实验 Graphite api服务器玩具项目不用于生产 石墨Golang中新一代 Graphite API服务器的实验版本,利用of并发构造的效率。目标是:速度,易于部署&优雅代码。此外,重写允许从根本上重新...
它还具有容错性,即失去一台后端机器会造成极小的数据损失(无论这台机器在内存中缓存了什么),如果你有足够的剩余容量来处理负载,就不会破坏系统。 从I/O的角度来看,在负载下,Graphite会非常迅速地对很多不同的...
docker-graphite, 在 Docker 图像中,Graphite + 碳 Graphite + 碳运行 Graphite 和碳缓存的all-in-one映像。 版本: 0.9.12.这里映像包含 Graphite 和碳缓存的默认默认配置。 启动这里容器将默认绑定下列主机端口:...
Grafana是一个开源,功能丰富用于Graphite,Elasticsearch,OpenTSDB,Prometheus和InfluxDB的图形编辑器与指标仪表板。
graphite-api, Graphite的ruby API工具包 描述使用收费 GraphiteAPI,可以提供两种方式与 Graphite 守护进程交互,第一种方法是使用收费的GraphiteAPI::Client 守护进程,第二个方法实现 Graphite 纯文本协议,这两...
赠送jar包:metrics-graphite-3.1.5.jar; 赠送原API文档:metrics-graphite-3.1.5-javadoc.jar; 赠送源代码:metrics-graphite-3.1.5-sources.jar; 赠送Maven依赖信息文件:metrics-graphite-3.1.5.pom; 包含...
graphite-project.github.io, Graphite 项目的未来网站 Graphite安装bundle install 或者'gem 安装 scss_lint github页面"'npm install正在运行/开发运行Grunt任务并启动osm服务器grunt serve建筑grunt
Monitoring with Graphite 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
docker-graphite-statsd, 用于 Graphite & Statsd的Docker 图像 用于 Graphite & Statsd的 Docker 映像立即运行 Graphite & StatsdGraphite & Statsd可能对安装程序很复杂。 这个映像将在几分钟内运行&
Graphite是计算机图形学,3D建模,数值几何的研究平台。可以用它处理obj文件,对齐进行渲染,修改等操作。
Monitoring with Graphite 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Graphite一种去中心化加密是Google's G-Suite的替代方案
赠送jar包:metrics-graphite-3.1.5.jar; 赠送原API文档:metrics-graphite-3.1.5-javadoc.jar; 赠送源代码:metrics-graphite-3.1.5-sources.jar; 赠送Maven依赖信息文件:metrics-graphite-3.1.5.pom; 包含...
20 亿指标,知乎 Graphite 极致优化
Bosun 是一个新型的监控和告警系统,由Stack Exchange团队打造,使用golang编写,支持定义复杂的告警规则,支持OpenTSDB、Graphite、Logstash-Elasticsearch 等数据源。bosun 将是 zabbix、nagios的有力竞争者。
graphite安装依赖组件