小白学习docker compose部署skywalking

前言

Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的开源项目, 2017年12月SkyWalking成为Apache国内首个个人孵化项目, 2019年4月17日SkyWalking从Apache基金会的孵化器毕业成为顶级项目, 目前SkyWalking支持Java、 .Net、 Node.js、 go、 python等探针, 数据存储支持MySQL、 ElasticSearch等, SkyWalking与Pinpoint相同, 对业务代码无侵入, 不过探针采集数据粒度相较于Pinpoint来说略粗, 但性能表现优秀, 目前SkyWalking增长势头强劲, 社区活跃, 中文文档齐全, 没有语言障碍, 支持多语言探针, 这些都是 SkyWalking的优势所在, 还有就是SkyWalking支持很多框架, 包括很多国产框架, 例如, Dubbo、 gRPC、 SOFARPC 等等, 同时也有很多开发者正在不断向社区提供更多插件以支持更多组件无缝接入SkyWalking。

部署

  1. 新建目录,更改权限777
shell 复制代码
mkdir -p /usr/local/docker/skywalking/{conf}

chmod 777 /usr/local/docker/skywalking/{conf}
  1. 新建docker-compose.yml
  • SW_STORAGE: 填写elasticsearch
  • SW_STORAGE_ES_CLUSTER_NODES: elasticsearch访问地址,我之前部署了
yml 复制代码
version: '3.3'
services:
  skywalking-oap:
    image: apache/skywalking-oap-server:9.0.0
    container_name: skywalking-oap
    volumes:
      - ./conf/alarm-settings.yml:/skywalking/config/alarm-settings.yml
    ports:
      - "11800:11800"
      - "12800:12800"
    environment:
      TZ: Asia/Shanghai
      SW_STORAGE: elasticsearch
      SW_STORAGE_ES_CLUSTER_NODES: 192.168.3.5:9200

  skywalking-ui:
    image: apache/skywalking-ui:9.0.0
    container_name: skywalking-ui
    depends_on:
      - skywalking-oap
    links:
      - skywalking-oap
    ports:
      - "6395:8080"
    environment:
      TZ: Asia/Shanghai
      SW_OAP_ADDRESS: http://skywalking-oap:12800
  1. 新建conf/alarm-settings.yml
yml 复制代码
rules:
  # Rule unique name, must be ended with `_rule`.
  service_resp_time_rule:
    metrics-name: service_resp_time
    op: ">"
    threshold: 1000
    period: 10
    count: 3
    silence-period: 5
    message: Response time of service {name} is more than 1000ms in 3 minutes of last 10 minutes.
  service_sla_rule:
    # Metrics value need to be long, double or int
    metrics-name: service_sla
    op: "<"
    threshold: 8000
    # The length of time to evaluate the metrics
    period: 10
    # How many times after the metrics match the condition, will trigger alarm
    count: 2
    # How many times of checks, the alarm keeps silence after alarm triggered, default as same as period.
    silence-period: 3
    message: Successful rate of service {name} is lower than 80% in 2 minutes of last 10 minutes
  service_resp_time_percentile_rule:
    # Metrics value need to be long, double or int
    metrics-name: service_percentile
    op: ">"
    threshold: 1000,1000,1000,1000,1000
    period: 10
    count: 3
    silence-period: 5
    message: Percentile response time of service {name} alarm in 3 minutes of last 10 minutes, due to more than one condition of p50 > 1000, p75 > 1000, p90 > 1000, p95 > 1000, p99 > 1000
  service_instance_resp_time_rule:
    metrics-name: service_instance_resp_time
    op: ">"
    threshold: 1000
    period: 10
    count: 2
    silence-period: 5
    message: Response time of service instance {name} is more than 1000ms in 2 minutes of last 10 minutes
  database_access_resp_time_rule:
    metrics-name: database_access_resp_time
    threshold: 1000
    op: ">"
    period: 10
    count: 2
    message: Response time of database access {name} is more than 1000ms in 2 minutes of last 10 minutes
  endpoint_relation_resp_time_rule:
    metrics-name: endpoint_relation_resp_time
    threshold: 1000
    op: ">"
    period: 10
    count: 2
    message: Response time of endpoint relation {name} is more than 1000ms in 2 minutes of last 10 minutes
 
webhooks:
#  - http://127.0.0.1/notify/
#  - http://127.0.0.1/go-wechat/

dingtalkHooks:
  textTemplate: |-
    {
      "msgtype": "text",
      "text": {
        "content": "Apache 告警: \n %s"
      }
    }
  webhooks:
    - url: https://oapi.dingtalk.com/robot/send?access_token=416e0d73280b480d5beb6533f475e493c6be9ca9eac85d0422718b8cfdf065e8
      secret: SEC87fc4df3f024cb76e36d75cdfc090009e275b672fd6b1062e0772ad8611e5b2d
  1. 打包运行,并访问
shell 复制代码
docker compose up -d

java agent

要想springboot项目使用Skywalking,还需要使用Skywalking的java-agent插件。

  • 服务器上,需要配置Java脚本
  1. 下载并解压java-agent
shell 复制代码
wget https://archive.apache.org/dist/skywalking/java-agent/9.0.0/apache-skywalking-java-agent-9.0.0.tgz

wget https://archive.apache.org/dist/skywalking/java-agent/9.0.0/apache-skywalking-java-agent-9.0.0.tgz
  1. 配置脚本启动
shell 复制代码
# SkyWalking Agent 配置

# 配置 Agent 名字。一般来说,我们直接使用 Spring Boot 项目的 `spring.application.name` 
export SW_AGENT_NAME=demo-application 。 

# 配置 Collector 地址。 
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 

# 配置链路的最大 Span 数量。一般情况下,不需要配置,默认为 300 。主要考虑,有些新上 SkyWalking Agent 的项目,代码可能比较糟糕。 
export SW_AGENT_SPAN_LIMIT=2000 

# SkyWalking Agent jar 地址。 
export JAVA_AGENT=-javaagent:/usr/local/docker/skywalking/skywalking-agent/skywalking-agent.jar
 
# Jar 启动 
java -jar $JAVA_AGENT -jar xx.jar
  • idea中使用,需要先下载java-agent
相关推荐
MC丶科1 小时前
【SpringBoot常见报错与解决方案】端口被占用?Spring Boot 修改端口号的 3 种方法,第 3 种 90% 的人不知道!
java·linux·spring boot
计算机学长felix2 小时前
基于SpringBoot的“中学信息技术课程教学网站”的设计与实现(源码+数据库+文档+PPT)_2025-10-17
数据库·spring boot·后端
Luffe船长2 小时前
前端vue2+js+springboot实现excle导入优化
前端·javascript·spring boot
周杰伦_Jay2 小时前
【Spring Boot从入门到精通】原理、实战与最佳实践
java·spring boot·后端
呼哧呼哧.2 小时前
SpringBoot 的入门开发
java·spring boot·后端
武昌库里写JAVA3 小时前
C语言 函数指针和指针函数区别 - C语言零基础入门教程
vue.js·spring boot·sql·layui·课程设计
小学鸡!4 小时前
spring boot实现接口数据脱敏,整合jackson实现敏感信息隐藏脱敏
java·spring boot
左灯右行的爱情5 小时前
ImportCandidates 类详细解析
java·spring boot
J_bean5 小时前
Spring Boot 集成 WebSocket 的实战案例
spring boot·websocket
摇滚侠5 小时前
Spring Boot 3零基础教程,WEB 开发 默认的自动配置,笔记25
前端·spring boot·笔记