タグは、モニターするアプリとホスト、エージェント、ダッシュボード、およびワークロードなど、エンティティに追加されるteam: operations
などの、キーの値のペアです。いくつかの重要な属性はタグとして利用可能です(アプリ名や言語などのアプリのメタデータ、およびホスト名やAWSリージョンなどのホストのメタデータなど)。ユーザー独自のタグを追加することもできます。
UIでタグを使用して関連エンティティを絞り込むことができます。次の例を見てみましょう。
ここでは、accountId
タグを使用して特定のアカウントのワークロードをフィルターしています。
タグは、次の作業に役立ちます。
タグは、高レベルでデータを整理するのに役立ちます。ユーザー名やその他の高カーディナリティの値の取得など、よりきめ細かい詳細を追加する場合、カスタムアトリビュートやカスタムイベントがより適切な解決策です。
場合によっては、次のソースからエンティティにタグが自動適用されます。
- アカウントメタデータ
- New Relicエージェントの設定
- New Relicエージェントの環境
- OpenTelemetryリソース属性
これらのソースからのタグは、UIやAPIではなく、タグのソースを変更することによってのみ削除や変更が行えます。
また、当社のAPIまたはNew Relic CLIを使用して、プログラムでタグを自動化することもできます。
New Relicは、アカウント情報を含むエンティティに特定のタグを自動適用します。これらのタグには以下のようなものがあります。
New Relicエージェントを設定して、データから作成されたエンティティにタグを適用することができます。設定オプションはエージェントに固有ですが、通常はlabels
キーを使用します。いくつかの例:
New Relicエージェントは、環境に応じてサービスエンティティに特定のタグを自動的に適用します。以下が含まれます(ただし、これらに限定されません)。
サービス/アプリケーションのエンティティの場合
language
: 値は、java
、python
などです。
ホストエンティティの場合
特定のOpenTelemetryリソース属性は、エンティティタグとして自動適用されます。サービスエンティティに関連付けられたスパンデータで、次の属性が存在する場合、それらの属性はそのエンティティに添付されます。
タグの管理
デフォルトで、一部の重要な属性をタグとして使用できます。例えば、アカウント名、アカウントID、およびいくつかの基本的なホスト/サーバーのメタデータ。これらのデフォルトで利用可能なタグは削除できません。
UIまたはAPIを通してタグを追加する場合、これはエンティティレベルで発生します。例えば、単一のエンティティをモニターする複数のAPMエージェントがある場合、UIを通して適用したタグは、そのエンティティからのすべてのデータに対して利用可能です。
- one.newrelic.comにアクセスして、モニターするエンティティ(アプリまたはホストなど)を選択します。
- ページの先頭のエンティティ名の近くで、メタデータを表示しタグを管理メニューを選択します。
- ポップアップメニューのAdd a new tag...フィールドに、この形式
accountId: 123456789
のタグを追加します。 - APMエージェントの場合、NRQLクエリでこれらのタグを使用するには、サービスを再起動します。
one.newrelic.comにアクセスして、モニターするエンティティ(アプリまたはホストなど)を選択します。
ページの先頭のエンティティ名の近くで、メタデータを表示しタグを管理メニューを選択します。
ポップアップメニューで、タグの削除トグルをクリックします。
削除するタグの横にある
をクリックします。
APMエージェントの場合、NRQLクエリでこれらのタグを使用するには、サービスを再起動します。
条件に移動します。
フォームの上部にある条件の名前の近くで、タグの管理をクリックします。
ポップアップ表示されるメニューで、タグを追加または削除します。
また、NerdGraph APIを介してエンティティとしてアラート条件にタグを追加することもできます(「manage tags」画面から条件のエンティティGUIDを使用)。
NerdGraph API経由でのデータのタグ付けの詳細については、チュートリアルを参照してください。
APMタグのクエリに関するこの短いビデオ(3分20秒)もご覧ください。
New Relicエクスプローラーの上部にあるフィルターフィールドを使用して、目的のエンティティを絞り込みます。複数のフィルター条件を使用できます。
単一または複数の要素でフィルターしたり、詳細検索オプションを使用したりすることができます。
タグを使用して特定のエンティティを絞り込むには:
- one.newrelic.comに移動します。
- フィルターフィールドをクリックして、利用可能な属性とタグのドロップダウンを表示するか、フィルターするタグ(
accountId: 123456789
など)を入力します。
ベストプラクティス
タグを最大限に活用するには、以下のベストプラクティスに従ってください。
タグをシンプルに保つためのヒント:
最初は、確実に使用することが分かっているタグのみを追加します。未使用のタグによってノイズが生じ、混乱が生まれる可能性があります。
短いタグを使用するように努めます。短いタグは解析が簡単です。また、UIでは長いタグが切り詰められる場合もあります。(「文字制限」を参照してください。)
可能な場合は、人間が読めるキーと値を使用します(たとえば、region: EMEA
がParam8323 : 1229072
よりも推奨されます)。
regions: EMEA | US | LATAM
などの複数の値を単一のタグに含めることは避けてください。このような場合は、region: emea
、region: us
、およびregion: latam
などの、3種類のタグを使用することをお勧めします。複数のタグを一致させる場合は、フィルターUIで高度なオプションを使用して行うことができます。
- アラートインシデントに関する注意事項:これらは1つのキー名インスタンスのみをサポートします。複数のキー名を使用する場合は、1つがランダムに選択されてそのインシデントに追加されます。
- チームとエンティティにわたり、タグ言語に一貫性を持たせるよう努めます。
- 命名に一貫性を持たせます。たとえば、
region: emea
とreg: emea
の両方を使用しないでください。 - 形式に一貫性を持たせます。たとえば、
camelCase
とkebab-case
の両方を使用しないでください。 - UIおよびAPIのタグ検索では大文字と小文字は区別されませんが、大文字、小文字を区別するようにします。たとえば、
env: staging
とenv: Staging
の両方を使用しないでください。
タグは、オブザーバビリティとコスト配分の向上に役立ちます。この理由から、多くの場合、タグ実装の責任はオブザーバビリティチーム、SRE、アーキテクトのグループ、またはクロスチームタスクフォースに割り当てられます。
タグの実装に責任を持つ人々が内部ポリシーを順守し、内部ポリシーを作成して、タグの定義方法と使用する規則を説明することをお勧めします。次に:
- このリファレンスマニュアルを常に最新の状態にしてください。
- New Relicエージェントをデプロイする時に、タグの定義を自動化します。この自動化は、クラウドプロバイダーで行うか、APIやTerraformなどのNew Relic自動化ツールを通して行うことができます。
- タグ付け基準に準拠していないエンティティを識別する定期レポートを作成します。
タグの例
タグを使用してデータを整理するための一般的な方法の例を以下に示します。
チーム名のタグを作成すると、パフォーマンスの問題につながった変更に関与したチーム、グループ、部門、または地域を把握するのに役立ちます。
属する環境に対してエンティティを作成することができます。例:
重要度レベルに関連するタグを作成できます。これによって、最重要問題を簡単に追跡できるようになります。例:
タグの処理方法は機能によって異なります。ここでは、NRQLを使用してタグデータのクエリを行う方法、またはNRQL条件アラートを作成する方法について詳しく説明します。
タグを使用してダッシュボードを整理する方法およびワークロードでのタグの使用方法をご確認ください。
NRQLを使用してAPMタグをクエリできます。サポートされている APM エージェントは次のとおりです:
- Go v2.3.0以降
- Java v4.9.0以降
- .NET v8.17以降
- Node.js v4.13.0以降
- PHP v10.0.0.312以降
- Python v4.10.0.112以降
- Ruby v6.1.0.352以降
クエリの例
9つのシャードに分散されたサービスがあり、各シャードがenvironment
として割り当てられている場合、次のようなワイルドカードクエリを使用して、すべてのシャードのトランザクションスループットをプロットできます。
SELECT rate(count(apm.service.transaction.duration), 1 minute)
FROM Metric WHERE appName LIKE 'MyApp (%' AND transactionType = 'Other'
FACET tags.Environment TIMESERIES
特定のチームのサービスごとのトランザクション数を表示するには、次のようなクエリを使用できます。
FROM Transaction SELECT count(*)
WHERE tags.Team = 'team-a'
FACET tags.Project TIMESERIES
各サービスに対してルールを作成することなく、アラートを設定するためにサービスのエラー率のクエリを使用できます。これは、team-b
と呼ばれるチームのすべてのサービスのエラー率です。また、このアラートは、チームタグとともに追加された新しいアプリ名をすべて自動的にモニターします。
FROM Metric SELECT count(apm.service.error.count) / count(apm.service.transaction.duration)
WHERE tags.Team = 'team-b' FACET appName
これに関しては、複数の環境にわたってデプロイされた特定のサービスに関する一般的なルールを作成することで、各環境を個別に監視する単一サービスのアラームを作成できます。
From Metric SELECT count(apm.service.error.count) / count(apm.service.transaction.duration)
WHERE tags.Project = 'MyProject' FACET tags.Environment
属性のクエリおよびアラート
一部の重要な属性はタグとして使用されます。NRQLを使用してすべての属性をクエリし、カスタムチャートを作成し、NRQLアラート条件を作成できます。