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,版本要求参考官网

拉取代码

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

修改SkyWalking-UI源码

需要修改3处源码:

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

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

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

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

编译

参考官方链接

  1. ./mvnw clean package -Dmaven.test.skip

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

制作skywalking-ui镜像

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

  1. FROM eclipse-temurin:17-jre
  2. ENV JAVA_OPTS=" -Xms256M " \
  3. SW_OAP_ADDRESS="http://127.0.0.1:12800" \
  4. SW_ZIPKIN_ADDRESS="http://127.0.0.1:9412"
  5. WORKDIR skywalking
  6. ARG DIST
  7. COPY dist .
  8. COPY docker-entrypoint.sh .
  9. COPY log4j2.xml webapp/
  10. EXPOSE 8080
  11. ENTRYPOINT ["bash", "docker-entrypoint.sh"]

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

  1. ├── Dockerfile
  2. ├── dist
  3.    ├── LICENSE
  4.    ├── LICENSE.tpl
  5.    ├── NOTICE
  6.    ├── README.txt
  7.    ├── config-examples
  8.    ├── licenses
  9.    ├── tools
  10.    ├── webapp
  11.    └── zipkin-LICENSE
  12. ├── docker-entrypoint.sh
  13. └── log4j2.xml

制作镜像:

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

反向代理配置

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

  1. server {
  2. listen 80;
  3. server_name your.domain;
  4. location /skywalking-ui/ {
  5. proxy_pass http://skywalking-ui:8080/;
  6. proxy_set_header Host $host;
  7. proxy_set_header X-Real-IP $remote_addr;
  8. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  9. proxy_set_header X-Forwarded-Proto $scheme;
  10. }
  11. }

标签: none

已有 2 条评论

  1. 实验数据可增加误差分析以提高严谨性。

  2. 文章中的实用建议和操作指南,让读者受益匪浅,值得珍藏。

添加新评论