[转帖]基于 Skywalking 部署应用性能监控
https://www.jianshu.com/p/50627b9ab0be
今天我们就着重讲一讲如何基于 Skywalking 来快速搭建一套应用性能监控平台

一、Skywaling 介绍
Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的开源项目, 2017年12月SkyWalking成为Apache国内首个个人孵化项目, 2019年4月17日SkyWalking从Apache基金会的孵化器毕业成为顶级项目, 目前SkyWalking支持Java、 .Net、 Node.js、 go、 python等探针, 数据存储支持MySQL、 ElasticSearch等, SkyWalking与Pinpoint相同, 对业务代码无侵入, 不过探针采集数据粒度相较于Pinpoint来说略粗, 但性能表现优秀, 目前SkyWalking增长势头强劲, 社区活跃, 中文文档齐全, 没有语言障碍, 支持多语言探针, 这些都是 SkyWalking的优势所在, 还有就是SkyWalking支持很多框架, 包括很多国产框架, 例如, Dubbo、 gRPC、 SOFARPC 等等, 同时也有很多开发者正在不断向社区提供更多插件以支持更多组件无缝接入SkyWalking。
官网地址:https://skywalking.apache.org/
二、Skywalking 同类产品比较
1. Skywalking 的特点介绍:
可以实现从前端到后端(多种语言)请求追踪,指标数据采集,日志记录等多项功能。
多语言自动探针, 支持Java、 GO、 Python、 PHP、 NodeJS、 LUA、 Rust等客户端。
内置服务网格可观察性, 支持从Istio+Envoy Service Mesh收集和分析数据。
模块化架构, 存储、 集群管理、 使用插件集合都可以进行自由选择。
支持自定义告警配置,目前是通过配置文件的形式。
可视化效果丰富,可以自定义多种图表进行拖拽组合展现。
整体架构图大致如下:
image
数据通过push/pull方式,从不同的应用侧上报到Transport Layer,然后经过接收层汇聚到聚合服务降采样计算,最终落库展现,整个过程可以在单独的一个 Java 进程中部署,也可以采用分布式架构(混合模式)来部署,根据接入的数量来选择。
简化架构如下:

2. Skywalking 较同类其他产品比较:

参照对比结果,其实我们不难发现,不管是在语言支持的丰富度还是性能上,Skywalking都具有一定的优势,并且就国内的行业背景来看,绝大部分的应用都是基于Java开发的,Skywalking本身OAP服务就是基于Java开发的,这一点具有非常天然的优势。
三、IDEA开发环境的运行与配置:
1. IDEA 导入 Skywalking 源码,mvn编译成功
不要去 github 直接 clone ,下载地址:https://dlcdn.apache.org/skywalking/9.3.0/apache-skywalking-apm-9.3.0-src.tgz

启动模块就是 server-starter OAPServerStartUp 类,注意配置文件:application.yml 的相关配置,如果只是运行,可以按照默认的配置来直接 main 方法启动,如果首次体验也可以修改 storage 模块的存储类型,修改对应的数据库地址就可以,启动成功后,会全部自动创建完所有的数据库表
注启动完成后,会看到对应的数据上报端点日志显示创建成功:

注意配置文件的设置:
storage:
selector: mysql # the mysql storage will actually be activated, while the h2 storage takes no effect
h2:
properties:
jdbcUrl: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db;DB_CLOSE_DELAY=-1}
dataSource.user: ${SW_STORAGE_H2_USER:sa}
metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
mysql:
properties:
jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
dataSource.user: ${SW_DATA_SOURCE_USER:root}
dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root@1234}
dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}
dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}
dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
# other configurations
2. 前端编译:
上述步骤下载的源码包直接就已经包含了前端的源码,在 skywalking-ui 目录下,访问端口:8080
首先安装依赖包:
// 第一步
npm install
安装成功后,直接运行:
// 第二步
npm run serve
实际访问地址:http://localhost:8080
3. 探针安装:以 Java 探针为例:
Java探针的包结构如下
+-- agent
+-- activations
apm-toolkit-log4j-1.x-activation.jar
apm-toolkit-log4j-2.x-activation.jar
apm-toolkit-logback-1.x-activation.jar
...
+-- config
agent.config
+-- plugins
apm-dubbo-plugin.jar
apm-feign-default-http-9.x.jar
apm-httpClient-4.x-plugin.jar
.....
+-- optional-plugins
apm-gson-2.x-plugin.jar
.....
+-- bootstrap-plugins
jdk-http-plugin.jar
.....
+-- logs
skywalking-agent.jar
- Linux Tomcat 7, Tomcat 8, Tomcat 9 配置:修改配置文件 tomcat/bin/catalina.sh 第一行
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/path/to/skywalking-agent/skywalking-agent.jar"; export CATALINA_OPTS
- Windows Tomcat 7, Tomcat 8, Tomcat 9 配置:修改配置文件 tomcat/bin/catalina.bat 第一行
set "CATALINA_OPTS=-javaagent:/path/to/skywalking-agent/skywalking-agent.jar"
- Jar 文件,比如 SpringBoot 打成的FatJar 形式,需要启动时添加启动参数
java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -jar yourApp.jar
- Jetty 容器,修改 jetty.sh 文件,增加 -javaagent 参数到启动命令
export JAVA_OPTIONS="${JAVA_OPTIONS} -javaagent:/path/to/skywalking-agent/skywalking-agent.jar"
四、最终展现效果
非常直观的链路拓扑,可以快速定位问题的根源

简洁的概览全局页

五、写在最后
如果大家有任何关于Skywalking不管是部署,试用,甚至生产环境遇到的各种问题,都可以添加小观纵的公众号进入群聊,汇聚行业大咖一起交流。
[转帖]基于 Skywalking 部署应用性能监控的更多相关文章
- [转]基于phantomJS实现web性能监控
1.web性能监控背景描述 上期分享的<Web性能监控自动化探索之路–初识WebPageTest>从依赖webpagetest的角度给出了做性能日常检查的方案,但由于依赖结构相对复杂我们需 ...
- .NetCore使用skywalking实现实时性能监控
一.简介 很久之前写了一篇 <.Net Core 2.0+ InfluxDB+Grafana+App Metrics 实现跨平台的实时性能监控>关于NetCore性能监控的文章,使用Inf ...
- 安装-apache skywalking (java 应用性能监控)
官网:http://skywalking.apache.org/ 服务器:10.30.31.28 centos 7 jdk 1.8.x ES 5.x 5.0.0-bet a2版本 . http://s ...
- NanoProfiler - 适合生产环境的性能监控类库 之 基本功能篇
背景 NanoProfiler是一个EF Learning Labs出品的免费性能监控类库(即将开源).它的思想和使用方式类似于MiniProfiler的.但是,设计理念有较大差异. MiniProf ...
- Apache SkyWalking 为.NET Core带来开箱即用的分布式追踪和应用性能监控
在大型网站系统设计中,随着分布式架构,特别是微服务架构的流行,我们将系统解耦成更小的单元,通过不断的添加新的.小的模块或者重用已经有的模块来构建复杂的系统.随着模块的不断增多,一次请求可能会涉及到十几 ...
- 应用性能监控:SkyWalking
目录 SkyWalking 简介 SkyWalking 搭建 平台后端(Backend) 平台前端(UI) Java Agent(Java 应用监控) Java Agent 下载 Java 演练项目 ...
- 高可用Kubernetes集群-14. 部署Kubernetes集群性能监控平台
参考文档: Github介绍:https://github.com/kubernetes/heapster Github yaml文件: https://github.com/kubernetes/h ...
- 基于sentry的前端错误监控日志系统(部署sentry服务器/前端项目部署)-让前端最快的定位到生产问题
背景 在这越来越发达的网络时代,web应用也是越来越复杂,尤其是前端的开发,也是越来越受重视. 所以在我们前端开发完成后,会有一些列的web应用的上线验证,如自测.QA测试.code review 等 ...
- 基于SkyWalking的分布式跟踪系统 - 微服务监控
上一篇文章我们搭建了基于SkyWalking分布式跟踪环境,今天聊聊使用SkyWalking监控我们的微服务(DUBBO) 服务案例 假设你有个订单微服务,包含以下组件 MySQL数据库分表分库(2台 ...
- Linux服务器集群性能监控之Performance Co-Pilot(PCP)部署
转载自:https://blog.csdn.net/w84268426/article/details/78431778 在部署PCP时,我用到了两台cent os 7虚拟机. 1.官方安装文档htt ...
随机推荐
- GaussDB(for Redis)游戏实践:玩家下线行为上报
本文分享自华为云社区<GaussDB(for Redis) 游戏实践:玩家下线行为上报>,作者:GaussDB 数据库 为保护未成年人的身心健康,2007年国家推出网络游戏防沉迷系统,对未 ...
- 云小课|GaussDB如何进行性能调优
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:GaussDB性能 ...
- MindSpore实践:对篮球运动员目标的检测
摘要:本文讲述的是MindSpore对篮球运动员目标的检测应用,通过AI技术辅助对篮球赛场进行分析. 本文分享自华为云社区<MindSpore大V博文系列:AI对篮球运动员目标的检测>,原 ...
- 盘点华为云GaussDB(for Redis)六大秒级能力
摘要:盘点高斯Redis的秒级能力,包括扩容.备份.删除.启动等. 本文分享自华为云社区<华为云GaussDB(for Redis)揭秘第20期:六大秒级能力盘点>,作者: 高斯Redis ...
- C# RSA 非对称加密
代码: RSAHelper.cs(RSA加密工具类): using System; using System.Security.Cryptography; using System.Text; nam ...
- 【3rd_Party】format() 处理一些常见的格式化解决方案
fmt的痛与对format设计的思考 fmt:轻量高性能的C++格式化库 C++20 引入了新的 format() 函数,该函数以字符串形式返回参数的格式化表示.format() 使用 python ...
- Codeforces 1326A Bad Ugly Numbers (思维)
Codeforces 1326A Bad Ugly Numbers 看完题目,第一直觉,质数肯定满足题意,再看数据范畴,\(1≤n≤10^5\), 质数线性筛仅能做到 n=7 的情况,即处理到1000 ...
- L3-001. 凑零钱-PAT团体程序设计天梯赛GPLT(01背包,动态规划)
韩梅梅喜欢满宇宙到处逛街.现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债.韩梅梅手边有 104 枚来自各个星球的硬币,需要请你帮她盘算一下 ...
- 智慧城市大数据运营中心 IOC 之 Web GIS 地图应用
前言 IOC(Intelligent Operations Center)--智慧城市智能运营中心就是智慧城市的大脑,是建立在各个智慧应用系统之上的系统.通过对政府各职能部门的业务信息共享与整合,聚焦 ...
- vue 状态管理 四、Action用法
系列导航 vue 状态管理 一.状态管理概念和基本结构 vue 状态管理 二.状态管理的基本使用 vue 状态管理 三.Mutations和Getters用法 vue 状态管理 四.Action用法 ...