使用Apprenda和R分析应用程序工作负载数据

2018-01-16 10:21:01 浏览数 (1)

在权限范围内运行的访客应用程序的知识是平台即服务(PaaS)可以利用的最重要的数据来源之一。一个PaaS应该知道(译注:原文为know,此处应指可以获取并处理)关于访客应用程序的各方各面,包括它们的体系结构、依赖性、基础架构的规模等等。

包括应用程序资源利用指标(CPU,RAM等)在内的数据对于企业而言是数据中心容量规划、策略实施和应用程序隔离的关键所在。像Apprenda这样的PaaS通过一个中心化(译注:centralized)的视角(在我们的例子中就是一组REST风格的API)提供了这些信息,使得在数据中心运行应用程序指标分析变得比以往更容易。

Apprenda作为PaaS通过平台可扩展性和API,为开发人员和平台操作员提供有用的信息。这是因为数据中心提供了大量工具来执行高级分析功能,你只需为其提供他们所需要的信息即可。我们整合了诸如系统中心(译注:指Apprenda的System Center),New Relic等工具,因为这些工具是我们的客户为之投入,并且是他们所擅长的。

我们的工作不是重新发明这些工具,而是提供数据。 Apprenda会获取有关应用程序的信息,例如部署的持续时间、资源策略(CPU和内存的分配)、资源的实际利用率,规模(实例数量)、自定义元数据等等。所有这些信息都可以输入到数据中心工具中,帮助IT人员做出重要的、数据驱动的决策。

然而,在DevOps的世界里,大家常常会以有创意和创新性的方式使用这些数据。通常来说可以是脚本(PowerShell)、编程语言(R)或整个运行时(Node.js)这些流行的方法来快速有效地获取、处理和操作数据。

让我们通过一个例子来看看R语言在这个领域的应用。R一个以数据挖掘和统计分析为核心的强大的编程语言,它为数据分析技术提供了多种直接的工具,并且可以使用社区维护包对其进行扩展。

在下面的一个简单的例子中,笔者使用标准R函数加上三个包(通过R的install.packages()函数的可以很容易地引用(译注:即include,在一些语言里提供类似功能的关键字还包括using、import等)这些包):

  1. jsonlite用于解析Apprenda API返回的JSON数据。
  2. httr用于处理验证和检索数据所需的HTTP请求。
  3. plotrix将检索到的数据渲染成图表。

接下来的步骤十分简单。第一步是使用Apprenda环境进行身份验证:

我现在将我的Apprenda会话标记(token)存储在一个名为“token”的变量中。我将该标记在我的API调用中引用以获取应用程序数据:

GET()是一个由httr包提供的函数,它简化了对API的HTTP请求。我已经将Apprenda会话标记添加到HTTP标题(Header)中进行身份验证,其中包含了一个具有字符串查询参数,该参数将用于返回平台上当前正在运行的所有应用程序工作负载。返回的数据被解析并存储在变量(在R语言中称为一个向量,即vector)中,名为'r',该变量现在有151条记录,每条记录对应一个应用程序工作负载。 'r'中的每个记录都有15个变量(属性),我们可以将这些变量在包含整个结果的集合上进行分析。

为了说明这一点,我将使用变量componentType,它表示Apprenda对已部署的应用程序工作负载类型的了解 - 包括七种类型,可以从它们的名字中理解它们所表示的内容:UserInterface,PublicUserInterface,WindowsService,JavaWebApplication,LinuxService,WcfService,和Database。然后,按照组件类型对集合进行分组时,绘制显示组件类型工作负载分布的图表变得非常简单:

结果图(pie3D()来自plotrix包)如下所示:

一些IT人员无法用任何细节描述应用程序组合体系的结构构成,但在如例子中这种情况下,我们可以用一行R语句实时地提取数据。虽然不可否认的是,饼图在信息量上是打折扣的,但重点是数据是可用的,并且可以分组、过滤、操纵,并可以轻松地通过R进行分析。

在这个例子中,我使用了RStudio的开源版本。从平台的API中还可以获取到一些其他十分实用的信息:

1.资源分配与每个工作量的实际利用率之间的平均差异。 (这在容量规划中很有用)

2.用时最长的运行中的应用程序工作负载。

3.分布程度最高的应用程序。 (这可以帮助扩大决策)

这项技术还有更多其他的功能可以发掘。像Apprenda这样的PaaS在数据中心栈中是独一无二的,因为它保留了基础架构和应用程序的知识。同时它作为数据的中心,当使用一些创造性的分析方法时,能提供新的见解。这种洞察力为企业提供了一个机会,帮助他们更好地为开发人员和应用程序提供服务,同时提高运行效率。

powershellnode.jspowershellnode.js

0 人点赞