Istio可观测性 Istio的可观测性包括metrics,日志,分布式链路跟踪以及可视化展示。 目录 Istio可观测性 Prometheus 配置说明 Option 1:合并metrics Option 2:自定义抓取metrics配置 TLS设置 总结 Jaeger 概述 跟踪上下文的传递 使用 根据配置错误的严重性,可以将Istio资源配置中检测到的任何问题标记为错误或警告。 下面将尝试对服务端口名称进行无效性修改来查看Kiali如何报告错误: 将details服务的端口名称从http修改为foo # kubectl patch service details -n default 点击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!". # .
可观测性旨在让每一位工程师能够根据对所有系统和应用程序的数据分析,主动地对工作任务进行优先级排序。 当我们想到“可观测性”时,我们大多数人将其定义为“指标、日志和跟踪”。并非如此。 换句话说,可观测性不仅仅是收集和整理数据集。它不仅仅是关于警报、关联和正常运行时间。 可观测性是关于理解各个用户体验的一切。 具体到可观测性的当前形式,主动性并不是基于我们的日志、指标和跟踪的前瞻性指标。 我们的可观测性供应商是否衡量了中断体验和收入损失的下游影响? 不幸的是,现在的答案是:他们没有。 我们知道可观测性需要走向何方。了解我们系统的状态只是第一步。下一步是了解我们用户体验的状态。
可观察性之所以昂贵,有两个原因: 可观测性需要比被观测的系统至少可靠一个数量级。否则,你将继续调试你的可观察性堆栈,而不是使用它来保持你的应用程序运行。 可观测性是什么? 可观测性有许多名称,如监测、审计、遥测、测仪。忽略这些细微差别,所有这些词本质上的意思都是一样的:度量你的基础设施、平台和应用程序,以了解它是如何运行的。 如果你熟悉精益思维——即构建-度量-学习——那么可观察性是十分自然。可观测性通过“测量”阶段闭合反馈回路。它允许你的团队对应用程序进行快速更改,快速适应其用户基础和环境,而不会产生不必要的意外。 良好的可观察性可以将“凌晨2点被唤醒”转换为日常检查。 但是可观测性究竟是什么呢? 当谈到可观察性时,我们通常尝试回答三个问题: 我的用户满意吗? 我的应用令人满意? 我的服务器良好吗? 短期日志-例如,最近7天-应该是“可谷歌的”,也就是说,你应该能够在几秒钟内执行全文搜索。像Elasticsearch/Kibana[3]和Loki[4]这样的项目最适合这个目的。
可观测性之所以昂贵,有两个原因: 可观测性比被观测系统至少可靠一个数量级。否则,你将继续调试你的可观察性堆栈,而不是使用它来保持你的应用程序运行。 在这篇文章中,让我们深入探讨一下可观测性:它是什么,不同类型的可观测性,以及实现可观测性在技术上意味着什么。在这篇文章的最后,你会明白为什么你应该抵制住诱惑,然后在可观测性上节省资金。 良好的可观测性可以将凌晨2点被唤醒转换为日常检查。 真正的可观测性是什么 当谈到可观测性时,我们通常尝试回答三个问题: 我的用户满意吗? 我的应用是否令人满意? 我的服务令人高兴吗? 短期日志-例如,最近7天-应该是可搜索的,也就是说,你应该能够在几秒钟内执行全文搜索。像Elasticsearch/Kibana和Loki这样的项目最适合这个目的。 总结 缺乏可观测性就像闭着眼睛开车:你不知道离灾难有多近。你开得越快,路越忙,你就越要小心。 可观测性也是一样:你越想让你的团队越快地添加功能,你就越应该在可观测性上投资。
如今,“可观测性”已经成为首选方法,可观测性项目随处可见。 但是可观测性并未实现其承诺。许多组织已经尝试了各种规模的环境。 在许多情况下,可观测性项目产生了大量数据和认知过载,但没有对系统可靠性带来明显改变。 此外,实现可观测性需要进行大规模的集成工作: 开发人员必须检测他们的代码以发出正确的跟踪、指标和日志,使系统变得可观察。检测仍然是一个艺术。 与反应性流量整形相比,这种主动方法有助于始终保持用户旅程 SLO,并提供无缝和吸引人的用户体验。 聪明的用户会知道这只是提供可观测性的不同方式。 通过接受关键用户旅程和特定旅程 SLO 等概念,我们可以更好地将可观测性实践与提供卓越用户体验的终极目标对齐。
自打去年以来,可观测性Observability这个概念又非常的火,按照我的感受,在运维领域,这个概念是近两年即AIOps之后,热度最高的一个了。 无论是国内还是海外的运维相关的公司,都给了自己一个新的定位,就是可观测性平台,或者叫做可观测云,相对应的产品也是层出不穷。 通常我们在IT领域看到的关于可观测性概念的介绍,都会提到它是Metrics, Traces以及Logs的结合,通常会以下图来呈现。 这里我找了一个Splunk的Demo,我们可以直观的感受一下,可观测性的实际效果是怎样的。 大家看完这个示意,对可观测性就有更直观的理解了,不做赘述。 可观测性之业务架构的理解 如果SRE方法论和AIOps是落地Observability的两个核心,那对业务架构的理解,我对它的定位就是核心中的核心。
这种遥测技术提供了服务行为的可观测性,使运维人员能够排查故障、维护和优化应用程序,而不会给开发人员带来其他额外的负担。 Istio 生成以下类型的遥测数据,以提供对整个服务网格的可观测性: Metrics(指标):Istio 基于 4 个监控的黄金标识(延迟、流量、错误、饱和)生成了一系列服务指标,Istio 还为网格控制平面提供了更详细的指标 当然这仅仅只能用于测试环境,在生产环境可以单独安装 Prometheus 进行有针对性的配置优化。
在本篇博文中,笔者将试图解析基于 eBPF 的可观测性是什么,以及 eBPF 可以增强网络可观测性、Kubernetes 可观测性、安全可观测性以及性能可观测性的一些方法。 Kubernetes 观测性 其实,除了最基础的网络层面,eBPF 在 Kubernetes Cluster 观测性层面也带来巨大优势。 性能观测性 针对资源的性能可观测性讨论较少,但随着应用程序变得更加多样化并转向微服务和容器化云原生环境,eBPF 所提供的增强可观测性功能变得尤为重要。 安全观测性 针对安全性观测,或许是 eBPF 天生所具备的优势。eBPF 能够为用户提供了对整个系统中通信流的内在、深入的可见性。 eBPF 是一个令人印象深刻的可观测性工具,与更传统的可观测性解决方案相比,它可以提供更深入的洞察力。
OpenTelemetry 是一个开源的可观测性框架,可帮助从应用程序收集和导出追踪 (traces)、指标 (metrics) 和日志 (logs)。 这些是可观测性的构建块,它们可以帮助我们了解应用程序中发生的事情。 导出器将数据转发到像 Grafana 这样的可观测性后端。 遥测数据被发送到可观测性后端,Grafana 的 grafana/docker-otel-lgtm 是一个一体化的 OpenTelemetry 后端,可以轻松上手。 在这篇文章中,我们分解了可观测性的关键概念,探讨了 OpenTelemetry 的工作原理,并在 Go 中构建了一个可重用的遥测包,以保持整个应用程序中日志记录、指标和跟踪的清晰和一致。
可观测性系统扩大了数据的复制范围,因此默认不应记录完整提示词和回答。更稳妥的做法是采用字段白名单,只记录内容长度、消息数量、模型标识、响应状态和服务端明确返回的用量字段。 具体依赖版本应由项目锁文件固定,并在升级后验证OTel导出器及上游接口兼容性。 第三步:部署Collector应用直接连接每一种观测后端会增加配置和迁移成本。 总结大模型可观测性的核心不是展示更多图表,而是建立可回答工程问题的数据结构:用Trace串联入口和上游调用,用Span区分业务阶段,用Metric观察总体趋势,用统一错误分类支撑告警。 这样即使后续更换模型提供方或观测后端,业务代码仍能保留一致、可审计的调用链。
Kubernetes环境下的可观测性 OpenTelemetry 能够很好的解决云计算虚拟化时代的可观测性问题,但是Kubernetes环境下的可观测性不同于虚拟机环境。 传统基础架构并不会这么“动态”,虚拟机不会频繁的重启,各种可观测性数据都能够长期在一个稳定的节点上采集。这也使得Kubernetes环境下可观测性更加困难。 Gartner最近发布了他们对于2022技术趋势的一个预测报告,其中有一个条目叫做Cloud-Native Platform,它所表达的这一类平台会向他的用户提供一种“可扩展的弹性的”服务,也就是用户能够直接使用 Serverless环境下可观测性的价值 面对这些困惑,各大厂商Serverless产品依然提供了可观测性的支持,这里的原因与可观测性的目的相关,正如前文介绍,可观测性更像是一种白盒方式观察系统的手段, 这对于很多客户是一个比较新的事物,客户从自己熟悉的VM环境迁移到 Serverless 平台,碰到问题往往会怀疑是平台的问题,需要平台协助排查,这在客户数量比较少的时候,平台可以做到贴身服务客户,但一旦用户量上来,这不是一种可持续的方式
关于为什么需要链路追踪系统和对于可观测性的一些知识也可以参考前面的文章: 《可观测性神器之Micrometer》 那下面就进入正文看一看Micrometer提供的Tracing门面是如何定义链路追踪系统的 低开销: 收集数据增加很少甚至没有开销,同时最大限度地提高跟踪工作的可移植性。 可扩展: 厂商无关的API, 内部包含一个带有仪器SPI的核心模块、一组包含各种示踪剂桥接的模块、一组包含专用跨度报告机制的模块和一个测试套件。 这样的老牌链路追踪门面,Micrometer Tracing并不是最成熟的,不过OpenTracing已经归档不再维护,OpenTracing和OpenCensus合并为OpenTelemetry之后统一了可观测性门面 可以看到在未来Micrometer必定会在Java的可观测性领域越来越火,从成熟的Meter埋点到 Tracing 链路追踪。感兴趣的话可以试一试。
可观测性 在了解Micrometer之前可以先来简单了解下云原生微服务时代下人人追捧的可观测性概念,这会更有利于我们理解Micrometer的作用,在传统单体应用时代对于服务的检查和诊断可以借助于简单的报表 这时候就有人提出了可观测性的概念,可观测性是个比较大的概念就像是我们开发人员有了透视能力一样一眼可以看穿系统的内部运行状况,当然这是不现实的。 所以就有人进行了对它进行了具体的定义,广为流传又易于理解的说法是可观测性的三大支柱说:Metrics、Tracing、Logging 。 可观测性三大支柱说 可以看到中医有“望闻问切”的方式来诊断病人的病症,我们有了可观测性三大支柱Metrics、Tracing、Logging来帮助我们了解和排查系统运行健康状况。 Gauge (仪表盘): 一般用来统计有上限可增可减的数据,仪表是获取当前值的句柄。仪表的典型示例是集合或映射的大小或处于运行状态的线程数。
Loki 接下来我们来将访问日志发送到 Grafana Loki 进行统一的日志管理,Loki 是一个水平可扩展、高可用的多租户日志聚合系统。 OpenTelemetry OpenTelemetry(简称 OTel) 是一个开源的可观测框架,用于生成、收集和描述应用程序的观测数据。 和 Collector,用于捕获分布式跟踪和度量数据,并将其发送到分析软件、存储库或其他服务,OTel 的目标是提供一套标准化、与厂商无关的 SDK、API 和工具集,用于将数据摄取、转换和发送到可观测性后端
在本篇博文中,笔者将试图解析基于 eBPF 的可观测性是什么,以及 eBPF 可以增强网络可观测性、Kubernetes 可观测性、安全可观测性以及性能可观测性的一些方法eBPF 基础功能 eBPF Kubernetes 观测性 其实,除了最基础的网络层面,eBPF 在 Kubernetes Cluster 观测性层面也带来巨大优势。 性能观测性 针对资源的性能可观测性讨论较少,但随着应用程序变得更加多样化并转向微服务和容器化云原生环境,eBPF 所提供的增强可观测性功能变得尤为重要。 安全观测性 针对安全性观测,或许是 eBPF 天生所具备的优势。eBPF 能够为用户提供了对整个系统中通信流的内在、深入的可见性。 eBPF 是一个令人印象深刻的可观测性工具,与更传统的可观测性解决方案相比,它可以提供更深入的洞察力。
可观测性领域是一个动态且异质的领域。 可观测性周期表中的三个新元素是: OpenTelemetry eBPF ClickHouse 这些元素各自独立,具有完全不同的特征和功能,但一种新型的可观测性竞争者正在将它们组装成强大的框架。 能够利用这些存储库并构建零仪器产品赋予了可观测性供应商改变游戏规则的能力。 ClickHouse 第三个元素是ClickHouse,是我们勇敢的新可观测性架构中的外星技术。 这更可能表明,可观测性是一个快速发展的领域和一个不断增长的市场。可观测性处于不断变化的状态 - 面临着越来越大的需求 - 它正在应用于更多的技术、架构和领域。它还被要求提供更丰富的见解和更低的成本。 这是因为可观测性不是一个零和游戏 - 它是一个不断增长的生态系统,许多范式和技术可以共存、整合和相互补充。
这些项目包括两家机构开发 AI 训练,以更好地了解模型性能和一致性。另一个项目利用遥测数据为 大型语言模型 和 AI 应用程序创建 可观测性 接口。 正如 Erickson 在 9 月 24 日的主题演讲中所述,英伟达依靠 Grafana Cloud 来提供可观测性支持。 — BC Gain (@bcamerongain) 2024 年 10 月 3 日 其中一个更有趣的项目——名为 LLo11yPop——是一个用于可观测性的 LLM。 遥测数据用于检查 LLM 训练状态 英伟达还与 Grafana 合作开发了一个由 Grafana 主导的 用于训练可观测性的应用程序;英伟达是 Grafana Labs 的设计合作伙伴。 “我们目前与英伟达的合作将有助于为运行和监控 GPU 基础设施的人员以及构建和训练在 GPU 上运行的模型的人员提供更有用的可观测性。
构建可测试性的 Rust 工程 最近 reddit 上有不少人对 Rust 的工程如何进行组织, 以及如何才能进行更加完善的测试进行了一些讨论. 下面的文章给出了一个 web 服务的例子, 演示了如何来组织 Rust 中的模块, 以及如何让代码更加具有测试性.
通过可观测性,能更好的了解系统内部运行状态。metrics, logging 和分布式 tracing 之间的相互连通能更好的推断系统的运行状态,以便调试应用程序中的异常、延迟和性能。 Context`and可以通过对观察的生命周期事件作出反应来创建计时器、跨度和日志,例如:观测处理程序仅对受支持的观测实现作出反应。 ="LOKI"/> </root> </configuration> 2.4 RestTemplate 应用代码 我们利用 RestTemplate 发送一个请求,我们希望实现应用程序的全部可观测性 2.5 运行 我们已经准备好了这个链接下整个可观测性基础设施的Docker设置。按照以下步骤运行基础架构和两个应用程序。 四、下一步 基于社区的反馈,将继续改进的可观察性。并且打算在今年11月GA。