• Skywalking常用插件


    配置覆盖

    可以使用Skywalking提供的配置覆盖功能通过启动命令动态指定服务名,这样agent只需要部署一份即可。Skywalking支持的几种配置方式:
    系统配置(System properties)
    使用 skywalking. + 配置文件中的配置名作为系统配置项来进行覆盖.为什么需要添加前缀 ?agent的系统配置和环境与目标应用共享,所以加上前缀可以有效的避免冲突。
    通过 如下进行 agent.service_name 的覆盖

    -Dskywalking.agent.service_name=skywalking_mysql
    

    探针配置( Agent options)
    Add the properties after the agent path in JVM arguments.

    -javaagent:/path/to/skywalking-agent.jar=[option1]=[value1],[option2]=[value2]
    

    案例
    通过 如下进行 agent.service_name 的覆盖

    -javaagent:/path/to/skywalking-agent.jar=agent.service_name=skywalking_mysql
    

    特殊字符
    如果配置中包含分隔符( , 或者 = ) , 就必须使用引号包裹起来

    -javaagent:/path/to/skywalking-agent.jar=agent.ignore_suffix='.jpg,.jpeg'
    

    系统环境变量( System environment variables)
    案例
    由于agent.service_name配置项如下所示:

    # The service name in UI
    agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
    

    可以在环境变量中设置 SW_AGENT_NAME的值来指定服务名。
    覆盖优先级
    探针配置 > 系统配置 >系统环境变量 > 配置文件中的值

    所以我们的启动命令可以修改为:

    java -javaagent:/usr/local/skywalking/apache-skywalking-apm-bin/agent_mysql/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_mysql -jar skywalking_mysql.jar &
    

    或者

    java -javaagent:/usr/local/skywalking/apache-skywalking-apm-bin/agent_mysql/skywalking-agent.jar=agent.service_name=skywalking_mysql -jarskywalking_mysql.jar &
    

    获取追踪ID

    Skywalking提供我们Trace工具包,用于在追踪链路时进行信息的打印或者获取对应的追踪ID。我们使用Spring Boot编写一个案例,也可以直接使用资源下的 skywalking_plugins.jar 进行测试。
    pom:

    <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!--skywalking trace工具包-->
            <dependency>
                <groupId>org.apache.skywalking</groupId>
                <artifactId>apm-toolkit-trace</artifactId>
                <version>${skywalking.version}</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    

    PluginController:

    @RestController
    public class PluginController {
    
        //获取trace id,可以在RocketBot追踪中进行查询
        @GetMapping("/getTraceId")
        public String getTraceId(){
            //使当前链路报错,并且提示报错信息
            ActiveSpan.error(new RuntimeException("Test-Error-Throwable"));
            //打印info信息
            ActiveSpan.info("Test-Info-Msg");
            //打印debug信息
            ActiveSpan.debug("Test-debug-Msg");
            return TraceContext.traceId();
        }
    }
    

    使用 TraceContext.traceId()可以打印出当前追踪的ID,方便在RocketBot中进行搜索。
    ActiveSpan提供了三个方法进行信息的打印:
    error方法会将本次调用变为失败状态,同时可以打印对应的堆栈信息和错误提示。
    info方法打印info级别的信息。
    debug方法打印debug级别的信息。
    部署方式
    1、将 skywalking_plugins.jar 上传至 /usr/local/skywalking 目录下。
    2、启动skywalking_plugins应用,等待启动成功。

    [root@middleware skywalking-jar]# java -javaagent:/root/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_plugins -Dskywalking.trace.ignore_path=/exclude -Dserver.port=8087 -jar skywalking_plugins.jar  &
    [5] 82425
    [4]   已杀死               java -javaagent:/root/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_plugins -Dskywalking.trace.ignore_path=/exclude -Dserver.port=8087 -jar skywalking_plugins.jar
    [root@middleware skywalking-jar]# DEBUG 2020-11-25 10:32:10:952 main AgentPackagePath : The beacon class location is jar:file:/root/apache-skywalking-apm-bin/agent/skywalking-agent.jar!/org/apache/skywalking/apm/agent/core/boot/AgentPackagePath.class.
    INFO 2020-11-25 10:32:10:956 main SnifferConfigInitializer : Config file found in /root/apache-skywalking-apm-bin/agent/config/agent.config.
    
      .   ____          _            __ _ _
     /\ / ___'_ __ _ _(_)_ __  __ _    
    ( ( )\___ | '_ | '_| | '_ / _` |    
     \/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::       (v2.1.10.RELEASE)
    
    

    4 、调用接口,接口地址为: http://192.168.1.108:8088/getTraceId
    5、此时如果页面显示

    image-20201125094643689

    可以搜索到对应的追踪记录,但是显示调用是失败的,这是因为使用了 ActiveSpan.error方法。点开追
    踪的详细信息:

    image-20201125105012468

    异常的信息包含了以下几个部分:
    1.事件类型为error
    2.调用方法时传递的异常类型RuntimeException
    3.调用方法时传递的异常信息Test-Error-Throwable
    4.异常堆栈
    通过上述内容,我们可以根据业务来定制调用异常时的详细信息。

    image-20201125105103278

    除了异常信息之外,还有 info信息和debug信息也都会被打印。

    过滤指定的端点

    在开发过程中,有一些端点(接口)并不需要去进行监控,比如Swagger相关的端点。这个时候我们就可以使用Skywalking提供的过滤插件来进行过滤。在skywalking_plugins中编写两个接口进行测试:

    @RestController
    public class FilterController {
        //此接口可以被追踪
        @GetMapping("/include")
        public String include(){
            return "include";
        }
    
        //此接口不可被追踪
        @GetMapping("/exclude")
        public String exclude(){
            return "exclude";
        }
    }
    
    

    部署方式
    1、将 skywalking_plugins.jar 上传至 /usr/local/skywalking 目录下。
    2、将agent中的 /agent/optional -plugins/apm-trace-ignore-plugin-6.4.0.jar 插件拷贝到plugins目录中。

    3、启动skywalking_plugins应用,等待启动成功。

    [root@middleware skywalking-jar]# java -javaagent:/root/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_plugins -Dskywalking.trace.ignore_path=/exclude -Dserver.port=8087 -jar skywalking_plugins.jar  &
    
    

    exclude 接口已经被过滤,只有include接口能被看到。

    image-20201125103407288

  • 相关阅读:
    点聚weboffice插件自定义菜单
    Delphi程序带参数运行
    64位系统下注册32位dll文件
    64位进程调用32位dll的解决方法
    memcached启动脚本以及telnet测试
    LSM树由来、设计思想以及应用到HBase的索引
    B树(B-Tree)的由来、数据结构、基本操作以及数据库索引的应用
    java读取utf8配置文件乱码
    设置某个ip对mysql服务器有权限,以及mysql定时备份
    《HBase实战》
  • 原文地址:https://www.cnblogs.com/dalianpai/p/14035481.html
Copyright © 2020-2023  润新知