美文网首页
SkyWalking部署指南

SkyWalking部署指南

作者: 伊丽莎白菜 | 来源:发表于2023-02-26 14:36 被阅读0次

SkyWalking部署指南

简书markdown怎么连html表格都解析不了,复杂表格只能贴图片了。

SkyWalking概述

SkyWalking 是一个开源的可观测平台,用于收集、分析、聚合和可视化来自服务和云原生基础设施的数据。SkyWalking 提供了一种简单的方式来清晰地观测分布式系统,即使是横跨多个云平台。它是一种现代 APM(application performance monitor),专为云原生、基于容器的分布式系统而设计。

SkyWalking 在逻辑上分为四个部分:Probes、Platform backend、Storage 和 UI。

  • 架构图
skywalking架构
  • 组件交互图
组件交互

部署过程

单机部署

服务及配置说明

下表仅展示基础配置,更多配置参考官方文档

SW配置表格.png

部署脚本

docker-compose配置:

version: '3.8'
services:
  oap:
    image: apache/skywalking-oap-server:9.3.0
    container_name: skywalking-oap
    ports:
      - "11800:11800"
      - "12800:12800"
    healthcheck:
      test: [ "CMD-SHELL", "/skywalking/bin/swctl ch" ]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
    environment:
      SW_STORAGE: elasticsearch
      SW_STORAGE_ES_CLUSTER_NODES: 192.168.0.184:9200,192.168.0.182:9200,192.168.0.59:9200
      SW_ES_USER: elastic
      SW_ES_PASSWORD: $$Qsj9YEFcY
      SW_HEALTH_CHECKER: default
      JAVA_OPTS: "-Xms2048m -Xmx2048m"
    volumes:
      - /apps/skywalking/config:/skywalking/config

  ui:
    image: apache/skywalking-ui:9.3.0
    container_name: skywalking-ui
    depends_on:
      oap:
        condition: service_healthy
    links:
      - oap
    ports:
      - "8020:8080"
    environment:
      SW_OAP_ADDRESS: http://oap:1280

负载均衡

skywalking高可用方案

  • 方案对比

    方案类别 skywalking支持现状 优点 缺点
    注册中心+网关 skywalking支持zookeeper、consul、etcd、nacos注册中心;<br />网关需另行引入三方组件 可以实现动态注册发现和负载均衡 需要引入三方网关组件如spring-cloud-gateway等
    kubernates+helm skywalking提供了helm chart 云端部署,动态伸缩 基础设施限制
    nginx负载均衡 外围设施,与skywalking无关 部署简单 ,可以实现手动伸缩和负载均衡 不支持动态注册发现

    本例选用nginx负载均衡方式,实现skywalking水平扩展。

    skywalking负载均衡.png
  • 服务器规划

SW负载均衡.png

nginx部署

  • nginx配置文件

      upstream skywalking-oap-grpc {
       server 192.168.3.165:11800;
       server 192.168.3.214:11800;
      }
      
      upstream skywalking-oap-http {
       server 192.168.3.165:12800;
       server 192.168.3.214:12800;
      }
    
      upstream skywalking-ui {
       server 192.168.3.214:8020;
       server 192.168.3.165:8020;
      }
      
      server {
        listen 11800 http2;
        location / {
          grpc_pass grpc://skywalking-oap-grpc;
        }
      }
      
      server {
        listen 80;
        
        location / {
          proxy_pass http://skywalking-ui;
        }
        location /graphql {
          proxy_pass http://skywalking-oap-http;
        }
      }
    
  • docker-compose.yml

    version: '3.8'
    services:
      nginx:
        image: nginx:1.22.1-perl
        container_name: nginx
        ports:
          - "8020:80"
          - "11800:11800"
        volumes:
          - /apps/nginx/nginx.conf:/etc/nginx/nginx.conf
    

skywalking部署

每台服务器分别部署:

version: '3.8'
services:
  oap:
    image: apache/skywalking-oap-server:9.3.0
    container_name: skywalking-oap
    ports:
      - "11800:11800"
      - "12800:12800"
    healthcheck:
      test: [ "CMD-SHELL", "/skywalking/bin/swctl ch" ]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
    environment:
      SW_STORAGE: elasticsearch
      SW_STORAGE_ES_CLUSTER_NODES: 192.168.0.184:9200,192.168.0.182:9200,192.168.0.59:9200
      SW_ES_USER: elastic
      SW_ES_PASSWORD: $$Qsj9YEFcY
      SW_HEALTH_CHECKER: default
      JAVA_OPTS: "-Xms2048m -Xmx2048m"
    volumes:
      - /apps/skywalking/config:/skywalking/config

  ui:
    image: apache/skywalking-ui:9.3.0
    container_name: skywalking-ui
    ports:
      - "8090:8080"
    environment:
      SW_OAP_ADDRESS: http://192.168.3.39:8020

其他

告警配置

告警规则

默认告警规则

skywalking发行版在/skywalking/config/alarm-setting.yml提供了默认的告警规则,包含:

  1. 最近3分钟服务平均响应时间超过1s;
  2. 最后2分钟服务成功率低于80%;
  3. 最近3分钟服务响应时间超过1s,按照50,75,90,95,99的百分比告警;
  4. Service Instance最近2分钟内平均响应时间超过1s,且实例名与regex匹配。
  5. 最后 2 分钟内端点平均响应时间超过 1 秒;
  6. 最近2分钟数据库访问平均响应时间超过1s;
  7. 端点关联平均响应时间在最近 2 分钟内超过 1 秒。

自定义告警规则

skywalking支持按照服务和标签配置精细的告警规则,具体参见官方文档

告警方式

skywaling支持webhook告警,支持钉钉、飞书、微信企业版等,也可以是自定义的webhook接口。钉钉配置示例:

  1. 配置钉钉群聊机器人,获取webhook地址,参考钉钉开发者文档;

  2. skywalking/config/alarm-setting.yml写入webhook配置:

    dingtalkHooks:
      textTemplate: |-
        {
          "msgtype": "text",
          "text": {
            "content": "Apache SkyWalking Alarm: \n%s."
          }
        }
      webhooks:
        - url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx
    

数据清理

skywalking中,TTL按两种维度分别计算:

  1. recordData: 包括链路、日志、告警等数据;
  2. metricsData: 服务、实例、端点、拓扑等指标数据。

配置示例及默认值:

    # Set a timeout on metrics data. After the timeout has expired, the metrics data will automatically be deleted.
    recordDataTTL: ${SW_CORE_RECORD_DATA_TTL:3} # Unit is day
    metricsDataTTL: ${SW_CORE_METRICS_DATA_TTL:7} # Unit is day

相关文章

网友评论

      本文标题:SkyWalking部署指南

      本文链接:https://www.haomeiwen.com/subject/hiccldtx.html