IBM Cloud Monitoring でWindows サーバーダウンタイムを検知・通知する

# はじめに
IBM Cloudでは、システムのモニタリングサービスとして「IBM Cloud Monitoring」を提供しています。モニタリング・エージェントを監視対象に導入することにより、CPU・メモリ・ディスク・ネットワークの使用率や、IBM Cloud Kubernetes Service(IKS)、Red Hat OpenShift on IBM Cloudのコンテナを監視し、取得したメトリクスをダッシュボードとして表示したり、設定したしきい値を超えた場合にメール、Slackなどで通知するといったことが可能です。

またIBM Cloud MonitoringはWindowsサーバーを監視することもできます。ただしWindows プラットフォームには、標準のモニタリング・エージェントをインストールすることができません。 IBM Cloud Monitoring を使用して Windows システムをモニターするためには、Windows Prometheus バンドルを使用して Windows システムからメトリックを収集します。

本記事では、WindowsサーバーのダウンタイムをIBM Cloud Monitoringで検知・通知する手順を記載します。(本記事は以下のIBM Cloud Docsに従います)
・[IBM Cloud Docs: Windows 環境のモニター](https://cloud.ibm.com/docs/monitoring?topic=monitoring-windows&locale=ja)

# 前提
以下のリソースが作成されていることを前提とします。
・Windows 仮想サーバー (VPC環境)
・IBM Cloud Monitoring

# 手順
## 1. エージェントを導入
### IBM Cloud MonitoringのAPIキー確認
IBM Cloud Monitoringダッシュボードを開きます。
IBM Cloudポータルの左上ハンバーガーメニューより「可観測性」→「モニタリング」をクリックし、監視を行うMonitoringリソースの「ダッシュボードを開く」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/53012898-9414-b8db-1e75-1571f1813d55.png)

左下の「Monitor Operation」→「Sysdig PAI Tokens」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/90793014-c730-7ccf-7c13-240f109595eb.png)

表示される `User Profile`ページをスクロールし、「Sysdig Monitor API」の 「Sysdig Monitor API Token」をコピーして保管します(後ほど使用します)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/b3087e82-7d31-e423-cf23-f85975c32893.png)



### エージェントをダウンロード
はじめにWindowsサーバーへWindows Prometheus バンドルをインストールします。
Windows Prometheus バンドル・バイナリー・インストーラーを以下からダウンロードします。
・[github: Sysdig-Windows-Prometheus-Bundle page](https://github.com/sysdiglabs/Sysdig-Windows-Prometheus-Bundle/releases)

今回は以下をダウンロードしました。
・Sysdig_Windows_Prometheus_Bundle-1.3.0-x64.msi



### Windows システムでインストーラーを実行
ダウンロードしたインストーラーを実行します。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/45fd4e75-fb52-70a7-c0b2-370f10e6d67d.jpeg width=70%>


ライセンス許諾にチェックした後、リモート書き込み用の取り込みエンドポイント と Monitor API Tokenを構成します。エンドポイントは[IBM Cloud Docs](https://cloud.ibm.com/docs/monitoring?topic=monitoring-prometheus_remote_write#prometheus_remote_write_endpoints)の該当リージョンからコピーします。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/b252e5c9-fc50-2a84-dd18-b43fa7263b1b.png width=70%>



「Host Configuration」 では、ポートやIPアドレスの値を変更しないでください。 Windowsファイアウォールに必要な追加の CLI フラグ またはリモート IP アドレスを指定します。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/3e2d4b17-10e0-8c25-f5e0-8d33391e1dd4.jpeg width=70%>

メトリックの生成を有効にするコレクターを選択します。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/bf5ea91c-1e23-8aa6-01d1-6a2f9defcd47.jpeg width=70%>

「Install」をクリックします。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/f1d8e018-91a5-e502-1506-0b3c350f0179.jpeg width=70%>

## 2. 監視結果を表示
左2番目にあるアイコン「Dashboard」を開き、 「アプリケーション」 セクションにある「Windows Host Overview」をクリックし、メトリックを表示します。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/a8e7b53a-c2e7-4b2a-3942-11ecae0a7c19.png width=40%>
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/9bdab238-8d98-5617-b039-1d16d4b35e0a.jpeg width=100%>
「Windows Services Overview」 ダッシュボードは、 「service」 メトリックが有効になっている場合に使用できます。

## 3. 通知設定
 使用可能なデフォルト・アラートについては、左4番目にあるアイコン「Alerts」を開き、「Library」 で `Windows` と検索することで表示できます。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/f2705240-1023-96db-37c9-6c46c7270875.png width=100%>

### ダウンタイム通知を設定する
上記のWindows デフォルト・アラートではダウンタイムの通知を設定することはできません。
そこでサーバーから送られてくるデータのステータスが「No Data」の場合、通知を発報するよう設定したいと思います。

左4番目にあるアイコン「Alerts」を開き、「+ New Alerts」→「Metric」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/ba81a382-7c13-79e3-8a5d-b9397e0f59d0.png)

「Metric & Condition」の「Metric」にて `windows`と検索し、監視対象メトリックを指定します。（今回は`windows_memory_available_bytes`を指定しました）
![スクリーンショット 2023-10-19 16.30.17.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/58aeb75e-7fd6-4f3c-1a8f-422493959813.jpeg)

次に「Team Scope」をクリックして「Entire Infrastructure」にて「instance」を選択、「Select Value」にてインスタンス名を選択します。
**Metricを指定してからでないと候補に出てこないです。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/80d484e4-409c-832d-83e0-6346018026d0.png)

「Notifications」にて、通知チャネルを選択します。必要であれば通知のタイミング (事象発生時・解決時・頻度)を指定します。
メール通知チャネル作成については以下を参照ください。
・[Qiita:IBM Cloud Monitoring with Sysdig が東京で使えるようになったので Linux で使ってみる](https://qiita.com/khayama/items/13a40b0bc437ede8a752#%E3%83%A1%E3%83%BC%E3%83%AB%E9%80%9A%E7%9F%A5%E8%A8%AD%E5%AE%9A) 
![スクリーンショット 2023-10-19 16.36.28.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/fdaa08c2-b44e-d0c4-2de9-8557aa2bd563.jpeg)

「Settings」にて、「No Data」を「Notify」に設定します。
これによりサーバーダウン時に通知を発報することができます。その他の項目は必要に応じて変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/97c9bdf3-aee0-bddb-7a8c-4ee7a2d6a276.png)

# 確認
IBM Cloudポータルより、サーバーをダウンしてみると以下のように通知が来ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/c19056d7-d8b0-caaf-130d-1d3824ef3894.png)