SkyWalking部署指南
简书markdown怎么连html表格都解析不了,复杂表格只能贴图片了。
SkyWalking概述
SkyWalking 是一个开源的可观测平台,用于收集、分析、聚合和可视化来自服务和云原生基础设施的数据。SkyWalking 提供了一种简单的方式来清晰地观测分布式系统,即使是横跨多个云平台。它是一种现代 APM(application performance monitor),专为云原生、基于容器的分布式系统而设计。
SkyWalking 在逻辑上分为四个部分:Probes、Platform backend、Storage 和 UI。
- 架构图
- 组件交互图
部署过程
单机部署
服务及配置说明
下表仅展示基础配置,更多配置参考官方文档。
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 -
服务器规划
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
提供了默认的告警规则,包含:
- 最近3分钟服务平均响应时间超过1s;
- 最后2分钟服务成功率低于80%;
- 最近3分钟服务响应时间超过1s,按照50,75,90,95,99的百分比告警;
- Service Instance最近2分钟内平均响应时间超过1s,且实例名与regex匹配。
- 最后 2 分钟内端点平均响应时间超过 1 秒;
- 最近2分钟数据库访问平均响应时间超过1s;
- 端点关联平均响应时间在最近 2 分钟内超过 1 秒。
自定义告警规则
skywalking支持按照服务和标签配置精细的告警规则,具体参见官方文档。
告警方式
skywaling支持webhook告警,支持钉钉、飞书、微信企业版等,也可以是自定义的webhook接口。钉钉配置示例:
-
配置钉钉群聊机器人,获取webhook地址,参考钉钉开发者文档;
-
在
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按两种维度分别计算:
- recordData: 包括链路、日志、告警等数据;
- 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
网友评论