SkyWalking简介

Apache SkyWalking是一款开源的观测性能平台,专为分布式系统设计,提供了全面的应用性能监控(APM)、服务网格观测、以及分布式追踪等功能。它帮助开发者和运维人员深入洞察应用的性能状况,快速定位问题根源,从而提升系统的稳定性和效率。SkyWalking的核心组件包括OAP服务器(Observability Analysis Platform)和UI界面,两者协同工作,为用户提供强大的可视化监控能力。

SkyWalking-UI简介

SkyWalking-UI是SkyWalking的可视化界面,它负责展示从OAP服务器收集来的监控数据,包括服务拓扑图、追踪详情、性能指标、告警信息等。通过SkyWalking-UI,用户可以直观地了解系统的健康状况,进行性能分析,以及配置监控规则。UI的设计旨在易于使用,同时支持高度定制化,以满足不同场景下的监控需求。

定制UI访问路径并重新编译

在某些场景下,用户可能需要将SkyWalking-UI的访问路径固定为特定的URL前缀,例如/skywalking-ui,以便更好地融入现有系统架构或便于管理。要实现这一需求,需要对SkyWalking-UI源码进行适当修改并编译。以下是一个简化的编译与配置步骤指南,适用于具有Java和Maven环境的用户。

准备工作

首先你得有JDK、Maven,版本要求参考官网

拉取代码

git clone --recurse-submodules https://github.com/apache/skywalking.git
cd skywalking/
git checkout v9.7.0 # 根据你的需求切换版本

修改SkyWalking-UI源码

需要修改3处源码:

  • skywalking-ui/src/graphql/fetch.ts

    async function query(param: { queryStr: string; conditions: { [key: string]: unknown } }) {
      const res: AxiosResponse = await axios.post(
        "/graphql", // 改为 /skywalking-ui/graphql
  • skywalking-ui/src/graphql/index.ts

        return axios
          .post(
            "/graphql", // 改为 /skywalking-ui/graphql
  • skywalking-ui/vite.config.ts

    export default ({ mode }: ConfigEnv): UserConfig => {
      const { VITE_SW_PROXY_TARGET } = loadEnv(mode, process.cwd());
      return {
        base: "/skywalking-ui", // 加这一行

编译

参考官方链接

./mvnw clean package -Dmaven.test.skip

编译完成后,会在dist生成一个压缩包。

制作skywalking-ui镜像

Dockerfile在docker/ui,适当改一下:

FROM eclipse-temurin:17-jre

ENV JAVA_OPTS=" -Xms256M " \
    SW_OAP_ADDRESS="http://127.0.0.1:12800" \
    SW_ZIPKIN_ADDRESS="http://127.0.0.1:9412"

WORKDIR skywalking

ARG DIST
COPY dist .

COPY docker-entrypoint.sh .
COPY log4j2.xml webapp/

EXPOSE 8080

ENTRYPOINT ["bash", "docker-entrypoint.sh"]

解压压缩包到docker/ui/dist,删除bin, config, oap-libs, agent,目录结构如下:

├── Dockerfile
├── dist
│   ├── LICENSE
│   ├── LICENSE.tpl
│   ├── NOTICE
│   ├── README.txt
│   ├── config-examples
│   ├── licenses
│   ├── tools
│   ├── webapp
│   └── zipkin-LICENSE
├── docker-entrypoint.sh
└── log4j2.xml

制作镜像:

docker build . -t haxicc/skywalking-ui:9.7.0

反向代理配置

为了使SkyWalking-UI通过/skywalking-ui作为访问路径,假设你使用Nginx作为反向代理,需要调整Nginx配置如下:

server {
    listen 80;
    server_name your.domain;

    location /skywalking-ui/ {
        proxy_pass http://skywalking-ui:8080/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

标签: none

添加新评论