侧边栏壁纸
博主头像
码森林博主等级

一起走进码森林,享受编程的乐趣,发现科技的魅力,创造智能的未来!

  • 累计撰写 146 篇文章
  • 累计创建 74 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

全链路监控-SkyWalking

码森林
2022-03-09 / 0 评论 / 0 点赞 / 634 阅读 / 3,884 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-03-09,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

SkyWalking 基础介绍与快速部署。

官方文档

https://skywalking.apache.org/docs/main/v8.6.0/readme/

概述

SkyWalking 是一个开源可观察性平台,用于收集、分析、聚合和可视化来自服务和云原生基础设施的数据。SkyWalking 提供了一种简单的方法来维护分布式系统的清晰视图,即使是跨云也是如此。它是一种现代 APM,专为云原生、基于容器的分布式系统而设计。

为什么要使用 SkyWalking?

SkyWalking 提供了在许多不同场景中观察和监控分布式系统的解决方案。首先,与传统方式一样,SkyWalking 为 Java、C#、Node.js、Go、PHP 和 Nginx LUA 等服务提供自动仪表代理。(包括对 Python 和 C++ SDK 贡献的呼吁)。在多语言、持续部署的环境中,云原生基础架构变得更加强大,但也更加复杂。SkyWalking 的服务网格接收器允许 SkyWalking 从 Istio/Envoy 和 Linkerd 等服务网格框架接收遥测数据,让用户了解整个分布式系统。

SkyWalking 为服务服务实例端点提供可观察性功能。术语服务、实例和端点如今无处不在,因此值得在 SkyWalking 的上下文中定义它们的具体含义:

  • 服务。表示一组/一组为传入请求提供相同行为的工作负载。您可以在使用仪器代理或 SDK 时定义服务名称。SkyWalking 也可以使用您在 Istio 等平台中定义的名称。
  • 服务实例。服务组中的每个单独的工作负载称为一个实例。就像pods在 Kubernetes 中一样,它不需要是单个 OS 进程,但是,如果您使用的是仪器代理,则实例实际上是一个真正的 OS 进程。
  • 端点。传入请求的服务路径,例如 HTTP URI 路径或 gRPC 服务类 + 方法签名。

SkyWalking 允许用户了解服务和端点之间的拓扑关系,查看每个服务/服务实例/端点的指标并设置警报规则。

此外,您可以集成

  1. 使用 SkyWalking 本机代理和 SDK 与 Zipkin、Jaeger 和 OpenCensus 的其他分布式跟踪。
  2. 其他度量系统,例如 Prometheus、Sleuth(Micrometer)、OpenTelemetry。

架构

SkyWalking 在逻辑上分为四个部分:探针、平台后端、存储和 UI。frame-v8

  • 探针收集数据并重新格式化以满足 SkyWalking 要求(不同的探针支持不同的来源)。
  • 平台后端支持数据聚合、分析和流处理,包括跟踪、指标和日志。
  • 存储通过开放/可插拔接口存储SkyWalking 数据。您可以选择现有的实现,例如 ElasticSearch、H2、MySQL、TiDB、InfluxDB,或者实现您自己的。欢迎新存储实现者的补丁!
  • UI是高度可定制的基于 Web 的界面,允许 SkyWalking 最终用户可视化和管理 SkyWalking 数据。

目标

SkyWalking 项目的核心设计目标:

  • 保持可观察性。无论目标系统采用何种部署方式,SkyWalking 都为其提供了集成解决方案以保持可观察性。基于此,SkyWalking 提供了多种运行时表单和探针。
  • 拓扑、度量和跟踪一起。理解分布式系统的第一步是拓扑图。它以易于阅读的布局将整个复杂系统可视化。在拓扑结构下,OSS人员对服务、实例、端点和调用的指标有更高的要求。跟踪采用详细日志的形式,以了解这些指标。例如,当端点延迟变长时,您希望查看最慢的跟踪以找出原因。所以你可以看到,他们从大局到细节,都是需要的。SkyWalking 集成并提供了许多功能,使这成为可能且易于理解。
  • 重量轻。需要两个重量轻的部件。(1) 在probe中,我们只依赖网络通信框架,首选gRPC。这样,probe 应该尽可能小,以避免库冲突和 VM 的负载,例如 JVM 中的 permsize 要求。(2) 作为一个可观察性平台,它是您项目环境中的二级和三级系统。所以我们正在使用我们自己的轻量级框架来构建后端核心。那么您就不需要部署和维护大数据技术平台。SkyWalking 在技术栈上应该很简单。
  • 可插拔。SkyWalking 核心团队提供了很多默认实现,但绝对不够,也不适合所有场景。因此,我们提供了许多可插拔的功能。
  • 便携性。SkyWalking 可以运行在多种环境中,包括: (1) 使用传统的注册中心,如 eureka。(2) 使用包括服务发现在内的 RPC 框架,如 Spring Cloud、Apache Dubbo。(3) 在现代基础设施中使用 Service Mesh。(4) 使用云服务。(5)跨云部署。SkyWalking 在所有这些情况下都应该运行良好。
  • 互操作性。可观察性领域如此广阔,以至于 SkyWalking 几乎不可能支持所有系统,即使有其社区的支持。目前,它支持与其他 OSS 系统的互操作性,尤其是探针,如 Zipkin、Jaeger、OpenTracing 和 OpenCensus。SkyWalking 能够接受和读取这些数据格式对最终用户来说非常重要,因为用户不需要切换他们的库。

快速部署

Elasticsearch 安装

一般SkyWalking采用Elasticsearch作为默认存储,Elasticsearch安装看这里~

Docker 安装 SkyWalking

1、拉取镜像

docker pull apache/skywalking-oap-server:8.6.0-es7
docker pull apache/skywalking-ui:8.6.0
  • skywalking-oap-server:服务端,APM(应用程序性能监控)系统
  • skywalking-ui:管理界面

2、创建运行 skywalking-oap-server 容器

docker run -d --name oap \ 
--restart always  \
-e TZ=Asia/Shanghai \
-p 12800:12800 \
-p 11800:11800 \
--link elasticsearch-single:elasticsearch-single \
-e SW_STORAGE=elasticsearch7 \
-e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch-single:9200 \
apache/skywalking-oap-server:8.6.0-es7
  • --name 设置容器名称为 oap
  • --restart always 表示服务自动重启
  • -d 表示后端运行
  • --link 用于创建容器间通信
  • -e TZ=Asia/Shanghai 设置时区为上海
  • -e SW_STORAGE=elasticsearch7 表示默认存储采用 elasticsearch7,如果es版本是6,此时设置为 elasticsearch
  • -e SW_STORAGE_ES_CLUSTER_NODES 设置 es 集群节点

3、创建运行 skywalking-ui 容器

 docker run -d --name skywalking-ui-8089 \
--restart=always \
-e TZ=Asia/Shanghai \
-p 8089:8080 \
--link oap:oap \
-e SW_OAP_ADDRESS=oap:12800 \
-e SW_TIMEOUT=20000 \
apache/skywalking-ui:8.6.0

4、skywalking agent 使用

需要下载源码包:https://archive.apache.org/dist/skywalking/8.6.0/apache-skywalking-apm-8.6.0.tar.gz

添加JVM启动参数

-javaagent:/opt/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=test_service -Dskywalking.collector.backend_service=192.168.20.56:11800
  • -javaagent 指定 skywalking-agent.jar 包位置
  • -Dskywalking.agent.service_name 指定服务名
  • -Dskywalking.collector.backend_service 指定skywalking oap地址

5、测试

由于在本地搭建的,我这边直接使用idea启动我的 Spring Boot blog 项目进行演示,添加 VM options 如下:

-javaagent:/opt/skywalking/agent/skywalking-agent.jar -Dskywalking.agent.service_name=blog -Dskywalking.collector.backend_service=192.168.20.56:11800

启动后,随便浏览一些页面~

6、访问 skywalking-ui

浏览器访问:http://localhost:8089/ ,可以看到相关的指标有显示,说明 skywalking 安装成功了~

相关命令

拉取镜像

docker pull {镜像名称}:{版本}

创建并运行容器

docker run {镜像名称}:{版本}
-d # 后台运行
--restart always # 服务自动重启
-e {变量名}:{变量值} # 设置运行时环境变量
-p {宿主机端口}:{容器端口} # 端口映射
--link {容器ID或者容器名称}:{别名} # 链接容器,使用时可以用别名+端口

总结

本文主要对 SkyWalking 的基本概述、能力进行介绍,并使用 Docker 快速部署进行测试。

0

评论区