Skywalking 快速搭建应用监控

今天我们就着重讲一讲如何基于 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收集和分析数据。

  • 模块化架构, 存储、 集群管理、 使用插件集合都可以进行自由选择。

  • 支持自定义告警配置,目前是通过配置文件的形式。

  • 可视化效果丰富,可以自定义多种图表进行拖拽组合展现。

整体架构图大致如下:

数据通过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 探针为例:

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

Java探针的包结构如下

+-- agent+-- activationsapm-toolkit-log4j-1.x-activation.jarapm-toolkit-log4j-2.x-activation.jarapm-toolkit-logback-1.x-activation.jar...+-- configagent.config  +-- pluginsapm-dubbo-plugin.jarapm-feign-default-http-9.x.jarapm-httpClient-4.x-plugin.jar.....+-- optional-pluginsapm-gson-2.x-plugin.jar.....+-- bootstrap-pluginsjdk-http-plugin.jar.....+-- logsskywalking-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不管是部署,试用,甚至生产环境遇到的各种问题,都可以添加小观纵的公众号进入群聊,汇聚行业大咖一起交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1381909.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

SprngBoot Admin (应用监控)

1 简介 SpringBoot应用可以通过Actuator来暴露应用运行过程中的各项指标,Spring Boot Admin通过这些指标来监控SpringBoot应用,然后通过图形化界面呈现出来。Spring Boot Admin不仅可以监控单体应用,还可以和Spring Cloud的注册中心相结合来…

行业分析| anyRTC智慧视频监控的应用

智慧视频监控是安全防范系统的重要组成部分,不仅可以达到一般视频监控系统的远程控制监控、视频回看,满足治安管理、城市管理、交通管理、应急指挥等需求,还具备防盗报警系统的预警信息作用,在预防、发现、控制、打击违法犯罪&…

十四、应用监控(2)

本章概要 监控信息可视化邮件报警 14.2 监控信息可视化 Spring Boot 中提供了监管信息管理段,用来实现监控信息的可视化,这样可以方便开发者快速查看系统运行情况,而不用一个一个地调用接口。 创建 Spring Boot Web 工程,添加以…

Prometheus应用监控

1.主流机器与应用Prometheus,skywalking监控体系分享介绍 应用监控介绍 目前市面上开源应用的APM系统主要有CAT、Zipkin、Pinpoint、SkyWalking。目前市面上机器监控软件有zabbix,Prometheus(也能监控应用,及其他中间件产品)。 Zipkin是Twitter开源的…

系统与应用监控的思路和方法

0、前言 在实际的性能分析中,一个很常见的现象是,明明发生了性能瓶颈,但当你登录到服务器中想要排查的时候,却发现瓶颈已经消失了。或者说,性能问题总是时不时地发生,但却很难找出发生规律,也很…

应用程序服务器监控

什么是应用程序服务器监视 为了确保业务应用程序的最佳性能,必须使用应用程序服务器监视工具,以深入了解应用程序的运行状况和正常运行时间。应用程序服务器监视可帮助您识别性能不足的服务器组件以及性能问题的根本原因,修复它们并确保应用…

应用监控

简介 Spring Boot提供了运行时的应用监控和管理的功能。我们可以通过http、JMX、SSH协议来进行操作。审计、健康及指标信息将会自动得到。 Endpoints 列举一些主要的endpoints : 敏感信息访问限制 根据上面表格,鉴权为false的,表示不敏…

应用监控以及告警实现

前言 一个Java应用 可以不优秀,但是一定不能没有监控方案。否则极大影响排查线上问题的效 以及系统故障的及时告警 。试想 核心应用挂了一个 但是没有配置告警 理想情况几个小时 被自己人发现了 但是万一自己人也没看到或者没关注 那难道让服务一直挂下去么 &#…

十四、应用监控(1)

本章概要 监控端点配置(开启端点,暴露端点,端点保护,端点响应缓存,路径映射,CORS支持,健康信息,应用信息) 当一个Spring Boot 项目运行时,开发者需要对 Spr…

一篇文章讲透线上应用监控

“线上服务停了,要重启一下”?久经职场做研发的程序员,视线会逐渐转移到线上应用的运行状态。设想一下,如果你在半夜两点正在酣眠美梦时,微信群里突然炸开锅:“服务停了,先重启。。。”&#xf…

如何设置时间倒计时

开发工具与关键技术:Visual Studio 2015、SQL Server 2014 作者:黄世豪 撰写时间:2019年01月31号相信很多小伙伴在做项目时会遇到过要用到时间倒计时的效果,下面我们来实现一下如何将自己设置的时间来让其进行时间倒计。 jsp调用…

js倒计时读秒

1.需求及分析 最近,接到一个接收手机验证码的功能,大体就是设置一个定时器,在每次执行的时候将秒数,逐个减去1,小于0的时候,清除定时器,然后完善一下功能,例如,加上一下状态的变化&…

C#实现倒计时的功能

软件界面: 软代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;na…

android studio高考倒计时,高考倒计时app排行榜

编辑推荐 时间管理倒计时 v1.3.0 大小:13.7MB 更新时间:21-04-14 下载 时间管理倒计时,一款专为小伙伴打造的手机时间规划工具,为小伙伴提供更强大的规划服务,在这里小伙伴可以自由规划自己的时间,为小伙伴…

VS2015+C#实现倒计时小程序

最近疫情严重,在家呆着也是呆着,于是就想学一下上位机的编写,权衡利弊之后,选择了C#语言,原因是据说它写出来的上位机比较小,不占内存。开发环境就用VS吧,用的人挺多的。好了,进入正…

C#之一个倒计时小应用程序的实现

只能开始计时,不能停止计时 代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.W…

易语言编写倒计时小程序

本人为编程爱好者,非专业人员。 最近工作中需要用到编写倒计时软件,故有此篇。 软件功能: 1.时间倒计时 2.倒计时会有一个透明放大的标签显示时间 3.各窗口可隐藏 以下为软件运行界面: 代码: .版本 2 .支持库 she…

DIY蓝牙小音响

PRE 我个人是比较喜欢手工做一些小东西,但是由于知识限制,我无法去制作一些复杂的东西,如果是一些简单的小玩具,如果我有能力做,我还是很乐意去做的。前段时间正好在看音响,我最后入手了一个便宜的EDIFIER…

树莓派系列二(语音识别)

树莓派的基本概念和安装系统在系列文章一中介绍了.这篇准备介绍一下语音识别. 一直想研究一下语音识别,用来做家庭物联网的控制入口,未来也许就是这样,讯飞的叮咚音响可以连接京东的物联平台,苹果的homekit平台,华为的平台暂时落后的有点多... 国内语音识别领域,我个人比较欣…