未分类 · 2025-02-10 0

docker 安装 skywalking 及 java 配置

一、skywalking 安装和启动

1.镜像下载

docker pull apache/skywalking-oap-server:10.1.0
docker pull apache/skywalking-ui:10.1.0
docker pull elasticsearch:8.17.1

2.docker-compose 文件

使用 docker-compose 命令启动 skywalking

docker-compose.yml

version: '3.5'
services:
  oap:
    image: apache/skywalking-oap-server:10.1.0
    container_name: "skywalking_oap_1"
    environment:
      SW_TELEMETRY_RECEIVER_DEFAULT_ENABLED: "true"
      SW_METRIC_DEFAULT_MAX_SAMPLE_COUNT: 10000
      SW_METRIC_DEFAULT_STEP: 1
    ports:
      - "11800:11800"
      - "12800:12800"
    depends_on:
      - elasticsearch

  ui:
    image: apache/skywalking-ui:10.1.0
    container_name: "skywalking_ui_1"
    environment:
      SW_OAP_ADDRESS: "http://oap:12800"
    ports:
      - "8080:8080"
    depends_on:
      - oap

  elasticsearch:
    image: elasticsearch:8.17.1
    container_name: "elasticsearch_1"
    environment:
      discovery.type: single-node
    ports:
      - "9200:9200"
      - "9300:9300"

二、java 应用

1.java agent 下载

Agent 探针下载 https://skywalking.apache.org/downloads/

2.jvm 启动参数

-javaagent:/home/zxm/IdeaProjects/jdk8-demo/spring-boot/spring-boot-web-demo/skywalking-agent.jar
-Dskywalking.agent.service_name=app_1
-Dskywalking.collector.backend_service=127.0.0.1:11800

三、skywalking 收集日志

1.pom

<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-trace</artifactId>
    <version>9.3.0</version>
</dependency>

<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-logback-1.x</artifactId>
    <version>9.3.0</version>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

2.log 配置

<configuration debug="false" scan="false">
    <springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/>
    <property name="log.path" value="logs/ceshi"/>

    <!-- 控制台输出  -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
                <pattern>%d{yyyy-MM-dd HH:mm:ss.sss} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n</pattern>
            </layout>
        </encoder>
    </appender>

    <!--配置异步输出日志,提升性能-->
    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold>0</discardingThreshold>
        <queueSize>1024</queueSize>
        <neverBlock>true</neverBlock>
        <appender-ref ref="console"/>
    </appender>

    <!--skywalking grpc 日志收集-->
    <appender name="grpc" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n</Pattern>
            </layout>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="console"/>
        <appender-ref ref="grpc"/>
    </root>
</configuration>