什么是可观测性:
随着微服务, 云原生等的技术快速发展,架构复杂性提高,在定位修复bug时,要考虑更多的问题。
原来的单体应用拆分成了一个个小的服务,每个服务可能网络环境不同, 资源配额不同,同时各个服务之间是否可以正常调用也必须考虑。
这时 应用的可观测性显的十分重要,目前应用的可观测性主要体现在以下三方面:
- 指标(metrics)
-
- 监测 系统cpu利用率, 网络吞吐量, 内存利用率等系统指标
- 比如说应用在进行 大io 操作时,分配的内存可能不够,这时指标监控就显的特别重要
- 日志(log)
-
- 打印日志被认为是程序中最简单的工作之一, 可能一行代码就可以搞定,当然输出日志很容易,但面对上百个服务同时输出日志,分析和收集日志显的较为困难。
- 链路追踪(trace)
-
- 像dubbo服务的相互调用,bug可能出现在一个基础服务,但是其他服务在调用时可能会出现报错,这时如果要快速定位问题所在,链路追踪非常重要。就好比如, 队伍中每个人都向后面传话一样,传到最后话可能不对或者变了意思,链路追踪就是要看看 是哪个人出现了问题。
接下来,跟大家介绍一下构建完善的可观测性系统常见的技术选型。
下图是CNC Cloud Native Interactive Landscape 列出的著名的一些产品
深蓝色框的代表已经毕业的产品, 浅蓝色的代表正在CNCF正在孵化中的产品。
Metrics -指标监控
prometheus+grafana
官网:
简单介绍一下:
Prometheus 一个开源的系统监控及报警工具,它前身是 SoundCloud的告警工具包。在2016年加入了 Cloud Native Computing Foundation,是继Kubernetes之后的第二个托管项目
Prometheus 从根本上存储的所有数据都是时间序列数据(Time Serie Data,简称时序数据)。时序数据是具有时间戳的数据流,该数据流属于某个度量指标(Metric)和该度量指标下的多个标签(Label)。除了提供存储功能,Prometheus 还可以利用查询表达式来执行非常灵活和复杂的查询
Grafana 是一个监控仪表系统,它是由 Grafana Labs 公司开源的的一个系统监测 (System Monitoring) 工具。它可以大大帮助你简化监控的复杂度,你只需要提供你需要监控的数据,它就可以帮你生成各种可视化仪表。同时它还有报警功能,可以在系统出现问题时通知你。
Prometheus可以说是数据源, Grafana 是 用 Prometheus 也就是数据源来的数据进行个性化显示的仪表盘系统。
那么数据源里的数据从何而来呢,这就需要 prometheus的exporter了,详见文档:、
大致界面
Log -日志
Kinbana+elasticsearch+fluentd
官网
免费且开放的搜索:Elasticsearch、ELK 和 Kibana 的开发者 | Elastic
Fluentd | Open Source Data Collector
通过上面 prometheus+ grafana 我们可以看的出,大致流程可能分三部分, 带入到本部分大致就是
- 收集 (fluentd)
- 存储 (elasticsearch)
- 展示(Kinbana)
大致界面
Trace -链路追踪
SKYWALKING
官网:
架构图:
整个架构,分成上、下、左、右四部分:
考虑到让描述更简单,我们舍弃掉 Metric 指标相关,而着重在 Tracing 链路相关功能。
- 上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传递给服务器。
- 下部分 SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
- 右部分 Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。而我们目前采用的是 ES ,主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主。
- 左部分 SkyWalking UI :负责提供控台,查看链路等等。
目前skywalking已经发展成 可观测性 一体化平台, 既能够在skywalking上同时实现指标监控,日志收集分析,链路追踪的功能。
但是底层依然是需要上面提到的技术的,所以建议大家用skywalking 的话 只用他的链路追踪版本—— Rocketbot UI。
Rocketbot UI和skywalking代理 下载地址如下:
skywalking.apache.org/downloads/#…
大致界面:
图片转载自:cloud.tencent.com/developer/a…
大家可以关注我的公众号,及时获取最新文章