APM (Application Performance Management & Monitoring)四种实现思路
- 基于日志系统,探针只负责对日志加上编号,又类似ELK的系统进行收集、处理、展示。这方面没有很成熟的产品,一般都属于公司内部封装的框架。
- 自动探针,适用语言:Java、C#、PHP、Node.js等等存在VM的语言。绝对大多数的商业产品和热门的开源产品都属于这个系列。
- 全手动探针,优势是适用范围广,最有名的就是Zipkin的整个生态系统,分布式追踪几乎无处不在。也是现在全球运用最广泛的分布式监控系统。
- 同时支持自动和手动模式的探针,适用语言同样是Java、C#、PHP、Node.js等等存在VM的语言,由于技术复杂性提高,运用的较少。优点是入门方便,同时使用灵活。商业上主要是Instana,开源主要是sky-walking提供了技术解决方案。
三大模块:
- 探针或sdk :负责数据采集和发送。探针或 SDK 是应用程序的收集端。一般使用插件的模式,自动探针一般是不需要修改程序,而 SDK 则是需要修改部分配置或者代码。skywalking 就是自动探针为主,zipkin-brave 就是 Zipkin 的 Java 手动探针
- collector模块 :负责数据收集、分析、汇总、告警和存储。Collector 模块,这个根据不同的 APM 实现,可能由一个或者多个子系统构成。Collector 负责对探针和 SDK 提供网络接口(TCP、UDP、HTTP 不同形式接口)
- UI ,负责高实时性展现。包括但不限于 Trace 的查询,统计数据展现,拓扑图展现,VM 或进程相关信息等,监控关键数据的展现