この記事について
NewRelicにはNR-Flexという機能があります。
https://docs.newrelic.com/jp/docs/infrastructure/host-integrations/host-integrations-list/flex-integration-tool-build-your-own-integration/
NR-Flexが何かよくわかっていない人がNR-Flexを理解して、一からNR-Flexを用いたモニタリングができるようになるための最低限の情報をここにまとめます。
対象読者
- NewRelicを使い始めたばかりの方
- NR-Flexが何かわからない方
- NR-Flexを使ったことがない方
NR-Flexとは
端的にいうとNewRelicにメトリクスを送信するためのツール
です。
NewRelicでは通常インテグレーションを用いて、データ(メトリクスなど)を収集します。
AWSではAWSインテグレーションを利用することでCloudwatchメトリクスをNewRelicに送信して、AWSの監視をNewRelicで行うことが可能になります。
インテグレーションの種類は多岐に渡り、基本的なモニタリングはインテグレーションを利用することで実現可能です。
ただ
- モニタリングしたいものに対応するインテグレーションがない
- インテグレーションはあるが、そのインテグレーションでは取得したいメトリクスを取得できない
というケースがあります。
そんな時に利用するのがNR-Flexです。
NR-Flexを利用すれば自分の取得したいメトリクスを自由に定義して、NewRelicに送信することが可能になります。
もしNR-Flexがなければ、NewRelicのエンドポイントにメトリクスを送信するプログラム(スクリプト)を用意して、それをcronで実行させて....というような実装が必要になります。
NR-Flexを利用することで、ユーザはノーコードもしくはローコードでNewRelicにメトリクスを送信することができます。
どうやって使うの?
NR-Flexを利用するためには、NewRelic Infrastrucreエージェントがインストールされたホストが必要です。
https://docs.newrelic.com/jp/docs/infrastructure/install-infrastructure-agent/get-started/install-infrastructure-agent/
NewRelic Infrastructureエージェントがインストールされたホストさえあれば、あとはyamlファイルを作成するだけでNR-Flexを利用することができます。
使ってみる
事前準備
- EC2 ( AMIはAmazon Linux2 )を用意
- EC2にNewRelic Infrastructure agentをインストール
NR-Flexファイルの作成
NewRelic Infrastructure agentをインストールしたら、/etc/newrelic-infra/integrations.d
ディレクトリが作成されます。
このディレクトリ配下にyaml形式でNR-Flexの設定を定義したファイルを作成します。(作成したあとは、systemctl restart newrelic-infra.service
を実行しておきましょう)
integrations:
- name: nri-flex
interval: 60s
config:
name: Hogehoge
apis:
- name: Hogehoge
commands:
- run: echo hoge 1
split: horizontal
split_by: \s+
set_header: [sample-string, sample-number]
上記が何を意味しているか簡単に解説します。
以下のコマンドを60秒毎に実行し、
echo hoge 1
その標準出力であるhoge 1
をNewRelicに送信します。
送信する際に、hoge 1
をスペースで分割して、それぞれ別のメトリクスとしております。(splitとsplit_byの定義内容をもとに処理されます)
hoge
にはsample-stringというヘッダーが、1
にはsample-numberというヘッダーが付与されます。
integrations.config.apis.commandsを指定すると、infrastrucutre agentをインストールしたホストにてコマンドを実行し、そのコマンドの出力を加工して、NewRelicに送信することができます。
NewRelic側でメトリクスを確認する。
NewRelicではNR-Flexで送信したメトリクスは、integrations.config.apis.nameに指定した名前のEventから確認することが可能です。
Hogehogeと指定していたので、HogehogeSampleというEventができているはずです。
ではNewRelicのData explorerを見てみましょう。
From HogehogeSampleからメトリクスを取得すると、Sample-NumberとSample-Stringというヘッダーができており、その中にhoge
と1
が記録されています。
このようにNR-Flexを利用すれば、ユーザが送信したいメトリクスをNewRelicに簡単に送信することが可能になります。
NR-Flexを本格的に利用するには
NR-Flexファイルを作り込む必要があります。
中身のパラメータについては以下リンクを参照してください。
https://github.com/newrelic/nri-flex/blob/master/docs/basics/configure.md
覚えることはあまり多くありません。
実行させるコマンド/スクリプトがしっかり動けば、意図したメトリクスをNewRelicに送信することができます。
参考