LoginSignup
3
0

More than 1 year has passed since last update.

【NewRelic】任意のコマンド実行結果をメトリクスとして収集する

Posted at

概要

カスタムメトリクスとしてサーバ内での任意のコマンド実行結果をNewRelicに収集したい場合、サーバ内にインストールしたInfrastructure AgentのFlex機能が役に立つ。

前提

  • 実行環境はAmazon Linux 2
  • Infrastructure Agentはインストール済み

手順

1: ymlファイルを作成

/etc/newrelic-infra/integrations.d配下にymlファイルを作成する。
ファイル名は自由。今回はflex.ymlとする

以下サンプル


integrations:
  - name: nri-flex # ここには必ずnri-flexを指定
    interval: 30s # データを取得する間隔。デフォルトは30秒
    config:
      name: dfFlex # 一意の設定名をつける。
      apis:
        - name: dfOutput # メトリクス名。NewRelicのクエリビルダーでは"dfOutputSample"という名前になる。
          commands:
            - run: df -i # 実行するコマンド
              split: horizontal
              set_header: [filesystem,inodes,iused,ifree,iusedPerf,mountedOn] # 後述のsplit_byで分割された値をそれぞれ格納するvalue
              regex_match: true
              split_by: (\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\S+)\s+(\S+) # 正規表現でコマンド実行結果を分割
          perc_to_decimal: true

このサンプルではdf -iコマンドの実行結果をメトリクスとして収集できる。

ファイルシス    Iノード  I使用    I残り I使用% マウント位置
devtmpfs         499594    297   499297     1% /dev
tmpfs            501843      2   501841     1% /dev/shm
tmpfs            501843    377   501466     1% /run
tmpfs            501843     16   501827     1% /sys/fs/cgroup
/dev/xvda1     15727552 129528 15598024     1% /
tmpfs            501843      1   501842     1% /run/user/1000

ymlを設定した時点でメトリクス収集設定は完了!

2: ちゃんとメトリクスが送信されているか確認

以下コマンドで確認可能
sudo /var/db/newrelic-infra/newrelic-integrations/bin/nri-flex -verbose -pretty -config_path /etc/newrelic-infra/integrations.d/flex.yml

/var/db/newrelic-infra/newrelic-integrations/bin/配下にnri-flexというバイナリファイルが存在しており、これによってエージェントの挙動を確認することができる。

出力結果として以下のように、自分が設定したメトリクスが送信されているよーってログが確認できていればOK

"metrics": [
	{
		"event_type": "dfOutputSample",
		"filesystem": "devtmpfs",
		"ifree": 499297,
		"inodes": 499594,
		"integration_name": "com.newrelic.nri-flex",
		"integration_version": "1.5.2",
		"iused": 297,
		"iusedPerf": 1,
		"mountedOn": "/dev"
	},

メトリクスが送信できていない時

以下のケースが考えられる

  • ymlファイルの正規表現にマッチしない
  • コマンドの出力結果が意図するものになっていない(権限エラーなど)

3: NewRelicでクエリ作成

上記手順で作成したメトリクスをもとに、NewRelic側でクエリを作成する。

FROM dfOutputSample 
SELECT average(ifree) 
facet filesystem, mountedOn

ファイルシステム・マウント位置ごとの空きノードを取得してみる。

image.png

データが取得できることが確認できた。

参考

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0