Apache Skywalking 实战 阅读笔记 第二章
Apache Skywalking 实战 阅读笔记 第二章一、参考资料二、笔记总结第2章 SkyWalking安装与配置本章主要介绍SkyWalking的项目编译和工程结构以及JavaAgent模块、后端模块、UI模块的部署和配置信息。通过本章的学习读者可以部署一个简单的SkyWalking环境来体验SkyWalking的便捷和强大。2.1 项目编译与工程结构本节将主要从代码工程的角度介绍SkyWalking的源码编译和项目的工程结构来帮助读者更好地理解SkyWalking的源码结构。2.1.1 项目编译2.1.2 工程结构2.2 JavaAgent安装JavaAgent是SkyWalking系统中的数据发送端通过简单的部署和配置用户就可以做到无代码侵入式地获取到业务调用链路数据。2.2.1 安装方法2.2.2 配置参数2.2.3 插件介绍SkyWalking的插件库主要分为以下两类。稳定插件装载了SkyWalking的JavaAgent之后会自动进行加载的插件稳定插件在agent/plugins目录下。可选插件不会自动进行加载的插件。在agent/optional-plugins目录下如果要使用可选插件需要将对应插件的jar包复制到/agent/plugins目录下。1. 稳定插件2. 可选插件2.2.4 高级特性1. 配置覆盖探针参数 系统属性 系统环境变量 配置文件2. 自定义配置文件3. 客户端采样agent.sample_n_per_3_secs400代表SkyWalking只会采集3秒内的400个链路。4. TLS在互联网中传输数据时TLSTransport Layer Security传输层安全性协议是一种很常见的安全解决方案。TLS是建立在传输层TCP协议之上的协议它会将应用层的报文进行加密后再交由TCP进行传输这样就保证了传输数据的安全性。在一些SkyWalking使用案例中用户有如下使用背景目标应用在一个区域也称为VPC​SkyWalking后端在另一个区域(VPC)。两端之间通信的报文一旦被截获就会泄露传输的内容。因此SkyWalking通过使用gRPC TLS来保证通信的安全性。其鉴权模式只支持no mutual auth。5. 命名空间SkyWalking是一个监控工具会从分布式系统中收集度量值。在真实世界中大型分布式系统包含了成百上千的服务和服务实例。在这种情况下很有可能不止一个小组甚至不止一个公司在维护和监控分布式系统。每个小组或公司掌管着不同的部分他们不希望也不应该共享他们的度量值。6. Application Toolkit API与OpenTracing APIApplication Toolkit API是SkyWalking提供的一些用户可以主动使用的工具API其中包含日志与TraceId的整合、自定义某个方法的Trace、修改某个Span的信息以及跨线程的链路追踪等。OpenTracing API则是SkyWalking基于OpenTracing标准实现的SkyWalking API用户可以使用这些API手动构建分布式链路追踪的上下文。2.3 后端与UI部署本节将主要介绍SkyWalking项目的后端collector(OAP Server)和前端UI的部署方式包括主要配置介绍及配置含义。你可以将SkyWalking的后端部署在物理机、虚拟机或者Kubernetes集群中。通过本节的学习读者将了解到SkyWalking后端collector和前端UI是如何运行的并能根据实际业务场景配置更加优化的参数。2.3.1 SkyWalking部署介绍2.3.2 快速启动JDK需要JDK 8及以上版本。快速启动的SkyWalking只能用于初步了解和预览其功能不能作为生产环境长期部署关于如何在生产环境中部署3.3节会具体讲解。最简单的快速启动方式是进入skywalking目录后在命令行直接执行**bin/startup.shLinux和Mac用户或bin/startup.batWindows用户**​。startup会同时启动后端oapServer对应启动脚本为oapService.sh和UI模块对应启动脚本为webappService.sh​启动成功后将会在控制台输出启动成功的日志。快速启动会读取默认的配置文件oapServer的默认配置文件在config目录中UI模块的默认配置文件在webapp目录中。正常情况下控制台显示启动成功后服务端oapServer就可以正常服务了。关于快速启动服务采用的存储和服务端口可以参考如下说明。后端oapServer默认使用的存储为H2内存数据库这样就不需要额外部署存储可以参考config/application.yaml中storage的相关配置。后端oapServer默认会开启gRPC监听端口11800及HTTP RESTful的端口12800用来接收多语言(Java、PHP、.Net Core、Node.js、Go)的Agent探针及Service Mesh中数据面的监控数据。UI模块默认监听8080端口用于前端页面访问并且UI模块会将前端的所有后端请求(GraphQL)代理到后端oapServer的12800端口。2.3.3 application.yaml详解2.3.4 参数复写虽然application.yaml提供了丰富灵活的配置但是某些情况下用户还是需要针对某些节点或者每个节点有不同的配置这时可以采用启动参数或者环境变量进行覆盖。其中优先级顺序为从启动参数指定、环境变量到application.yaml中具体配置依次递减。2.3.5 IP和端口设置在核心模块中可以对后端OAP服务监听的IP和端口进行设置特别是系统有多网卡多IP的时候可以设置将OAP服务绑定在某一个IP上。2.3.6 集群管理配置在实际生产环境中使用时为了保证服务的稳定和健壮需要对OAP后端采用集群模式进行部署。本节将详细讲解如何对OAP后端进行集群管理包括使用传统集群管理工具管理物理机集群以及使用Kubernetes管理云原生集群。1. 传统集群管理工具OAP目前支持4种集群管理工具ZooKeeper、Consul、Nacos和etcd。2. Kubernetes集群管理Kubernetes是一个开源的云原生容器化集群管理平台目标是让部署容器化的应用简单且高效。SkyWalking后台可以非常容易地部署在该管理平台之中而且受益于Kubernetes的高效管理可以保证OAP和UI组件的高可用性。对于在Kubernetes集群之中部署OAP集群虽然我们可以用前面介绍的服务发现服务如ZooKeeper、Consul等进行集群管理但Kubernetes平台本身就具备成为服务发现组件的能力通过访问API Server可以获取到OAP各个实例的Endpoint的位置从而实现集群中节点的互相访问。2.3.7节有完整的部署实例。3. 探针与集群通信由前面的IP和端口设置可知OAP服务端主要提供了gRPC和HTTP RESTful的接口方式接收客户端的数据。随着Skywalking项目的发展和演进目前的客户端早已不是仅有Java Agent探针还提供了多种语言PHP、C#、Node.js、Go等的探针同时支持一些主流调用链平台的协议如Zipkin和Jaeger也支持目前非常盛行的Service Mesh框架Istio的遥测数据。OAP服务端将接收不同类型的数据在application.yaml中分成了不同的配置因此读者在配置文件中可以看到如下配置。2.3.7 Kubernetes部署2.3.8 后端存储SkyWalking后端存储实现了多种生产环境可用的存储形式读者可以按照技术栈的要求和熟练程度自行选择。如果读者比较熟悉架构和代码也可以按照提供的接口自行实现存储目前已经支持的存储有Elasticsearch 6、MySQL和TiDB。1. Elasticsearch选择Elasticsearch作为存储只需要将前文所说的application.yaml中的storage设置为 elasticsearch即可。目前Elasticsearch也是大多数场景所使用的的存储形式Elasticsearch 集群可以方便地管理和水平扩展能够适应不同条件下监控数据量不同的业务场景。2. MySQL/TiDB3. 数据过期设置在SkyWalking中除了应用的元数据外还有以下两类可观测数据被持久化在存储系统中。Record记录。包含追踪调用链路数据和告警记录信息这种数据只会顺序记录不会被聚合和更新。Metric指标数据。比如各种维度all、service、endpoint等的p99/p95/p90/p75/p50p为对应对百分位请求的响应时间如p99表示99%的用户响应时间的响应时间数据等、热力图、成功率、CPM每分钟请求数​、错误率等信息加粗样式**。这种Metric数据通常按照分钟、小时、天、月等维度进行统计并存储在不同的表中。通常情况下随着数据量的增加为了节约存储空间、提高资源利用率会按照一定的周期进行数据删除。2.3.9 设置服务端采样率在服务端设置采样率只会将部分trace调用链路数据丢弃不会影响Metric数据比如service、service instance、endpoint统计的精确性因而可以用来应对大量数据上报带来的存储系统压力。2.3.10 告警设置1. 告警规则配置在SkyWalking中你可以非常灵活地设置各种指标的告警所有告警规则均配置在config/alarm-settings.yml中该配置主要包含以下两个部分。告警规则配置。配置哪些指标达到什么条件需要报警的规则。Webhooks。当告警触发后用于告警的外部接口。先来看一个示例配置你可以针对不同的Metric按照某个指标和指定频率配置告警。为了方便用户进行简易部署SkyWalking默认的发布包中已经包含了一些常用的告警规则可以到config/alarm-settings.yml中查看。2. Webhooks当告警规则达到触发条件后需要通过Webhooks将告警信息发送到用户指定的Web服务上。2.3.11 Exporter设置2.3.12 UI部署详解UI的部署主要由部署webapp代理层和前端页面组成由于apm-webapp在编译的时候会自动将skywalking-ui前端页面模块编译到最终的输出文件中所以读者只需关心apm-webapp应该如何配置。apm-webapp的核心配置位于webapp/webapp.yml中该配置文件主要包含以下两部分。UI的监听端口即通过浏览器访问页面的端口。后端OAP的端口。webapp本身没有业务逻辑所有查询都是通过Zuul代理转发到OAP服务的REST服务端口再通过GraphQL进行查询默认地址为127.0.0.1:12800。配置完成后如果无异常通过bin/webappService.sh(.bat)启动UI模块即可正常运行。2.4 UI介绍SkyWalking的Dashboard分为上、中、下三块区域上部是功能选择区右上为自动刷新设置下部是时间选择区中间是面板内容。功能选择方面各个版本会有所差别图2-5为SkyWalking 7.0的官方UI效果图。2.4.1 Dashboard介绍Dashboard提供服务、服务实例、Endpoint、数据库等多个实体维度的指标相关信息。服务实例包含几个典型的指标如图2-7所示。CPM每分钟调用数。Apdex一个标准的应用性能工业指标读者可以在网上查询相关资料。平均响应时间和响应时间的百分位数这里提一下百分位数用于反映响应时间的长尾效应例如p99200ms代表99%的请求响应时间可以小于等于200ms。SLA在SkyWalking中表示成功率。数据库视图是根据应用探针采集的数据推算出的数据性能指标数据。此推算中的响应时间、成功率、慢SQL等均由客户端采集得到其中包含网络问题、客户端程序故障造成的性能问题。2.4.2 拓扑介绍拓扑图是根据探针上行数据分析出的整体拓扑结构如图2-8所示。拓扑图支持点击展现和下钻单个服务的性能统计、trace、告警也可以通过点击拓扑图中的关系线展现服务间、服务实例间的性能指标如图2-9所示。2.4.3 Trace视图Trace是分布式追踪的典型视图SkyWalking提供了3种展现形式分别是列表见图2-10​、树结构见图2-11​、表格见图2-12​。不同视图允许用户从不同角度查看追踪数据特别是Span间的耗时关系。2.5 本章小结本章从SkyWalking的项目编译和工程结构开始逐步学习了SkyWalking的JavaAgent、后端和UI模块的部署与配置。相信你已经成功部署了自己的SkyWalking环境体验了SkyWalking的便捷和强大。下一章我们就进入生产环境进行实战

相关新闻

单片机:串行接口之通信概念

单片机:串行接口之通信概念

通信概念1. 引言2. 并行通信与串行通信2.1 并行通信2.2 串行通信3. 串行通信制式3.1 单工通信3.2 半双工通信3.3 全双工通信4.串行通信数据传输原理4.1 发送过程4.2 接收过程5. 异步通信与同步通信5.1 串行异步通信方式5.2 串行同步通信方式6. 串行通信的校验方法6.1 奇偶校验&…

2026/7/6 13:31:26阅读更多 →
机器学习项目的完整流程:从原始数据到模型预测

机器学习项目的完整流程:从原始数据到模型预测

学完 AI、机器学习、训练集、指标和过拟合之后,下一步要把这些概念放进一个完整项目里。 很多初学者一上来就问:模型用什么?参数怎么调?准确率为什么不高?但真正做项目时,模型只是中间一环。一个项目能不能…

2026/7/6 13:31:26阅读更多 →
文件损坏修复工具 支持视频/照片/Word/Excel/PDF 一键修复 下载

文件损坏修复工具 支持视频/照片/Word/Excel/PDF 一键修复 下载

上个月拍的采访视频,拷到电脑上突然显示”文件无法播放”。还有一次PPT做到凌晨两点,第二天打开居然报损坏,那种心跳骤停的感觉真的不想再体验了。试了几个在线修复工具,要么收费要么修完画质糊成一片。覆盖视频、照片、办公文档这…

2026/7/6 13:31:26阅读更多 →
YOLO11-Pose 全栈拆解|OpenPose自底向上PAF热力图、YOLO端到端OKS损失、多场景姿态落地、完整训练推理工程复现

YOLO11-Pose 全栈拆解|OpenPose自底向上PAF热力图、YOLO端到端OKS损失、多场景姿态落地、完整训练推理工程复现

目录 0. 摘要 1. 姿态估计核心认知与行业技术痛点 1.1 视觉任务层级对比:从看见物体到看懂动作 1.2 姿态估计四大核心技术难点 1.3 COCO数据集标准关键点体系 2. 两大主流姿态估计算法全维度拆解 2.1 自底向上流派:OpenPose核心原理(暴力美学架构) 2.1.1 整体网络架…

2026/7/6 14:36:32阅读更多 →
远程办公团队共用 GPT5.5 接口方案

远程办公团队共用 GPT5.5 接口方案

远程办公团队共用 GPT5.5 接口方案远程团队接入 GPT5.5 接口,最容易出问题的不是代码调用,而是“谁在用、用了多少、出错后怎么查”。如果只是把一个 Key 扔到群里,前几天看着省事,后面基本会遇到额度被打满、成员误用生产 Key、日…

2026/7/6 14:36:32阅读更多 →
IX6024 PCIe2.0 @ACP#24通道工业级交换芯片|老旧工控升级与海量边缘IoT时序数据扩容核心(对标ASM1824)

IX6024 PCIe2.0 @ACP#24通道工业级交换芯片|老旧工控升级与海量边缘IoT时序数据扩容核心(对标ASM1824)

一、行业前言:存量工控国产化替换浪潮来袭,PCIe2.0高可靠扩容成为下沉市场刚需2026年国内物理AI与工业智能化产业形成「高端PCIe4.0、中端PCIe3.0、存量工控PCIe2.0」三级并存的完整生态格局。在高端算力集群、中端工作站完成技术迭代的同时,…

2026/7/6 14:36:32阅读更多 →
GSV9001S@普及型4K视频处理芯片|轻量化物理AI可视化普惠落地核心(普及型工控/教育/边缘终端专用)

GSV9001S@普及型4K视频处理芯片|轻量化物理AI可视化普惠落地核心(普及型工控/教育/边缘终端专用)

一、行业前言:物理AI可视化全面下沉,高性价比视频处理成为普惠设备刚需2026年物理AI产业正式进入全场景可视化落地时代,区别于高端超算集群的极致算力渲染、多屏8K超清输出需求,占据市场80%以上增量的中端普惠设备,核心…

2026/7/6 14:36:32阅读更多 →
纺织行业HMI:化纤纺丝的张力控制与卷绕界面

纺织行业HMI:化纤纺丝的张力控制与卷绕界面

化纤纺丝,是让聚合物熔体或溶液从喷丝板中“吐丝成线”的精密过程。丝条的张力是贯穿始终的生命线:张力不稳,会导致断丝、毛丝、条干不匀,最终影响丝饼的成型质量。这里的HMI,是维持数百个纺丝位 “齐步走” 的 “交响…

2026/7/6 14:36:32阅读更多 →
聚簇索引回表与覆盖索引

聚簇索引回表与覆盖索引

一句话InnoDB 的表本身就是一棵以主键为 key 的 ​B 树(聚簇索引)​。普通索引的叶子节点存的是主键值,查数据时需要​回表​。覆盖索引让查询不回表,是性能优化的核心手段。聚簇索引(Clustered Index) 什么…

2026/7/6 14:31:32阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/6 4:26:20阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/6 2:48:33阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/6 0:10:35阅读更多 →
Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 技术架构先行:官方接口的合规应用 你是否曾在BP阶段手忙脚乱&#x…

2026/7/6 0:03:39阅读更多 →
多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理 【免费下载链接】mRemoteNG mRemoteNG is the next generation of mRemote, open source, tabbed, multi-protocol, remote connections manager. 项目地址: https://gitcode.com/gh_m…

2026/7/6 0:03:39阅读更多 →
COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南在数据分析和处理领域,去重统计是最基础也是最频繁使用的操作之一。当数据量达到亿级规模时,不同的去重统计方法在性能上可能产生天壤之别。本文将基于 5 亿行数据的实…

2026/7/6 0:03:39阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/6 4:45:01阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/6 4:45:01阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/6 4:45:03阅读更多 →