Amazon CloudWatch Application Insights 的工作方式 - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon CloudWatch Application Insights 的工作方式

此部分包含有关 CloudWatch Application Insights 的工作方式的信息,其中包括:

Application Insights 监控应用程序的方式

Application Insights 监控应用程序的方式如下。

应用程序发现和配置

首次将应用程序添加到 CloudWatch Application Insights 时,它扫描应用程序组件以建议关键指标、日志和其他数据源,以便监控您的应用程序。然后,您可以根据这些建议配置应用程序。

数据预处理

CloudWatch Application Insights 持续分析在应用程序资源中监控的数据源,以查找指标异常情况和日志错误(观察结果)。

智能问题检测

CloudWatch Application Insights 引擎使用分类算法和内置规则关联观察结果,以检测应用程序中的问题。为了帮助进行故障排除,它创建一些自动化 CloudWatch 控制面板,其中包含有关问题的上下文信息。

警报和操作

在 CloudWatch Application Insights 检测到应用程序出现问题时,它生成 CloudWatch Events 以通知您该问题。有关如何设置这些事件的更多信息,请参阅检测到的问题的 Application CloudWatch Events 和通知

示例方案

您具有一个由 SQL Server 数据库支持的 ASP .NET 应用程序。突然,您的数据库由于内存压力过高而开始发生故障。这会导致应用程序性能下降,并且可能会导致在 Web 服务器和负载均衡器中出现 HTTP 500 错误。

借助于 CloudWatch Application Insights 及其智能分析,您可以检查动态创建的控制面板(显示相关指标和日志文件片段)以找出导致问题的应用程序层。在这种情况下,问题可能出在 SQL 数据库层。

数据保留

CloudWatch Application Insights 将问题保留 55 天,并将观察结果保留 60 天。

配额

有关 CloudWatch Application Insights 的默认配额,请参阅 Amazon CloudWatch Application Insights 端点和配额。除非另有说明,否则,每个配额针对的是每个 Amazon 区域。如需请求增加服务配额,请联系 Amazon Support。许多服务包含无法更改的配额。有关特定服务的配额的更多信息,请参阅针对该服务的文档。

CloudWatch Application Insights 使用的 Amazon Systems Manager (SSM) 软件包

本节中列出的软件包由 Application Insights 使用,可独立管理并可通过 Amazon Systems Manager Distributor 部署。有关 SSM Distributor 的更多信息,请参阅 Amazon Systems Manager 用户指南中的 Amazon Systems Manager Distributor

AWSObservabilityExporter-JMXExporterInstallAndConfigure

您可以从 Prometheus JMX Exporter 中检索工作负载特定的 Java 指标,以供 Application Insights 配置和监控告警。在 Application Insights 控制台的 Manage monitoring(管理监控)页面上,在 Application tier(应用程序层)下拉菜单选择 JAVA application(JAVA 应用程序)。然后在 JAVA Prometheus exporter configuration(JAVA Prometheus Exporter 配置)下,选择您的 Collection method(收集方法)JMX port number(JMX 端口号)

要使用 Amazon Systems Manager Distributor 来打包、安装和配置 Amazon 提供的 Prometheus JMX Exporter(独立于 Application Insights),请完成以下步骤。

使用 Prometheus JMX Exporter SSM 软件包的先决条件

  • 2.3.1550.0 版或更高版本的 SSM Agent 已安装

  • JAVA_HOME 环境变量已设置

安装和配置 AWSObservabilityExporter-JMXExporterInstallAndConfigure 软件包

AWSObservabilityExporter-JMXExporterInstallAndConfigure 软件包是一个 SSM Distributor 软件包,您可以使用它来安装和配置 Prometheus JMX Exporter。当 Prometheus JMX Exporter 发送 Java 指标时,可以配置 CloudWatch 代理来检索 CloudWatch 服务的指标。

  1. 根据您的首选项,准备位于 Prometheus GitHub 存储库中的 Prometheus JMX Exporter YAML 配置文件。使用示例配置和选项说明为您提供指导。

  2. 将编码为 Base64 的 Prometheus JMX Exporter YAML 配置文件复制到 SSM Parameter Store 中的新 SSM 参数。

  3. 导航到 SSM Distributor 控制台,然后打开 Owned by Amazon(Amazon 所拥有)选项卡。选择 AWSObservabilityExporter-JMXExporterInstallAndConfigure,然后选择 Install one time(安装一次)

  4. 通过将“Additional Arguments(其他实际参数)”替换为以下内容来更新您在第一步中创建的 SSM 参数:

    { "SSM_EXPORTER_CONFIGURATION": "{{ssm:<SSM_PARAMETER_STORE_NAME>}}", "SSM_EXPOSITION_PORT": "9404" }
    注意

    端口 9404 是用于发送 Prometheus JMX 指标的默认端口。您可以更新此端口。

示例:配置 CloudWatch 代理以检索 Java 指标

  1. 如前面的步骤所述,安装 Prometheus JMX Exporter。然后检查端口状态,确认它是否已正确安装在您的实例上。

    在 Windows 实例示例上的成功安装

    PS C:\> curl http://localhost:9404 (http://localhost:9404/) StatusCode : 200 StatusDescription : OK Content : # HELP jvm_info JVM version info

    在 Linux 实例示例上的成功安装

    $ curl localhost:9404 # HELP jmx_config_reload_failure_total Number of times configuration have failed to be reloaded. # TYPE jmx_config_reload_failure_total counter jmx_config_reload_failure_total 0.0
  2. 创建 Prometheus 服务发现 YAML 文件。以下示例服务发现文件将执行以下操作:

    • 将 Prometheus JMX Exporter 主机端口指定为 localhost: 9404

    • 将标签(ApplicationComponentNameInstanceId)附加到指标,这些指标可以设置为 CloudWatch 指标维度。

    $ cat prometheus_sd_jmx.yaml - targets: - 127.0.0.1:9404 labels: Application: myApp ComponentName: arn-cn:aws:elasticloadbalancing:cn-north-1:123456789012:loadbalancer/app/sampl-Appli-MMZW8E3GH4H2/aac36d7fea2a6e5b InstanceId: i-12345678901234567
  3. 创建 Prometheus JMX Exporter 配置 YAML 文件。以下示例配置文件可指定以下内容:

    • 指标检索任务间隔和超时周期。

    • 指标检索任务(jmxsap)也称为抓取,其中包括任务名称、一次返回的最大时间序列以及服务发现文件路径。

    $ cat prometheus.yaml global: scrape_interval: 1m scrape_timeout: 10s scrape_configs: - job_name: jmx sample_limit: 10000 file_sd_configs: - files: ["/tmp/prometheus_sd_jmx.yaml"] - job_name: sap sample_limit: 10000 file_sd_configs: - files: ["/tmp/prometheus_sd_sap.yaml"]
  4. 验证 CloudWatch 代理是否已安装在您的 Amazon EC2 实例上,以及版本是否为 1.247346.1b249759 或更高版本。要在 EC2 实例上安装 CloudWatch 代理,请参阅安装 CloudWatch 代理。要验证版本,请参阅查找有关 CloudWatch 代理版本的信息

  5. 配置 CloudWatch 代理。有关如何配置 CloudWatch 代理配置文件的更多信息,请参阅手动创建或编辑 CloudWatch 代理配置文件。以下示例 CloudWatch 代理配置文件可执行以下操作:

    • 指定 Prometheus JMX Exporter 配置文件路径。

    • 指定要向其发布 EMF 指标日志的目标日志组。

    • 为每个指标名称指定两组维度。

    • 发送 8 个(每个指标名称 2 组维度,每组 4 个指标名称)CloudWatch 指标。

    { "logs":{ "logs_collected":{ .... }, "metrics_collected":{ "prometheus":{ "cluster_name":"prometheus-test-cluster", "log_group_name":"prometheus-test", "prometheus_config_path":"/tmp/prometheus.yaml", "emf_processor":{ "metric_declaration_dedup":true, "metric_namespace":"CWAgent", "metric_unit":{ "jvm_threads_current":"Count", "jvm_gc_collection_seconds_sum":"Second", "jvm_memory_bytes_used":"Bytes" }, "metric_declaration":[ { "source_labels":[ "job" ], "label_matcher":"^jmx$", "dimensions":[ [ "InstanceId", "ComponentName" ], [ "ComponentName" ] ], "metric_selectors":[ "^java_lang_threading_threadcount$", "^java_lang_memory_heapmemoryusage_used$", "^java_lang_memory_heapmemoryusage_committed$" ] } ] } } } }, "metrics":{ .... } }

AWSObservabilityExporter-SAP-HANADBExporterInstallAndConfigure

您可以从 Prometheus HANA Database Exporter 中检索工作负载特定的 SAP HANA 指标,以供 Application Insights 配置和监控告警。有关更多信息,请参阅本指南中的 设置 SAP HANA 数据库以进行监控

要使用 Amazon Systems Manager Distributor 来打包、安装和配置 Amazon 提供的 Prometheus HANA Database Exporter 软件包(独立于 Application Insights),请完成以下步骤。

使用 Prometheus HANA Database Exporter SSM 软件包的先决条件

  • 2.3.1550.0 版或更高版本的 SSM Agent 已安装

  • SAP HANA 数据库

  • Linux 操作系统(SUSE Linux、RedHat Linux)

  • 带有 SAP HANA 数据库监控凭证的密钥(使用 Amazon Secrets Manager)。使用键/值对格式创建密钥,指定密钥用户名,然后输入值的数据库用户。再添加一个密钥密码,然后输入值的密码。有关如何创建密钥的更多信息,请参阅 Amazon Secrets Manager 用户指南中的创建密钥。密钥必须采用以下格式:

    { "username": "<database_user>", "password": "<database_password>" }

安装和配置 AWSObservabilityExporter-SAP-HANADBExporterInstallAndConfigure 软件包

AWSObservabilityExporter-SAP-HANADBExporterInstallAndConfigure 软件包是一个 SSM Distributor 软件包,您可以使用它来安装和配置 Prometheus HANA Database Exporter。当 Prometheus HANA Database Exporter 发送 HANA 数据库指标时,就可以配置 CloudWatch 代理来检索 CloudWatch 服务的指标。

  1. SSM Parameter Store 中创建 SSM 参数以存储该 Exporter 的配置。以下为示例参数值。

    {\"exposition_port\":9668,\"multi_tenant\":true,\"timeout\":600,\"hana\":{\"host\":\"localhost\",\"port\":30013,\"aws_secret_name\":\"HANA_DB_CREDS\",\"scale_out_mode\":true}}
    注意

    在此示例中,导出任务仅在具有活跃 SYSTEM 数据库的 Amazon EC2 实例上运行,并在其他 EC2 实例上保持空闲状态,以免指标重复。该 Exporter 可以检索 SYSTEM 数据库中的所有数据库租户信息。

  2. SSM Parameter Store 中创建 SSM 参数以存储该 Exporter 的指标查询。软件包可以接受多个指标参数。每个参数必须具有有效的 JSON 对象格式。以下为示例参数值:

    {\"SELECT MAX(TIMESTAMP) TIMESTAMP, HOST, MEASURED_ELEMENT_NAME CORE, SUM(MAP(CAPTION, 'User Time', TO_NUMBER(VALUE), 0)) USER_PCT, SUM(MAP(CAPTION, 'System Time', TO_NUMBER(VALUE), 0)) SYSTEM_PCT, SUM(MAP(CAPTION, 'Wait Time', TO_NUMBER(VALUE), 0)) WAITIO_PCT, SUM(MAP(CAPTION, 'Idle Time', 0, TO_NUMBER(VALUE))) BUSY_PCT, SUM(MAP(CAPTION, 'Idle Time', TO_NUMBER(VALUE), 0)) IDLE_PCT FROM sys.M_HOST_AGENT_METRICS WHERE MEASURED_ELEMENT_TYPE = 'Processor' GROUP BY HOST, MEASURED_ELEMENT_NAME;\":{\"enabled\":true,\"metrics\":[{\"name\":\"hanadb_cpu_user\",\"description\":\"Percentage of CPU time spent by HANA DB in user space, over the last minute (in seconds)\",\"labels\":[\"HOST\",\"CORE\"],\"value\":\"USER_PCT\",\"unit\":\"percent\",\"type\":\"gauge\"},{\"name\":\"hanadb_cpu_system\",\"description\":\"Percentage of CPU time spent by HANA DB in Kernel space, over the last minute (in seconds)\",\"labels\":[\"HOST\",\"CORE\"],\"value\":\"SYSTEM_PCT\",\"unit\":\"percent\",\"type\":\"gauge\"},{\"name\":\"hanadb_cpu_waitio\",\"description\":\"Percentage of CPU time spent by HANA DB in IO mode, over the last minute (in seconds)\",\"labels\":[\"HOST\",\"CORE\"],\"value\":\"WAITIO_PCT\",\"unit\":\"percent\",\"type\":\"gauge\"},{\"name\":\"hanadb_cpu_busy\",\"description\":\"Percentage of CPU time spent by HANA DB, over the last minute (in seconds)\",\"labels\":[\"HOST\",\"CORE\"],\"value\":\"BUSY_PCT\",\"unit\":\"percent\",\"type\":\"gauge\"},{\"name\":\"hanadb_cpu_idle\",\"description\":\"Percentage of CPU time not spent by HANA DB, over the last minute (in seconds)\",\"labels\":[\"HOST\",\"CORE\"],\"value\":\"IDLE_PCT\",\"unit\":\"percent\",\"type\":\"gauge\"}]}}

    有关指标查询的更多信息,请参阅 GitHub 上的 SUSE / hanadb_exporter 存储库。

  3. 导航到 SSM Distributor 控制台,然后打开 Owned by Amazon(Amazon 所拥有)选项卡。依次选择 AWSObservabilityExporter-SAP-HANADBExporterInstallAndConfigure*Install one time(一次性安装)。

  4. 通过将“Additional Arguments(其他实际参数)”替换为以下内容来更新您在第一步中创建的 SSM 参数:

    { "SSM_EXPORTER_CONFIG": "{{ssm:<*SSM_CONFIGURATIONS_PARAMETER_STORE_NAME>*}}", "SSM_SID": "<SAP_DATABASE_SID>", "SSM_EXPORTER_METRICS_1": "{{ssm:<SSM_FIRST_METRICS_PARAMETER_STORE_NAME>}}", "SSM_EXPORTER_METRICS_2": "{{ssm:<SSM_SECOND_METRICS_PARAMETER_STORE_NAME>}}" }
  5. 选择带有 SAP HANA 数据库的 Amazon EC2 实例,然后选择 Run(运行)。

AWSObservabilityExporter-HAClusterExporterInstallAndConfigure

您可以从 Prometheus HANA Cluster Exporter 中检索工作负载特定的高可用性 (HA) 集群指标,以供 Application Insights 配置和监控 SAP HANA 高可用性设置的告警。有关更多信息,请参阅本指南中的 设置 SAP HANA 数据库以进行监控

要使用 Amazon Systems Manager Distributor 来打包、安装和配置 Amazon 提供的 Prometheus HA Cluster Exporter 软件包(独立于 Application Insights),请完成以下步骤。

使用 Prometheus HA Cluster Exporter SSM 软件包的先决条件

  • 2.3.1550.0 版或更高版本的 SSM Agent 已安装

  • 适用于 Pacemaker、Corosync、SBD 和 DRBD 的 HA 集群

  • Linux 操作系统(SUSE Linux、RedHat Linux)

安装和配置 AWSObservabilityExporter-HAClusterExporterInstallAndConfigure 软件包

AWSObservabilityExporter-HAClusterExporterInstallAndConfigure 软件包是一个 SSM Distributor 软件包,您可以使用它来安装和配置 Prometheus HA Cluster Exporter。当 Prometheus HANA Database Exporter 发送集群指标时,就可以配置 CloudWatch 代理来检索 CloudWatch 服务的指标。

  1. SSM Parameter Store 中创建 SSM 参数,以 JSON 格式存储该 Exporter 的配置。以下为示例参数值。

    {\"port\":\"9664\",\"address\":\"0.0.0.0\",\"log-level\":\"info\",\"crm-mon-path\":\"/usr/sbin/crm_mon\",\"cibadmin-path\":\"/usr/sbin/cibadmin\",\"corosync-cfgtoolpath-path\":\"/usr/sbin/corosync-cfgtool\",\"corosync-quorumtool-path\":\"/usr/sbin/corosync-quorumtool\",\"sbd-path\":\"/usr/sbin/sbd\",\"sbd-config-path\":\"/etc/sysconfig/sbd\",\"drbdsetup-path\":\"/sbin/drbdsetup\",\"enable-timestamps\":false}

    有关该 Exporter 配置的更多信息,请参阅 GitHub 上的 ClusterLabs / ha_cluster_exporter 存储库。

  2. 导航到 SSM Distributor 控制台,然后打开 Owned by Amazon(Amazon 所拥有)选项卡。依次选择 AWSObservabilityExporter-HAClusterExporterInstallAndConfigure*Install one time(一次性安装)。

  3. 通过将“Additional Arguments(其他实际参数)”替换为以下内容来更新您在第一步中创建的 SSM 参数:

    { "SSM_EXPORTER_CONFIG": "{{ssm:<*SSM_CONFIGURATIONS_PARAMETER_STORE_NAME>*}}" }
  4. 选择带有 SAP HANA 数据库的 Amazon EC2 实例,然后选择 Run(运行)。