- 添加依赖
<!-- 请根据实际使用的SkyWalking版本调整 -->
<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>
2.logback文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志输出格式 -->
<property name="FILE_LOG_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] %green(%-5level) [%thread] %yellow([%tid]) %cyan(%logger{50}) : %msg%n" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- 默认日志打印的格式 -->
<!--<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf-8</charset>
</encoder>-->
<!-- 配置了skywalking的traceId的日志打印的格式 -->
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<Pattern>${FILE_LOG_PATTERN}</Pattern>
</layout>
</encoder>
</appender>
<appender name="GRPC_LOG" 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.TraceIdPatternLogbackLayout">
<Pattern>${FILE_LOG_PATTERN}</Pattern>
</layout>
</encoder>
</appender>
<appender name="ERROR_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<!-- 异步输出 控制台 -->
<appender name="ASYNC_STDOUT" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>256</queueSize>
<appender-ref ref="STDOUT"/>
</appender>
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
<root level="DEBUG">
<appender-ref ref="ERROR_LOG"/>
<appender-ref ref="ASYNC_STDOUT"/>
<appender-ref ref="GRPC_LOG"/>
</root>
</configuration>
3. 代码启动
java -javaagent:/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking-test -Dskywalking.collector.backend_service=127.0.0.1:11800 -Dskywalking.agent.protocol=grpc -jar $APP_NAME --spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
4. docker-compose 启动skywalking
services:
elasticsearch:
image: elasticsearch:8.15.0
container_name: elasticsearch
ports:
- "9200:9200"
healthcheck:
test: ["CMD-SHELL", "curl -sf http://localhost:9200/_cluster/health || exit 1"]
interval: 60s
timeout: 10s
retries: 3
start_period: 60s
environment:
discovery.type: "single-node"
ingest.geoip.downloader.enabled: "false"
bootstrap.memory_lock: "true"
ES_JAVA_OPTS: "-Xms512m -Xmx512m"
TZ: "Asia/Shanghai"
xpack.security.enabled: "false"
ulimits:
memlock:
soft: -1
hard: -1
networks:
- skywalking
skywalking-oap:
image: apache/skywalking-oap-server:9.3.0
container_name: skywalking-oap
depends_on:
elasticsearch:
condition: service_healthy
links:
- elasticsearch
environment:
SW_HEALTH_CHECKER: default
SW_STORAGE: elasticsearch
SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
SW_STORAGE_ES_INDEX_SHARDS_NUMBER: 1
SW_STORAGE_ES_INDEX_REPLICAS_NUMBER: 0
SW_CLUSTER: standalone
SW_TELEMETRY: prometheus
SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS: default
JAVA_OPTS: "-Xms2048m -Xmx2048m -Dmode=grpc -DrestHost=0.0.0.0 -DrestPort=12800 -Dcore.default.grpcHost=0.0.0.0 -Dcore.default.grpcPort=11800"
TZ: Asia/Shanghai
healthcheck:
test: ["CMD-SHELL", "/skywalking/bin/swctl ch"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
restart: on-failure
ports:
- "9998:11800"
- "12800:12800"
networks:
- skywalking
skywalking-ui:
image: apache/skywalking-ui:9.3.0
container_name: skywalking-ui
depends_on:
skywalking-oap:
condition: service_healthy
links:
- skywalking-oap
ports:
- "19180:8080"
environment:
SW_OAP_ADDRESS: "http://skywalking-oap:12800"
SW_HEALTH_CHECKER: default
TZ: Asia/Shanghai
healthcheck:
test: ["CMD-SHELL", "curl -sf http://localhost:8080 || exit 1"]
interval: 60s
timeout: 10s
retries: 3
start_period: 60s
networks:
- skywalking
otel-collector:
image: otel/opentelemetry-collector:0.120.0
container_name: otel-collector
command: [ "--config=/etc/otel-collector-config.yaml" ]
volumes:
- ./otel-collector-config.yaml:/etc/otel-collector-config.yaml
expose:
- 55678
networks:
- skywalking
networks:
skywalking:
driver: bridge
-
实现效果如图
4.1监控服务器状态
4.2收集gateway