Windows のカスタムモニタリングを実現する New Relic Flex の Tips まとめ

New Relic Flexはホスト上のコマンドやファイル、HTTPアクセスを介して任意のデータをNew Relicに送信する機能です。この記事ではWindowsホストでNew Relic Flexを利用してみます。

New Relic Flexの概要について理解されたい方は以下のドキュメントをご確認ください。

https://docs.newrelic.com/jp/docs/infrastructure/host-integrations/host-integrations-list/flex-integration-tool-build-your-own-integration/

# はじめてみよう
New Relic FlexはNew Relic Infrastructure Agentがインストールされたホストで利用できます。
こちらの記事を参考にインストールしてください。

https://qiita.com/nr-mito/items/7ab8f9d69b12943a8a0b

# 定義ファイルを作成してみよう
New Relic Flexは実行するコマンドやデータのヘッダ(属性名)などをyaml形式の定義ファイルに記述します。この定義ファイルを `C:\Program Files\New Relic\newrelic-infra\integrations.d` に配置すれば処理が開始されます。

ここでは、Windowsの `netstat` コマンドを例にしてみます。
```windows-netstat.yml
# Windows Netstat
integrations:
  - name: nri-flex
    interval: 60s
    config:
      name: winNetstat
      apis:
        - event_type: winNetstat
          shell: powershell
          commands:
            - run: netstat -ano
              split: horizontal
              set_header: [proto, localAddress, foreignAddress, state, processId]
              regex_match: true
              row_start: 1
              split_by: \s+(\w+)\s+(\S+)\s+(\S+)\s+(\w+|\s+)\s+(\d+)
```

:::note info
`event_type`に記述した名前がNew Relicでのイベント名になります。
:::

# データを確認してみよう
New Relic Flexでデータが送信されていることを確認してみましょう。今回の定義ファイルでのEvent名は `winNetstat` になります。

![winNetstat.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253766/7742c182-5a0e-45f0-aa2a-c9485e11823d.png)

Data explorerを使ってNRQLを書かずにデータを確認することもできます。

https://qiita.com/MarthaS/items/e0967c9f3b66359df2d1

# こんな時は...

## 1. 日本語が文字化けする
日本語のWindowsではコマンド実行時のコードページが `Shift_JIS` のため、そのままNew Relicにデータを転送すると日本語が文字化けしてしまいます。

```
integrations:
  - name: nri-flex
    config:
      name: winJapanese
      apis:
        - event_type: winJapanese
          commands:
            - run: echo ニューレリック株式会社 技術統括
              split: horizontal
              split_by: \s+
              set_header: [company, department]
```

![winJapanese_sjis.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253766/5f623acd-6bc3-45c7-bdb0-d9482310380a.png)

この場合 [chcp](https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/chcp) コマンドを使ってコードページをUTF-8に変更することにより、文字化けを解消できます。

```
integrations:
  - name: nri-flex
    config:
      name: winJapanese
      apis:
        - event_type: winJapanese
          commands:
            - run: chcp 65001 > nul & echo ニューレリック株式会社 技術統括
              split: horizontal
              split_by: \s+
              set_header: [company, department]
```

![winJapanese_utf8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253766/c80b09a1-0b25-409c-bbe4-6658302bfb4b.png)


## 2. データが送信されない
そんな時はこちらの記事を参考にして定義ファイルが問題ないかデバッグしてみてください。

https://qiita.com/MarthaS/items/044ef9909e27667c9eba

`nri-flex.exe` は次のパスにあります。

```
C:\Program Files\New Relic\newrelic-infra\newrelic-integrations\nri-flex.exe
```

## 3. もっと定義ファイルのサンプルが欲しい
安心してください。GitHubにWindowsを含むさまざまな定義ファイルがアップロードされています。

https://github.com/newrelic/nri-flex/tree/master/examples


# まとめ
New Relic Flexを介してWindowsのOSコマンドやバッチプログラムなどを実行することにより、さまざまなデータをNew Relicに送信することができます。これまで手動で取得していたデータをNew Relicに集約し、さらなら品質維持や改善にぜひご活用ください！


New Relicでは、**新しい機能やその活用方法**について、QiitaやXで発信しています！
**無料でアカウント作成**も可能なのでぜひお試しください！

:::note info
New Relic株式会社の[X(旧Twitter)](https://x.com/NewRelicJapan) や [Qiita OrganizationOrganization](https://qiita.com/organizations/newrelic)では、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
:::

:::note info
無料のアカウントで試してみよう！
[New Relic フリープランで始めるオブザーバビリティ！](https://qiita.com/ktst79/items/5ee74b34e6adb8a7a6fa)
:::