CloudWatch Application Insights

目次

.NET / SQL Server / SAP ワークロードの自動監視とML根本原因分析

Amazon CloudWatch Application Insights は、.NET・SQL Server・SAP・Java・Ruby 等のアプリケーション(特に レガシー・Windows ワークロード)をリソースグループで登録し、ML が最適な監視設定を自動検出・配置するマネージド監視サービスです。CloudFormation スタック / リソースグループを登録するだけで、CloudWatch メトリクス・ログフィルター・アラームが自動生成。障害発生時は根本原因分析(RCA)を自動実施し、OpsCenter との統合で修復ワークフローの自動実行も可能です。このページでは Application Insights の本質・監視対象ワークロード・近年の動向を体系的に解説します。

このページの目的

このページでは以下を対象としています。

  • 初心者向け: Application Insights とは何か、.NET/SQL Server 監視の簡素化を学びたい方
  • DevOps / SRE 向け: レガシーアプリ監視設定を ML で自動化したい方
  • Windows / .NET 環境管理者向け: IIS エラー・SQL デッドロック・メモリリーク検出を実装したい方
  • 意思決定者向け: Datadog APM・New Relic・Dynatrace との比較検討

2025-近年の動向

  • Application Signals との統合深化(2026年2月):Application Insights データを Application Signals SLO に自動フィード
  • OpsCenter 自動修復ワークフロー拡張(2026年3月):.NET Crash → 自動ダンプ取得・分析 の Systems Manager Automation
  • Java アプリ対応拡張(2026年4月):Java Spring Boot / Quarkus の自動検出強化
  • Cross-Platform 対応準備(2026年5月):Linux 上の .NET Core の自動検出

概要

初心者向けメモ: CloudWatch Application Insights は「.NET・SQL Server・SAP ワークロードの監視設定を ML で自動生成するサービス」です。従来は、IIS エラーログ・SQL パフォーマンスカウンター・メモリメトリクスを手動で CloudWatch に送信する設定が必要でしたが、Application Insights に登録すると ML が「このアプリには IIS とSQL Server があるから、これらのベストプラクティス監視設定を自動適用」と判定して自動構成します。

CloudWatch Application Insights は CloudFormation スタック / AWS リソースグループをアプリケーションとして登録し、ML(SageMaker)がインストール済みのアプリケーション・ミドルウェア・OS を自動検出。検出した要素ごとに最適な CloudWatch メトリクス・ログフィルター・アラーム設定を自動生成します。障害発生時は複数のメトリクス・ログ・イベントを相関分析して根本原因候補を自動提示。OpsCenter・Systems Manager・DevOps Guru との統合で、修復ワークフローの自動実行も可能です。

Application Insights の位置づけ

アプリケーション監視・可観測性スタック内での役割:

  • .NET / SQL Server / Windows 特化:汎用 CloudWatch メトリクス設定では不十分な Windows ワークロード向け
  • 監視設定の自動化:ベストプラクティス監視を ML で自動適用。手作業の監視設定工数を 70% 削減
  • 根本原因分析の自動化:障害時に複数メトリクス・ログを自動相関分析。手動調査時間を短縮
  • DevOps Guru との統合:Application Insights がリソースグループを提供することで Guru がより精度の高い異常検知を実施

Application Insights が解決する課題

Application Insights は、レガシー・Windows ワークロード監視における次の問いに答えるための基盤です。

課題 Application Insights のソリューション
EC2 上の .NET / SQL Server アプリの監視設定が複雑 リソースグループ登録 → ML が IIS・SQL・Windows メトリクス自動設定。手作業ゼロ
IIS エラー率が増加したが原因は何か Application Insights が SQL Server ロック競合・メモリ不足・CPU 過負荷を自動相関分析
SQL Server のクエリが遅い → DB 側か アプリ側か不明確 SQL Server デッドロック・テーブルロック・I/O 待機を自動検出・可視化
Windows の イベントログから問題を探すのが手作業 ブルースクリーン・サービス停止・メモリ枯渇を自動検出・アラーム化
OOM (Out of Memory) エラーが本番で発生 メモリリーク検出→ OpsCenter アラート→ Systems Manager で自動ダンプ取得
SAP HANA / SAP NetWeaver 監視を最小限で実現 SAP 特有の ABAP エラー・リソース監視を自動設定
監視設定後のメンテナンスが負担 ML が継続的にメトリクス・ログを最適化。設定変更不要
DevOps Guru の異常検知精度を上げたい Application Insights が高品質なリソースグループ提供。Guru の学習精度向上

主な特徴

特徴 説明
ML による自動検出・設定 インストール済みのアプリ・ミドルウェアを自動検出。最適な監視設定を ML が自動生成
CloudFormation / リソースグループ統合 スタック単位でアプリを登録。スタック内のすべての EC2・RDS・ECS を統一管理
.NET / SQL Server / Windows 最適化 IIS エラー・SQL パフォーマンスカウンター・Windows イベントログの自動監視
OpsCenter との統合 問題(Problem)を OpsCenter に OpsItem として登録。修復ワークフローを自動実行
Systems Manager Automation との統合 障害自動検出 → Automation ドキュメント自動実行(ダンプ取得・ログ収集等)
DevOps Guru との連携 Application Insights のリソースグループ データを Guru が活用。異常検知精度向上
根本原因分析(RCA)の自動化 複数メトリクス・ログを相関分析。「SQL ロック競合がアプリレイテンシ増加の原因」と自動判定
SAP ワークロード対応 SAP HANA / SAP NetWeaver / SAP ASE・・・を自動検出・監視設定
アラーム・ダッシュボードの自動生成 監視対象アプリごとに CloudWatch ダッシュボード・アラーム自動作成
Application Signals との統合準備(2026) Application Signals SLO データに Application Insights メトリクスを自動フィード

アーキテクチャ

【図1】Application Insights の構成図:

graph TD
    CloudFormation["CloudFormation Stack<br/>(アプリケーションの定義)"]
    ResourceGroup["AWS Resource Group<br/>(リソースグループ)"]

    CloudFormation -->|登録| AppInsights["CloudWatch Application Insights<br/>(ML自動検出・設定)"]
    ResourceGroup -->|登録| AppInsights

    AppInsights -->|自動検出| IIS["IIS 検出<br/>Web Site / App Pool"]
    AppInsights -->|自動検出| SQLServer["SQL Server 検出<br/>Instances / Databases"]
    AppInsights -->|自動検出| Windows["Windows OS 検出<br/>Services / Events"]
    AppInsights -->|自動検出| SAP["SAP ワークロード検出"]

    AppInsights -->|自動設定| Metrics["CloudWatch Metrics<br/>(パフォーマンスカウンター)"]
    AppInsights -->|自動設定| Logs["CloudWatch Logs<br/>(ログフィルター)"]
    AppInsights -->|自動設定| Alarms["CloudWatch Alarms<br/>(自動アラーム)"]

    Metrics -->|異常検知| RCA["根本原因分析(RCA)<br/>(複数メトリクス相関分析)"]
    Logs -->|異常検知| RCA

    RCA -->|Problem 登録| OpsCenter["OpsCenter<br/>OpsItem 作成"]
    RCA -->|検出結果表示| Dashboard["Application Insights Dashboard"]

    OpsCenter -->|トリガー| Automation["Systems Manager Automation<br/>(修復ワークフロー)"]

    style CloudFormation fill:#c8e6c9
    style ResourceGroup fill:#c8e6c9
    style AppInsights fill:#fff3e0
    style IIS fill:#bbdefb
    style SQLServer fill:#bbdefb
    style Windows fill:#bbdefb
    style SAP fill:#bbdefb
    style Metrics fill:#e8f5e9
    style Logs fill:#e8f5e9
    style Alarms fill:#e8f5e9
    style RCA fill:#f8bbd0
    style OpsCenter fill:#fff9c4
    style Automation fill:#fff9c4
    style Dashboard fill:#e0f2f1

【図2】Application Insights が監視する階層:

graph LR
    App[".NET Application<br/>(例:ASP.NET MVC)"]
    IIS["Internet Information Services<br/>(Web Server)"]
    AppPool["Application Pool<br/>(Worker Process)"]
    SQL["SQL Server<br/>(Database)"]
    OS["Windows OS<br/>(System)"]

    App -->|Hosted by| IIS
    IIS -->|Uses| AppPool
    AppPool -->|Queries| SQL
    IIS -->|Runs on| OS

    AppInsights["Application Insights監視"]
    AppInsights -.->|計測| App
    AppInsights -.->|計測| IIS
    AppInsights -.->|計測| AppPool
    AppInsights -.->|計測| SQL
    AppInsights -.->|計測| OS

    style App fill:#e1f5ff
    style IIS fill:#c8e6c9
    style AppPool fill:#bbdefb
    style SQL fill:#ffe0b2
    style OS fill:#f8bbd0
    style AppInsights fill:#fff9c4

対応ワークロード

.NET Application

環境 対応 検出内容
IIS + ASP.NET App Pool エラー・リサイクル・メモリ使用率
.NET Core ✅(Linux対応準備中) 自動検出・メトリクス収集
WCF Services サービス エラー・レスポンスタイム
Windows Services サービス停止・再起動・メモリリーク

SQL Server

機能 対応 検出内容
Instances CPU・メモリ・Disk I/O・バックアップ
Databases テーブルロック・デッドロック・クエリ遅延
Agent Jobs ジョブ失敗・実行時間
Replication レプリケーションラグ・エラー

SAP Workloads

SAP 製品 対応 検出内容
SAP HANA Memory / CPU / Disk / Alert Monitor
SAP NetWeaver Dialog / Background Job / Gateway
SAP ASE ✅(Deprecated) 後継 HANA への移行推奨

Other Supported Workloads

  • Active Directory:Domain Controller / Replication
  • SharePoint:Farm Health / Search Index
  • Exchange Server:Mailbox / DAG Replication
  • Java:Spring Boot / Tomcat(2026年強化)
  • Ruby:Puma / Passenger

コアコンポーネント

1. Application(アプリケーション)

CloudFormation スタック / リソースグループを登録したもの。

登録方法:

# CloudFormation スタックを登録
aws application-insights create-application \
  --resource-group-name my-app-rg \
  --auto-config-enabled

# リソースグループから登録
aws application-insights create-application \
  --resource-group-name production-app-resources \
  --ops-center-enabled

2. Component(コンポーネント)

Application Insights が自動検出したアプリケーション要素。

自動検出されるコンポーネント:

Application (my-app)
├─ IIS (Windows/IIS)
│  ├─ Default Web Site (website)
│  └─ AppPool-Production (app_pool)
├─ SQL Server (Windows/SQL)
│  ├─ MSSQLSERVER (instance)
│  └─ ProductionDB (database)
├─ Windows (OS)
│  ├─ EC2Instance-1 (ec2_instance)
│  └─ System Services (windows_service)
└─ RDS (Database)
   └─ prod-mysql-01 (rds_db_instance)

3. Problem(問題)

Application Insights が自動検出した障害・異常。

{
  "ProblemId": "app-problem-001",
  "Title": "High CPU Utilization Detected",
  "Severity": "High",
  "RootCauseDescription": "SQL Server query inefficiency (full table scan)",
  "HealthChecks": [
    {
      "ComponentName": "SQL Server (MSSQLSERVER)",
      "HealthCheckName": "CPU Utilization",
      "Status": "Alarm"
    }
  ],
  "ImpactedEntities": [
    "IIS (Default Web Site)",
    "SQL Server (ProductionDB)"
  ],
  "LastObservedTime": "2026-04-27T12:00:00Z"
}

4. OpsItem(運用項目)

OpsCenter に自動登録される運用タスク。

OpsItem
├─ Title: "Application Insights Problem - High CPU"
├─ Description: "SQL Server query inefficiency (full table scan) detected"
├─ Priority: High
├─ Source: CloudWatch Application Insights
├─ Related Resources:
│  ├─ EC2: i-1234567890abcdef0
│  ├─ RDS: prod-mysql-01
│  └─ CloudWatch Alarm: arn:aws:cloudwatch:...
├─ Remediation Runbook: SSM Automation Document
└─ Status: Open (自動修復前)

主要ユースケース

1. EC2 上の .NET / SQL Server アプリの自動監視設定

背景: IIS・SQL Server・Windows の監視設定を手動で構成 → 工数大・設定ミス多発。

Application Insights の役割:

  • リソースグループ登録 → ML が自動検出・設定
  • IIS エラー率・SQL クエリ時間・メモリ使用率を自動監視

実装例:

# 1. CloudFormation スタック で EC2・SQL を定義
aws cloudformation create-stack \
  --stack-name my-app-prod \
  --template-body file://app-template.yaml \
  --tags "Application=my-app" "Environment=prod"

# 2. リソースグループ作成
aws resource-groups create-group \
  --name my-app-prod-rg \
  --resource-query '{
    "Type": "TAG_FILTERS_1_0",
    "Query": "tag:Application=my-app AND tag:Environment=prod"
  }'

# 3. Application Insights 登録
aws application-insights create-application \
  --resource-group-name my-app-prod-rg \
  --auto-config-enabled

# 4. Application Insights が自動検出・設定
# → IIS ワーカープロセス CPU・メモリ
# → SQL Server クエリ時間・ロック
# → Windows CPU・メモリ・Disk I/O
# → CloudWatch ダッシュボード自動生成

結果:

  • 監視設定工数:50 時間 → 2 時間(96% 削減)
  • ダッシュボード作成時間:20 時間 → 自動生成
  • 初期設定ミス:従来は 30-40% → ML で自動化で 0%

2. IIS エラー増加の根本原因自動分析

背景: IIS エラーレート が 5% に増加 → SQL・OS・メモリのどれが原因か?

Application Insights の役割:

  • IIS エラー + SQL ロック + メモリ圧迫を相関分析
  • 「SQL Server デッドロック が IIS エラーの原因」と自動判定

実装例:

時刻: 10:32 UTC
IIS エラー率: 2% → 5% に増加(アラーム)

Application Insights 根本原因分析:
  ├─ IIS (Default Web Site)
  │  └─ Errors: 500/hour → 1,250/hour (↑250%)
  ├─ SQL Server (ProductionDB)
  │  ├─ Deadlock Rate: 0.1/min → 8.5/min (↑8500%)
  │  ├─ CPU: 30% → 85%
  │  └─ Connection Waits: 50ms → 1,200ms
  ├─ Windows OS
  │  ├─ Memory: 65% → 92%(メモリ圧迫)
  │  └─ Disk I/O: 30% → 45%
  └─ 根本原因判定: SQL Server デッドロック
     - 原因: long-running transaction が複数テーブルロック
     - 対応: クエリ最適化 / インデックス追加
     - 自動修復可能: ❌(アプリケーション修正必要)

OpsCenter アラート:
  Title: "SQL Server Deadlock causing IIS errors"
  Severity: High
  Runbook: "SQL-Deadlock-Investigation"(Systems Manager Automation)
  → DBA に通知 / 自動ログ収集開始

3. メモリリーク検出と自動ダンプ取得

背景: .NET アプリ メモリが徐々に増加 → メモリリークか?

Application Insights の役割:

  • ワーカープロセス メモリ使用率の 継続的増加を検出
  • 検出時に自動で メモリダンプを取得・OpsCenter に通知

実装例:

時刻: 過去 7 日間
ワーカープロセス メモリ: 500MB → 1,500MB に増加(100% 増)

Application Insights 異常検知:
  メモリ増加傾向 を ML が検出
  → 根本原因:メモリリーク の可能性が高い

自動対応:
  1. CloudWatch Alarm 発火
  2. EventBridge ルール トリガー
  3. Systems Manager Automation 実行
     - Target: EC2 インスタンス
     - Action: プロセス メモリダンプ取得
     - Output: S3 にアップロード
  4. OpsCenter に OpsItem 作成
     - Title: "Potential Memory Leak Detected in AppPool"
     - Attachments: メモリダンプファイル
  5. DBA / デベロッパーに通知

手動デバッグ:
  → ダンプファイル を WinDbg で分析
  → メモリリークの原因を特定・修正

4. SQL Server クエリパフォーマンス監視

背景: チェックアウト画面が遅い → SQL クエリが原因か?IIS か?

Application Insights の役割:

  • SQL Server クエリ実行時間・ロック時間・I/O 待機を自動監視
  • IIS レスポンスタイム と SQL クエリ時間の相関分析

実装例:

ユーザー報告: 「チェックアウト画面のレスポンスが 5 秒かかる」

Application Insights 分析:
  IIS (ASP.NET)
  ├─ Response Time: 4,800ms
  │  ├─ Application Processing: 500ms(正常)
  │  └─ SQL Server Wait: 4,300ms(遅延!)

  SQL Server
  ├─ Orders テーブル SELECT
  │  ├─ Execution Time: 3,200ms
  │  ├─ Lock Wait Time: 800ms(他トランザクション ブロック中)
  │  └─ I/O Wait: 300ms
  └─ 根本原因: 「Order Status テーブル の UPDATE トランザクション」
     が 「Orders SELECT」 をロック中

対応:
  1. 実行中の UPDATE ブロック解除
  2. クエリ最適化:インデックス追加 / クエリ改写
  3. トランザクション管理:長時間ロック回避

改善後:
  - SQL Query Time: 3,200ms → 150ms
  - IIS Response Time: 4,800ms → 700ms(85% 改善)

5. Windows サービス停止の自動復旧

背景: バックグラウンドサービスが停止 → 手動で再起動していた。

Application Insights の役割:

  • Windows サービス停止を自動検出
  • OpsCenter → Systems Manager Automation で自動復旧

実装例:

検出:
  時刻 03:15 UTC
  Windows Service "CustomWorkerService" が停止

Application Insights 自動対応:
  1. Health Check: Service Status = Stopped(アラーム)
  2. OpsCenter OpsItem 自動作成
     - Title: "CustomWorkerService stopped"
     - Severity: High
  3. EventBridge ルール トリガー
  4. Systems Manager Automation ドキュメント 実行
     - Automation: Start-Windows-Service
     - Parameter: ServiceName=CustomWorkerService
     - Target: EC2 インスタンス
  5. サービス自動再起動
  6. Health Check: Service Status = Running(復旧)
  7. OpsItem 自動クローズ

結果:
  - 自動検出: 1 分
  - 自動復旧: 1-2 分
  - MTTR 削減: 従来 30 分 → 2 分(93% 削減)

6. SAP 環境の自動監視設定

背景: SAP HANA / SAP NetWeaver は複雑な監視が必要 → 構成困難。

Application Insights の役割:

  • SAP コンポーネントを自動検出
  • SAP 特有のメトリクス(バックアップ・ワークプロセス)を自動監視

実装例:

# SAP CloudFormation スタック登録
aws application-insights create-application \
  --resource-group-name sap-prod-rg \
  --auto-config-enabled

# Application Insights が自動検出
# → SAP HANA Instance
# ├─ Memory Usage: 85%
# ├─ CPU: 65%
# ├─ Disk I/O: 45%
# └─ Alert Monitor: 0 alerts(正常)
# → SAP NetWeaver
# ├─ Dialog Process CPU
# ├─ Background Job Status
# ├─ Gateway Connections
# └─ Work Process Queue
# → Backup Monitor
# ├─ Last Backup Time
# ├─ Backup Duration
# └─ Backup Status

# CloudWatch ダッシュボード 自動生成
# → SAP 監視の ベストプラクティス適用

設定・操作の具体例

AWS CLI での Application 作成

# リソースグループ作成
aws resource-groups create-group \
  --name production-app-rg \
  --resource-query '{
    "Type": "TAG_FILTERS_1_0",
    "Query": "tag:Application=prod-app"
  }'

# Application Insights アプリケーション作成
aws application-insights create-application \
  --resource-group-name production-app-rg \
  --auto-config-enabled \
  --ops-center-enabled \
  --cwe-monitor-enabled \
  --tags "Team=Operations" "CostCenter=12345"

# アプリケーション詳細表示
aws application-insights describe-application \
  --resource-group-name production-app-rg

# コンポーネント一覧表示
aws application-insights list-components \
  --resource-group-name production-app-rg

# 問題(Problem)一覧表示
aws application-insights list-problems \
  --resource-group-name production-app-rg \
  --start-time 2026-04-20T00:00:00Z

CloudFormation での構築

AWSTemplateFormatVersion: '2010-09-09'
Description: 'Application Insights Setup for .NET Application'

Resources:
  # EC2 インスタンス(IIS + .NET)
  WebServerInstance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-0c55b159cbfafe1f0  # Windows Server 2022 with IIS
      InstanceType: t3.large
      Tags:
        - Key: Application
          Value: prod-app
        - Key: Environment
          Value: production

  # RDS SQL Server
  SQLServerDatabase:
    Type: AWS::RDS::DBInstance
    Properties:
      Engine: sqlserver-se
      DBInstanceIdentifier: prod-sqlserver
      DBInstanceClass: db.t3.large
      Tags:
        - Key: Application
          Value: prod-app
        - Key: Environment
          Value: production

  # CloudWatch Agent IAM Role
  ApplicationInsightsRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - ec2.amazonaws.com
                - application-insights.amazonaws.com
            Action: 'sts:AssumeRole'
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
        - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

  InstanceProfile:
    Type: AWS::IAM::InstanceProfile
    Properties:
      Roles:
        - !Ref ApplicationInsightsRole

  # Systems Manager Automation ドキュメント(サービス再起動)
  RestartServiceAutomation:
    Type: AWS::SSM::Document
    Properties:
      DocumentType: Automation
      Content:
        schemaVersion: '0.3'
        description: Restart Windows Service
        parameters:
          ServiceName:
            type: String
            description: Windows Service Name
          InstanceId:
            type: String
            description: EC2 Instance ID
        mainSteps:
          - name: RestartService
            action: 'aws:runCommand'
            inputs:
              InstanceIds:
                - '{{ InstanceId }}'
              DocumentName: AWS-RunPowerShellScript
              Parameters:
                command:
                  - 'Restart-Service -Name "{{ ServiceName }}" -Force'

Outputs:
  WebServerInstanceId:
    Value: !Ref WebServerInstance
    Description: EC2 Instance ID

  SQLServerEndpoint:
    Value: !GetAtt SQLServerDatabase.Endpoint.Address
    Description: RDS SQL Server Endpoint

Terraform での構築

# EC2 インスタンス
resource "aws_instance" "web_server" {
  ami           = data.aws_ami.windows_server.id
  instance_type = "t3.large"
  iam_instance_profile = aws_iam_instance_profile.app_insights.name

  tags = {
    Name        = "prod-web-server"
    Application = "prod-app"
    Environment = "production"
  }
}

# RDS SQL Server
resource "aws_db_instance" "sql_server" {
  identifier     = "prod-sqlserver"
  engine         = "sqlserver-se"
  engine_version = "2022.04.01"
  instance_class = "db.t3.large"

  tags = {
    Application = "prod-app"
    Environment = "production"
  }
}

# Application Insights アプリケーション
resource "aws_appinsights_app" "main" {
  resource_group_name = aws_resourcegroups_group.app.name
  auto_config_enabled = true
  ops_center_enabled  = true
  cwe_monitor_enabled = true

  tags = {
    Team = "Operations"
  }
}

# リソースグループ
resource "aws_resourcegroups_group" "app" {
  name = "prod-app-rg"

  resource_query {
    query = jsonencode({
      ResourceTypeFilters = [
        "AWS::EC2::Instance",
        "AWS::RDS::DBInstance"
      ]
      TagFilters = [
        {
          Key    = "Application"
          Values = ["prod-app"]
        }
      ]
    })
  }
}

類似サービス比較

特性 Application Insights Datadog APM New Relic Dynatrace AppDynamics
.NET 対応 ✅ 最適化 ✅ 対応 ✅ 対応 ✅ 対応 ✅ 対応
SQL Server 特化 ✅ ネイティブ △ 限定 △ 限定 △ 限定 △ 限定
Windows 対応 ✅ 最適化 △ 対応 △ 対応 △ 対応 △ 対応
ML 根本原因分析 ✅ SageMaker ✅ 独自 AI ✅ 独自 AI ✅ AI Engine ✅ MDA
OpsCenter 統合 ✅ ネイティブ ❌ なし ❌ なし ❌ なし ❌ なし
AWS 統合 ✅ 深い △ インテグレーション △ インテグレーション △ インテグレーション △ インテグレーション
SAP 対応 ✅ HANA・NetWeaver △ 基本的対応 △ 基本的対応 ✅ 対応 △ 対応
コスト(AWS) ⭐⭐⭐⭐⭐ ⭐⭐ ⭐⭐ ⭐⭐ ⭐⭐
推奨用途 AWS .NET Multi-Cloud Multi-Cloud Enterprise Enterprise

ベストプラクティス

✅ 推奨される実装パターン

1. CloudFormation スタック単位での登録

# アプリケーション CloudFormation スタック定義
# タグで Application 識別
aws cloudformation create-stack \
  --stack-name my-app-prod \
  --tags "Key=Application,Value=my-app" "Key=Environment,Value=prod" \
  --template-body file://template.yaml

# リソースグループで自動グループ化
aws resource-groups create-group \
  --name my-app-prod-rg \
  --resource-query '{
    "Type": "TAG_FILTERS_1_0",
    "Query": "tag:Application=my-app AND tag:Environment=prod"
  }'

# Application Insights 登録(自動監視開始)
aws application-insights create-application \
  --resource-group-name my-app-prod-rg \
  --auto-config-enabled

2. OpsCenter / Systems Manager Automation との統合

import boto3

appinsights = boto3.client('application-insights')
ssm = boto3.client('ssm')

# Application Insights から Problem 取得
response = appinsights.list_problems(
    ResourceGroupName='my-app-prod-rg',
    StartTime='2026-04-20T00:00:00Z'
)

for problem in response['ProblemList']:
    # 自動修復ワークフロー実行
    if 'Service Stopped' in problem['Title']:
        ssm.start_automation_execution(
            DocumentName='RestartWindowsService',
            Parameters={
                'ServiceName': [problem['ServiceName']],
                'InstanceId': [problem['InstanceId']]
            }
        )
        print(f"Auto-remediation initiated: {problem['Title']}")

3. CloudWatch ダッシュボード + アラーム統合

{
  "widgets": [
    {
      "type": "metric",
      "properties": {
        "metrics": [
          ["AWS/ApplicationInsights", "IISErrors", {"stat": "Sum"}],
          [".", "SQLServerLocks", {"stat": "Average"}],
          [".", "WindowsCPU", {"stat": "Average"}]
        ],
        "period": 300,
        "stat": "Average",
        "region": "ap-northeast-1",
        "title": "Application Insights - Production App"
      }
    }
  ]
}

トラブルシューティング

問題 原因 解決方法
コンポーネント自動検出されない CloudWatch Agent 未インストール / 権限不足 SSM Session Manager で Agent 確認、IAM ロール確認
Problem が表示されない 監視期間不足 / データ量少ない 24 時間以上待機、ダッシュボード確認
OpsItem 自動作成されない ops-center-enabled = false 有効化後に Application 再作成

まとめ

Amazon CloudWatch Application Insights は、.NET・SQL Server・SAP・Windows ワークロードの 監視設定を ML で自動化するマネージド監視サービス です。CloudFormation スタック / リソースグループ登録 → ML 自動検出・設定 → 根本原因分析・OpsCenter 統合で、複雑な Windows アプリケーション監視を 70% 削減した工数で実現します。

特に EC2 上の IIS / ASP.NET・SQL Server の既存ワークロード、SAP HANA・SAP NetWeaver などのレガシーシステムで有効。2026 年の Application Signals 統合により、.NET / Windows ワークロードも SLO 目標達成率の可視化が可能になります。


参考文献

AWS 公式