

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Prometheus メトリクスに対するクエリの実行
<a name="AMP-query"></a>

ワークスペースにメトリクスが取り込まれるようになったら、それらのメトリクスに対してクエリを実行できます。

メトリクスを視覚的に表現するダッシュボードを作成するには、Amazon Managed Grafana などのサービスを使用できます。Amazon Managed Grafana (または Grafana のスタンドアロンインスタンス) は、さまざまなディスプレイプレゼンテーションスタイルでメトリクスを表示するグラフィカルインターフェイスを構築できます。Amazon Managed Grafana の詳細については、「[Amazon Managed Grafana ユーザーガイド](https://docs.aws.amazon.com/grafana/latest/userguide/)」を参照してください。

また、ダイレクトクエリを使用して、1 回限りのクエリの作成、データの探索、またはメトリクスを使用する独自のアプリケーションの作成を行うこともできます。ダイレクトクエリは、Amazon Managed Service for Prometheus API と標準の Prometheus クエリ言語 PromQL を使用して、Prometheus ワークスペースからデータを取得します。PromQL とその構文の詳細については、Prometheus ドキュメントの「[Querying Prometheus](https://prometheus.io/docs/prometheus/latest/querying/basics/)」を参照してください。

**Topics**
+ [PromQL チートシート](#promql-cheat-sheet)
+ [基本セレクタ](#promql-basic-selectors)
+ [範囲ベクトルセレクタ](#promql-range-selectors)
+ [集約演算子](#promql-aggregation-operators)
+ [共通関数](#promql-functions)
+ [二項演算子](#promql-operators)
+ [実用的なクエリの例](#promql-practical-examples)
+ [メトリクスのクエリを保護する](AMP-secure-querying.md)
+ [Amazon Managed Service for Prometheus で使用するための Amazon Managed Grafana のセットアップ](AMP-amg.md)
+ [Amazon Managed Service for Prometheus で使用する Grafana オープンソースまたは Grafana Enterprise のセットアップ](AMP-onboard-query-standalone-grafana.md)
+ [Amazon EKS クラスターで動作する Grafana を使用したクエリ](AMP-onboard-query-grafana-7.3.md)
+ [Prometheus 互換 API を使用したクエリ](AMP-onboard-query-APIs.md)
+ [各クエリのクエリ使用状況に関する統計を取得する](AMP-stats.md)

## PromQL チートシート
<a name="promql-cheat-sheet"></a>

Amazon Managed Service for Prometheus ワークスペースでメトリクスをクエリするときは、この PromQL (Prometheus クエリ言語) チートシートをクイックリファレンスとして使用します。PromQL を使用すると、機能クエリ言語を使用して時系列データをリアルタイムで選択および集計できます。

PromQL の詳細については、*PromLabs* ウェブサイトの「[PromQL チートシート](https://promlabs.com/promql-cheat-sheet/)」を参照してください。

## 基本セレクタ
<a name="promql-basic-selectors"></a>

メトリクス名とラベルマッチャーで時系列を選択します。

```
# Select all time series with the metric name http_requests_total
http_requests_total

# Select time series with specific label values
http_requests_total{job="prometheus", method="GET"}

# Use label matchers
http_requests_total{status_code!="200"}          # Not equal
http_requests_total{status_code=~"2.."}          # Regex match
http_requests_total{status_code!~"4.."}          # Negative regex match
```

## 範囲ベクトルセレクタ
<a name="promql-range-selectors"></a>

時間の経過に伴うサンプルの範囲を選択します。

```
# Select 5 minutes of data
http_requests_total[5m]

# Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks), y (years)
cpu_usage[1h]
memory_usage[30s]
```

## 集約演算子
<a name="promql-aggregation-operators"></a>

複数の時系列にまたがるデータを集約します。

```
# Sum all values
sum(http_requests_total)

# Sum by specific labels
sum by (job) (http_requests_total)
sum without (instance) (http_requests_total)

# Other aggregation operators
avg(cpu_usage)                    # Average
min(response_time)               # Minimum
max(response_time)               # Maximum
count(up)                        # Count of series
stddev(cpu_usage)               # Standard deviation
```

## 共通関数
<a name="promql-functions"></a>

関数を適用してデータを変換します。

```
# Rate of increase per second (for counters)
rate(http_requests_total[5m])

# Increase over time range
increase(http_requests_total[1h])

# Derivative (for gauges)
deriv(cpu_temperature[5m])

# Mathematical functions
abs(cpu_usage - 50)              # Absolute value
round(cpu_usage, 0.1)           # Round to nearest 0.1
sqrt(memory_usage)              # Square root

# Time functions
time()                          # Current Unix timestamp
hour()                          # Hour of day (0-23)
day_of_week()                   # Day of week (0-6, Sunday=0)
```

## 二項演算子
<a name="promql-operators"></a>

算術演算と論理演算を実行します。

```
# Arithmetic operators
cpu_usage + 10
memory_total - memory_available
disk_usage / disk_total * 100

# Comparison operators (return 0 or 1)
cpu_usage > 80
memory_usage < 1000
response_time >= 0.5

# Logical operators
(cpu_usage > 80) and (memory_usage > 1000)
(status_code == 200) or (status_code == 201)
```

## 実用的なクエリの例
<a name="promql-practical-examples"></a>

Amazon Managed Service for Prometheus ワークスペースで使用できる一般的なモニタリングクエリ:

```
# CPU usage percentage
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

# Memory usage percentage
(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100

# Request rate per second
sum(rate(http_requests_total[5m])) by (job)

# Error rate percentage
sum(rate(http_requests_total{status_code=~"5.."}[5m])) / 
sum(rate(http_requests_total[5m])) * 100

# 95th percentile response time
histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))

# Top 5 instances by CPU usage
topk(5, avg by (instance) (cpu_usage))
```