Hermes是提供给Java应用使用的Apm解决方案。
-
基于Apache Skywalking Agent Core.
- 复用了对于byte-buddy的封装
- 复用了logging日志模块
- 复用了config配置
- 复用了BootService
- 做了一些优化定制
-
Tracing协议基于Open-telemetry.
- Skywalking在实现Open-tracing的时候做了一些选择。考虑到OAP对于异步Span的处理,会让一整个TraceSegment完全结束后再上报,有一定的内存压力(弃用该策略不是因为它不好,只是选择不同)。
- Open-telemetry相对来说对于内存的使用会小一些,每个Span结束后就会立刻上报。
- Open-telemetry的baggage相对难用,因此本项目自行实现了baggage.
- 开源项目对于Open-telemetry的兼容性较好,CNCF成员,未来可期。
-
插件.
- elasticsearch: 实现了elasticsearch-rest-client的插件
- lettuce5: 实现了lettuce5的插件,可监控对redis的操作
- jdbc8: 实现了jdbc8的插件,可监控对mysql的操作(该插件的实现是搭配了mybatis5的,单独使用可能有问题)
- threading: 增强了
ThreadPoolExecutor
和ForkJoinTask
,实现跨线程的链路追踪 - TODO: SpringMVC、Spring Service、RocketMQ、MyBatis...
-
UI
-
配置
- 应用名和环境
- hermes.app.name: 应用名
- hermes.app.env: 环境(例如: dev、test、pre、pro)
- 阿里云链路追踪
- 跨线程
- 修改
Config.Plugin.JdkThreading.THREAD_CLZ_PREFIXES
的配置,加上你的项目包名前缀,比如com.taobao.buy2
- 修改
- 应用名和环境
-
安装
- 将该项目下载到本地
- 执行
mvn clean install -Dmaven.test.skip=true
- mac用户将会在桌面上看到一个
hermes-agent
目录(windows用户请修改hermes-parent.pom、hermes-plugin.pom的相关属性) - 执行
java -javaagent:/path/to/hermes-agent/hermes-agent.jar -Dhermes.app.name=ur-app-name -Dhermes.app.env=dev -server -jar /path-to-your-app/app.jar
启动你的应用