skywalking使用

skywalking使用

阅读官方文档

https://skywalking.apache.org/docs/

因为目前技术栈主要是java, 所以关注其中 [SkyWalking Servers](https://skywalking.apache.org/docs/#SkyWalking Servers)和Java Agent这两块的文档

虽然是英文文档, 但是并不是那种晦涩的英文, 可以简单看下, 然后结合网上别人的教程或博客就可以上手使用起来.

最好手头有成型的项目,试着将skywalking的agent和log依赖加进去实践一下.

参阅一些博客与相关知识

参考: Java agent超详细知识梳理 注意: 由于skywalking的agent和IDE的debug都是基于agent的技术, 如果在IDE中以debug模式启动的带skywalking-agent的项目,可能出现agent启动失败的报错. 需要在IDE中run模式启动项目.

参考: SkyWalking 极简入门

参考: skywalking从入门到精通(三)-日志收集

下载skywalking的java-agent

下载

参考: https://skywalking.apache.org/docs/skywalking-java/latest/en/setup/service-agent/java-agent/readme/

参考: https://skywalking.apache.org/downloads/

默认下载当前最新版

注意: 看了下 skywalking-server的版本说明,jdk要求最低17好像是.(反正java8已经不兼容了)

注意: 看了下skywalking-java-agent的版本说明, 最低要求java8.

注意: 默认使用h2内存数据库, 可以按需调整为mysql, elasticsearch等.

默认端口: 11800用于grpc通信(agent一般用这个), 12800用于restful接口通信(支持rest方式上报数据,但是用的少), 8080端口用于UI管理界面.

调整UI管理界面默认端口: 找到apache-skywalking-apm-bin\webapp\application.yml ,

调整

#serverPort: ${SW_SERVER_PORT:-8080}
serverPort: ${SW_SERVER_PORT:-9885}

或者 修改startup.bat或者startup.sh

set SW_SERVER_PORT=9885

配置

参考: https://skyapm.github.io/document-cn-translation-of-skywalking/zh/8.0.0/setup/service-agent/java-agent/Setting-override.html

对于在ide中运行的情况, 比如idea中运行

可以添加 vm选项

-Dskywalking.agent.service_name=vivachekcloud_10440 -Dskywalking.collector.backend_service=127.0.0.1:11800 -javaagent:C:/standalone/skywalking/skywalking-agent/skywalking-agent.jar
image-20240424151210652

项目中增加skywalking的日志上报依赖

参考: https://skywalking.apache.org/docs/skywalking-java/latest/en/setup/service-agent/java-agent/application-toolkit-log4j-2.x/#grpc-reporter

依赖:

   <dependency>
      <groupId>org.apache.skywalking</groupId>
      <artifactId>apm-toolkit-log4j-2.x</artifactId>
      <version>{project.release.version}</version>
   </dependency>

我手头的项目是log4j2作为日志实现

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
    <!-- 定义日志存放目录 -->
    <properties>
        <!-- ... -->
    </properties>
    <!--先定义所有的appender(输出器) -->
    <Appenders>

        <!-- ... -->
        <!-- skywalking 日志上报 -->
        <GRPCLogClientAppender name="grpc-log">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </GRPCLogClientAppender>
    </Appenders>
    <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->
    <Loggers>
        <!--建立一个默认的Root的logger,记录大于level高于warn的信息,如果这里的level高于Appenders中的,则Appenders中也是以此等级为起点,比如,这里level="fatal",则Appenders中只出现fatal信息 -->
        <!-- 生产环境level>=warn -->
        <!-- level日志级别: ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF -->
        <!-- root的作用,首先会匹配root的级别,只有到root的级别,才会继续去配置的appender里去查找,理解的话,就是root是最外层的过滤器-->
        <!-- logj42会先匹配是否符合Logger/Root的level,如果符合的话,再一一匹配Logger/Root下的AppenderRef的level是否匹配。-->
        <Root level="DEBUG">
            <appender-ref ref="grpc-log"/>
        </Root>

        <!--项目日志级别DEBUG-->
        <logger name="com.vivachek.cloud" level="DEBUG"/>
        <!-- ... -->

    </Loggers>
</Configuration>

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注