[转帖]基于 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 ...
随机推荐
- 实时入库不用愁,HStore帮分忧
本文分享自华为云社区<直播回顾 | 实时入库不用愁,HStore帮分忧>,作者:汀丶. 海量数据时代,如何实现数据实时入库与实时查询?GaussDB(DWS) HStore表为数据高效存储 ...
- 再拔头筹,FusionInsight为华为云大数据打造硬实力
摘要:在IDC2020大数据报告中,有云服务厂商.传统ICT 厂商,以及大数据时代的创企等三类"玩家",为何华为云能够脱颖而出? 近日,IDC发布<IDC MarketS ...
- 提升80%上云集成效率, TA是如何做到的
摘要:基于华为云开天aPaaS,提升80%上云集成效率,降低50%集成成本 没有充足资金,没有足够的项目规划和过渡时间,也没有经验丰富的IT团队支持,中小企业的上云路可谓是困难重重.如何帮助企业高效上 ...
- Angular:都2021年了,你为啥还没用Angular
摘要:数据绑定是将应用程序UI或用户界面绑定到模型的机制.使用数据绑定,用户将能够使用浏览器来操纵网站上存在的元素. Web开发需要模型和视图之间的数据同步.这些模型基本上包含数据值,而视图则处理用户 ...
- Python图像处理丨如何调用OpenCV绘制直方图
摘要:本篇文章主要讲解灰度直方图的基本概念,Python调用OpenCV实现绘制图像直方图. 本文分享自华为云社区<[Python图像处理] 十一.灰度直方图概念及OpenCV绘制直方图> ...
- 应用火山引擎 DataTester“避坑”,抖音实现用 A/B 实验快速试错
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 A/B 测试产品可以说是企业科学决策的基础"设施",能够帮助企业快速迭代产品. 在字节跳动,每 ...
- 轻松导航:教你在Excel中添加超链接功能
前言 超链接是指在网页或电子文档中常见的元素,它的主要作用是将一个文本或图像与另一网页.文件或资源链接起来,从而使用户能够通过点击该链接跳转到目标资源.超链接可以起到导航以及引用的作用.超链接通常有以 ...
- Java异步编程详解
在现代应用程序开发中,异步编程变得越来越重要,特别是在处理I/O密集型任务时.Java提供了一套强大的异步编程工具,使得开发者能够更有效地处理并发任务.本篇博文将深入探讨Java中异步编程的方方面面, ...
- HDU - 2181 :哈密顿绕行世界问题
Descriptions: 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市. Input 前20行的第i行有3个数,表示与第i个 ...
- 【每日一题】35. [CQOI2009]中位数图 (前缀和,贡献值计算)
补题链接:Here 算法涉及:前缀和,贡献值计算 经典中位数计数问题,记得以前百度之星也出过类似的题,这道题有一个限定范围是要奇数区间的 我们很容易想到,奇数下标到偶数下标或者偶数下标到奇数下标的长度 ...