您的位置:

Skywalkingagent详解

一、Skywalkingagent是什么?

Skywalkingagent是一个基于java agent技术的,开源的应用性能监控工具。它提供了监控指标、鉴别性能瓶颈和分析性能问题的能力。

Skywalkingagent拥有丰富的监控指标,能够监控应用的CPU、内存、网络传输、I/O等方面的指标,并可以通过各种图形化方式呈现这些指标。同时,它还支持分布式服务跟踪,能够追踪分布式调用链并记录其性能指标以及调用方和被调用方信息。

除此之外,Skywalkingagent还支持自定义指标,用户可以通过代码方式或者配置文件定义自己关心的指标来监控应用的性能。

二、Skywalkingagent的安装

1、下载Skywalkingagent

首先,我们需要从官网下载Skywalkingagent,地址为:http://skywalking.apache.org/downloads/。选择对应的版本下载即可。

下载后,解压缩到本地,可以看到一个agent目录,其中包括了skywalking-agent.jar和config目录,以及其他一些辅助工具。

2、配置Skywalkingagent

在config目录中,有一个agent.config文件,这个文件需要进行配置。其中需要配置的内容包括:

# Application code
application_code=MyApplication

# gRPC
gRPC_server_ip=127.0.0.1
gRPC_server_port=11800

# Logging
## Disable debug logging by default.
log_debug=false

其中,application_code用于标识当前应用的名称,可以自定义;gRPC_server_ip和gRPC_server_port用于配置Skywalkingagent与Skywalking Server通信的地址和端口;log_debug用于控制日志输出的级别。

配置完成后,将agent目录拷贝到应用的运行目录下,并在启动参数中增加以下参数:

-javaagent:/path/to/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=MyApplication -Dskywalking.collector.backend_service=127.0.0.1:11800

其中,-javaagent用于指定Skywalkingagent的jar包路径;-Dskywalking.agent.service_name用于指定应用的名称,与配置文件中的值应该保持一致;-Dskywalking.collector.backend_service用于指定Skywalking Server的地址和端口。

三、Skywalkingagent监控指标

Skywalkingagent可以监控以下指标:

1、JVM指标

Skywalkingagent可以监控JVM的内存使用情况、GC情况、线程数、类加载情况等,可以用来判断应用在运行期间是否存在内存泄露、线程池满载等问题。

2、网络IO指标

Skywalkingagent可以监控应用的网络传输带宽、网络连接数、请求延迟等,可以用来判断应用的网络状况是否正常。

3、数据库指标

Skywalkingagent可以监控数据库连接池使用情况、SQL执行时间等,可以用来判断应用是否存在慢SQL问题、数据库连接池满载等问题。

4、Web应用指标

Skywalkingagent可以监控Web应用的HTTP请求、Servlet请求、Web响应时间等,可以用来判断应用是否存在HTTP请求异常、Servlet异常等情况。

通过这些监控指标,我们可以快速发现应用的性能问题,从而针对性地进行调优。

四、Skywalkingagent的定制化

在使用Skywalkingagent的过程中,我们还可以通过编写插件来自定义监控指标。

例如,我们可以通过编写插件来监控应用的自定义指标,如队列长度、业务耗时等,并且可以自定义图形化展示方式。

下面是一个自定义监控指标的示例:

public class MyPlugin extends AbstractTimerPlugin {
    private static final String METRIC_NAME = "my_plugin_metric";

    @Override
    protected String getMetricName() {
        return METRIC_NAME;
    }

    @Override
    protected OperationNameFormat operationNameFormat() {
        return OperationNameFormat.CamelCase;
    }

    @Override
    protected String[] getPeers() {
        return new String[]{"127.0.0.1:8801"};
    }

    @Override
    protected Timer startTimer(EnhancedInstance objInst, Method method) {
        // Do some monitoring logic here. For example, count the number of items in the queue
        Timer timer = super.startTimer(objInst, method);
        // Collect custom metrics here
        return timer;
    }
}

在这个示例中,我们继承了AbstractTimerPlugin,并实现了一些必要的方法。其中,getMetricName方法用于定义收集的指标名称;operationNameFormat方法用于指定操作名称的格式;getPeers方法用于指定Skywalking Server的地址和端口;startTimer方法用于实现自定义的监控逻辑。具体的实现逻辑可以根据自己的需求来编写。

五、Skywalkingagent的优势与劣势

Skywalkingagent作为一个开源的应用性能监控工具,有以下一些优势和劣势。

优势:

1、支持各种监控指标,覆盖了应用的各个方面。

2、支持分布式服务跟踪,可以追踪分布式调用链,从而更好地定位问题。

3、支持自定义监控指标,可以根据应用需求自定义指标。

劣势:

1、安装和配置相对繁琐。

2、不支持所有语言和框架。

3、对于一些复杂应用,可能需要编写插件来定制监控指标。

六、总结

本文详细阐述了Skywalkingagent的特点、安装方式、监控指标、定制化等方面。通过了解Skywalkingagent的特点和使用方法,我们可以更好地进行应用性能监控和问题定位,从而提高应用性能和稳定性。