65.9K
CodeProject 正在变化。 阅读更多。
Home

Azure 上的 Java:容器化应用的监控和扩展

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2021年5月5日

CPOL

5分钟阅读

viewsIcon

3701

在本文中,我们将了解如何监控和扩展容器化应用。

了解应用程序的运行状况至关重要。如果您的服务不可用,可能会导致生产力下降和其他流程的延迟。您可以通过多种方式跟踪应用程序的可用性。Azure Monitor 提供了一种收集和分析应用程序性能和事件信息的方法。Azure Monitor 收集诸如指标(数值数据)和日志(由不同类型数据的属性集合组成的数据)之类的信息。Application Insights 可视化这些数据。

Azure Monitor 已经收集了一些关于您添加的服务的信息。此外,它还支持从 Prometheus 收集信息。Prometheus 是云原生计算基金会提供的一种流行解决方案,用于从应用程序收集指标。

添加 Application Insights 代理

Application Insights 无需更改源代码即可监控您的 AKS 应用程序。要将 Application Insights 添加到您的应用程序,请将 Application Insights 代理添加到您的项目中。

然后,在您的 Azure 帐户中添加一个 Application Insights 资源。为此,请在 portal.azure.com 中,在搜索栏中键入“Application Insights”,然后从搜索结果中选择它。

选择后,您将看到您的 Application Insights 资源列表。此列表可能为空。要创建新资源,请单击 **+创建** 按钮。Application Insights 会提示您选择一个资源组并为您的新资源提供一个名称。从菜单中选择一个资源组,然后输入一个描述性名称。然后单击 **审阅 + 创建**。

Azure 门户将执行验证步骤。验证后,单击 **创建**。几秒钟后,Azure 门户将创建资源。如果您返回到 Application Insights 资源列表,您会看到新资源。如果您选择它,将显示其详细信息。一个值得关注的元素是详细信息右侧的连接字符串。您将需要这些信息。

Application Insights 使用 Java 代理来捕获日志。Java 代理是使用 Java 仪器 API 来拦截调用的特殊类。这使我们无需修改代码即可添加 Application Insights 支持。下载Application Insights JAR 并记下您保存它的位置。要将 jar 添加到项目中,请使用 maven 命令行工具。

  mvn  install:install-file 
   -Dfile=/path-to-downloaded-file/applicationinsights-agent-3.0.2.jar
   -DartifactId="applicationinsights-agent" -Dpackaging=jar
   -Dversion="3.0.2" 
   -DgroupId="com.microsoft"

另外,请添加一个名为 applicationsinsights-agent-3.0.2.json 的文件。JSON 文件的内容是

  { 
  "connectionString": "InstrumentationKey=..." 
  }

当您在 Azure 门户中查看 Application Insight 资源时,您将看到要应用于 connectionStrings 元素的实际值。配置并重新部署应用程序后,Application Insights 会自动记录您的应用程序通过 java.util.logging 发出的信息,以及来自其他日志记录实用程序的信息。

一旦您为 Application Insights 进行了应用程序的仪器化并进行了部署,就可以通过 Azure 门户查看应用程序的指标和日志。要开始查看应用程序的指标,请从 Azure 门户打开 Application Insights。选择您的应用程序,然后选择其中一个指标以图形方式查看测量结果。

由于 Azure 为 Java 应用程序在日志记录和收集指标方面提供了原生支持,因此入门日志记录工作量很小。Azure 自动收集一些指标。Azure 集成了流行的应用程序日志管理库。这包括 Log4j、使用 Java 简单日志外观 (SLF4J) 的解决方案以及内置的 java.util.logging 功能。

自定义日志记录

您可以通过应用程序见解配置文件(applicationinsights-agent-3.0.2.json)配置日志记录的其他选项。默认情况下,Application Insights 会捕获 INFO 级别或更高级别的任何日志。如果您只关心标记为 WARN 或更高级别的日志,请在配置文件中指定,如下所示。

  {
    "instrumentation": {
      "logging": {
        "level": "WARN"
      }
    }
  }

配置可以指定事务的采样百分比以降低成本。例如,如果采样百分比为 20%,则执行的事务中有 20% 的详细信息将被记录。在配置中,您可以使用以下元素指定采样率。

  {
    "sampling": {
      "percentage": 20
    }
  }

虽然 Application Insights 会自动收集许多指标,但您使用的 Java 组件还提供了其他指标。要捕获这些指标,您必须知道您想要捕获的附加指标的对象名称和属性。要查找此信息,您可能需要使用其他工具,例如JDK Mission Control。一旦您拥有此信息,请将其添加到您的配置文件中,命名为 jmxMetrics 的元素。此元素列出了指定对象名称、属性以及将在 Application Insights 控制台中用作标签的名称的对象。

  "jmxMetrics": [
        {
          "name": "Thread Count",
          "objectName": "java.lang:type=Threading",
          "attribute": "ThreadCount"
        }
  ]

应用程序日志记录的许多其他方面都是可自定义的。您可以从这里阅读有关配置无代码应用程序监控和日志记录的更多信息。

应用程序扩展

您可以使用 Azure Monitor 来扩展您的应用程序以响应需求。通过根据需求进行扩展,您可以最大限度地减少资源使用,而不会影响性能。自动缩放对于应用程序的使用模式不可预测或您不完全了解它们的情况尤其有用。要扩展您的 Azure Kubernetes 应用程序,节点池设置提供了两个选项。对于手动扩展,您选择实例化的节点数。对于自动扩展,您选择最小和最大节点数。AKS 会自动更改节点数量。

Azure 根据一段时间内的平均指标响应扩展需求。平均 45 分钟是默认值,但用于 Kubernetes 的时间可以在 Cloud Shell 中进行调整。

结论

在本系列的下一部分中,我们将探讨您的应用程序如何知道它正在被使用。我们还将探讨 Azure 如何通过其服务和免费代码库来支持用户身份验证。

© . All rights reserved.