Bootstrap

全网最全skywalking实战教程(持续更新)

1、有什么用

1、观测接口性能
2、查看请求调用链路情况

2、部署

docker-compose.yml 如下(这个是根据官方提供的yml修改的)

version: '3.8'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.4.2
    container_name: elasticsearch
    ports:
      - "9200:9200"
    networks:
      - demo
    healthcheck:
      test: [ "CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1" ]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
    environment:
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1

  oap:
    image: ghcr.io/apache/skywalking/oap:latest
    container_name: oap
    ports:
      - "11800:11800"
      - "12800:12800"
    networks:
      - demo
    depends_on:
      elasticsearch:
        condition: service_healthy
    healthcheck:
      test: [ "CMD-SHELL", "curl http://localhost:12800/internal/l7check" ]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
    environment:
      - SW_STORAGE=elasticsearch
      - SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200
      - SW_HEALTH_CHECKER=default
      - SW_TELEMETRY=prometheus
      - JAVA_OPTS=-Xms2048m -Xmx2048m

  ui:
    image: ghcr.io/apache/skywalking/ui:latest
    container_name: ui
    ports:
      - "8080:8080"
    networks:
      - demo
    depends_on:
      oap:
        condition: service_healthy
    environment:
      - SW_OAP_ADDRESS=http://oap:12800
      - SW_ZIPKIN_ADDRESS=http://oap:9412

networks:
  demo:

docker-compose up -d

访问WEB UI http://127.0.0.1:8080

3、java接入

1、下载agent包

wget https://dlcdn.apache.org/skywalking/java-agent/9.3.0/apache-skywalking-java-agent-9.3.0.tgz

tar xf apache-skywalking-java-agent-9.3.0.tgz

2、启动时指定-javaagent

1 先下载一个java demo
wget http://static.iocoder.cn/lab-39-demo-2.2.2.RELEASE.jar

2 编写启动文件 java.sh
cat > java.sh <<EOF
# SkyWalking Agent 配置
export SW_AGENT_NAME=demo-application # 配置 Agent 名字。一般来说,我们直接使用 Spring Boot 项目的 `spring.application.name` 。
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 # 配置 Collector 地址。
export SW_AGENT_SPAN_LIMIT=2000 # 配置链路的最大 Span 数量。一般情况下,不需要配置,默认为 300 。主要考虑,有些新上 SkyWalking Agent 的项目,代码可能比较糟糕。
export JAVA_AGENT=-javaagent:/data/skywalking/skywalking-agent/skywalking-agent.jar # SkyWalking Agent jar 地址。
# Jar 启动
java -jar $JAVA_AGENT -jar lab-39-demo-2.2.2.RELEASE.jar 
EOF

3 启动
bash java.sh

4、发起请求
curl  http://127.0.0.1:8079/demo/echo

4、观察web界面

在这里插入图片描述

4、python接入

1.依赖下载
pip install fastapi uvicorn apache-skywalking

2.用fastapi编写一个demo
app.py

from fastapi import FastAPI
import os
from skywalking import agent,config

config.init(agent_collector_backend_services='127.0.0.1:11800', agent_name='fastchat')
agent.start()

app = FastAPI()

@app.get("/")
async def read_root():
    return {"message": "Hello, SkyWalking!"}

@app.get("/items/{item_id}")
async def read_item(item_id: int, query: str = None):
    return {"item_id": item_id, "query": query}

start.sh

uvicorn app:app --host 0.0.0.0 --port 8000

运行
bash start.sh

访问测试
curl http://127.0.0.1:8000/

查看web
在这里插入图片描述