Prometheus OpenMetricsやNew Relicとのリモートライト統合で収集したメトリクスをクエリして可視化するには、 NRQL を使用することができます。また、 PromQL スタイルのクエリを NRQL に変換するには、Grafana または クエリビルダ を使用します。
Docker と Kubernetes のすべての指標は、 Metric
タイプに保存されます。
OpenMetricsインテグレーションのデフォルト属性
デフォルトでは、DockerとKubernetesの統合のためのすべてのメトリクスに以下の属性が追加されます。
デフォルトの属性
(すべての統合機能) | 説明 |
---|
clusterName
| スクレーパーの構成で提供されたクラスターの名前。 |
integrationName
| この統合の名前 ( nri-prometheus )。 |
integrationVersion
| 統合のバージョン。たとえば、 0.2.0 です。 |
metricName
| メトリック自体の名前です。 |
nrMetricType
| New Relic Metric タイプのタイプ。たとえば、 Gauges です。 |
promMetricType
| Prometheusのメトリックのタイプ |
scrapedEndpoint
| スクレイピングされるエンドポイントのURLです。 |
スクレイパーが
Kubernetes:
で実行されている場合、Kubernetes すべてのメトリックに次の属性も追加します。New Relic
Kubernetesの追加属性 | 説明 |
---|
deploymentName
| ポッドをスクレイピングする場合のデプロイメントの名前。 |
label
| スクレイピングされるオブジェクトの Kubernetes ラベル。先頭に"label" が付きます。 |
namespaceName
| ネームスペースの名前。 |
nodeName
| スクレイピングされるポッドが実行されているノードの名前(該当する場合)。 |
podName
| スクラップされるポッドの名前(該当する場合)。 |
serviceName
| スクラップされるサービスの名称(該当する場合 |
リモート・ライト・インテグレーションのデフォルト属性
デフォルトでは、以下の属性がPrometheusのリモートライトメトリクスに追加されます。
デフォルトの属性
(すべての統合機能) | 説明 |
---|
prometheus_server
| Prometheusのリモート書き込みURLパラメータとして指定されたユーザー提供のラベル。問い合わせ時にPrometheusのソースサーバーを区別するため、提供される値は一意でなければなりません。デフォルトでは指定されていません。 |
newrelic.source
| New Relic 取り込みポイントの名前 ( prometheusAPI )。 |
instrumentation.provider
| prometheus
|
instrumentation.name
| remote-write
|
instrumentation.source
| prometheus_server の値と一致する Prometheus データのソースのユーザー指定の識別子。
|
instrumentation.version
| リモート書き込み API のバージョンを識別するために使用されます。例えば、 0.0.1. |
NRQL クエリの例
ビルド・クエリ の場合、メトリクス、エンティティ、および属性の間にはリンクがないことに注意してください。以下の NRQL クエリを使用して、どのメトリクスが利用可能で、どの属性がこれらのメトリクスに存在するかを調べます。
OpenMetricsのすべてのメトリック名を取得するには
FROM Metric SELECT uniques(metricName)
リモートライト統合のメトリック名を取得するには
FROM Metric SELECT uniques(metricName) WHERE instrumentation.provider='prometheus'
AND instrumentation.name='remote-write'
単一のPrometheusソースからリモート書き込み統合のメトリック名を取得するには、次のようにします。
FROM Metric SELECT uniques(metricName) WHERE instrumentation.provider='prometheus'
AND instrumentation.name='remote-write' AND instrumentation.source='<ds>'
特定のOpenMetricsエンドポイントのメトリック名を取得するには
FROM Metric SELECT uniques(metricName) WHERE scrapedEndpoint='<ep>'
特定のOpenMetricsクラスタ、ネームスペース、またはポッドのメトリック名を取得するには。
FROM Metric SELECT uniques(metricName) WHERE clusterName='<cn>'
FROM Metric SELECT uniques(metricName) WHERE namespaceName='<ns>'
FROM Metric SELECT uniques(metricName) WHERE podName='<pod>'
選択したメトリックのすべてのアトリビュートを取得するには
FROM Metric SELECT keyset() WHERE metricName='<mn>'
オートコンプリートでは、ポッドに関係なく、属性のすべての値が表示されます。特定のポッドの属性値を確定するには
FROM Metric SELECT uniques(<attribute>) WHERE metricName='<mn>' AND podName='<pod>'
クエリの作成
メトリック名と属性 を使って、データを照会することができます。ファセット、時系列、および時間選択の詳細については、 NRQL ドキュメント を参照してください。
PromQL スタイルのクエリを作成するには、サポートされている PromQL 機能に関するドキュメントを参照してください。
生のメトリック値を得るために
FROM Metric SELECT <metricName> WHERE <attribute>='<value>'
average
、 min
、 max
、またはsum
のアグリゲーターを使用してメトリックのグラフを取得するには:
FROM Metric SELECT <aggregator>(<metricname>) WHERE <attribute>='<value>' TIMESERIES
現在、統合機能では、カウンターメトリクスのデルタを計算しています。このため、カウンタメトリクスのクエリでは、カウンタの絶対値ではなく、カウンタのデルタが表示されます。
Docker:
この例では、Redis エクスポーターをスクレイピングすることを前提としています。クラスター内のエンドポイントごとに接続されている Redis クライアントの数を表示するには:
FROM Metric SELECT latest(redis_connected_clients) WHERE clusterName='my-cluster'
FACET scrapedEndpoint TIMESERIES
Kubernetes:
この例では、Redis エクスポーターがインストールされた Redis ポッドがあることを前提としています。デフォルトのネームスペースでポッドごとに接続されているRedisクライアントの数を表示するには:
FROM Metric SELECT latest(redis_connected_clients) WHERE namespaceName='default' FACET podName TIMESERIES
この例では、Dockerのノード・エクスポーターをスクレイピングしており、OpenMetricsを使用することを想定しています。クラスタ内のすべてのスクレイピングされたエンドポイントの平均メモリ空き容量を表示するには、次のようにします。
FROM Metric SELECT average(node_memory_MemFree_bytes) WHERE clusterName='my-cluster'
OpenMetricsを使用して、Kubernetesデプロイメント内のすべてのポッドの平均メモリ使用量を表示するには、次のようにします。
FROM Metric SELECT average(container_memory_usage_bytes)
WHERE deploymentName='my-app-deployment' AND namespaceName='default'
New Relicでデータを見る
データを照会すると、その結果を New Relic の UI で見ることができます。また、データをチャートやヒストグラムなどで視覚化することもできます。
Prometheus インテグレーションのデータのNRQLクエリ結果を表示するには、one.newrelic.com > All capabilities > Query your data に移動します。 詳細については、クエリビルダーのドキュメントを参照してください。
ヒストグラムの作成とパーセンタイルの計算
Prometheus リモート書き込みまたはバージョン2.0.0以降の Prometheus OpenMetrics Integration (POMI) を使用して、ヒストグラムを生成し、データからパーセンタイルを計算できます。Prometheus ヒストグラムの場合、バケット<basename>_bucket{le="42"}
がメトリック<basename>_bucket
として送信され、ディメンションは{histogram.bucket.le="42"}
になります。
NRQL には、リモート書き込みまたは Prometheus OpenMetrics Integration (バージョン2.0.0以降) を介して取り込まれた Prometheus ヒストグラムで機能する 2 つの関数があります。bucketPercentile()
、およびhistogram()
。リンクにはクエリの例が含まれています。