外形監視が特定の時間帯で動かないようにダウンタイムを設定してみた！

# 概要
New RelicのSyntheticをつかって外形監視をしているときに、対象のシステムが動作していない時間帯に外形監視をしてしまうと必ず実行結果として失敗になってしまうため、その時間帯だけは外形監視を止めたいということは無いでしょうか？

この記事ではSyntheticのダウンタイムを設定する方法を試してみたいと思います。

New Relic アップデート(2023年12月)で、ダウンタイム設定が24時間を超えて設定できるようになっています。

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

# 事前準備
ダウンタイム設定をする対象となるSyntheticが必要なので、Syntheticを1つ以上設定します。
New Relic Syntheticの公式ガイドはこちらです。

https://docs.newrelic.com/jp/docs/synthetics/synthetic-monitoring/getting-started/get-started-synthetic-monitoring/

https://docs.newrelic.com/jp/docs/new-relic-solutions/best-practices-guides/full-stack-observability/synthetic-monitoring-best-practices-guide/

:::note warn
Syntheticを設定したことが無い方は、URLを設定するだけで外形監視ができるPingかSimple Browserがおすすめです。
:::

# UIから設定する手順

まずはじめにNew RelicのUIからダウンタイムを設定してみます。

## 1. Monitor downtimeページを表示
Synthetic Monitoring > Monitor downtime　から表示。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/2a47cbf4-3f0d-e077-2ab7-309b25b2704b.png)

## 2. Monitor downtimeを作成
右上の[Create monitor downtime]をクリックして表示した画面の左側のペインで下記を設定し、右側のペインのチェックボックスで対象となるSyntheticを設定します。

- Name (required)：Monitor downtimeの名称
- Frequency：頻度
- All day：一日中かトグルで設定
- Start time & Start date：ダウンタイムの開始日時
- End time & End date：ダウンタイムの終了日時
- Timezone：タイムゾーンを設定（日本時間の場合は、"Asia/Tokyo"）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/46c001ea-d0c5-ee60-c81c-f738d926c0d0.png)

:::note info
例えば、開始日時を金曜日の19:00にし、終了日時を月曜日の9:00にした場合、その間はSyntheticのチェックが実行されません。

システムメンテナンスで停止中などでアクセスできない場合にSyntheticが失敗するということが避けられ、不要なアラートが上がったり、SLIが下がるということもありません。終了時刻をすぎたら再開されます。
:::

## 3. Saveボタンをクリック
Saveボタンをクリックして設定完了。

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/7a6d4cff-445e-ec0c-3603-1de08d84dd17.png)

# NerdGraphで設定する手順

続いてNerdGraphでダウンタイムを設定してみます。
NerdGraphを使えば、システムを停止させるスクリプトなどからAPIでSyntheticのダウンタイムを設定することが可能です。

NerdGraphの使い方の詳細は公式ガイドを参照ください。

https://docs.newrelic.com/jp/docs/apis/nerdgraph/get-started/introduction-new-relic-nerdgraph/

## 1. NerdGraph API Explorerを表示
下記URLからNerdGraph API Explorerを表示します。

https://one.newrelic.com/nerdgraph-graphiql

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/84df7035-5824-926b-4675-2fdc2b4b9c31.png)


## 2. NerdGraph API Explorerでクエリを作成

下記リンクのクエリをコピーして貼り付け。

https://docs.newrelic.com/docs/apis/nerdgraph/examples/nerdgraph-synthetics-tutorial/#create-once-downtime

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/931e9e32-5668-c6ab-2bdb-c262805fe256.png)

下記の値を設定。
- accountId：アカウントID（数字）
- name：Monitor downtimeの名称
- monitorGuids：ダウンタイムを設定したいEntityのGUID（複数設定可能）
- timezone: タイムゾーンを設定（日本時間の場合は、"Asia/Tokyo"）
- startTime: ダウンタイムの開始日時
- endTime: ダウンタイムの終了日時

```json:例
mutation {
  syntheticsCreateOnceMonitorDowntime (
    accountId: アカウントID,
    name: "MonitorDowntimeName",
    monitorGuids: ["ダウンタイムを設定したいEntityのGUID", "ダウンタイムを設定したいEntityのGUID"],
    timezone: "Asia/Tokyo"
    startTime: "2024-02-02T12:00:00"
    endTime: "2024-02-02T13:00:00"
  ) {
    guid,
    accountId,
    name,
    monitorGuids,
    timezone,
    startTime,
    endTime
  }
}
```
## 2. NerdGraph API Explorerでクエリを実行

[Execute Query]ボタンでクエリを実行して、ダウンタイムを設定。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/4116996d-9c31-2278-ee8a-ce693a36bfe2.png)

## 3. おまけ
NerdGraph API ExplorerのToolsからCURL用のスクリプトをコピーできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/ef96b1e1-161a-5c28-3800-4f30eb7368ec.png)



# まとめ
New RelicのSyntheticを特定の時間帯で動かないようにダウンタイムを設定する方法を紹介しました。

外形監視の対象システムが動作していない時間帯にダウンタイムを設定することで、不要な外形監視の実行結果を防ぐことができるのでぜひ試してみてください。

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

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