Windowsサービスの情報をNew Relicに連携してみます！

# 概要
Windows Serverで動かしているはずのサービスが起動しておらず、提供しているシステムが期待通りに動かいていないという経験は無いでしょうか？New RelicにWindowsサービスの情報を連携することで、アプリケーションやインフラの情報などに加えてWindowsサービスの稼働状況も合わせて監視することが可能です！！

この度、New Relic アップデート(2023年３月)の中で、New RelicのWindows Service連携がGA（一般提供開始）となったので改めて試してみます！

:::note info
このアップデートの詳細はこちら
[New Relic アップデート(2023年3月)](https://newrelic.com/jp/blog/nerdlog/new-relic-update-202303 "New Relic アップデート(2023年3月)")
[New Relic アップデート](https://newrelic.com/jp/blog/nerdlog/new-relic-update "New Relic アップデート")
:::

公式ガイドはこちらです。

https://docs.newrelic.com/jp/docs/infrastructure/host-integrations/host-integrations-list/windows-services-integration/

# 手順
## 1. 互換性と要件を確認
Windows用のバージョン1.12.1以上のInfrastructureエージェントをインストールする必要があります。x86は対象外です。詳細は下記を参照ください。

https://docs.newrelic.com/jp/docs/infrastructure/host-integrations/host-integrations-list/windows-services-integration/#requirements

## 2. Infrastructureエージェントをインストール
Infrastructureエージェントのインストールは下記を参照ください。

https://docs.newrelic.com/jp/docs/infrastructure/install-infrastructure-agent/windows-installation/install-infrastructure-monitoring-agent-windows/


## 3. Windowsサービス統合の設定ファイルを作成
Infrastructureエージェントのintegrations.dに移動して、

```powershell
cd C:\Program Files\New Relic\newrelic-infra\integrations.d\
```
winservices-config.yml.sampleをコピーして、winservices-config.ymlを作成します。

```powershell
copy winservices-config.yml.sample winservices-config.yml
```

## 4. 設定ファイルを編集

exporter_bind_addressとexporter_bind_portのコメントアウト(#)を削除します。

```yml:winservices-config.yml
      exporter_bind_address: 127.0.0.1  
      exporter_bind_port: 9182
```

同じファイルのinclude_matching_entitiesで監視したいWindowsサービスの名前を設定します。
※ここでは、全サービスとnewrelic-infraを指定しています。

```yml:winservices-config.yml
      include_matching_entities:
        windowsService.name:
          - regex ".*"
          - "newrelic-infra"
```

設定ファイルを編集後は特にInfrastructureエージェントやPCの再起動などは不要です。
こちらでWindowsサービスの情報がNew Relicに連携されます！！

## 5. ダッシュボードをインストール
New Relicに連携したWindowsサービスのデータを確認しやすくするために、Add Data > Dashboards で **Windows Services - Dashboard** を検索して、ダッシュボードをインストールします。
https://one.newrelic.com/marketplace?state=4cfc5158-787d-74c3-78b8-83dd9789f081
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/7357cce4-1759-baa5-f53e-e04096e2a68e.png)

## 6. ダッシュボードで確認
New Relicに転送されたWindowsサービスの情報をダッシュボードで確認しましょう！

サマリーとしてダッシュボードの上部では、ホストの総数、Windowsサービスの総数、StoppedとRunningのWindowsサービスの数を確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/31fb495a-db8c-5b32-39d1-05bb510bbac0.png)

複数のホストのWindowsサービスの稼働状況やスタートモードを一覧で確認することが可能です！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/ff2f73b3-4cab-6110-b3e1-1f34c1b4fcbb.png)


## 7. NRQLでWindowsサービスの情報をクエリ

New Relicに連携したWindowsサービスの情報は、NRQLでデータをクエリして、ダッシュボード化したり、アラート設定をすることも可能です。

```:runningでないサービス
SELECT count(*) FROM Metric WHERE metricName = 'windows_service_state' AND state != 'running' FACET hostname, service_name
```

```:スタートモードがAutoだがrunningではないサービス
FROM Metric SELECT count(*) WHERE start_mode = 'auto' AND state != 'running' FACET hostname, service_name
```

## おまけ

Quickstart installationの画面を使うと、上記の設定をウィザード形式で確認しながら設定できます！下記サイトの**Install now**をクリックするとQuickstart installationが開きます。

https://newrelic.com/instant-observability/winservices

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/8ba43ce7-3113-2d04-7c16-cdfe68eefcf5.png)

インストール先のアカウントを選んで、**Begin installation**をクリックして設定を開始できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/73bead63-8c92-5fcf-42da-5f7f2a5d3d22.png)

# まとめ
GA（一般提供開始）となったNew RelicのWindows Service連携を試してみました！
OSやアプリの再起動も不要なのでぜひ一度お試しください！


:::note info
最新のアップデートの詳細はこちら。[New Relic アップデート(2023年3月)
](https://newrelic.com/jp/blog/nerdlog/new-relic-update-202303 "New Relic アップデート(2023年3月)")
:::