[转帖]基于 Skywalking 部署应用性能监控

基于,skywalking,部署,应用,性能,监控 · 浏览次数 : 0

小编点评

**Skywalking 应用性能监控平台简介** Skywalking 是一个开源项目,用于实现从前端到后端(多种语言)请求追踪、指标数据采集、日志记录等多项功能。它支持多个框架,包括国产框架。 **Key Features:** * 支持多语言探针,支持 Java、 GO、 Python、 PHP、 NodeJS、 LUA、 Rust 等客户端。 * 内置服务网格可观察性。 * 模块化架构,可以进行自由选择。 * 支持自定义告警配置。 * 可视化效果丰富,可以自定义多种图表进行组合展现。 **开发环境的运行与配置:** * 使用 IDEA 进行开发环境的搭建,并下载预配置的 agent 和配置文件。 * 后端服务器启动时,会自动创建数据库表并启动服务。 * 可以根据需要修改数据库地址。 **其他:** * 可以添加小观纵的公众号进入群聊,汇聚行业大咖一起交流。 * 在部署、试用、生产环境中,可以添加小观纵的公众号进入群聊,汇聚行业大咖一起交流。

正文

https://www.jianshu.com/p/50627b9ab0be

 

今天我们就着重讲一讲如何基于 Skywalking 来快速搭建一套应用性能监控平台

 
walkingfunny.com.png

一、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 进程中部署,也可以采用分布式架构(混合模式)来部署,根据接入的数量来选择。

简化架构如下:

 
image

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

 
image

参照对比结果,其实我们不难发现,不管是在语言支持的丰富度还是性能上,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

 
image

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

注启动完成后,会看到对应的数据上报端点日志显示创建成功:

 
image

注意配置文件的设置:

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 探针为例:

探针下载地址:https://skywalking.apache.org/downloads/

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"

四、最终展现效果

非常直观的链路拓扑,可以快速定位问题的根源

 
image

简洁的概览全局页

 
image

五、写在最后

如果大家有任何关于Skywalking不管是部署,试用,甚至生产环境遇到的各种问题,都可以添加小观纵的公众号进入群聊,汇聚行业大咖一起交流。

与[转帖]基于 Skywalking 部署应用性能监控相似的内容:

[转帖]基于 Skywalking 部署应用性能监控

https://www.jianshu.com/p/50627b9ab0be 今天我们就着重讲一讲如何基于 Skywalking 来快速搭建一套应用性能监控平台 walkingfunny.com.png 一、Skywaling 介绍 Skywalking是由国内开源爱好者吴晟开源并提交到Apache

[转帖]Skywalking介绍

https://www.jianshu.com/p/ffa7ddcda4ab 微服务架构已经是一个很通用的系统架构,常见的技术栈如下图所示,这张架构图基本涵括了当前微服务体系下的各种技术栈,可能不同的技术栈有不同的开源实现。 Screen Shot 2022-01-23 at 12.48.19 PM

[转帖]Skywalking介绍

https://www.jianshu.com/p/ffa7ddcda4ab/ 1.1 2022.01.23 17:23* 字数 1733 阅读 129682评论 0喜欢 16 微服务架构已经是一个很通用的系统架构,常见的技术栈如下图所示,这张架构图基本涵括了当前微服务体系下的各种技术栈,可能不同的

[转帖]Skywalking介绍

https://www.jianshu.com/p/ffa7ddcda4ab 微服务架构已经是一个很通用的系统架构,常见的技术栈如下图所示,这张架构图基本涵括了当前微服务体系下的各种技术栈,可能不同的技术栈有不同的开源实现。 Screen Shot 2022-01-23 at 12.48.19 PM

[转帖]基于eBPF的微服务网络安全

https://www.cnblogs.com/charlieroro/p/12724848.html 翻译自:Network security for microservices with eBPF 一些开源的kubernetes工具已经开始使用eBPF,这些工具大多数与网络,监控和安全相关。 本

[转帖]基于 Nginx 实现 10万+ 并发,Linux 内核优化

来源:http://t.cn/EyQTMwG 由于默认的Linux内核参数考虑的是最通用场景,这明显不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数,是的Nginx可以拥有更高的性能; 在优化内核时,可以做的事情很多,不过,我们通常会根据业务特点来进行调整,当Nginx作

[转帖]基于腾讯云微服务引擎(TSE) ,轻松实现云上全链路灰度发布

https://my.oschina.net/u/4587289/blog/8570699 1. 概述 软件开发过程中,应用发布非常频繁,通常情况下,开发或运维人员会将系统里所有服务同时上线,使得所有用户都使用上新版本。这样的操作时常会导致发布失败,或因发布前修改代码,线上出现 Bug。 假设一个在

【转帖】基于官方rpm包方式安装Oracle19c

https://blog.whsir.com/post-5489.html 本文基于Centos7.x环境,通过官方提供的rpm包来安装19c 1、下载Oracle19c安装包 https://www.oracle.com/database/technologies/oracle-database-

【转帖】基于paramiko的二次封装

https://www.jianshu.com/p/944674f44b24 paramiko 是 Python 中的一个用来连接远程主机的第三方工具,通过使用 paramiko 可以用来代替以 ssh 连接到远程主机执行命令。 paramiko 模块提供了两个核心组件,分别是 SSHClient 

[转帖]基于Fuse的用户态文件系统性能优化几点建议

https://zhuanlan.zhihu.com/p/68085075 目前很多文件系统基于Fuse( http://fuse.sourceforge.net/ )开发,在较为深入钻研Fuse实现后,总结出开发此类文件系统时可考虑的优化方案,拿出来与大家讨论讨论,如有不准确的地方,还望大家不吝赐