小程序性能监控_通过应用程序性能管理升级监控

小程序性能监控

APM入门

应用程序性能管理(APM)是对软件应用程序的可用性和性能的监视和管理。 不同的人对这个定义的理解不同,因此本文试图确定APM是什么,包括什么以及为什么对您的业务很重要。

如果要控制应用程序的性能,那么了解您要衡量的内容以及如何在业务环境中解释它就很重要。

什么是应用程序性能管理(APM)?

随着应用程序从独立应用程序发展到客户端服务器应用程序再到分布式应用程序,最终到基于云的弹性应用程序,应用程序性能管理也随之发展。

当我们提到APM时,是指管理应用程序的性能,以便我们可以确定它们何时正常运行以及何时异常运行。 此外,当有人出错并且应用程序行为异常时,我们需要快速找出问题的根本原因,以便我们进行补救。

我们可能会观察到如下情况:

—在其上运行应用程序的物理硬件
—在其中运行应用程序的虚拟机
—承载应用程序环境的JVM —在其中运行应用程序的容器(应用程序服务器或Web容器) —应用程序本身的行为 —支持基础结构,例如网络通信,数据库,缓存,外部Web服务和旧系统

一旦我们从所有这些来源捕获了绩效指标,就需要对它们对业务交易的影响进行解释和关联。 这是APM真正发挥作用的地方。APM供应商聘请了不同技术的专家,使他们可以深入了解每个单独系统中的性能指标,然后将这些指标汇总到您的应用程序的整体视图中。

下一步是从构成正常性的角度来分析您的应用程序性能的整体视图。 最后,根据您的应用程序和部署环境,您可能可以告诉APM解决方案执行某些操作来自动修复问题。

有兴趣阅读整篇名为“ Java 5最佳性能指标,技巧和窍门”的全文吗? 在这里下载!

use-case_devops-1920x0

APM为什么重要?

在您看来,APM很重要,但您可能需要向想知道为什么她必须为此支付费用的老板或公司CFO这样的人回答APM重要性的问题。 为了证明APM的重要性,让我们考虑采用APM解决方案的替代方案,并评估解决方案工作量和停机时间所带来的影响。

合成事务是您针对应用程序执行并用来衡量性能的事务。 根据应用程序的复杂性,构建调用服务并验证响应的小程序并不困难。

下一个选项是手动检测应用程序,这意味着您可以将性能监视代码直接添加到应用程序中,并将其记录在数据库或文件系统等位置。 手动检测的一些挑战包括:我检测代码的哪些部分,如何对其进行分析,如何确定正常性,如何将这些问题传播给他人进行分析,哪些上下文信息很重要等等。

还有其他技术选择,但我最常发现的是,当其自定义服务组织收到用户的投诉时,公司会被提醒注意性能问题。 我认为我不需要详细说明为什么这是一个坏主意!

首先,让我们考虑一下我们如何发现问题。 APM解决方案会提醒您应用程序异常行为,但是如果您没有APM解决方案,则可以选择以下几种方法:

—建立综合交易
—手动仪器
—等待您的用户致电客户支持!!

接下来,让我们考虑在没有APM解决方案的情况下如何确定性能问题的根本原因。 我最经常看到公司做以下两件事之一:

—查看运行时日志
—尝试在开发/测试环境中重现问题

日志文件是信息的重要来源,并且它们很多时候都可以(通过捕获异常堆栈跟踪信息)识别应用程序中的功能缺陷,但是当遇到不会引发异常的性能问题时,它们通常只会带来其他混乱。

另外,通常并行执行,开发团队的任务是在测试环境中重现问题。 这里的挑战是您通常没有足够的上下文来使这些尝试富有成效。

综上所述,APM对您很重要,因此您可以了解应用程序的行为,在用户受到影响之前检测问题并快速解决这些问题。 用业务术语来说,APM解决方案很重要,因为它可以减少平均解决时间(MTTR),这意味着可以更快,更有效地解决性能问题,从而减少对业务底线的影响。

另外,请查看有关Java Performance的AppDynamics网络研讨会。 在这里注册!

主页英雄图像选择

APM的演变

多年来,APM市场已经有了长足发展,主要是为了适应不断变化的应用程序技术和部署。 当我们有直接访问数据库的非常简单的应用程序时,APM仅仅是数据库的性能分析器。

但是随着应用程序转移到Web上,我们看到了第一波应用程序服务器,然后APM解决方案才真正出现。 当时,我们非常关注单个运动部件的性能和行为,例如:

—托管我们应用程序的物理服务器和操作系统
— JVM
—应用程序服务器行为 —应用程序响应时间

云改变了我们对世界的看法,因为我们不再对应用程序的行为采取系统级的看法,而是对应用程序的行为采取以应用程序为中心的看法。 运行应用程序的基础结构仍然很重要,但是更重要的是,应用程序是否能够以正常方式执行其业务交易。

此外,通过扩展和收缩您的环境,您可能会发现单个服务器实例仅可以使用几个小时。 我听说过一个大型的基于云的应用程序,该应用程序在其JVM中使用大量RAM,但是其回收策略可确保在垃圾回收有机会运行之前关闭这些服务器。 这可能是一个极端的例子,但是它说明,曾经是最具影响力的性能问题之一,但创意部署模型已使该问题不再存在。

您可能仍然可以找到一些来自旧世界的APM解决方案,但是现代APM供应商已经看到了行业中的这些变化,并设计了APM解决方案以专注于您的应用程序行为,并更加重视业务交易的性能和可用性而不是支持它们的基础系统。

有兴趣阅读整篇名为“ Java 5最佳性能指标,技巧和窍门”的全文吗? 在这里下载!

购买与构建

本文涵盖了很多领域,现在您面临一个选择:您是评估APM解决方案并选择最适合您的解决方案还是尝试自己开发。 我真的认为这归结为您在购买或构建决策中需要问自己的相同问题:您的核心业务是什么,构建自己的解决方案在财务上是否值得?

如果您的核心业务是销售小部件,那么构建自己的绩效管理系统可能就没有多大意义。 另一方面,如果您的核心业务是为客户构建技术基础结构和中间件,那么这可能是有道理的(但请参阅下面对第二个问题的回答)。

下一个问题是:建立自己的解决方案在财务上是否值得? 这取决于应用程序的复杂程度以及停机时间或性能问题如何影响您的业务。 如果您的应用程序利用许多不同的技术(例如Java,.NET,PHP,Web服务,数据库,NoSQL数据存储),那么为所有这些环境开发性能管理代码将是一项艰巨的任务。 但是,如果您有一个简单的servlet来调用数据库,则它可能不是不可克服的。

最后,问自己有关停机或性能问题对业务的影响。 如果您的公司通过在线销售产品来维持生计,那么停机时间将是灾难性的。 在当今竞争激烈的在线销售世界中,性能问题对您的影响可能超出您的预期。

所有这些都是说,如果您有一个复杂的环境,而性能问题或宕机对您的企业造成了巨大的损失,那么您最好购买APM解决方案,该解决方案可以让您专注于核心业务,而不是构建用于支持的基础架构您的核心业务。

结论

应用程序性能管理包括测量应用程序的性能,从支持您的应用程序的各个系统中捕获性能指标,然后将它们关联到整体视图中。

APM解决方案会观察您的应用程序以确定正常状态,并在检测到异常行为时捕获有关异常行为的上下文信息并通知您问题。 高级实现甚至允许您通过更改部署来应对异常行为,例如通过向处于压力下的应用程序层添加新的虚拟服务器。

APM解决方案对您的业务很重要,因为它可以帮助您减少平均解决时间(MTTR),并减少性能问题对利润的影响。 如果您的应用程序复杂,性能或停机问题可能会对您的业务造成负面影响,那么评估APM解决方案并为您的应用程序选择最佳解决方案是您的最大兴趣。

有兴趣阅读整篇名为“ Java 5最佳性能指标,技巧和窍门”的全文吗? 在这里下载!

另外,请查看有关Java性能指标的AppDynamics网络研讨会。 在这里注册!

翻译自: https://www.javacodegeeks.com/2015/07/level-up-monitoring-application-performance-management.html

小程序性能监控

应用场景1、监听线上未知错误// 例如:调用错误 var result = {} console.log(result.data.msg) // 抛出错误2、记录用户操作路径,更方便重现错误小程序使用1、引入资源在app.js中加入dist目录下的xbossdebug.min.js,记得放在App对象上面var xbossdebug = require('xbossdebug.min.js') // 引用xbossdebug xbossdebug.config.key = 'maizuo' // key为自定义唯一值,用于后端记录时区分应用 xbossdebug.config.url = 'https://domain.com/'; // 上报服务端地址 // 可选参数 xbossdebug.config.setSystemInfo = true; // 获取系统信息 xbossdebug.config.setLocation = true; // 获取用户位置信息2、测试是否正常使用App({   onLaunch: function () {     xbossdebug.error('error')   } })3、控制台查看network,如果看到一个指向你配置url的请求,那就成功了。// 发送的结构如下 {     key: String // 应用唯一id     breadcrumbs: Array // 函数执行面包线,方便用于错误重现     error: String // 错误堆栈信息     systemInfo: Object // 用户系统信息     notifierVersion: String // 插件版本     locationInfo: Object // 用户位置信息 }高级配置如果你的应用日志量较大,可以通过以下参数合并日志和随机抽样。xbossdebug.config.random = 1 // 默认为1,表示100%上报,如果设置0.5,就会随机上报 xbossdebug.config.repeat = 5 // 重复上报次数(对于同一个错误超过多少次不上报) xbossdebug.config.mergeReport = true, // mergeReport 是否合并上报, false 关闭, true 启动(默认) xbossdebug.config.except = [ /^Script error\.?/, /^Javascript error: Script error\.? on line 0/ ], // 忽略某个错误二次开发1**、安装依赖**// 进入项目目录安装依赖 npm install // 安装rollup,用于js编译打包 npm install -g rollup2、开发模式 (监听代码变化,生成xbossdebug.js)npm run watch3、编译(生成xbossdebug.min.js)npm run build方案设计思想TODO服务端记录数据数据并可视化资源加载监控页面性能监控typescript版本✅自动化单元测试参考资料代码思想参考fundebug,如果大家觉得还不错,希望大家支持fundebug的saas服务。代码风格参考https://github.com/gomeplusFED/GER
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值