当前位置: 首页 > news >正文

湖北建设信息网官网济南优化推广网站seo

湖北建设信息网官网,济南优化推广网站seo,做网站建设出路在哪里,如何建设网站 知乎链路追踪是什么#xff1f;常用的链路追踪工具有哪些#xff1f;它们的异同、架构、工作流程及关键指标有哪些#xff1f;希望读完本文能帮您解答这些疑惑#xff01; 一、链路追踪简介 链路追踪技术#xff08;Distributed Tracing#xff09;是一种用于监控和分析分布…链路追踪是什么常用的链路追踪工具有哪些它们的异同、架构、工作流程及关键指标有哪些希望读完本文能帮您解答这些疑惑 一、链路追踪简介 链路追踪技术Distributed Tracing是一种用于监控和分析分布式系统中的请求流的技术。随着微服务架构的广泛应用单一请求可能会经过多个服务节点这使得监控和诊断问题变得复杂。链路追踪技术通过记录每个请求在各个服务节点中的详细信息帮助开发者理解和优化系统性能。以下是链路追踪技术的关键概念和常见工具 关键概念 Trace追踪一个Trace代表一次完整的请求处理过程从发起请求到最终完成可能会经过多个服务节点。 Span跨度一个Span代表在某个服务节点中对请求的处理过程。一个Trace由多个Span组成。 Span Context跨度上下文包含Trace ID和Span ID等信息用于关联各个Span。 Instrumentation插桩在代码中添加钩子用于记录Trace和Span信息。 常见工具 Zipkin一个开源的分布式追踪系统提供收集、存储、查询和可视化Trace数据的功能。支持多种语言的客户端库。 Jaeger由Uber开源的分布式追踪系统提供Trace数据的收集、存储和分析功能。与Kubernetes和Prometheus等工具集成良好。 SkyWalking一个开源的应用性能监控APM和分布式追踪系统设计用于监控和诊断微服务、云原生和容器化架构的应用。提供详细的链路追踪、性能监控、服务依赖分析等功能支持多种语言和框架。 OpenTelemetry一个统一的标准和工具集用于收集分布式系统的度量数据、日志和追踪信息。它是OpenTracing和OpenCensus的合并项目支持多种语言和后端。 Elastic APMElastic公司提供的应用性能监控解决方案集成了链路追踪功能可以与Elasticsearch和Kibana配合使用提供强大的数据分析和可视化能力。 工作原理 数据采集通过在代码中插入追踪代码或使用自动化工具收集请求的Trace和Span数据。 数据传输将采集到的数据发送到集中式的追踪系统如Zipkin、Jaeger或SkyWalking。 数据存储追踪系统会将接收到的Trace和Span数据存储在数据库中通常是高性能的NoSQL数据库。 数据分析和可视化使用追踪系统的界面或集成的可视化工具分析和展示Trace数据帮助识别性能瓶颈和故障点。 应用场景 性能优化通过分析Trace数据识别系统中的性能瓶颈并进行相应的优化。故障排查快速定位请求失败的服务节点缩短故障排查时间。依赖关系分析了解服务之间的调用关系优化服务依赖结构。SLA监控监控各个服务的响应时间和可用性确保满足服务级别协议SLA的要求。 实践建议 全面覆盖确保所有关键路径和服务都被追踪避免遗漏关键的Trace数据。性能开销注意追踪代码对系统性能的影响合理设置采样率避免过多的数据收集导致系统负担。安全和隐私在追踪数据中避免收集敏感信息确保数据传输和存储的安全性。 链路追踪技术是微服务架构中非常重要的监控手段通过详细的请求流分析帮助开发者更好地理解系统运行状态优化性能快速定位和解决问题。SkyWalking作为一种强大的链路追踪工具提供了全面的监控和分析能力是现代分布式系统中不可或缺的一部分。 二、常见链路追踪工具对比分析 对于常见的分布式追踪工具Zipkin、Jaeger、SkyWalking、OpenTelemetry和Elastic APM它们在应用场景和性能方面有一些差异。下面是它们的对比分析 工具主要应用场景性能特点支持语言和框架开源状态Zipkin- 性能优化和故障排查- 轻量级适合初学者和小规模部署Java、Go、Python、Ruby、Node.js 等是Jaeger- 微服务架构监控和性能优化- 高度可扩展支持大规模部署性能良好Java、Go、Python、Node.js 等是SkyWalking- 微服务和云原生环境下的应用性能监控和优化- 支持分布式链路追踪、性能指标监控、服务依赖分析Java、Go、Node.js、Python、PHP、.NET 等是OpenTelemetry- 跨语言和跨平台的应用监控和追踪- 标准化的API和数据格式支持多语言集成度高支持多种主流编程语言和框架是Elastic APM- Elasticsearch 和 Kibana 集成的应用性能监控- 强大的数据分析和可视化能力适合与Elastic Stack集成进行全面监控Java、Go、Python、Node.js 等是 分析说明 主要应用场景 Zipkin 和 Jaeger 主要用于性能优化和故障排查适合于需要快速定位和解决问题的场景。SkyWalking 专注于微服务和云原生环境下的应用性能监控和优化提供了详细的链路追踪和服务依赖分析。OpenTelemetry 提供了跨语言和跨平台的应用监控和追踪通过标准化API和数据格式支持多语言和集成度高。Elastic APM 与Elastic Stack集成提供强大的数据分析和可视化能力适合需要全面监控和日志分析的场景。 性能特点 Zipkin 和 Jaeger 轻量级且高度可扩展适合于小规模到大规模部署。SkyWalking 提供了性能指标监控、服务依赖分析等丰富功能适合复杂的微服务架构。OpenTelemetry 通过标准化API和数据格式保证了高效的数据采集和传输支持多种语言和框架。Elastic APM 提供了强大的数据分析和可视化能力与Elastic Stack的整合使得监控和调优更加全面。 支持语言和框架 Zipkin、Jaeger、SkyWalking 和 Elastic APM 均支持主流的编程语言如Java、Go、Python等覆盖了广泛的开发环境和技术栈。OpenTelemetry 更进一步地提供了跨语言和跨平台的支持使得在多语言和混合技术栈中的集成更加便捷。 开源状态 所有列出的工具均为开源项目拥有活跃的社区支持和持续的更新。 通过以上对比分析可以根据具体的需求和系统架构选择合适的链路追踪工具以实现最佳的应用监控和性能优化效果。 三、常见链路追踪工具架构及工作流程 Zipkin 架构及工作流程 #mermaid-svg-WfPxuKBX5z0kjsAk {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-WfPxuKBX5z0kjsAk .error-icon{fill:#552222;}#mermaid-svg-WfPxuKBX5z0kjsAk .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-WfPxuKBX5z0kjsAk .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-WfPxuKBX5z0kjsAk .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-WfPxuKBX5z0kjsAk .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-WfPxuKBX5z0kjsAk .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-WfPxuKBX5z0kjsAk .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-WfPxuKBX5z0kjsAk .marker{fill:#333333;stroke:#333333;}#mermaid-svg-WfPxuKBX5z0kjsAk .marker.cross{stroke:#333333;}#mermaid-svg-WfPxuKBX5z0kjsAk svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-WfPxuKBX5z0kjsAk .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-WfPxuKBX5z0kjsAk .cluster-label text{fill:#333;}#mermaid-svg-WfPxuKBX5z0kjsAk .cluster-label span{color:#333;}#mermaid-svg-WfPxuKBX5z0kjsAk .label text,#mermaid-svg-WfPxuKBX5z0kjsAk span{fill:#333;color:#333;}#mermaid-svg-WfPxuKBX5z0kjsAk .node rect,#mermaid-svg-WfPxuKBX5z0kjsAk .node circle,#mermaid-svg-WfPxuKBX5z0kjsAk .node ellipse,#mermaid-svg-WfPxuKBX5z0kjsAk .node polygon,#mermaid-svg-WfPxuKBX5z0kjsAk .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-WfPxuKBX5z0kjsAk .node .label{text-align:center;}#mermaid-svg-WfPxuKBX5z0kjsAk .node.clickable{cursor:pointer;}#mermaid-svg-WfPxuKBX5z0kjsAk .arrowheadPath{fill:#333333;}#mermaid-svg-WfPxuKBX5z0kjsAk .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-WfPxuKBX5z0kjsAk .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-WfPxuKBX5z0kjsAk .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-WfPxuKBX5z0kjsAk .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-WfPxuKBX5z0kjsAk .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-WfPxuKBX5z0kjsAk .cluster text{fill:#333;}#mermaid-svg-WfPxuKBX5z0kjsAk .cluster span{color:#333;}#mermaid-svg-WfPxuKBX5z0kjsAk div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-WfPxuKBX5z0kjsAk :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Zipkin Application Send Request Create Span Call Service B Create Span Call Service C Create Span Store Spans Query Spans Display Traces Zipkin Collector Zipkin Storage Zipkin Query Service Zipkin UI Client Service A Service B Service C 解释说明 Client 发起请求到 Service A。Service A 处理请求并创建一个Span将Span信息发送到 Zipkin Collector。Service A 调用 Service BService B 处理请求并创建另一个Span将Span信息发送到 Zipkin Collector。Service B 调用 Service CService C 处理请求并创建新的Span将Span信息发送到 Zipkin Collector。Zipkin Collector 收集所有的Span信息并存储到 Zipkin Storage 中。Zipkin Query Service 查询存储中的Span数据。Zipkin UI 显示完整的请求追踪信息和详细的Span数据。 Jaeger 架构及工作流程 #mermaid-svg-gmlRRHqRsbtS4uX4 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-gmlRRHqRsbtS4uX4 .error-icon{fill:#552222;}#mermaid-svg-gmlRRHqRsbtS4uX4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-gmlRRHqRsbtS4uX4 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-gmlRRHqRsbtS4uX4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-gmlRRHqRsbtS4uX4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-gmlRRHqRsbtS4uX4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-gmlRRHqRsbtS4uX4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-gmlRRHqRsbtS4uX4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-gmlRRHqRsbtS4uX4 .marker.cross{stroke:#333333;}#mermaid-svg-gmlRRHqRsbtS4uX4 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-gmlRRHqRsbtS4uX4 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-gmlRRHqRsbtS4uX4 .cluster-label text{fill:#333;}#mermaid-svg-gmlRRHqRsbtS4uX4 .cluster-label span{color:#333;}#mermaid-svg-gmlRRHqRsbtS4uX4 .label text,#mermaid-svg-gmlRRHqRsbtS4uX4 span{fill:#333;color:#333;}#mermaid-svg-gmlRRHqRsbtS4uX4 .node rect,#mermaid-svg-gmlRRHqRsbtS4uX4 .node circle,#mermaid-svg-gmlRRHqRsbtS4uX4 .node ellipse,#mermaid-svg-gmlRRHqRsbtS4uX4 .node polygon,#mermaid-svg-gmlRRHqRsbtS4uX4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-gmlRRHqRsbtS4uX4 .node .label{text-align:center;}#mermaid-svg-gmlRRHqRsbtS4uX4 .node.clickable{cursor:pointer;}#mermaid-svg-gmlRRHqRsbtS4uX4 .arrowheadPath{fill:#333333;}#mermaid-svg-gmlRRHqRsbtS4uX4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-gmlRRHqRsbtS4uX4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-gmlRRHqRsbtS4uX4 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-gmlRRHqRsbtS4uX4 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-gmlRRHqRsbtS4uX4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-gmlRRHqRsbtS4uX4 .cluster text{fill:#333;}#mermaid-svg-gmlRRHqRsbtS4uX4 .cluster span{color:#333;}#mermaid-svg-gmlRRHqRsbtS4uX4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-gmlRRHqRsbtS4uX4 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Jaeger Application Send Request Create Span Call Service B Create Span Call Service C Create Span Send Spans Store Spans Query Spans Display Traces Jaeger Agent Jaeger Collector Jaeger Storage Jaeger Query Service Jaeger UI Client Service A Service B Service C 解释说明 Client 发起请求到 Service A。Service A 处理请求并创建一个Span将Span信息发送到 Jaeger Agent。Service A 调用 Service BService B 处理请求并创建另一个Span将Span信息发送到 Jaeger Agent。Service B 调用 Service CService C 处理请求并创建新的Span将Span信息发送到 Jaeger Agent。Jaeger Agent 将收集到的Span信息发送到 Jaeger Collector。Jaeger Collector 将Span信息存储到 Jaeger Storage 中。Jaeger Query Service 查询存储中的Span数据。Jaeger UI 显示完整的请求追踪信息和详细的Span数据。 SkyWalking 架构及工作流程 #mermaid-svg-E5pOsR6nnR0FzokW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-E5pOsR6nnR0FzokW .error-icon{fill:#552222;}#mermaid-svg-E5pOsR6nnR0FzokW .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-E5pOsR6nnR0FzokW .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-E5pOsR6nnR0FzokW .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-E5pOsR6nnR0FzokW .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-E5pOsR6nnR0FzokW .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-E5pOsR6nnR0FzokW .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-E5pOsR6nnR0FzokW .marker{fill:#333333;stroke:#333333;}#mermaid-svg-E5pOsR6nnR0FzokW .marker.cross{stroke:#333333;}#mermaid-svg-E5pOsR6nnR0FzokW svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-E5pOsR6nnR0FzokW .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-E5pOsR6nnR0FzokW .cluster-label text{fill:#333;}#mermaid-svg-E5pOsR6nnR0FzokW .cluster-label span{color:#333;}#mermaid-svg-E5pOsR6nnR0FzokW .label text,#mermaid-svg-E5pOsR6nnR0FzokW span{fill:#333;color:#333;}#mermaid-svg-E5pOsR6nnR0FzokW .node rect,#mermaid-svg-E5pOsR6nnR0FzokW .node circle,#mermaid-svg-E5pOsR6nnR0FzokW .node ellipse,#mermaid-svg-E5pOsR6nnR0FzokW .node polygon,#mermaid-svg-E5pOsR6nnR0FzokW .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-E5pOsR6nnR0FzokW .node .label{text-align:center;}#mermaid-svg-E5pOsR6nnR0FzokW .node.clickable{cursor:pointer;}#mermaid-svg-E5pOsR6nnR0FzokW .arrowheadPath{fill:#333333;}#mermaid-svg-E5pOsR6nnR0FzokW .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-E5pOsR6nnR0FzokW .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-E5pOsR6nnR0FzokW .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-E5pOsR6nnR0FzokW .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-E5pOsR6nnR0FzokW .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-E5pOsR6nnR0FzokW .cluster text{fill:#333;}#mermaid-svg-E5pOsR6nnR0FzokW .cluster span{color:#333;}#mermaid-svg-E5pOsR6nnR0FzokW div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-E5pOsR6nnR0FzokW :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} SkyWalking Application Send Request Create Span Call Service B Create Span Call Service C Create Span Send Spans Store Spans Query Spans Display Traces SkyWalking Agent SkyWalking OAP Server SkyWalking Storage SkyWalking Query Service SkyWalking UI Client Service A Service B Service C 解释说明 Client 发起请求到 Service A。Service A 处理请求并创建一个Span将Span信息发送到 SkyWalking Agent。Service A 调用 Service BService B 处理请求并创建另一个Span将Span信息发送到 SkyWalking Agent。Service B 调用 Service CService C 处理请求并创建新的Span将Span信息发送到 SkyWalking Agent。SkyWalking Agent 将收集到的Span信息发送到 SkyWalking OAP Server。SkyWalking OAP Server 将Span信息存储到 SkyWalking Storage 中。SkyWalking Query Service 查询存储中的Span数据。SkyWalking UI 显示完整的请求追踪信息和详细的Span数据。 OpenTelemetry 架构及工作流程 #mermaid-svg-LXP0a8gy3Xjr1AiV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-LXP0a8gy3Xjr1AiV .error-icon{fill:#552222;}#mermaid-svg-LXP0a8gy3Xjr1AiV .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-LXP0a8gy3Xjr1AiV .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-LXP0a8gy3Xjr1AiV .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-LXP0a8gy3Xjr1AiV .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-LXP0a8gy3Xjr1AiV .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-LXP0a8gy3Xjr1AiV .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-LXP0a8gy3Xjr1AiV .marker{fill:#333333;stroke:#333333;}#mermaid-svg-LXP0a8gy3Xjr1AiV .marker.cross{stroke:#333333;}#mermaid-svg-LXP0a8gy3Xjr1AiV svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-LXP0a8gy3Xjr1AiV .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-LXP0a8gy3Xjr1AiV .cluster-label text{fill:#333;}#mermaid-svg-LXP0a8gy3Xjr1AiV .cluster-label span{color:#333;}#mermaid-svg-LXP0a8gy3Xjr1AiV .label text,#mermaid-svg-LXP0a8gy3Xjr1AiV span{fill:#333;color:#333;}#mermaid-svg-LXP0a8gy3Xjr1AiV .node rect,#mermaid-svg-LXP0a8gy3Xjr1AiV .node circle,#mermaid-svg-LXP0a8gy3Xjr1AiV .node ellipse,#mermaid-svg-LXP0a8gy3Xjr1AiV .node polygon,#mermaid-svg-LXP0a8gy3Xjr1AiV .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-LXP0a8gy3Xjr1AiV .node .label{text-align:center;}#mermaid-svg-LXP0a8gy3Xjr1AiV .node.clickable{cursor:pointer;}#mermaid-svg-LXP0a8gy3Xjr1AiV .arrowheadPath{fill:#333333;}#mermaid-svg-LXP0a8gy3Xjr1AiV .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-LXP0a8gy3Xjr1AiV .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-LXP0a8gy3Xjr1AiV .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-LXP0a8gy3Xjr1AiV .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-LXP0a8gy3Xjr1AiV .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-LXP0a8gy3Xjr1AiV .cluster text{fill:#333;}#mermaid-svg-LXP0a8gy3Xjr1AiV .cluster span{color:#333;}#mermaid-svg-LXP0a8gy3Xjr1AiV div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-LXP0a8gy3Xjr1AiV :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} OpenTelemetry Application Send Request Create Span Call Service B Create Span Call Service C Create Span Send Spans Process Export Spans Query Spans Display Traces OpenTelemetry SDK OpenTelemetry Collector Backend Storage Query Service Visualization UI Client Service A Service B Service C 解释说明 Client 发起请求到 Service A。Service A 处理请求并创建一个Span将Span信息通过 OpenTelemetry SDK 发送到 OpenTelemetry Collector。Service A 调用 Service BService B 处理请求并创建另一个Span将Span信息通过 OpenTelemetry SDK 发送到 OpenTelemetry Collector。Service B 调用 Service CService C 处理请求并创建新的Span将Span信息通过 OpenTelemetry SDK 发送到 OpenTelemetry Collector。OpenTelemetry Collector 处理并导出Span数据到后端存储系统如Elasticsearch、Jaeger、Prometheus等。Backend Storage 存储Span数据。Query Service 查询存储中的Span数据。Visualization UI 显示完整的请求追踪信息和详细的Span数据。 Elastic APM 架构及工作流程 #mermaid-svg-8Y83yaiSARpv9Ndv {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-8Y83yaiSARpv9Ndv .error-icon{fill:#552222;}#mermaid-svg-8Y83yaiSARpv9Ndv .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-8Y83yaiSARpv9Ndv .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-8Y83yaiSARpv9Ndv .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-8Y83yaiSARpv9Ndv .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-8Y83yaiSARpv9Ndv .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-8Y83yaiSARpv9Ndv .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-8Y83yaiSARpv9Ndv .marker{fill:#333333;stroke:#333333;}#mermaid-svg-8Y83yaiSARpv9Ndv .marker.cross{stroke:#333333;}#mermaid-svg-8Y83yaiSARpv9Ndv svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-8Y83yaiSARpv9Ndv .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-8Y83yaiSARpv9Ndv .cluster-label text{fill:#333;}#mermaid-svg-8Y83yaiSARpv9Ndv .cluster-label span{color:#333;}#mermaid-svg-8Y83yaiSARpv9Ndv .label text,#mermaid-svg-8Y83yaiSARpv9Ndv span{fill:#333;color:#333;}#mermaid-svg-8Y83yaiSARpv9Ndv .node rect,#mermaid-svg-8Y83yaiSARpv9Ndv .node circle,#mermaid-svg-8Y83yaiSARpv9Ndv .node ellipse,#mermaid-svg-8Y83yaiSARpv9Ndv .node polygon,#mermaid-svg-8Y83yaiSARpv9Ndv .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-8Y83yaiSARpv9Ndv .node .label{text-align:center;}#mermaid-svg-8Y83yaiSARpv9Ndv .node.clickable{cursor:pointer;}#mermaid-svg-8Y83yaiSARpv9Ndv .arrowheadPath{fill:#333333;}#mermaid-svg-8Y83yaiSARpv9Ndv .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-8Y83yaiSARpv9Ndv .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-8Y83yaiSARpv9Ndv .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-8Y83yaiSARpv9Ndv .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-8Y83yaiSARpv9Ndv .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-8Y83yaiSARpv9Ndv .cluster text{fill:#333;}#mermaid-svg-8Y83yaiSARpv9Ndv .cluster span{color:#333;}#mermaid-svg-8Y83yaiSARpv9Ndv div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-8Y83yaiSARpv9Ndv :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Elastic APM Application Send Request Create Span Call Service B Create Span Call Service C Create Span Send Spans Store Spans Query Spans Visualize Traces APM Agent APM Server Elasticsearch Kibana Client Service A Service B Service C H 解释说明 Client 发起请求到 Service A。Service A 处理请求并创建一个Span将Span信息发送到 APM Agent。Service A 调用 Service BService B 处理请求并创建另一个Span将Span信息发送到 APM Agent。Service B 调用 Service CService C 处理请求并创建新的Span将Span信息发送到 APM Agent。APM Agent 将收集到的Span信息发送到 APM Server。APM Server 将Span信息存储到 Elasticsearch 中。Kibana 查询Elasticsearch中的Span数据。Kibana 显示完整的请求追踪信息和详细的Span数据。 四、链路追踪关键指标 在不同的应用场景中选择和评估链路追踪工具时需要关注的指标会有所不同。以下是一些常见的场景及其对应的关键指标 1. 性能优化 在进行性能优化时重要的指标包括 追踪延迟Trace Latency追踪工具对请求响应时间的影响低延迟工具更适合性能敏感的应用。采样率Sampling Rate追踪数据的采样比例高采样率可以提供更详细的性能数据但会增加系统开销。吞吐量Throughput工具能够处理的请求数量高吞吐量工具可以更好地应对高并发场景。 2. 故障排查 在故障排查场景中关注的指标包括 错误率Error Rate工具能够准确捕捉和报告错误请求的比例帮助快速定位问题。根因分析能力Root Cause Analysis Capability工具是否提供详细的错误原因分析帮助快速找到问题根源。服务依赖图Service Dependency Graph工具是否能提供清晰的服务依赖关系图帮助理解服务间的调用关系。 3. 监控和可视化 在监控和可视化场景中关键指标包括 可视化能力Visualization Capability工具提供的可视化功能是否支持直观的Trace和Span展示。查询性能Query Performance在大规模数据下工具的查询速度和效率。实时性Real-time Capability工具数据的实时性是否能及时展示最新的追踪数据。 4. 扩展性和集成性 在扩展性和集成性方面需要关注 扩展性Scalability工具在大规模部署下的表现是否能够处理海量数据。集成性Integration Capability工具与其他监控系统如Prometheus、Elasticsearch等的集成能力。支持的语言和框架Supported Languages and Frameworks工具是否支持当前系统使用的编程语言和框架。 5. 安全性和隐私 在安全性和隐私方面关注的指标包括 数据加密Data Encryption工具是否支持数据的传输和存储加密。访问控制Access Control是否提供细粒度的访问控制确保只有授权用户可以访问敏感数据。隐私保护Privacy Protection工具是否支持对敏感数据的屏蔽或脱敏处理。 不同工具的关键指标对比 工具性能优化故障排查监控和可视化扩展性和集成性安全性和隐私Zipkin低延迟适合小规模部署提供基本的错误率和依赖图分析提供基础的可视化功能可扩展但需要自行配置和集成基本支持需自行实现安全控制Jaeger高吞吐量适合大规模部署提供详细的错误分析和依赖图提供强大的可视化功能高度可扩展良好集成性支持数据加密和访问控制SkyWalking高性能全面的性能指标监控提供详细的根因分析和依赖图提供丰富的可视化功能和实时数据展示高度可扩展支持多种后端存储和集成支持多种安全机制和隐私保护OpenTelemetry标准化API低开销提供基础的错误分析和依赖图提供灵活的可视化和查询功能跨语言良好的集成性和扩展性支持数据加密和访问控制Elastic APM高性能分析和可视化提供详细的错误和根因分析强大的可视化和实时监控能力高度可扩展与Elastic Stack集成支持数据加密和访问控制 通过以上对比可以根据具体的应用场景和需求选择合适的链路追踪工具。例如对于性能优化可以选择低延迟和高吞吐量的工具对于故障排查可以选择提供详细错误分析和根因分析的工具对于监控和可视化需求可以选择提供强大可视化功能的工具。 五、一个秘密 锅总个人博客 https://gentlewok.blog.csdn.net/ 锅总微信公众号
http://www.w-s-a.com/news/835322/

相关文章:

  • 用手机建网站微信手机网站流程
  • 专注软件优化分享的网站梧州网页设计
  • 长春火车站和高铁站是一个站吗公司名称注册查询系统
  • 便利的集团网站建设网页的依托网站
  • 茶叶网站建设题库制作助手app
  • 网站建设栏目层级北京网站搭建公司电话
  • 网站开发运营经理打开百度竞价页面是网站是什么
  • 国内最专业的设计网站建设现在用什么语言做网站
  • 湖南网站开发 岚鸿象山县建设工程招投标网站
  • 长沙免费网站排名wordpress 教学
  • 专门做app的网站html代码是什么
  • 临沂网站制作建设欧米茄表官网
  • 北京模板网站开发全包网站建设的第三方平台
  • 在凡科做的网站怎么推广网页模板下载 免费 html
  • 有关网站建设的标题仿亿欧网wordpress
  • 网站建设公司销售招聘常用的搜索引擎有哪些?
  • wordpress中.htaccess新上线的网站怎么做优化
  • 家教网站怎么做网站建设品牌推荐
  • 青岛做外贸网站建设茶叶公司网站建设策划书
  • 个人电脑做网站主机三合一网站
  • 用html框架做网站怎么在.Net中做团购网站
  • 怎样建一个自己公司的网站制作网站需要钱吗
  • 联盟网站制作wap网站制作公司
  • 美丽乡村建设发展论坛网站wordpress 仿站 教程网
  • 浙江省建设注册管理中心网站首页优设设计网站导航
  • 台州小型网站建设国内免费的建网站平台
  • 自己做网站不推广网站建设工作室发展
  • 有女人和马做网站吗宁波seo优势
  • 网站做用户记录表电商运营推广计划方案
  • 网站备案认领杭州网页设计公司招聘