开源监控系统,大名鼎鼎的有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/
相关推荐
同时,可以使用Prometheus来监控Graphite Exporter自身的健康状态。 4. **指标暴露**:Graphite Exporter会暴露一个HTTP端点,Prometheus可以通过这个端点收集转换后的指标。默认情况下,这个端点通常是`/metrics`。...
开源项目“Thraxil SAMLare”是一个用于收集数据并将其发送到Graphite的工具,主要关注SAML(Security Assertion Markup Language)环境中的监控和度量。该项目由Thrashil组织开发,其核心功能是从expvar端点提取...
FlinkMetrics是Flink的监控系统组件,它允许用户定义和注册各种性能指标,并将它们暴露给监控工具,如Prometheus、Graphite、InfluxDB、Elasticsearch和自定义的可视化工具。 在Flink 2018峰会中,来自阿里的技术...
- Graphite是一个用于监控时间序列数据的工具。本章阐述了Graphite的设计理念,包括数据收集、存储和可视化方面的实现细节。 8. **The Hadoop Distributed File System (HDFS)** - Robert Chansler, Hairong Kuang...
它允许开发者从运行中的Java应用程序中收集性能指标,并将这些数据转发到各种监控系统,如Graphite、Elasticsearch、MySQL等。这个工具在IT运维和系统监控领域有着广泛的应用,因为它能够帮助用户实时了解应用的健康...
Netflix Spectator是Netflix公司开发的一个开源库,设计用于监控分布式系统中的各种指标,如内存使用、网络流量、响应时间等。通过注册器和仪表的概念,Spectator允许应用程序轻松地报告其内部状态,并将这些信息...
JmxTrans 是一个轻量级、高性能的 JMX 度量提取器,可以定期查询 JMX MBeans(Managed Beans),并将结果转换成各种输出格式,如 Graphite、InfluxDB 或者直接发送到监控系统,如 New Relic。这使得开发者能够轻松地...
- 选择了开源的Mesos调度框架,每个Framework代表一个ES集群,Executor代表ES节点,但不支持某些特性,因此进行了定制化设计。 - 整个平台基于Mesos,使用Docker容器化所有组件,并通过Marathon进行调度。 - 使用...
此外,还可以与Prometheus、Graphite等监控系统集成。 7. 动态配置更新:1.8版本引入了动态配置更新功能,允许在不中断服务的情况下修改配置文件。 8. 增强的日志记录:Haproxy支持丰富的日志格式和自定义日志内容...
Skyline 是一个强大的开源时间序列数据库,用于监控和性能分析。这个“skyline 开发列子”可能是为了帮助初学者理解和实践Skyline的开发过程。在这个小列子中,我们可以预见到它会涵盖Skyline的基本概念、安装步骤、...
Spring Social 是 Spring Framework 的一部分,旨在提供一种简单的方式来连接和交互与各种社交网络服务,Yammer 是一个企业社交网络平台,常用于内部沟通和协作。 【标签】"开源项目" 表明这两个库都是开放源代码的...
RabbitMQ是基于AMQP(Advanced Message Queuing Protocol)协议的开源消息队列系统,它在分布式系统中广泛用于实现异步任务处理、解耦组件以及提高系统的可扩展性。本教程将深入探讨RabbitMQ服务的3.7.3版本,这是一...
Apache Storm是一个开源的流处理框架,广泛应用于实时数据处理、大数据分析和在线机器学习等领域。性能测试是确保Storm在高负载环境下稳定运行和高效处理数据的关键步骤。 在"storm性能测试方案与结果-public.docx...
Grafana是一款开源的数据可视化工具,广泛应用于数据监控和分析的场景中,其最新版本为5.2。Grafana的核心功能是提供丰富的图形化展示选项,能够支持包括柱状图、折线图、点图、饼图、表格等多种图表类型,并具备...
《Spark Metrics库详解:vp-schemas-2.2.7.zip与spark-metrics.zip的剖析》 在现代大数据处理领域,Apache ...由于这两个项目都是开源的,开发者可以根据自己的需求对其进行定制,进一步丰富Spark生态系统的功能。
这个库使得Finagle,一个强大的、可扩展的网络服务框架,能够更好地与其他依赖于Codahale Metrics的系统集成,如Graphite、InfluxDB或Elasticsearch,用于收集和可视化服务性能数据。 Finagle,由Twitter开发并开源...
《Metrics-In-Action》是汪文君老师关于Metrics系列课程的源码库,这个课程主要讲解如何在实际项目中运用...课程源码可以帮助学员深入理解Metrics的内部机制,并能将其应用到自己的项目中,实现更高效的系统监控。