提升应用监控能力:尝试Opentelemetry集成Skywalking

当我们开发和维护应用程序时,应用程序的性能和稳定性对于用户的体验至关重要。但是,应用程序的性能和稳定性通常是很难监控和调试的。一个消息丢失,一个API访问不可用,一个后端服务的延迟,这些问题都会导致应用程序性能的下降,从而影响整个业务。因此,应用程序需要一个强大的监控和追踪系统。Opentelemetry和Skywalking正是提供这样的解决方案。

一、为什么需要Opentelemetry和Skywalking?

Opentelemetry是一个开放式的观察性框架,它使开发人员能够现代化、标准化、自动化地捕捉分布式环境中应用程序的信息。它提供了一组标准API和SDK,可用于在应用程序组件中实现分布式跟踪、日志记录和度量信息收集。

Skywalking是一个基于APM(Application Performance Management)的开源系统,为分布式实时跟踪、服务网格和分布式系统中的性能监控提供支持。它提供了一个自动化的分布式跟踪系统,可以监控大规模分布式系统中的性能问题,并提供关键指标以帮助调试和优化性能。

Opentelemetry和Skywalking的结合,可以提供更全面的服务监控和度量,以帮助应用程序更好地处理分布式调用,保证应用程序的性能和稳定性。

二、如何实现Opentelemetry和Skywalking的集成?

1、安装Skywalking服务端

先从Skywalking官网下载最新版本的Skywalking服务端,并启动。具体可参考Skywalking的官方文档。

2、集成Opentelemetry SDK

为了在应用程序中启用Opentelemetry,我们需要添加Opentelemetry库和SDK以及与Skywalking协议的相应插件。

<dependency>
    <groupId>io.opentelemetry</groupId>
    <artifactId>opentelemetry-api</artifactId>
    <version>1.4.1</version>
</dependency>

<dependency>
    <groupId>io.opentelemetry</groupId>
    <artifactId>opentelemetry-sdk-trace</artifactId>
    <version>1.4.1</version>
</dependency>

<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-trace-opentelemetry-bridge</artifactId>
    <version>8.7.0</version>
</dependency>

3、添加Skywalking代理

为了将Opentelemetry SDK的跟踪数据发送到Skywalking服务器,我们需要添加Skywalking代理,并在应用程序中添加Skywalking自动代理插件。Skywalking代理可用于Java,.NET和PHP应用程序。

对于Java应用程序,我们需要添加以下虚拟机参数。

-javaagent:path/to/skywalking-agent.jar
-Dskywalking.agent.service_name=my-service
-Dskywalking.agent.instance_name=my-instance
-Dskywalking.collector.backend_service=127.0.0.1:11800

这将启用Skywalking的自动代理插件,让Skywalking知道应用程序的服务和实例名称,并且将跟踪数据发送到Skywalking服务器。

三、如何使用Opentelemetry和Skywalking进行应用程序监控?

一旦集成了Opentelemetry和Skywalking,就可以开始监控应用程序的性能和稳定性。

1、分布式跟踪

Opentelemetry提供了一个跟踪API,用于帮助开发人员记录应用程序中发生的跨组件调用。Skywalking提供一个自动化分布式跟踪系统,可以自动检测应用程序中组件之间的调用,并存储和显示跨组件跟踪信息。

为了实现分布式跟踪,我们需要在应用程序的组件之间添加跟踪代码。例如,下面是一个使用Opentelemetry SDK记录跨越两个RPC调用的跟踪的例子:

private static final Tracer tracer = OpenTelemetry.getTracerProvider().get("my_service");

void doFirstRpcCall() {
  Span firstSpan = tracer.spanBuilder("my_span").startSpan();
  try (Scope scope = tracer.withSpan(firstSpan)) {
    rpcCall(); // perform the RPC call
    firstSpan.setStatus(Status.OK);
  } catch (Throwable throwable) {
    firstSpan.setStatus(Status.ERROR);
    firstSpan.recordException(throwable);
  } finally {
    firstSpan.end();
  }
}

void rpcCall() {
  Span span = tracer.spanBuilder("rpc_call_span").startSpan();
  try (Scope scope = tracer.withSpan(span)) {
    // perform the RPC call
    span.setStatus(Status.OK);
  } catch (Throwable throwable) {
    span.setStatus(Status.ERROR);
    span.recordException(throwable);
  } finally {
    span.end();
  }
}

这将创建两个跟踪:第一个跨越第一个组件,第二个跨越RPC组件。

我们可以在Skywalking UI中查看跟踪信息:

2、指标收集

Opentelemetry提供了一个度量API,用于记录应用程序的关键指标。Skywalking提供了自动化的度量仪表板,可以显示这些指标,并帮助开发人员识别和解决性能问题。

例如,我们可以使用Opentelemetry SDK记录每个请求的延迟时间,并使用Skywalking Dashboard查看延迟时间的统计信息。

private static final Meter meter = OpenTelemetry.getMeterProvider().get("my_service");
private static final LongValueRecorder latencyRecorder = meter.
                                                      .longValueRecorderBuilder("request_latency")
                                                      .setUnit("ms")
                                                      .setDescription("Request latency in milliseconds")
                                                      .build();

void processRequest(Request request) {
  long startTime = System.currentTimeMillis();
  // process the request
  long endTime = System.currentTimeMillis();

  latencyRecorder.record(endTime - startTime);
}

四、总结

Opentelemetry和Skywalking是两个强大的监控和追踪工具,可以帮助开发人员监控分布式环境中的应用程序,并为性能调优和性能问题解决提供指导和支持。通过将这两个工具集成在一起,我们可以更全面、更标准化地检测和解决性能问题。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/245045.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 13:05
下一篇 2024-12-12 13:05

相关推荐

  • 如何提高财务数据分析能力

    财务数据分析能力是财务人员必备的核心技能之一。在这篇文章中,我们将从数据收集、数据分析和数据可视化三方面分享如何提高财务数据分析能力。 一、 数据收集 数据的准确性和完整性对于数据…

    编程 2025-04-28
  • 异或Python:用异或运算符增强Python编程能力

    Python是一种高级编程语言,被广泛应用于Web开发、数据分析等领域。Python提供了丰富的数据类型和函数库,但在某些情况下,Python自带的运算符可能不够灵活,无法满足程序…

    编程 2025-04-27
  • SkyWalking原理详解

    一、分布式追踪的基本原理 在传统的单体应用中,我们可以使用传统的日志来追踪应用程序的状态和行为。但是,随着微服务架构的流行,这种方式已经不再适用于现代应用程序。由于微服务架构的分散…

    编程 2025-04-18
  • s-class的全能力解析

    一、什么是s-class? s-class是一种Mercedes-Benz的高端轿车型号,它被设计成既可以用作豪华家庭用车,又可以用作优秀的商务车。 二、s-class的外观特点 …

    编程 2025-04-12
  • Skywalking链路追踪深度解析

    一、Skywalking链路追踪概述 Skywalking是一款全面的分布式系统监控解决方案,它能够监控Spring、Dubbo、Spring Cloud、gRPC、.NET Co…

    编程 2025-01-24
  • 深度学习框架的技术能力和应用价值

    一、框架介绍 深度学习框架是为了方便开发者构建深度学习模型的软件套件,为人们提供了开发深度学习应用的有效工具。常见的深度学习框架有TensorFlow、PyTorch、Caffe、…

    编程 2025-01-20
  • 探究proceedon的全能力

    一、proceedon的优势 proceedon是一种多功能的编程语言,它将程序员从各种语言和库的限制中解放出来,为他们提供了更加自由的编程体验。正如其名字所示,proceedon…

    编程 2025-01-20
  • CSSTransform3D的全能力

    在众多的前端开发工具内,CSSTransform3D是一个非常最常用的技术。它可以非常方便地实现多种多样的动画效果。在本文中,我们将从多个方面对CSSTransform3D进行详细…

    编程 2025-01-16
  • Python Web开发技能测试:展现你的全栈能力

    越来越多的人开始涉足Web开发,Python作为一门流行的编程语言,在Web开发中也扮演着重要的角色。Python Web开发技能测试是一项综合性考试,可以展现你的Python W…

    编程 2025-01-14
  • Skywalking-docker详解

    一、Skywalking-docker简介 Skywalking-docker是一个基于Docker技术构建的,用于监控应用、服务、分布式系统的开源APM(Application …

    编程 2025-01-13

发表回复

登录后才能评论