StatsD の統合により、 StatsD -format data を New Relic に簡単に取り込むことができます。また、データに任意のタグ(キーと値のペア)を追加することもできます。メトリクスが New Relic に取り込まれると、 データを照会したり、 カスタムチャートやダッシュボードを作成することができます。
StatsDインテグレーションを試してみませんか? New Relicアカウントを作成してください 無料でご利用いただけます。クレジットカードは必要ありません。
要件 この統合では、メトリクス API とイベント API を 使用してデータを取り込みます。 これらの API を使用するには、 ライセンスキー が必要です。
この統合は、Metric API の 要件とデータ制限 に従います。レート制限に達しているかどうかを確認するには、次の NrIntegrationError
イベント の NRQL クエリを実行します。
SELECT count ( * ) FROM NrIntegrationError
WHERE newRelicFeature = 'Metrics'
LIMIT 100 SINCE 1 day ago
統合は、amd64およびarm64アーキテクチャ用のDockerHub でLinuxコンテナイメージとして利用できます。
インストール ここでは、標準的なインストールの方法を説明します。KubernetesでStatsDを動作させたい場合は、 Kubernetes install をご覧ください。
StatsD 統合をインストールするには、 New Relic アカウント ID とライセンスキー を含めて次のコマンドを実行します。 これにより、 gostatsd
で使用される TOML 設定ファイルが生成されます。
> -d --restart unless-stopped \
> --name newrelic-statsd \
> -e NR_ACCOUNT_ID = YOUR_ACCOUNT_ID \
> -e NR_API_KEY = NEW_RELIC_LICENSE_KEY \
> newrelic/nri-statsd:latest
組織が EU データセンター地域 にある場合は、これを上記のコマンドに追加します。
インストール後は
Kubernetesへのインストール ここでは、デプロイメントとサービスオブジェクトのためのKubernetesマニフェストの例を紹介します。
Kubernetesのマニフェストの例 以下は、Kubernetes 環境に StatsD をデプロイし、 newrelic-statsd
という名前の StatsD サービスを作成するための Kubernetes マニフェストの例です。 アカウント ID とライセンスキー を入力する必要があります。
deployment.yml :
serviceAccountName : newrelic - statsd
image : newrelic/nri - statsd : latest
value : "NEW_RELIC_ACCOUNT_ID"
value : "NEW_RELIC_LICENSE_KEY"
service.yml :
service-account.yml :
設定の詳細については、 Kubernetes の設定 を参照してください。
このドキュメントはインストールの役に立ちましたか? 設定 インストール手順 では、環境変数を使用してnri-statsd
を実行します。これにより、TOML構成ファイルが生成されます。さらに、次の構成オプションを設定できます。
設定オプション
説明
expiry-interval
ストリング
この期間、指標が更新されない場合、その指標の報告を停止します。デフォルトは5m
です。
フラッシュ間隔の間に値が更新された場合にのみメトリックを送信する場合は、これを1ms
に構成します。メトリックを期限切れにしないようにするには、 0
に設定します。
percent-threshold
整数のリスト
メトリックの集計に使用されるパーセンタイルを指定します。デフォルト: 90
。
metrics-addr
ストリング
メトリックをリッスンするアドレスを示します。 デフォルト: :8125
。 nri-statsd v2.3.0
(goStatsD v34.2.1
) からは、Unix ドメイン ソケット (UDS) 経由の接続がサポートされています。 設定では[host]:port
の代わりにmetrics-addr=/some/path/newrelic-statsd.socket
を使用してください。
ヒント StatsD統合を使用してFedRAMPコンプライアンスを確保するには、カスタム構成で以下のエンドポイントを定義する必要があります。
address = ' https://gov-insights-collector.newrelic.com/v1/accounts/$NR_ACCOUNT_ID/events '
address-metrics = ' https://gov-infra-api.newrelic.com/metric/v1 '
ここでは、デフォルトの設定を上書きして設定をカスタマイズする例を紹介します。
カスタム設定の例 percent-threshold = [90, 99]
address = ' https://insights-collector.newrelic.com/v1/accounts/$NR_ACCOUNT_ID/events '
address-metrics = ' https://metric-api.newrelic.com/metric/v1 '
api-key = ' NEW_RELIC_LICENSE_KEY '
Disable timer sub-metrics:
デフォルトでは、 nri_statsd
はタイマーメトリックに対して次の値を計算します:フラッシュ間隔の標準偏差、平均、中央値、合計、下限、および上限。これらのメトリックを無効にする場合は、 disabled-sub-metrics
構成セクションを追加し、無効にするメトリックにtrue
を設定することで無効にできます。次に例を示します。
Docker: デフォルトの設定を上書きする コンテナーでの実行中にデフォルトのnri-statsd
構成を上書きするには、コンテナー内に構成ファイルをマウントできます。
以下のテンプレートは、お客様の状況に応じて適宜採用してください。
例:
address-metrics = ' https://metric-api.newrelic.com/metric/v1 '
api-key = ' NEW_RELIC_LICENSE_KEY '
ファイルを適切なパスにマウントした状態でコンテナを実行するには
> -v ${ PWD } /nri-statsd.toml:/etc/opt/newrelic/nri-statsd.toml \
$ newrelic/nri-statsd:latest
Kubernetes: デフォルトの設定を上書きする Kubernetesで実行されているnri-statsd
を設定するための最良のアプローチは、 configMap
を使用してconfigMap
をコンテナにマウントすることです。 (これは、Dockerで構成ファイルをマウントするのと同様のプロセスです。)
例:
address = 'https : //metric - api.newrelic.com/metric/v1'
api - key = '$NEW_RELIC_LICENSE_KEY'
configMapを使用するには、デプロイメント仕様テンプレートでボリュームを宣言してから、コンテナー仕様でvolumeMount
を宣言します。
例:
- mountPath : /etc/opt/newrelic/
- name : nri - statsd - config
メトリックフォーマット インテグレーションは、 StatsD プロトコル を使用してメトリクスを受信します。オプションで、サンプルレートを設定したり、タグを追加することができます。
ここでは、私たちが使用しているメトリックデータのフォーマットを紹介します。
<metric name>:<value>|<type>|@<sample rate>|#<tags>
ここでは、これらの分野について説明します。
フィールド名
説明
<metric name>
ストリング
Required. メトリクスの名前。
<value>
ストリング
Required. メトリクスのタイプ :
c
= counterg
= gaugems
= timer@<sample rate>
浮く
Optional 単純なカウンターまたはタイマーカウンターの場合。 多数のメトリクスを送信する必要がある場合は、サンプリングを使用してネットワーク トラフィックを削減できます。 欠点は、データの解像度が低下することです。
1
未満のサンプルレートでこれがどのように機能するかの例:これを0.1
に設定すると、カウンターは10回に1回の測定値を送信します。
#<tags>
ストリング
Optional. メトリクスに付加されたタグは属性 (キーの値のペア) に変換されます。 タグ付けオプションの詳細については、 「タグ」 を参照してください。
メトリックのタイプ ここでは、メトリクスの種類とそのフォーマットをご紹介します。
カウンター カウンターは、あるイベントの発生回数を測定するものです。例えば、レポート間隔ごとのキャッシュヒット数や、レポート間隔ごとのスレッド作成数などです。
カウンタは、値に符号を追加することにより、同じフラッシュ間隔中にインクリメントまたはデクリメントできます。次の例では、カウンター値は2
になります。
フラッシュするたびに、現在のカウントが送信され、 0
にリセットされます。カウントが更新されていない場合、次のフラッシュで値0
が送信されます。 expiry-interval
を1ms
に設定することで、この動作を無効にすることを選択できます。
ここでは、10回に1回の割合でサンプリングされているカウンターの例を紹介します。
ゲージ ゲージは、時間の経過とともに増加または減少する可能性のある値を表します。ゲージの例としては、温度、CPU使用率、メモリなどがあります。以下にその例を示します。
ゲージが更新されていない場合、次のフラッシュで前の値が送信されます。 expiry-interval
を1ms
に設定することで、この動作を無効にすることを選択できます。
タイマー タイマーメトリックタイプは、タイミングデータを測定します。
デフォルトでは、 nri_statsd
はタイマーメトリックに対して次の値を計算します:フラッシュ間隔の標準偏差、平均、中央値、合計、下限、および上限。これらは、次の形式でサブメトリックとして送信されます。
<metric_base_name>.std_dev
<metric_base_name>.median
<metric_base_name>.summary
<metric_base_name>.sum_squares
<metric_base_name>.per_second
設定されたパーセンタイルは、以下のメトリクスを生成します。パーセンタイルのしきい値は、タグとして付けられます。
<metric_base_name>.sum_squares.percentiles
<metric_base_name>.sum.percentiles
<metric_base_name>.count.percentiles
<metric_base_name>.upper.percentiles
<metric_base_name>.mean.percentiles
パーセンタイルしきい値は、 percent-threshold
構成オプションを使用して調整できます。これらは、 disabled-sub-metrics
構成セクション から制御できます。
データにタグを追加することができます。タグは 属性 (キーと値のペア)として保存されます。タグの追加には2つのオプションがあります。
すべてのメトリクスに適用されるデフォルトのタグを追加します。これらは、すべてのメトリクスに適用されます。これらは固定されており、時間が経っても変化しません。 メトリクスレベルのタグを追加します。このタグは特定のメトリクスに適用され、2回のサブミットの間に値を変更することができます。 メトリクスやイベントにタグを追加するには、 起動コマンド で環境変数を定義します。
ここでは、2つのタグを作成する例を紹介します。
$ -e TAGS = "environment:production region:us"
起動コマンド で使用されている環境変数を示します。
> -d --restart unless-stopped \
> --name newrelic-statsd \
> -e NR_ACCOUNT_ID = YOUR_ACCOUNT_ID \
> -e NR_API_KEY = NEW_RELIC_LICENSE_KEY \
> -e TAGS = "environment:production region:us" \
> newrelic/nri-statsd:latest
メトリックフォーマット を定義する際に、このフォーマットを使用してタグを追加することができます。
<bucket name>:<value>|<type>|#<tags>
この例では、 <tags>
はコンマで区切られたタグのリストです。タグの形式は、 simple
またはkey:value
です。
以下は、カスタムタグを含む NRQL クエリの例です。
SELECT count ( * ) FROM Metric WHERE environment = 'production'
アラートの作成 NRQLのアラート条件 を使ってStatsDのデータにアラートを出すことができます。
アラート例 この手順では、サンプルデータの送信から、そのデータを使ったアラート条件の作成までを行います。
まず、このデータをNew RelicのStatsDコンテナに送ります。
$ echo "prod.test.num:32|g" | nc -v -w 1 -u localhost 8125
次に、このクエリを使用して、 NRQL アラート条件 を作成します。
SELECT latest ( prod . test . num ) FROM Metric WHERE metricName = 'prod.test.num'
このNRQLのアラート条件を作成しているイメージは以下の通りです。送られてきたサンプルデータは、チャートの右上にある青い点で表されていることに注目してください。
それでは、これらの設定でアラート条件を作成します。
NRQL アラート条件を作成するときは、必ずCondition name を設定してください。
50を超える値のメトリックが送信された場合、インシデントが作成され、通知されます。このインシデントは24時間後に自動的にクローズされます。アラートが機能していることをテストするには、次のコマンドを実行します。
$ echo "prod.test.num:60|g" | nc -v -w 1 -u localhost 8125
データを見つけて使用する データを照会するには、New Relic の クエリオプション を使用します。例えば、 NRQL のようなクエリを実行します。
SELECT count ( * ) FROM Metric WHERE metricName = 'myMetric' and environment = 'production'
Metric
データ型をクエリする方法の詳細については、「メトリックデータのクエリ 」を参照してください。
トラブルシューティング 問題 :
StatsD 統合を実行する手順に従いましたが、New Relic で予想されるメトリクスを確認する必要があります。
解決策 :
設定のトラブルシューティングを行うには、次の手順に従ってください。
ライセンスキー に 40 桁の 16 進数文字のライセンスキーが含まれていること、およびそれが選択した New Relic アカウント ID の有効なライセンスであることを確認してください。New Relic アカウントに適切なデータセンター (US または EU) が選択されていることを確認してください。 ヒント: License_key が「eu」で始まる場合は、 NR_EU_REGION=true
フラグを使用する必要があります。 StatsD 統合に関連するNrIntegrationError
がないことを確認してください。 詳細ログは、環境変数NR_STATSD_VERBOSE
を使用して有効にできます。 docker run コマンドを変更して変数-e NR_STATSD_VERBOSE=true
を追加します。 テスト メトリクスをプッシュして、インテグレーションが期待どおりのメトリクスを送信していることを確認できます。 NetCat nc
ユーティリティを使用した例:echo "example.gauge:123|g" | nc -u -w0 127.0.0.1 8125
(実行中のコンテナ IP/アドレスで127.0.0.1
を更新します)。 ソースコードを確認してください この統合はオープン ソース ソフトウェアです。つまり、ソース コードを参照して 改善を送信したり、独自のフォークを作成してビルドしたりできます。