Kamon:监测JVM上运行的应用程序

kamon

Kamon是一个有着良好响应性的JVM应用程序的监控工具。在开发中,我们往往喜欢使用那些类型安全的响应性平台框架(Scala、Akka、Spray 或者 Play),不过只要你使用的是JVM,Kamon就可以帮你监控到你要的信息。

你可以通过几下几种方案将Kamon整合到你的应用中去:

  • 使用已有的API去手动创建监测记录,或者对其他追踪手段去找寻应用中感兴趣的点
  • 你可以使用Kamon中提供的诸多字节码组件来监控与跟踪那些主流、热门的库与工具集,然后你就可以在不改动任何一行代码的情况下,很快看到你的应用程序目前的表现情况。
  • Kamon还支持同时使用多种监控方式,你可以在使用Kamon现成工具集去获取监控信息的同时,再结合对应的API去强化特定的监控与跟踪行为,以提升效果。

主要功能

Kamon为开发者预先装载了很多模块可供选择。有些模块提供了字节码的处理装置,不过这也意味着,你得在你的应用中使用AspectJ Load Time Weaver。

kamon-core

该模块包含了Kamon的核心监控跟踪API,同时还有包含了一些必须的订阅组件。kamon-core是所有其他kamon模块必须依赖的基础组件,而其自身却无需依赖AspectJ。kamon-core内部采用了Akka,通过使用Akka 的Actor Message 机制去监控跟踪的订阅信息。

kamon-scala  需要 aspectj

为Scala与Scalaz特性提供字节码处理工具

kamon-akka 需要 aspectj

提供二进制工具对Akka的actor,router和dispatcher进行监控,同时还能通过actor message(包括系统级与用户级的)对TraceContext进行监控

kamon-akka-remote 需要 aspectj

提供二进制组件将TraceContext在分布式的项目中进行传输共享。

kamon-statsd

将指定监控的信息统计到StatD

kamon-datadog

将指定监控的信息统计汇总到Datadog。需要说明的是:尽管Datadog的代理也是基于StatsD的方式,但是它们相互之间还是有一些微妙的区别的,所以有必要单独为Datadog建立一个新的信息汇集模块。

kamon-jdbc (experimental) requires aspectj

为JDBC的API提供二进制组件,用来对常规的JDBC操作的性能表现进行监控,如果有TraceContext,还可以对数据库连接进行监控。

kamon-log-reporter

该模块提供一个快捷的监控信息反馈功能,而且无需你额外启动一个后台监控任务。

kamon-newrelic

New Relic提供跟踪数据报表

kamon-play-23 and kamon-play-24 需要 aspectj

为Play! 应用提供字节码工具去实现自动化的TraceContext管理。

kamon-spray 需要 aspectj

为Spray应用提供字节码工具去实现自动化的TraceContext管理。

kamon-system-metrics

对CPU,内存,文件系统,网络,系统负载和系统上下文切换等等信息进行监控,同时支持对JVM的内存回收,线程,堆空间,非堆空间和类加载等等进行监控。

kamon-annotation 需要 aspectj

该模块提供一种便捷的注解的方式来创建监控跟踪组件

kamon-autoweave

这个模块可以让你在JVM启动之后,将AspectJ Loadtime weaving代理加入其中。这样做可以更加灵活,不过很显然,在这个模块开始运作之前,那些已经加载好的类是不会关联到这个模块之中的。

安装

将模块按需加入到你的工程中

所有的Kamon模块都可以通过Maven中央仓库直接获取到,开发者只需要加入相应的依配置到工程即可。每个模块的具体配置各不相同,不过Kamon的group id都是统一的io.kamon,模块名称也可以在artifacet的命名中清晰找到,相信不会对开发者造成困扰。在这里,我们还是举出一些常用构建工具的配置例子:

Maven

SBT

Kamon最近的版本正是通过采用SBT跨版本的特性,通过在artifacts加上对应的_2.10或者_2.11后缀,来成功发布在Scala的2.10与2.11两个版本上。如果你对Scala以及我刚刚提到的这一段还不是太了解的话,没关系,那就直接按照上面的Maven范例,去下载目前最新的2.11版本吧,然后你会在概况中看到一套完整的Kamon的模块列表。

开始使用Kamon

你需要使用Kamon.start(..)方法来加载Kamon模块,从而使用Kamon相关的监控跟踪API。这个操作在系统运行流程中只需要执行一次即可,所以在你的应用程序中,请尽早触发Kamon的这个启动流程,以保证所有的Kamon设备与API能够在之后正常运行。大胆地把这一行加在你的应用代码的开头吧,像这样:

Java

Scala

当然,在启动Kamon的时候还可以使用你自定义的配置。点击这里查看如何配置Kamon。当你的应用程序对应的工作结束之后,记得使用Kamon.shutdown()来关闭Kamon。

可选方案:通过AspectJ Wearver来配置启动你的应用

请注意,这个步骤要求你的应用有AspectJ组件,如果你并没有的话…恭喜你可以跳过了。

使用AspectJ weaver来启动你的应用,这非常简单:你只需要在JVM的启动命令中加入-javaagent参数项,参数值为weaver的文件地址,然后,就搞定了!当然,具体一些细节的操作与配置做取决于你的应用的开发与部署方式,这里给出一些最常见的开发部署场景范例:

SBT-ASpectJ

SBT-ASpectJ-Runner

手动

如果在你使用AspectJ Weaver的时出现一些配置错误,Kamon便会在你的日志文件中非常醒目地给出一大堆错误提示,不过Kamon并不会因为这些错误去杀掉这个应用程序进程。

如果你的开发部署方式在上面的范例中不存在,而你又不知如何操作的话,可以参考这里

开发资源

  • 文档:包括新手指南、配置说明、核心组件、集成、后台支持技术等
  • 开发博客

协议

Kamon遵循Apache 2.0开源协议发布。

官方网站:http://www.kamon.io/
开源地址:https://github.com/kamon-io/Kamon

打赏支持我整理更多优质资源,谢谢!

打赏编辑

打赏支持我整理更多优质资源,谢谢!

任选一种支付方式

2 1 收藏

资源整理者简介:凝枫

非典型性程序员,爱做一些和写程序毫不相干的事 个人主页 · 贡献了46个资源 · 1


直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1439 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer