Amazon OpenSearch Service モニタリング
概要
Amazon OpenSearch Service は、クラスターおよびノードメトリクスを AWS/ES 名前空間で自動的に CloudWatch に発行します。ノードごとの JVM、イ ンデキシングレート、検索レイテンシー、シャードレベルの詳細を含むより深い Prometheus 互換のモニタリングには、AWS Managed Collector が VPC アクセスドメインをスクレイプし、メトリクスを Amazon Managed Service for Prometheus(AMP)または CloudWatch の PromQL ストアにエクスポートできます。
この組み合わせにより、自己管理型の Prometheus インフラストラクチャを実行することなく、ネイティブの CloudWatch アラームパスと Grafana ダッシュボードによる完全な PromQL クエリ機能の両方が得られます。
OpenSearch はログ分析バックエンドとしても機能します(Fluent Bit または Logstash 経由で ECS、EKS、EC2 からログを取り込む)が、このエントリではロギングの宛先として使用するのではなく、OpenSearch サービスのヘルスのモニタリングに焦点を当てています。
完全なリファレンス資料については、Amazon OpenSearch Service のモニタリングを参照してください。
前提条件
- VPC アクセスの Amazon OpenSearch Service ドメイン(パブリックアクセスドメインはマネージドコレクターでサポートされていません)
- 異なるアベイラビリティゾーンにある少なくとも 2 つのサブネット(ドメインと同じ VPC)
- コレクターが HTTPS(ポート 443)でドメインエンドポイントに到達できるセキュリティグループ
- IAM 権限:
aps:CreateScraper、es:DescribeDomain、es:ESHttpGet - (オプション)PromQL ベースのクエリ用の AMP ワークスペース
- (オプション)AMP または CloudWatch データソースが設定された AMG ワークスペース
アーキテクチャ

┌──────────────────────────────────────────────────────────────┐
│ OpenSearch Domain (VPC access) │
│ │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ Data Node │ │ Data Node │ │ Data Node │ │
│ │ (metrics) │ │ (metrics) │ │ (metrics) │ │
│ └─────┬──────┘ └─────┬──────┘ └─────┬──────┘ │
│ └────────────────┼────────────────┘ │
│ │ :443 HTTPS │
└─────────────────────────┼────────────────────────────────────┘
│ Pull (private VPC)
▼
┌──────────────────────────┐
│ AWS Managed Collector │
│ (fully managed) │
└───── ───────┬─────────────┘
│
┌────────────┼────────────┐
▼ ▼
┌──────────────────────┐ ┌──────────────────────┐
│ Amazon Managed │ │ Amazon CloudWatch │
│ Prometheus (AMP) │ │ (PromQL store) │
└──────────┬───────────┘ └──────────────────────┘
│
▼
┌──────────────────────┐
│ Amazon Managed │
│ Grafana (AMG) │
└───────────────── ─────┘
デプロイ
ステップ 1:ドメインのセキュリティグループを設定する
コレクターのセキュリティグループからの HTTPS を許可するインバウンドルールを追加します:
| プロトコル | ポート | ソース | 目的 |
|---|---|---|---|
| TCP | 443 | Scraper SG | メトリクス収集エンドポイント |
ステップ 2:スクレイプ設定を作成する
opensearch-config.yaml を作成します:
global:
external_labels:
domain_name: my-opensearch-domain
scrape_configs:
- job_name: opensearch-exporter
scrape_interval: 60s
マネージドコレクターはドメインエンドポイントを自動的に解決します — ターゲットを手動で指定する必要はありません。
ステップ 3:マネージドコレクタースクレイパーを作成する
aws amp create-scraper \
--alias "opensearch-metrics-scraper" \
--source '{
"vpcConfiguration": {
"subnetIds": ["subnet-abc123", "subnet-def456"],
"securityGroupIds": ["sg-0123456789abcdef0"]
}
}' \
--exporters '[
{
"openSearchConfiguration": {
"domainArn": "arn:aws:es:us-west-2:123456789012:domain/my-opensearch-domain"
}
}
]' \
--scrape-configuration configurationBlob=$(base64 -w 0 opensearch-config.yaml) \
--destination '{
"ampConfiguration": {
"workspaceArn": "arn:aws:aps:us-west-2:123456789012:workspace/ws-abc123"
}
}'
メトリクスを CloudWatch PromQL ストアに送信するには、ampConfiguration を cloudWatchConfiguration(データセット ARN を使用)に置き換えてください。
ステップ 4:ネイティブメトリクスに CloudWatch アラームを設定する
aws cloudwatch put-metric-alarm \
--alarm-name "OpenSearch-ClusterRed" \
--namespace AWS/ES \
--metric-name "ClusterStatus.red" \
--dimensions Name=DomainName,Value=my-opensearch-domain Name=ClientId,Value=123456789012 \
--statistic Maximum \
--period 60 \
--threshold 1 \
--comparison-operator GreaterThanOrEqualToThreshold \
--evaluation-periods 1 \
--alarm-actions arn:aws:sns:us-west-2:123456789012:ops-alerts
検証
-
スクレイパーのステータスを確認します:
aws amp describe-scraper --scraper-id s-1234abcd-5678-90efACTIVEステータ スになるまで待ちます。 -
クラスターヘルスをクエリします(CloudWatch Query Studio または AMP):
opensearch_cluster_health_status -
ノードレベルの JVM ヒープをクエリします:
opensearch_jvm_mem_heap_used_in_bytes / opensearch_jvm_mem_heap_max_in_bytes * 100 -
提供済みダッシュボードを確認します: CloudWatch → ダッシュボード → テンプレート → OpenSearch OTel。
監視すべき主要メトリクス
| メトリクス | 意味 | アラートしきい値 |
|---|---|---|
ClusterStatus.red(CW) | 少なくとも 1 つのプライマリシャードが未割り当て | = 1 |
FreeStorageSpace(CW) | ノードごとの利用可能なディスク | 合計の 20% 未満 |
JVMMemoryPressure(CW) | JVM ヒープ使用率 | > 80% |
opensearch_indices_search_query_time_in_millis(Prom) | 検索レイテンシー | 上昇傾向 |
opensearch_cluster_health_number_of_nodes(Prom) | ノード数 | 期待値より少ない |