New Relicは、多くの一般的なサービスやフレームワーク向けのインテグレーションとクイックスタートを提供しています。New Relicをすでに使用しており、インテグレーション対象外のサービスからデータのレポートを行う場合、次のいくつかの方法で独自のインテグレーションを作成できます。
- を使用すると、軽量Flexツール (推奨) を使用したり、Integrations SDK を使用して完全な オンホストインテグレーション を構築したりできます。
- テレメトリ(メトリクス、トレース)モニタリングソリューションには、当社のテレメトリーSDKを使用します。
- 独自のJavaScript UI機能を使用する、カスタムのNew Relicアプリケーションを構築します。
New Relic Flex とは?
Flex は、アプリケーションに依存しないオールインワンのNew Relicインテグレーションで、幅広いサービスからイベントやメトリクスを収集できます。FlexはInfrastructureエージェントにバンドルされています。標準プロトコル (HTTP、ファイル、シェル) を介してメトリクスを標準形式 (JSON やプレーンテキストなど) で公開するアプリケーションのインストゥルメントが可能です。YAML設定ファイルを作成し、Infrastructureエージェントを起動すると、データがNew Relicに報告されます。
データを収集してクリーンアップした後、New RelicでFlexデータをクエリし、カスタムチャートを作成して、そのデータをダッシュボードで使用できます。
互換性と要件の確認
システムが次の要件を満たしていることを確認してください。
まだの場合は、無料のアカウントにサインアップしてください。 無料です。
New Relicアカウントは、次のOSおよびプラットフォームに対応しています。
- Kubernetes
- Linux
- macOS
- Windows
設定するシステムとオンホストインテグレーションが要件を満たしていることを確認するには、Infrastructureエージェントの要件を参照してください。
Flexは、Linux、Windows、またはKubernetesで実行されるInfrastructureエージェントバージョン 1.10.7以降にバンドルされています。
UIドキュメントから古いエージェントバージョンを特定してバージョンを確認するか、更新する必要がある場合はInfrastructureエージェントのドキュメントを更新してください。
インストレーション
New Relic Flexをインストールするには、次の手順に従ってください。
Infrastructureエージェントをインストールする
New Relic Infrastructureエージェントバージョン1.10.7以降、Flexはエージェントにバンドルされています。Infrastructureエージェントをインストールするには、次を参照してください。
Windows向けinfrastructureエージェントをインストールする
ヒント
エージェントはroot/アドミニストレーターモードで実行してください。コマンドラインからInfrastructureエージェントの起動、停止、再起動を行うことができます。
Flexが起動していることを確認する
次の手順を実行します:
Infrastructureエージェントのインテグレーションフォルダーに移動します。
- Linuxの場合:
/etc/newrelic-infra/integrations.d
- Windowsの場合:
C:\Program Files\New Relic\newrelic-infra\integrations.d\
- Linuxの場合:
インテグレーション設定ファイルを作成します。たとえば、存在しない場合は
integrations.yml
です。Flex設定をファイルに追加します。
integrations:- name: nri-flexconfig:name: just-testingファイルにすでに
integrations
セクションがある場合は、それにnri-flex
を追加します。数分後、 one.newrelic.com > All capabilities > Query your dataに移動して次のクエリを実行します。
FROM flexStatusSampleSELECT *LIMIT 1クエリを実行すると、次のようなテーブルが返されます。
one.newrelic.com > All capabilities > Query your dataに移動し、クエリビルダーにクエリを追加して、 Runをクリックします。
ヒント
何も表示されない場合は、YAML設定ファイルが適切にインデントされており、インデントレベルでスペースの代わりにタブが使用されていないことを確認してください。YAML LintなどのYAMLバリデーターを使用することができます。
最初のFlexインテグレーション
この例では、Linuxでdf
コマンドを使用して、New Relicが標準でサポートしないファイルシステムからディスクメトリクスを収集する方法を示します。
ここでの目標は、エージェントがすでにサポートしているファイルシステムを除外しながら、ファイルシステムと1バイトブロックを表示して、 df
コマンドの出力を処理することです。サポートされていないファイルシステムがマウントされていない場合は、-x引数を削除してください。
$ df -PT -B1 -x tmpfs -x xfs -x vxfs -x btrfs -x ext -x ext2 -x ext3 -x ext4Filesystem Type 1-blocks Used Available Capacity Mounted ondevtmpfs devtmpfs 246296576 0 246296576 0% /devgo_src vboxsf 499963170816 361339486208 138623684608 73% /go/src
上記の表形式のテキスト出力を、次の形式による同等のJSONサンプルのセットに変換する必要があります。エージェントが各サンプルに追加フィールドを付加していることに注意してください。
{ "event": { "event_type": "FileSystemSample", "fs": "go_src", "fsType": "vboxsf", "capacityBytes": 499963170816, "usedBytes": 361345331200, "availableBytes": 138617839616, "usedPerc": 73, "mountedOn": "/go/src" }}
まず、以下のように指定して、上記の表形式のテキストをJSONに変換する方法をFlexに指示してください。
- メトリクス名:
FileSystem
- 実行するコマンド:
df -PT -B1 ...
- 出力テーブルを分割する方法
df
- 指定されたメトリクス名に値を割り当てる方法
これは、以下の内容をYAML設定ファイルに配置することで実現されます。
integrations: - name: nri-flex config: name: linuxFileSystemIntegration apis: - name: FileSystem commands: - run: 'df -PT -B1 -x tmpfs -x xfs -x vxfs -x btrfs -x ext -x ext2 -x ext3 -x ext4' split: horizontal split_by: \s+ row_start: 1 set_header: [fs,fsType,capacityBytes,usedBytes,availableBytes,usedPerc,mountedOn] perc_to_decimal: true
apis
は、各サンプルのエントリの配列です。各エントリはサンプル名を設定し、サンプルを取得して処理するためのコマンドと手順を設定します。この例の最初のエントリはFileSystem
という名前で、FileSystemSample
イベントの名前付けに使用されます。commands
は、CLIアプリケーションから情報を取得する方法を指定します。run: 'df -PT -B1...
は、実行するコマンドを指定します。split: horizontal
は、各出力行がメトリクスを返す可能性があることを示しています。split_by
は、各行を異なるフィールドに分割する方法を説明します。この場合、\s+
正規表現を使用します。これは、1つ以上の空白のシーケンスが区切り文字であることをFlexに伝えます。row_start
は、データが最初の行 (0) の直後から始まることを指定します。set_header
は、前述の配列の各値に一致する名前を順番に指定します。perc_to_decimal: true
末尾の%
記号を削除して、パーセンテージ文字列を小数値に変換することを示します。
Flex設定を作成すると、Infrastructureエージェントが新しい設定を自動検出し、データの収集を開始します。新しいインテグレーションが機能していることを確認するには、次のコマンドを実行します。
FROM FileSystemSample SELECT mountedOn, fs, usedBytes, capacityBytes, usedBytes
クエリを実行すると、次のようなテーブルが返されます。
one.newrelic.com > All capabilities > Query your dataに移動し、クエリビルダーにクエリを追加して、 Runをクリックします。
Flexインテグレーションをさらに追加する方法
ìntegrations.d
ファイルに設定を追加することで、Flexインテグレーションをさらに追加できます。スタンドアロンのFlex設定は、インテグレーションの名前から始まり、コマンドラインからFlexを呼び出すことでテストできます。
$sudo /var/db/newrelic-infra/newrelic-integrations/bin/nri-flex --verbose --pretty --config_file ./myconfig.yml
このインテグレーションを追加したい場合:
name: linuxOpenFDapis: - name: linuxOpenFD commands: - run: cat /proc/sys/fs/file-nr | awk '{print $1-$2,$3}' split: horizontal set_header: [openFD,maxFD] regex_match: true split_by: (\d+)\s+(.*)
ìntegrations.d
ファイルを開いて、次のように追加します。
integrations: - name: nri-flex config: name: linuxFileSystemIntegration apis: - name: FileSystem commands: - run: 'df -PT -B1 -x tmpfs -x xfs -x vxfs -x btrfs -x ext -x ext2 -x ext3 -x ext4' split: horizontal split_by: \s+ row_start: 1 set_header: [fs,fsType,capacityBytes,usedBytes,availableBytes,usedPerc,mountedOn] perc_to_decimal: true - name: linuxOpenFD commands: - run: cat /proc/sys/fs/file-nr | awk '{print $1-$2,$3}' split: horizontal set_header: [openFD,maxFD] regex_match: true split_by: (\d+)\s+(.*)
ìntegrations.d
ファイルに複数のFlex設定を追加する場合は、次のパターンに従ってください。
integrations: - name: nri-flex config: name: flexName_1 # Flex config goes here - name: nri-flex config: name: flexName_2 # Flex config goes here - name: nri-flex config: name: flexName_3 # Flex config goes here
インデントの問題を最小限に抑えるには、 config_template_path
ディレクティブを使用してスタンドアロンのFlex設定ファイルにリンクできます。
integrations: - name: nri-flex config_template_path: /path/to/flex/integration.yml
Flexリポジトリにはカスタムインテグレーションの例が多数紹介されています。
FlexとKubernetes
KubernetesでFlexを設定する方法に応じて、使用できるコンテナイメージが3つあります。
Kubernetesで実行されているサービスの監視だけにFlexを実行するには、
newrelic/infrastructure
コンテナイメージを使用します。このイメージには、Infrastructureエージェント、Docker、およびFlexインテグレーションのみが含まれています。このオプションでは、サービス検出を実行したり、他のNew Relicインテグレーションを使用したりすることはできません。Flex を他のNew Relicインテグレーションと一緒に実行するには、
newrelic/infrastructure-bundle
コンテナイメージを使用します。これにより、他のすべてのNew Relicインテグレーションが追加されます。Kubernetesクラスタも監視したい場合は、
newrelic/infrastructure-k8s
コンテナイメージを使用します。このイメージは、 Kubernetesインテグレーションを含むすべてのインテグレーションを追加します。
重要
Kubernetesでサービスを実行している場合は、New Relicの公式コンテナイメージを使用することをお勧めします。詳細については、 Kubernetesインテグレーションの概要を参照してください。
KubernetesでFlexを構成する
Kubernetesインテグレーションをインストールすると、クラスタ内でInfrastructureエージェントと次の2つの configMap
が実行されます。
nri-default-integration-cfg
:これは、 New Relic Kubernetesインテグレーションを有効にするために使用されるconfigMap
です。このインテグレーションを使用しない場合は削除しても構いません。Helm コマンドでKubernetesをインストールした場合は、integrations_config
の値を入力してください。詳細については、 New RelicのHelmチャートリポジトリを参照してください。nri-integration-cfg-example
:これは、Flexおよびその他のNew Relicインテグレーションを有効にするために使用されるconfigMap
です。
Flexを有効にするには、 configMap
にデータセクションを作成し、この新しいセクションの下にInfrastructureエージェントのインテグレーション設定を追加します。
apiVersion: v1kind: ConfigMapmetadata: name: nri-integration-cfg-example namespace: defaultdata: nri-flex.yml: | integrations: - name: nri-flex config: name: example apis: - event_type: ExampleSample url: https://my-host:8443/admin/metrics.json
サンプル設定
他のサンプルをお探しですか?さまざまなデータソースを開始する際に役立つ設定例をいくつか紹介します。
データベース:
サードパーティAPI:
コマンドラインユーティリティ:
トラブルシューティング
Flex設定で問題が発生した場合は、次の基本的なトラブルシューティングの手順に従ってください。
Infrastructureエージェントを使用せずに設定をテストする:次のようなコマンドを実行すると、設定ファイルを手動でテストし、期待どおりの出力が得られるかどうかを確認できます。
<FILE_NAME>
の部分を設定ファイルの名前に置き換えるようにしてください。bash$# Linux default path: /opt/newrelic-infra/newrelic-integrations/bin/$./nri-flex -verbose -pretty -config_path /etc/newrelic-infra/integrations.d/<FILE_NAME>$$# Windows default path: C:\Program Files\New Relic\newrelic-infra\newrelic-integrations$.\nri-flex.exe -verbose -pretty -config_path "C:\Program Files\New Relic\newrelic-infra\integrations.d\<FILE_NAME>"これにより、Infrastructureエージェントと統合される、デバッグログとJSONペイロードの出力が得られます。残りのトラブルシューティング手順に進む前に、Flexが意図したとおりにテレメトリーを取得して書式を整えていることを確認してください。Flex設定のテストの詳細については、GitHubリポジトリをご覧ください。
dry-run
モードでInfrastructureエージェントを使用してテストする: Infrastructureエージェントのdry-run
フラグを使用して、Flex設定をテストします。New Relicにレポートするテレメトリが、出力に含まれていることを確認します。Infrastructureエージェントとのインテグレーションをデバッグする:Infrastructureエージェントでデバッグログを有効化して、エージェントが意図どおりにテレメトリーデータをレポートしていることを確認します。