SkyWalking 是观察性分析平台和应用性能管理系统。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
特性:
多种监控手段,语言探针和service mesh多语言自动探针,Java,.NET Core和Node.JS轻量高效,不需要大数据模块化,UI、存储、集群管理多种机制可选支持告警优秀的可视化方案Skywalking 技术架构
整个系统分为三部分:
agent:采集tracing(调用链数据)和metric(指标)信息并上报OAP:收集tracing和metric信息通过analysis core模块将数据放入持久化容器中(ES,H2(内存数据库),mysql等等),并进行二次统计和监控告警webapp:前后端分离,前端负责呈现,并将查询请求封装为graphQL提交给后端,后端通过ribbon做负载均衡转发给OAP集群,再将查询结果渲染展示Skywalking也提供了其他的一些特性:
配置重载:支持通过jvm参数覆写默认配置,支持动态配置管理集群管理:这个主要体现在OAP,通过集群部署分担数据上报的流量压力和二次计算的计算压力,同时集群也可以通过配置切换角色,分别面向数据采集(collector)和计算(aggregator,alarm),需要注意的是agent目前不支持多collector负载均衡,而是随机从集群中选择一个实例进行数据上报支持k8s和mesh支持数据容器的扩展,例如官方主推是ES,通过扩展接口,也可以实现插件去-- 支持其他的数据容器支持数据上报receiver的扩展,例如目前主要是支持gRPC接受agent的上报,但是也可以实现插件支持其他类型的数据上报(官方默认实现了对Zipkin,telemetry和envoy的支持)支持客户端采样和服务端采样,不过服务端采样最有意义官方制定了一个数据查询脚本规范:OAL(Observability Analysis Language),语法类似Linq,以简化数据查询扩展的工作量支持监控预警,通过OAL获取数据指标和阈值进行对比来触发告警,支持webhook扩展告警方式,支持统计周期的自定义,以及告警静默防止重复告警数据容器
由于Skywalking并没有自己定制的数据容器或者使用多种数据容器增加复杂度,而是主要使用ElasticSearch(当然开源的基本上都是这样来保持简洁,例如Pinpoint也只使用了HBase),所以数据容器的特性以及自己数据结构基本上就限制了业务的上限ÿ