在之前的平台中,对于组件之间的网络流向不具备直接的可观测性,用户组件间通信出现问题,只能通过传统命令行工具进行手动排查,而 cilium 的 Hubble 服务可以提供 UI 界面向用户展示实时的流量状态 ,同时可以将这些指标暴露给 Prometheus 进行聚合整理,让用户可以更直观的对底层网络状态进行观测监控。 开启 Hubble UI 服务 cilium 的网络可观测性由 Hubble 服务提供,在安装 cilium 时,默认不会安装 Hubble ,可以通过以下命令开启 Hubble 服务 helm upgrade
Istio可观测性 Istio的可观测性包括metrics,日志,分布式链路跟踪以及可视化展示。 目录 Istio可观测性 Prometheus 配置说明 Option 1:合并metrics Option 2:自定义抓取metrics配置 TLS设置 总结 Jaeger 概述 跟踪上下文的传递 使用 Option 2:自定义抓取metrics配置 内置的demo profile会安装Prometheus,并包含了所有必要的scraping配置。 根据配置错误的严重性,可以将Istio资源配置中检测到的任何问题标记为错误或警告。 点击YAML查看Istio的destination rule规则,Kiali用颜色高亮除了未通过有效性校验的行 ?
BCC(可观测性) 目录 BCC(可观测性) 简介 动机 安装 安装依赖 安装和编译LLVM 安装和编译BCC windows源码查看 BCC的基本使用 工具讲解 execsnoop opensnoop btrfs, xfs, zfs*) biolatency biosnoop cachestat tcpconnect+tcpaccept+tcpretrans runqlat profile BCC的开发 可观测性 动机 BPF保证加载到内核中的程序不会导致内核崩溃,且不会永远运行,但BPF本身的通用性又可以支持执行很多类型的计算。 p 185 # trace PID 185 only profile 推荐使用strace和perf trace命令 BCC的开发 本节介绍使用Python接口进行BCC的开发,包括两部分:可观测性和网络 可观测性 Lesson 1. Hello World 执行examples/hello_world.py,并在另一个会话中执行一些命令(如ls),此时会打印"Hello,World!". # .
可观测性旨在让每一位工程师能够根据对所有系统和应用程序的数据分析,主动地对工作任务进行优先级排序。 当我们想到“可观测性”时,我们大多数人将其定义为“指标、日志和跟踪”。并非如此。 换句话说,可观测性不仅仅是收集和整理数据集。它不仅仅是关于警报、关联和正常运行时间。 可观测性是关于理解各个用户体验的一切。 具体到可观测性的当前形式,主动性并不是基于我们的日志、指标和跟踪的前瞻性指标。 我们的可观测性供应商是否衡量了中断体验和收入损失的下游影响? 不幸的是,现在的答案是:他们没有。 我们知道可观测性需要走向何方。了解我们系统的状态只是第一步。下一步是了解我们用户体验的状态。
事实上,可观察性非常重要,到2021年2月,CNCF列出了102个可观察性项目[2]。可观察性不仅重要,而且昂贵。Netflix被戏称为“一个产生大量日志的平台,同时也是一个流视频平台”。 可观察性之所以昂贵,有两个原因: 可观测性需要比被观测的系统至少可靠一个数量级。否则,你将继续调试你的可观察性堆栈,而不是使用它来保持你的应用程序运行。 可观测性是什么? 可观测性有许多名称,如监测、审计、遥测、测仪。忽略这些细微差别,所有这些词本质上的意思都是一样的:度量你的基础设施、平台和应用程序,以了解它是如何运行的。 良好的可观察性可以将“凌晨2点被唤醒”转换为日常检查。 但是可观测性究竟是什么呢? 当谈到可观察性时,我们通常尝试回答三个问题: 我的用户满意吗? 我的应用令人满意? 我的服务器良好吗? 短期日志-例如,最近7天-应该是“可谷歌的”,也就是说,你应该能够在几秒钟内执行全文搜索。像Elasticsearch/Kibana[3]和Loki[4]这样的项目最适合这个目的。
事实上,可观测性非常重要,到2021年2月,云原生计算基金会(CNCF)列出了102个可观察性项目。可观测性不仅重要,而且昂贵。Netflix被戏称为一个产生大量日志的平台,同时也是一个流视频平台。 可观测性之所以昂贵,有两个原因: 可观测性比被观测系统至少可靠一个数量级。否则,你将继续调试你的可观察性堆栈,而不是使用它来保持你的应用程序运行。 在这篇文章中,让我们深入探讨一下可观测性:它是什么,不同类型的可观测性,以及实现可观测性在技术上意味着什么。在这篇文章的最后,你会明白为什么你应该抵制住诱惑,然后在可观测性上节省资金。 良好的可观测性可以将凌晨2点被唤醒转换为日常检查。 真正的可观测性是什么 当谈到可观测性时,我们通常尝试回答三个问题: 我的用户满意吗? 我的应用是否令人满意? 我的服务令人高兴吗? 短期日志-例如,最近7天-应该是可搜索的,也就是说,你应该能够在几秒钟内执行全文搜索。像Elasticsearch/Kibana和Loki这样的项目最适合这个目的。
自打去年以来,可观测性Observability这个概念又非常的火,按照我的感受,在运维领域,这个概念是近两年即AIOps之后,热度最高的一个了。 无论是国内还是海外的运维相关的公司,都给了自己一个新的定位,就是可观测性平台,或者叫做可观测云,相对应的产品也是层出不穷。 通常我们在IT领域看到的关于可观测性概念的介绍,都会提到它是Metrics, Traces以及Logs的结合,通常会以下图来呈现。 这里我找了一个Splunk的Demo,我们可以直观的感受一下,可观测性的实际效果是怎样的。 大家看完这个示意,对可观测性就有更直观的理解了,不做赘述。 可观测性之业务架构的理解 如果SRE方法论和AIOps是落地Observability的两个核心,那对业务架构的理解,我对它的定位就是核心中的核心。
如今,“可观测性”已经成为首选方法,可观测性项目随处可见。 但是可观测性并未实现其承诺。许多组织已经尝试了各种规模的环境。 在许多情况下,可观测性项目产生了大量数据和认知过载,但没有对系统可靠性带来明显改变。 此外,实现可观测性需要进行大规模的集成工作: 开发人员必须检测他们的代码以发出正确的跟踪、指标和日志,使系统变得可观察。检测仍然是一个艺术。 与反应性流量整形相比,这种主动方法有助于始终保持用户旅程 SLO,并提供无缝和吸引人的用户体验。 聪明的用户会知道这只是提供可观测性的不同方式。 通过接受关键用户旅程和特定旅程 SLO 等概念,我们可以更好地将可观测性实践与提供卓越用户体验的终极目标对齐。
架构说明定位Log4j 2 旨在用作审计日志记录,被设计为可靠、快速和可扩展,易于理解和使用的框架。简单的来说Log4j2就是一个日志框架,用来管理日志的。 无侵入性: 通过扩展机制自动加载,无需与代码完全耦合,代码中可以使用SLF4J门面插件架构: 插件化配置, 自动识别插件并在配置引用它们,极高的可扩展性属性配置支持: 可以在配置中引用属性,Log4j 可以看到Log4j2 核心的机制中考虑到了高性能,可扩展,可配置等需求,有效的解决着我们使用日志的痛点,那接下来就来从整体来了解下Log4j2。 2.根记录器不支持可加性属性,因为它没有父记录器--> <Root level="${LEVEL}"> <! 在日志打印格式中设置获取链路追踪id的获取方式%X{TraceId} ,然后在Java代码中将链路追踪Id放入日志诊断上下文MDC中即可如代码: MDC.put("TraceId", "123456");总结日志也是我们最常用的观测系统健康状况的方式
在本篇博文中,笔者将试图解析基于 eBPF 的可观测性是什么,以及 eBPF 可以增强网络可观测性、Kubernetes 可观测性、安全可观测性以及性能可观测性的一些方法。 基于上述 2 种不同的容器网络模型场景,我们可以看到,基于传统的观测模型,如果没有 eBPF,上面的场景将需要挖掘 iptables 日志,或部署资源密集型的第三方代理和工具来跟踪流量走向,然后尝试将它们映射到策略和应用程序进程中 2、粒度— eBPF 程序提供比日志更详细的信息,提高了整体可见性。 增强性能可观测性所涉及的功能场景包括如下: 1、映射 Pod 级网络吞吐量 2、端到端网络吞吐量和延迟 3、每个进程的 CPU 和内存利用率等能力。 eBPF 是一个令人印象深刻的可观测性工具,与更传统的可观测性解决方案相比,它可以提供更深入的洞察力。
OpenTelemetry 是一个开源的可观测性框架,可帮助从应用程序收集和导出追踪 (traces)、指标 (metrics) 和日志 (logs)。 这些是可观测性的构建块,它们可以帮助我们了解应用程序中发生的事情。 导出器将数据转发到像 Grafana 这样的可观测性后端。 遥测数据被发送到可观测性后端,Grafana 的 grafana/docker-otel-lgtm 是一个一体化的 OpenTelemetry 后端,可以轻松上手。 在这篇文章中,我们分解了可观测性的关键概念,探讨了 OpenTelemetry 的工作原理,并在 Go 中构建了一个可重用的遥测包,以保持整个应用程序中日志记录、指标和跟踪的清晰和一致。
这种遥测技术提供了服务行为的可观测性,使运维人员能够排查故障、维护和优化应用程序,而不会给开发人员带来其他额外的负担。 Istio 生成以下类型的遥测数据,以提供对整个服务网格的可观测性: Metrics(指标):Istio 基于 4 个监控的黄金标识(延迟、流量、错误、饱和)生成了一系列服务指标,Istio 还为网格控制平面提供了更详细的指标 当然这仅仅只能用于测试环境,在生产环境可以单独安装 Prometheus 进行有针对性的配置优化。 2/2 Running 0 25d 然后我们还是以 Bookinfo 应用为例,首先在浏览器中访问 http://$GATEWAY_URL/productpage REQUEST_COUNT 对应用程序的请求计数器,适用于 HTTP、HTTP/2 和 GRPC 流量。Prometheus 提供商将此指标导出为:istio_requests_total。
关于为什么需要链路追踪系统和对于可观测性的一些知识也可以参考前面的文章: 《可观测性神器之Micrometer》 那下面就进入正文看一看Micrometer提供的Tracing门面是如何定义链路追踪系统的 低开销: 收集数据增加很少甚至没有开销,同时最大限度地提高跟踪工作的可移植性。 可扩展: 厂商无关的API, 内部包含一个带有仪器SPI的核心模块、一组包含各种示踪剂桥接的模块、一组包含专用跨度报告机制的模块和一个测试套件。 这样的老牌链路追踪门面,Micrometer Tracing并不是最成熟的,不过OpenTracing已经归档不再维护,OpenTracing和OpenCensus合并为OpenTelemetry之后统一了可观测性门面 可以看到在未来Micrometer必定会在Java的可观测性领域越来越火,从成熟的Meter埋点到 Tracing 链路追踪。感兴趣的话可以试一试。
可观测性 在了解Micrometer之前可以先来简单了解下云原生微服务时代下人人追捧的可观测性概念,这会更有利于我们理解Micrometer的作用,在传统单体应用时代对于服务的检查和诊断可以借助于简单的报表 这时候就有人提出了可观测性的概念,可观测性是个比较大的概念就像是我们开发人员有了透视能力一样一眼可以看穿系统的内部运行状况,当然这是不现实的。 所以就有人进行了对它进行了具体的定义,广为流传又易于理解的说法是可观测性的三大支柱说:Metrics、Tracing、Logging 。 可观测性三大支柱说 可以看到中医有“望闻问切”的方式来诊断病人的病症,我们有了可观测性三大支柱Metrics、Tracing、Logging来帮助我们了解和排查系统运行健康状况。 Gauge (仪表盘): 一般用来统计有上限可增可减的数据,仪表是获取当前值的句柄。仪表的典型示例是集合或映射的大小或处于运行状态的线程数。
可观测性应该做什么 研发人员更愿意花费精力在Day0/Day1环节,这是一个系统的早期方案确定以及研发阶段,因为这个环节更加充满创造性,非常适合富有挑战精神的开拓者;但这一现象的反面是,Day2 环节往往被忽视 ,在这个环节需要真正部署应用,并监控、维护、优化、再迭代这个线上业务,直到整个应用生命周期的终点,这是一个长期且相对不那么有创造性的阶段,本文聚焦在Day2阶段的可观测性这一主题,结合云原生以及Serverless Gartner最近发布了他们对于2022技术趋势的一个预测报告,其中有一个条目叫做Cloud-Native Platform,它所表达的这一类平台会向他的用户提供一种“可扩展的弹性的”服务,也就是用户能够直接使用 Serverless环境下可观测性的价值 面对这些困惑,各大厂商Serverless产品依然提供了可观测性的支持,这里的原因与可观测性的目的相关,正如前文介绍,可观测性更像是一种白盒方式观察系统的手段, 的可观测性这一部分,不仅仅因为这一部分较少被关注,也因为如果想做好一个产品,Day 2 的工作会是占比更大也是更加重要的一部分。
._.productpage.default.svc.cluster.local default 在现在的 Telemetry V2 版本的架构中,访问日志直接通过服务网格的数据平面 Envoy 上生成并上报给日志后端 Loki 接下来我们来将访问日志发送到 Grafana Loki 进行统一的日志管理,Loki 是一个水平可扩展、高可用的多租户日志聚合系统。 OpenTelemetry OpenTelemetry(简称 OTel) 是一个开源的可观测框架,用于生成、收集和描述应用程序的观测数据。 和 Collector,用于捕获分布式跟踪和度量数据,并将其发送到分析软件、存储库或其他服务,OTel 的目标是提供一套标准化、与厂商无关的 SDK、API 和工具集,用于将数据摄取、转换和发送到可观测性后端 2 Running 2 (5h12m ago) 2d19h 接下来我们就需要在 Istio 中添加一个 OpenTelemetry 访问日志服务的 Provider,添加如下配置:
可观测性领域是一个动态且异质的领域。 可观测性周期表中的三个新元素是: OpenTelemetry eBPF ClickHouse 这些元素各自独立,具有完全不同的特征和功能,但一种新型的可观测性竞争者正在将它们组装成强大的框架。 能够利用这些存储库并构建零仪器产品赋予了可观测性供应商改变游戏规则的能力。 ClickHouse 第三个元素是ClickHouse,是我们勇敢的新可观测性架构中的外星技术。 这更可能表明,可观测性是一个快速发展的领域和一个不断增长的市场。可观测性处于不断变化的状态 - 面临着越来越大的需求 - 它正在应用于更多的技术、架构和领域。它还被要求提供更丰富的见解和更低的成本。 这是因为可观测性不是一个零和游戏 - 它是一个不断增长的生态系统,许多范式和技术可以共存、整合和相互补充。
在本篇博文中,笔者将试图解析基于 eBPF 的可观测性是什么,以及 eBPF 可以增强网络可观测性、Kubernetes 可观测性、安全可观测性以及性能可观测性的一些方法eBPF 基础功能 eBPF 基于上述 2 种不同的容器网络模型场景,我们可以看到,基于传统的观测模型,如果没有 eBPF,上面的场景将需要挖掘 iptables 日志,或部署资源密集型的第三方代理和工具来跟踪流量走向,然后尝试将它们映射到策略和应用程序进程中 2、粒度— eBPF 程序提供比日志更详细的信息,提高了整体可见性。 增强性能可观测性所涉及的功能场景包括如下: 1、映射 Pod 级网络吞吐量 2、端到端网络吞吐量和延迟 3、每个进程的 CPU 和内存利用率等能力。 eBPF 是一个令人印象深刻的可观测性工具,与更传统的可观测性解决方案相比,它可以提供更深入的洞察力。
可观测性通常在三个支柱的背景下定义 - 日志,指标和跟踪。现代云原生应用程序复杂而动态。为了避免意外和性能问题,您需要一个强大的可观测性堆栈。但是,可观测性是否仅限于收集日志,指标和跟踪呢? 类似 Flamegraphs 和 Gantt 图的跟踪可轻松可视化整个请求,因为它在复杂的分布式设置中穿越不同组件。 上下文可以被称为可观测性的第四支柱 - 关联不同的信号,并为可观测性的三大支柱提供更多信息。 上下文在可观测性中的作用 在故障排除中,上下文至关重要。它连接了指标、日志和跟踪中的不同信息片段。 可观测性的未来趋势是利用人工智能进行基于学习模式的快速数据解释,以优先处理关键信息,站点可靠性工程(SRE)和可观测性团队,同时过滤掉不太重要的数据。这种方法简化了对最具影响力问题的关注。 可观测性的未来被视为越来越依赖人工智能和有效的数据可视化,以使复杂的数据变得可理解且可操作。 对于希望增强数字体验和系统可靠性的组织来说,拥抱可观测性的这些不断发展的方面至关重要。
级别 1:辅助可观测性 - 引入了基本的 AI 辅助。系统提供基于简单异常检测的警报,但人工操作员仍然必须解释数据并采取纠正措施。 级别 2:部分可观测性自动化 - 系统可以分析数据并提供洞察或建议。 平衡技术进步和信任 虽然部分自动化(级别 2)在中短期内可以实现,条件自动化(级别 3)在预定义条件下对已知问题是可以实现的,但完全自动化(级别 4)存在重大挑战。 随着我们逐步进入这些级别,重要的是不仅要关注技术进步,还要确保 AI 驱动的可观测性系统是可信的、透明的、可适应的和安全的。为了促进采用,这些系统必须与业务需求、监管要求和行业标准保持一致。 确保 AI 决策的透明度并保证关键任务应用程序的安全将对于使这些系统有效和可持续至关重要。 通过尽早解决技术和信任方面的挑战,组织将能够更好地克服障碍,并继续朝着完全自主的可观测性迈进。 行业现状 遵循自主可观测性的这一框架,我们目前正在从手动时代过渡到辅助可观测性,并迅速向部分可观测性自动化的早期阶段迈进。