当前位置: 首页 > 科技观察

一篇文章给大家带来了k8s的observability

时间:2023-03-12 09:46:36 科技观察

的概念。“可观察性”一词实际上是近年来从控制理论中借用的一个引进概念,但实际上,计算机科学中关于可观察性的研究内容已经有多年的实践积累。通常,人们会将可观察性分解为三个更具体的研究方向,即:日志收集、链路追踪和聚合指标。在2017分布式追踪峰会(2017DistributedTracingSummit)之后,彼得·布尔贡(PeterBourgon)写了一篇总结文章《Metrics, Tracing, and Logging》,系统地阐述了三者的定义、特点,以及它们之间的关系。它们之间的关系和区别已被业界广泛认可。k8s结合可观察性指标(Metrics)的主要目的是监控(Monitoring)和预警(Alert)。例如,当某些指标达到自动处理的风险阈值时触发事件或提醒管理员进行干预。监控数据格式标准化,相关指标汇总,方便快速定位故障。基础层:监控主机及底层资源,如:CPU、内存、网络吞吐量、硬盘I/O、硬盘使用率等。通信情况:指主机与主机之间的网络情况。通信是互联网最重要的基石之一。如果两台主机之间出现网络延迟时间大、丢包率高等网络问题,就会导致业务阻塞。中间层:VM指标监控是指JVM监控,比如GC时间,线程数,FGC/YGC耗时等信息。当然,其他语言也有自己独特的统计指标信息。是中间件层的监控,比如:Nginx、Redis、ActiveMQ、Kafka、MySQL、Tomcat的资源消耗。应用层:HTTP访问吞吐量、响应时间、返回码、性能瓶颈,包括客户端监控。统一监控告警平台:Prometheus+grafana日志(Logging)日志的职责是记录离散事件,通过日志可以事后分析程序的行为,比如调用了哪些方法,操作了哪些数据,等等。通常,打印日志被认为是程序中最简单的任务之一。当你在调试一个问题的时候,你可能遇到过这样的情况,“只要记得一开始打印这里的日志”。可见,这是一项不费吹灰之力的工作。当然也有一些系统利用日志的可追溯和结构化的特点来实现相关功能,比如我们最常见的WAL(Write-AheadLogging)。WAL是在操作前写入日志,然后执行操作;如果没有任何操作,那么可以利用日志中的结构化和时间戳信息来恢复下次启动时的操作,最典型的就是MySQL。重做日志。统一的日志数据:将特定时间发生的事件以结构化的形式记录下来,并生成文本数据。统一日志分析:elkorloki+grafana链路追踪(Tracing)在单体系统时代,追踪的范围基本仅限于堆栈追踪(StackTracing)。比如你在调试程序的时候,在IDE中打了个断点,你看到的CallStack视图上的内容就是trace;写代码的时候调用Exception::printStackTrace()方法处理异常,输出的Stack信息也是trace。在微服务时代,跟踪不局限于调用栈。一个外部请求需要内部多个服务的联动响应。这时候完整的调用轨迹会跨越多个服务,包括服务之间的网络传输信息和服务内部的各种调用栈信息。因此,分布式系统中的跟踪在国内通常被称为“全链路跟踪”(后面我直接称之为“链路跟踪”),在很多资料中也被称为“分布式跟踪”(DistributedTracing)。).服务调用链跟踪。这个监控系统应该从对外的API开始,然后关联实际的后台服务,再进一步关联这个服务的依赖服务,直到最后一个服务(比如MySQL或者Redis),这样整个系统就可以把所有的服务都关联起来联系在一起。近年来,各种链接跟踪产品层出不穷。市场上的主流工具包括Datadog等一揽子业务解决方案,AWSX-Ray、GoogleStackdriverTrace等云计算厂商产品,以及SkyWalking、Zipkin、Jaeger等开源社区的优秀产品。Linktracking+request-scopedmetrics(Request-scopedmetrics)请求级统计:基于链接跟踪,结合相关统计数据,从而了解数据与数据、应用与应用之间的关系。Linktracking+log(Request-scopedevents)请求级事件:这是链接中比较常见的组合模式。日志本身对于每个项目都是独立存在的。将链接跟踪收集到的信息整合到日志中,可以使日志具有关联性,并在事件维度之外多了一个新的维度,即上下文信息。日志+可聚合事件(Aggregatableevents)聚合级事件:这是日志中比较常见的组合。通过统计指标对这部分信息进行分析,可以得到相关的指标数据。三者结合(Request-scoped,aggregateableevents)三者结合可以理解为请求级+聚合级事件,从而形成一个丰富的、全局的观察体系。小结1、事件日志的职责是记录离散的事件,通过这些记录分析程序的行为;2、跟踪的主要目的是排查问题,比如分析调用链的哪一部分,哪个方法出错或阻塞,输入输出是否符合预期;3.度量是指对系统中某一类信息的统计聚合。主要目的是监测和预警。当某些衡量指标达到风险阈值时,将触发事件自动处理或提醒管理员进行干预。