分布式监控系统SkyWalking

时间:2022-07-23
本文章向大家介绍分布式监控系统SkyWalking,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

分布式监控系统SkyWalking

公司微服务架构用了有些时间了,微服务架构下的链接调用问题也越来越明显。人员流失,架构改造等原因,想人工维护架构图是不大可能了。常见的APM工具有catzipkinpinpoint,SkyWalking也不是解决该问题的“银弹”,只是能完整绘制出链路数据流。

简介

SkyWalking 是针对分布式系统的应用性能监控,天生吻合微服务、云原生和面向容器的分布式系统架构PHP应用也可接入,但需以插件方式接入,偶尔也会有一些坑。

主要有以下特性:

  • 服务、服务实例和endpoint(如:单个HTTP URI)的性能指标分析
  • 根因分析
  • 服务拓扑图
  • 服务和Endpoint依赖分析
  • 慢服务和慢Endpoint探查
  • 性能优化
  • 分布式追踪和追踪上下文传播
  • 告警

SkyWalking支持从多种数据源,收集不同格式的遥感数据,包括

  1. Java, .NET Core, NodeJS, PHP 自动探针
  2. Istio 遥感数据
  3. Zipkin v1/v2

最新有8.x架构图如下,较复杂,但实际应用起来还算简单

archat

部署安装

环境要求

  1. JDK8+
  2. Elasticsearch 6.x
  3. 8080,10800,11800,12800 端口不被占用

参考官方教程, 安装完成后需要对 config/elasticsearch.yml 做如下修改:

# 修改
# 如果 cluster.name 不设置为 CollectorDBCluster ,则需要修改 SkyWalking 的配置文件
cluster.name: CollectorDBCluster   
network.host: 0.0.0.0
# 增加
thread_pool.bulk.queue_size: 1000
  • linux环境中 tar -xvf skywalking-dist.tar.gz解压,windows环境中选择zip包.
  • 运行 bin/startup.sh,windows环境运行 bin/startup.bat

你可以使用config / application.yml的默认值

  • 注意:在5.0.0-alpha 版本中,startup.sh将会启动collector和UI两个进程,UI通过127.0.0.1:10800访问本地collector,无需额外配置。

顺利的话,访问自己 http://localhost:8080 就能查看页面了。想进一步完善的话,可以申请域名,做80跳转。

首页

Java接入

参考官网 https://github.com/apache/skywalking/blob/5.x/docs/cn/Deploy-skywalking-agent-CN.md,这里不做赘述。

.NET接入

参考官网 https://github.com/SkyAPM/SkyAPM-dotnet, 这里不做赘述

PHP接入

参考官网 https://github.com/SkyAPM/SkyAPM-php-sdk/blob/master/docs/install.md,这里不做赘述

使用体验和一些坑

  • 所有服务的数据流调用

看起来很酷炫,数据很详尽,实际上没多大用。

global-map

  • 点击单台详情有服务器概览

single-detail

  • java项目监控有天生优势,对gc,jvm的监控有screen绘制的很详尽

jvm-gc

  • 搜索框功能有待加强,一般人是真找不到。。

selector

  • trace状态跟踪功能很赞

可以指定状态来,比如下图,我指定 error状态,选择指定时间段后,会把这段时间内的程序异常搜索出来,点击具体条目,会显示错误详情。这个功能还是很赞的

error-list

error-detail

  • 一些不足的地方
  1. 缓存严重,新增服务器通常要删除浏览器缓存重新打开页面,才能看到新增服务器。这对于新增服务器是否正常添加到服务器池造成不小疑问和问题排查难度。尤其是新接触Skywalking的同学
  2. PHP接入后,如果产生程序日志,服务池中是不会显示服务器列表的。Java项目倒未发现这个问题。其它语言有待考查

总体

  1. 部署简单
  2. 体验友好
  3. 功能强大
  4. UI优美
  5. 暂未发现性能占用严重问题
  6. 对程序入侵程度可以接受。