

# Amazon CloudWatch Application Insights の仕組み
<a name="appinsights-how-works"></a>

CloudWatch Application Insights では、アプリケーションリソースをモニタリングできます。以下では、Application Insights の仕組みについて説明します。

**Topics**
+ [

## Application Insights がアプリケーションをモニターリングする方法
](#appinsights-how-works-sub)
+ [

## データ保持期間
](#appinsights-retention)
+ [

## クォータ
](#appinsights-limits)
+ [

# AWSCloudWatch Application Insights で使用される Systems Manager (SSM) パッケージ
](appinsights-ssm-packages.md)
+ [

# CloudWatch Application Insights で使用される AWS Systems Manager (SSM) ドキュメント
](appinsights-ssm-documents.md)

## Application Insights がアプリケーションをモニターリングする方法
<a name="appinsights-how-works-sub"></a>

以下では、Application Insights がどのようにアプリケーションをモニタリングするかについて説明します。

**アプリケーションの検出と設定**  
CloudWatch Application Insights にアプリケーションを初めて追加すると、アプリケーションコンポーネントがスキャンされ、アプリケーションでモニターリングする主要なメトリクス、ログ、その他のデータソースが推奨されます。これらの推奨内容に基づいて、アプリケーションを設定できます。

**データの前処理**  
CloudWatch Application Insights は、アプリケーションリソース全体でモニターリングされているデータソースを継続的に分析し、メトリクスの異常やログエラー (監視結果) を検出します。

**問題のインテリジェントな検出**  
CloudWatch Application Insights エンジンは、分類アルゴリズムと組み込みルールを使用して監視結果を関連付けることで、アプリケーションの問題を検出します。トラブルシューティングを支援するために CloudWatch ダッシュボードが自動的に作成され、問題に関するコンテキスト情報が表示されます。

**アラートとアクション**  
CloudWatch Application Insights は、アプリケーションの問題を検出すると、CloudWatch Events を生成して問題をユーザーに通知します。これらのイベントをセットアップする方法の詳細については、「[検出された問題の Application Insights CloudWatch Events](appinsights-cloudwatch-events.md)」を参照してください。さらに、検出された問題のアラートを受信するように[Amazon SNS 通知を設定](appinsights-problem-notifications.md)できます。

**シナリオの例**

SQL Server データベースを基盤とする ASP .NET アプリケーションがあります。メモリ負担が高いため、突然、データベースの誤動作が始まります。これに伴って、アプリケーションのパフォーマンスが低下し、ウェブサーバーやロードバランサーで HTTP 500 エラーが発生する可能性があります。

CloudWatch Application Insights とそのインテリジェントな分析により、動的に作成されるダッシュボードに関連メトリクスやログファイルのスニペットが表示されます。これを確認することで、問題を起こしているアプリケーション層を特定できます。この場合、問題は SQL データベース層にある可能性があります。

## データ保持期間
<a name="appinsights-retention"></a>

CloudWatch Application Insights は、問題を 55 日間、監視結果を 60 日間保持します。

## クォータ
<a name="appinsights-limits"></a>

CloudWatch Application Insights のデフォルトクォータについては、「[Amazon CloudWatch Application Insights エンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/applicationinsights.html)」を参照してください。特に明記しない限り、各クォータは AWS リージョン単位です。サービスのクォータの引き上げをリクエストする場合は、[AWS Support](https://console.aws.amazon.com/support/home#/case/create?issueType=technical) にお問い合わせください。多くのサービスには、変更することができないクォータが含まれています。特定のサービスに対するクォータの詳細については、そのサービスのドキュメントを参照してください。

# AWSCloudWatch Application Insights で使用される Systems Manager (SSM) パッケージ
<a name="appinsights-ssm-packages"></a>

このセクションに記載されているパッケージは Application Insights で使用されており、AWS Systems Manager Distributor で個別に管理およびデプロイできます。SSM Distributor の詳細については、*AWS Systems Manager ユーザーガイド*の [AWS Systems Manager Distributor](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor.html) を参照してください。

**Topics**
+ [

## `AWSObservabilityExporter-JMXExporterInstallAndConfigure`
](#configure-java)
+ [

## `AWSObservabilityExporter-SAP-HANADBExporterInstallAndConfigure`
](#appinsights-ssm-sap-prometheus)
+ [

## `AWSObservabilityExporter-HAClusterExporterInstallAndConfigure`
](#appinsights-ssm-sap-prometheus-ha)
+ [

## `AWSObservabilityExporter-SAP-SAPHostExporterInstallAndConfigure`
](#appinsights-ssm-sap-host-exporter)
+ [

## `AWSObservabilityExporter-SQLExporterInstallAndConfigure`
](#appinsights-ssm-sql-prometheus)

## `AWSObservabilityExporter-JMXExporterInstallAndConfigure`
<a name="configure-java"></a>

Application Insights の [Prometheus JMX Exporter](https://prometheus.io/docs/instrumenting/exporters/#third-party-exporters) からワークロード固有の Java メトリクスを取得して、アラームを設定およびモニターリングできます。Application Insights コンソールの [**Manage monitoring**] (モニターリングの管理) ページで、[**Application tier**] (アプリケーション層) ドロップダウンから [**JAVA application**] (JAVA アプリケーション) を選択します。その後、[**JAVA Prometheus exporter configuration**] (JAVA Prometheus エクスポーター設定) で、[**Collection method**] (収集方法) と [**JMX port number**] (JMX ポート番号) を選択します。

[AWS Systems Manager Distributor](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor.html) を使用して AWS が提供する Prometheus JMX Exporter パッケージを Application Insights とは別にパッケージ化、インストール、および設定するには、次の手順を実行します。

**Prometheus JMX Exporter SSM パッケージを使用するための前提条件**
+ SSM エージェントバージョン 2.3.1550.0 以降がインストールされている
+ JAVA\$1HOME 環境変数が設定されている

**`AWSObservabilityExporter-JMXExporterInstallAndConfigure` パッケージをインストールして設定する**  
`AWSObservabilityExporter-JMXExporterInstallAndConfigure` パッケージは、[Prometheus JMX Exporter](https://github.com/prometheus/jmx_exporter) のインストールおよび設定に使用できる SSM Distributor パッケージです。Prometheus JMX Exporter によって Java メトリクスが送信されると、CloudWatch サービスのメトリクスを取得するように CloudWatch エージェントを設定できます。

1. ご自身の好みに基づいて、Prometheus GitHub リポジトリにある [Prometheus JMX Exporter の YAML 設定ファイル](https://github.com/prometheus/jmx_exporter#configuration)を準備します。設定例とオプションの説明を参考にしてください。

1. Base64 としてエンコードされた Prometheus JMX Exporter の YAML 設定ファイルを、[SSM Parameter Store](https://console.aws.amazon.com/systems-manager/parameters) の新しい SSM パラメータにコピーします。

1. [SSM Distributor](https://console.aws.amazon.com/systems-manager/distributor) コンソールに移動し、**[Owned by Amazon]** (Amazon 所有) タブを開きます。[**AWSObservabilityExporter-JMXExporterInstallAndConfigure**] を選択し、[**Install one time**] (1 回限りのインストール) を選択します。

1. 「Additional Arguments」を次のように置き換えて、最初のステップで作成した SSM パラメータを更新します。

   ```
   {
     "SSM_EXPORTER_CONFIGURATION": "{{ssm:<SSM_PARAMETER_STORE_NAME>}}",
     "SSM_EXPOSITION_PORT": "9404"
   }
   ```
**注記**  
ポート 9404 は、Prometheus JMX メトリクスの送信に使用されるデフォルトのポートです。このポートは更新できます。

**例: Java メトリクスを取得するための CloudWatch エージェントの設定**

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
   ```

1. Prometheus サービスの検出 YAML ファイルを作成します。次のサンプルのサービス検出ファイルは、次の処理を実行します。
   + Prometheus JMX Exporter ホストポートを `localhost: 9404` として指定します。
   + メトリクスにラベル (`Application`、`ComponentName`、および `InstanceId`) をアタッチします。これは、CloudWatch メトリクスディメンションとして設定できます。

   ```
   $ cat prometheus_sd_jmx.yaml 
   - targets:
     - 127.0.0.1:9404
     labels:
       Application: myApp
       ComponentName: arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/sampl-Appli-MMZW8E3GH4H2/aac36d7fea2a6e5b
       InstanceId: i-12345678901234567
   ```

1. Prometheus JMX Exporter 設定 YAML ファイルを作成します。次の設定ファイルの例では、次の項目を指定します。
   + メトリクスの取得ジョブ間隔とタイムアウト期間。
   + スクレイピングとも呼ばれるメトリクスの取得ジョブ (`jmx` および `sap`)。これには、ジョブ名、一度に返される最大時系列、およびサービス検出のファイルパスが含まれます。

   ```
   $ 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"]
   ```

1. CloudWatch エージェントが Amazon EC2 インスタンスにインストールされ、バージョンが 1.247346.1b249759 以降であることを検証します。EC2 インスタンスに CloudWatch エージェントをインストールするには、「[CloudWatch エージェントのインストール](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-on-EC2-Instance.html)」を参照してください。バージョンを確認するには、「[CloudWatch エージェントのバージョンについての情報の検索](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/troubleshooting-CloudWatch-Agent.html#CloudWatch-Agent-troubleshooting-agent-version)」をご参照ください。

1. CloudWatch エージェントを設定します。CloudWatch エージェント設定ファイルの設定方法の詳細については、「[CloudWatch エージェント設定ファイルを手動で作成または編集する](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html)」を参照してください。次の CloudWatch エージェント設定ファイルの例は、次の処理を実行します。
   + Prometheus JMX Exporter 設定ファイルパスを指定します。
   + EMF メトリクスログを発行するターゲットロググループを指定します。
   + メトリクス名ごとに 2 つのディメンションセットを指定します。
   + 8 個 (4 個のメトリクス名 \$1 メトリクス名ごとに 2 セットのディメンション) の 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`
<a name="appinsights-ssm-sap-prometheus"></a>

Application Insights の [Prometheus HANA データベースエクスポーター](https://prometheus.io/docs/instrumenting/exporters/#third-party-exporters) からワークロード固有の SAP HANA メトリクスを取得して、アラームを設定およびモニターリングできます。詳細については、このガイドの「[SAP HANA データベースをモニターリング用に設定する](appinsights-tutorial-sap-hana.md#appinsights-tutorial-sap-hana-set-up)」を参照してください。

[AWS Systems Manager Distributor](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor.html) を使用して、AWS が提供する Prometheus HANA データベースエクスポーターパッケージを Application Insights とは別にパッケージ化、インストール、設定するには、次の手順を完了します。

**Prometheus HANA データベース Exporter SSM パッケージを使用するための前提条件**
+ SSM エージェントバージョン 2.3.1550.0 以降がインストールされている
+ SAP HANA データベース
+ Linux オペレーティングシステム (SUSE Linux、RedHat Linux)
+ AWS Secrets Manager を使用しており、SAP HANA データベースのモニタリング認証情報を持つシークレット。キーと値のペアの形式を使用してシークレットを作成し、キーのユーザー名を指定して、値にデータベースユーザーを入力します。2 番目のキーのパスワードを追加して、値にパスワードを入力します。シークレットを作成する方法については、*AWS Secrets Manager ユーザーガイド*の「[シークレットを作成する](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html)」を参照してください。シークレットは、次のようにフォーマットする必要があります。

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

**`AWSObservabilityExporter-SAP-HANADBExporterInstallAndConfigure` パッケージをインストールして設定する**  
`AWSObservabilityExporter-SAP-HANADBExporterInstallAndConfigure` パッケージは、[Prometheus HANA データベース Exporter](https://github.com/prometheus/jmx_exporter) のインストールおよび設定に使用できる SSM Distributor パッケージです。Prometheus HANA データベース Exporter によって HANA データベースのメトリクスが送信されると、CloudWatch サービスのメトリクスを取得するように CloudWatch エージェントを設定できます。

1. [SSM パラメータストア](https://console.aws.amazon.com/systems-manager/parameters)で 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 インスタンスはアイドル状態のままになります。エクスポーターでは、`SYSTEM` データベースからのすべてのテナント情報を取得できます。

1. [SSM パラメータストア](https://console.aws.amazon.com/systems-manager/parameters)で 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 の「[https://github.com/SUSE/hanadb_exporter/blob/master/metrics.json](https://github.com/SUSE/hanadb_exporter/blob/master/metrics.json) repo」を参照してください。

1. [SSM Distributor](https://console.aws.amazon.com/systems-manager/distributor) コンソールに移動し、**[Owned by Amazon]** (Amazon 所有) タブを開きます。**[AWSObservabilityExporter-SAP-HANADBExporterInstallAndConfigure\$1]** を選択し、**[Install one time]** (1 回限りのインストール) を選択します。

1. 「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>}}"
   }
   ```

1. SAP HANA データベースを持つ Amazon EC2 インスタンスを選択し、**[Run]** (実行) をクリックします。

## `AWSObservabilityExporter-HAClusterExporterInstallAndConfigure`
<a name="appinsights-ssm-sap-prometheus-ha"></a>

[Prometheus HANA クラスターエクスポーター](https://prometheus.io/docs/instrumenting/exporters/#third-party-exporters) から Application Insights 用に ワークロード固有の High Availability (HA) クラスターメトリクスを取得して、SAP HANA データベースの High Availability セットアップ用のアラームを設定およびモニターリングできます。詳細については、このガイドの「[SAP HANA データベースをモニターリング用に設定する](appinsights-tutorial-sap-hana.md#appinsights-tutorial-sap-hana-set-up)」を参照してください。

[AWS Systems Manager Distributor](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor.html) を使用して、AWS が提供する Prometheus HA クラスター Exporter のパッケージを Application Insights とは別にパッケージ化、インストール、設定するには、次の手順を完了します。

**Prometheus HA クラスター Exporter SSM パッケージを使用するための前提条件**
+ SSM エージェントバージョン 2.3.1550.0 以降がインストールされている
+ Pacemaker、Corosync、SBD、DRBD 用の HA クラスター
+ Linux オペレーティングシステム (SUSE Linux、RedHat Linux)

**`AWSObservabilityExporter-HAClusterExporterInstallAndConfigure` パッケージをインストールして設定する**  
`AWSObservabilityExporter-HAClusterExporterInstallAndConfigure` パッケージは、Prometheus HA クラスター Exporter のインストールおよび設定に使用できる SSM Distributor のパッケージです。Prometheus HANA データベース Exporter によってクラスターメトリクスが送信されると、CloudWatch サービスのメトリクスを取得するように CloudWatch エージェントを設定できます。

1. [SSM パラメータストア](https://console.aws.amazon.com/systems-manager/parameters)で SSM パラメータを作成して、Exporter の設定を JSON 形式で保存します。パラメータ値の例を次に示します。

   ```
   {\"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}
   ```

   エクスポーターの設定についての詳細は、GitHub の「[https://github.com/ClusterLabs/ha_cluster_exporter/blob/master/ha_cluster_exporter.yaml](https://github.com/ClusterLabs/ha_cluster_exporter/blob/master/ha_cluster_exporter.yaml) repo」を参照してください。

1. [SSM Distributor](https://console.aws.amazon.com/systems-manager/distributor) コンソールに移動し、**[Owned by Amazon]** (Amazon 所有) タブを開きます。**[AWSObservabilityExporter-HAClusterExporterInstallAndConfigure\$1]** を選択し、**[Install one time]** (1 回限りのインストール) を選択します。

1. 「Additional Arguments」を次のように置き換えて、最初のステップで作成した SSM パラメータを更新します。

   ```
   {
     "SSM_EXPORTER_CONFIG": "{{ssm:<*SSM_CONFIGURATIONS_PARAMETER_STORE_NAME>*}}"
   }
   ```

1. SAP HANA データベースを持つ Amazon EC2 インスタンスを選択し、**[Run]** (実行) をクリックします。

## `AWSObservabilityExporter-SAP-SAPHostExporterInstallAndConfigure`
<a name="appinsights-ssm-sap-host-exporter"></a>

Application Insights の [Prometheus SAP ホストエクスポーター](https://prometheus.io/docs/instrumenting/exporters/#third-party-exporters)からワークロード固有の SAP NetWeaver メトリクスを取得して、SAP NetWeaver Distributed and High Availability デプロイ用のアラームを設定およびモニターリングできます。

[AWS Systems Manager Distributor](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor.html) を使用して、SAP ホストエクスポーターパッケージを Application Insights とは別にパッケージ化、インストール、および設定するには、次の手順を実行します。

**Prometheus SAP ホストエクスポーター SSM パッケージを使用するための前提条件**
+ SSM エージェントバージョン 2.3.1550.0 以降がインストールされている
+ SAP NetWeaver アプリケーションサーバー
+ Linux オペレーティングシステム (SUSE Linux、RedHat Linux)

**`AWSObservabilityExporter-SAP-SAPHostExporterInstallAndConfigure` パッケージをインストールして設定する**  
`AWSObservabilityExporter-SAP-SAPHostExporterInstallAndConfigure` パッケージは、SAP NetWeaver Prometheus メトリクスエクスポーターのインストールおよび設定に使用できる SSM Distributor パッケージです。Prometheus エクスポーターによって SAP NetWeaver メトリクスが送信されると、CloudWatch サービスのメトリクスを取得するように CloudWatch エージェントを設定できます。

1. [SSM パラメータストア](https://console.aws.amazon.com/systems-manager/parameters)で SSM パラメータを作成して、Exporter の設定を JSON 形式で保存します。パラメータ値の例を次に示します。

   ```
   {\"address\":\"0.0.0.0\",\"port\":\"9680\",\"log-level\":\"info\",\"is-HA\":false}
   ```
   + **address**

     Prometheus メトリクスの送信先となるターゲットアドレス。デフォルト値は `localhost` です。
   + **port**

     Prometheus メトリクスの送信先となるターゲットポート。デフォルト値は `9680` です。
   + **is-HA**

     SAP NetWeaver High Availability のデプロイでは [`true`]。他のすべてのデプロイで、値は `false` です。

1. [SSM Distributor](https://console.aws.amazon.com/systems-manager/distributor) コンソールに移動し、**[Owned by Amazon]** (Amazon 所有) タブを開きます。**AWSObservabilityExporter-SAP-SAPHostExporterInstallAndConfigure** を選択し、**[Install one time]** (1 回限りのインストール) を選択します。

1. 「Additional Arguments」を次のように置き換えて、最初のステップで作成した SSM パラメータを更新します。

   ```
   {
     "SSM_EXPORTER_CONFIG": "{{ssm:<SSM_CONFIGURATIONS_PARAMETER_STORE_NAME>}}",
     "SSM_SID": "<SAP_DATABASE_SID>",
     "SSM_INSTANCES_NUM": "<instances_number seperated by comma>"
   }
   ```

   **例**

   ```
   {
     "SSM_EXPORTER_CONFIG": "{{ssm:exporter_config_paramter}}",
     "SSM_INSTANCES_NUM": "11,12,10",
     "SSM_SID": "PR1"
   }
   ```

1. SAP NetWeaver アプリケーションを含む Amazon EC2 インスタンスを選択し、**[Run]** (実行) を選択します。

**注記**  
Prometheus エクスポーターは、ローカルエンドポイントで SAP NetWeaver メトリクスを処理します。ローカルエンドポイントには Amazon EC2 インスタンスのオペレーティングシステムユーザーのみがアクセスできます。そのため、エクスポーターパッケージをインストールすると、すべてのオペレーティングシステムユーザーがメトリクスを利用できるようになります。デフォルトのローカルエンドポイントは `localhost:9680/metrics` です。

## `AWSObservabilityExporter-SQLExporterInstallAndConfigure`
<a name="appinsights-ssm-sql-prometheus"></a>

Application Insights の [Prometheus SQL エクスポーター](https://prometheus.io/docs/instrumenting/exporters/#third-party-exporters)からワークロード固有の SQL Server メトリクスを取得して、主要なメトリクスをモニタリングできます。

[AWS Systems Manager Distributor](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor.html) を使用して、SQL エクスポーターパッケージを Application Insights とは別にパッケージ化、インストール、および設定するには、次のステップを実行します。

**Prometheus SQL エクスポーター SSM パッケージを使用するための前提条件**
+ SSM エージェントバージョン 2.3.1550.0 以降がインストールされている
+ SQL Server ユーザー認証が有効になっている Windows 上で SQL Server を実行している Amazon EC2 インスタンス。
+ 次の許可を持つ SQL Server ユーザー:

  ```
  GRANT VIEW ANY DEFINITION TO
  ```

  ```
  GRANT VIEW SERVER STATE TO
  ```
+ AWS Secrets Manager を使用したデータベース接続文字列を含むシークレット。シークレットを作成する方法については、*AWS Secrets Manager ユーザーガイド*の「[シークレットを作成する](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html)」を参照してください。シークレットは、次のようにフォーマットする必要があります。

  ```
  {
    "data_source_name":"sqlserver://<username>:<password>@localhost:1433"
  }
  ```
**注記**  
パスワードまたはユーザー名に特殊文字が含まれている場合は、データベースに正常に接続できるように特殊文字をパーセントエンコーディングする必要があります。

**`AWSObservabilityExporter-SQLExporterInstallAndConfigure` パッケージをインストールして設定する**  
`AWSObservabilityExporter-SQLExporterInstallAndConfigure` パッケージは、SQL Prometheus メトリクスエクスポーターのインストールおよび設定に使用できる SSM Distributor パッケージです。Prometheus エクスポーターによってメトリクスが送信されると、CloudWatch サービスのメトリクスを取得するように CloudWatch エージェントを設定できます。

1. 任意で、SQL エクスポーター YAML 設定を準備します。次のサンプル設定では、単一のメトリクスが設定されています。[設定例](https://github.com/burningalchemist/sql_exporter/blob/master/examples/sql_exporter.yml)を使用して、追加のメトリクスで設定を更新するか、または独自の設定を作成します。

   ```
   ---
   global:
     scrape_timeout_offset: 500ms
     min_interval: 0s
     max_connections: 3
     max_idle_connections: 3
   target:
     aws_secret_name: <SECRET_NAME>
     collectors:
       - mssql_standard
   collectors:
     - collector_name: mssql_standard
       metrics: 
       - metric_name: mssql_batch_requests
         type: counter
         help: 'Number of command batches received.'
         values: [cntr_value]
         query: |
           SELECT cntr_value
           FROM sys.dm_os_performance_counters WITH (NOLOCK)
           WHERE counter_name = 'Batch Requests/sec'
   ```

1. Base64 としてエンコードされた Prometheus SQL エクスポーターの YAML 設定ファイルを、[SSM Parameter Store](https://console.aws.amazon.com/systems-manager/parameters) の新しい SSM パラメータにコピーします。

1. [SSM Distributor](https://console.aws.amazon.com/systems-manager/distributor) コンソールに移動し、**[Owned by Amazon]** (Amazon 所有) タブを開きます。**AWSObservabilityExporter-SQLExporterInstallAndConfigure** を選択し、**[1 回限りのインストール]** を選択します。

1. 「Additional Arguments」を次の情報に置き換えます。`SSM_PARAMETER_NAME` は、ステップ 2 で作成したパラメータの名前です。

   ```
   {
     "SSM_EXPORTER_CONFIGURATION": 
       "{{ssm:<SSM_PARAMETER_STORE_NAME>}}",
       "SSM_PROMETHEUS_PORT": "9399",
       "SSM_WORKLOAD_NAME": "SQL"                         
   }
   ```

1. SQL Server データベースを含む Amazon EC2 インスタンスを選択し、[実行] を選択します。

# CloudWatch Application Insights で使用される AWS Systems Manager (SSM) ドキュメント
<a name="appinsights-ssm-documents"></a>

Application Insights は、このセクションに記載されている SSM ドキュメントを使用して、AWS Systems Manager がマネージドインスタンスで実行するアクションを定義します。これらのドキュメントでは、Systems Manager の `Run Command` 機能を使用して、Application Insights のモニタリング機能の実行に必要なタスクを自動化しています。これらのドキュメントの実行スケジュールは、Application Insights によって管理されており、変更することはできません。

SSM ドキュメントの詳細については、「AWS Systems Manager ユーザーガイド」の「[AWS Systems Manager ドキュメント](https://docs.aws.amazon.com/systems-manager/latest/userguide/documents.html)」を参照してください。

## CloudWatch Application Insights によって管理されるドキュメント
<a name="ssm-documents-appinsights-managed"></a>

次の表は、Application Insights によって管理される SSM ドキュメントの一覧です。


| ドキュメント名 | 説明 | 実行スケジュール | 
| --- | --- | --- | 
|  `AWSEC2-DetectWorkload`  |  Application Insights によるモニタリング対象として設定できるアプリケーション環境で実行されているアプリケーションを自動検出します。  |  このドキュメントはアプリケーション環境で 1 時間ごとに実行され、アプリケーションに関する最新の詳細情報を取得します。  | 
|  `AWSEC2-CheckPerformanceCounterSets`  |  Amazon EC2 Windows インスタンスでパフォーマンスカウンターの名前空間が有効になっているかどうかを確認します。  |  このドキュメントはアプリケーション環境で 1 時間ごとに実行され、対応する名前空間が有効になっている場合にのみパフォーマンスカウンターのメトリクスをモニタリングします。  | 
|  `AWSEC2-ApplicationInsightsCloudwatchAgentInstallAndConfigure`  |  アプリケーションコンポーネントのモニタリング設定に基づいて、CloudWatch エージェントをインストールして設定します。  |  このドキュメントは 30 分ごとに実行され、CloudWatch エージェントの設定が常に正確で最新の状態になるようにします。また、このドキュメントは、メトリクスの追加や削除、ログ設定の更新など、アプリケーションのモニタリング設定に変更が加えられた直後にも実行されます。  | 

## AWS Systems Manager によって管理されるドキュメント
<a name="ssm-documents-aws-managed"></a>

次のドキュメントは、CloudWatch Application Insights によって使用され、Systems Manager によって管理されます。

**`AWS-ConfigureAWSPackage`**  
Application Insights はこのドキュメントを使用して、Prometheus エクスポーターディストリビューターパッケージのインストールとアンインストールを行い、ワークロード固有のメトリクスを収集し、顧客の Amazon EC2 インスタンスでワークロードを包括的にモニタリングできるようにします。CloudWatch Application Insights は、相関関係のあるターゲットワークロードがインスタンスで実行されている場合にのみ、Prometheus エクスポーターディストリビューターパッケージをインストールします。

次の表は、Prometheus エクスポーターディストリビューターパッケージと、相関関係のあるターゲットワークロードの一覧です。


| Prometheus エクスポーターディストリビューターパッケージ名 | ターゲットワークロード | 
| --- | --- | 
|  `AWSObservabilityExporter-HAClusterExporterInstallAndConfigure`  |  SAP HANA HA  | 
|  `AWSObservabilityExporter-JMXExporterInstallAndConfigure`  |  Java/JMX  | 
|  `AWSObservabilityExporter-SAP-HANADBExporterInstallAndConfigure`  |  SAP HANA  | 
|  `AWSObservabilityExporter-SAP-SAPHostExporterInstallAndConfigure`  |  NetWeaver  | 
|  `AWSObservabilityExporter-SQLExporterInstallAndConfigure`  |  SQL サーバー (Windows) と SAP ASE (Linux)  | 

**`AmazonCloudWatch-ManageAgent`**  
Application Insights はこのドキュメントを使用して、インスタンスで CloudWatch エージェントのステータスと設定を管理し、オペレーティングシステム全体で Amazon EC2 インスタンスから内部システムレベルのメトリクスとログを収集します。