Datadogのデータ予測機能を使う

#ゴール設定（ただ監視するだけでは面白くない）
どうせなら、監視イベントが発動してから慌てて対策する運用はやめる。これからはデータ傾向をモニタリングして将来のイベントを予測することで、空いている時間にゆっくり予防保守する運用がいい。
##予測その１．ディスク残り容量をモニタリング
###今まで
ディスクの残り容量が10%未満になったらアラート通知メールを発信していた。すぐ対策が必要。
###これからは
ディスクの残り容量が10%未満になる2週間前にアラート通知メールを発信する。今後２週間の空いたときに対策する（実際の運用では月次レビューの時に１か月後を予測する。とかになるだろうか）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/e785bc5d-27f4-8c9d-a8f2-4d2c6ebd3a55.png)

###それでは設定してみます
モニタリング［New Monitor］を追加して、「フォーキャスト・アラート」を選ぶ。いつもと違うのは２週間後にしきい値を超えたらアラート通知する設定を加えるところ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/4332dc3c-e91f-99d1-bbd0-2efab6816b6d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/5e6e3848-4a8e-e6ce-f6a5-e9051d0e2bce.png)

###試してみる
現在のディスク利用率は84%。アラート通知の閾値は90%。DDコマンドでダミーデータを作って、ぎりぎり89%までディスクを埋めて、次の２週間を予測してもらおう。

```
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda2       25G   20G  3.8G  84% /

$ dd if=/dev/zero of=1G.dummy bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 7.29562 s, 144 MB/s

$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/xvda2      25412940 21253856   2861524  89% /
```

###結果（予測メール来たあ）
このままだと２週間後にディスク容量が10%未満になる予測だけど、今日は未だ20%くらいの残り容量があるから空いている時間に対策をすればいい。業務の空き時間で対策できるので運用業務の平準化ができる。コレ便利。
メール件名：[Monitor Alert] Triggered: ターゲットのディスク容量が残り10%しかありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/a2431f62-4875-4de8-7564-6466e2ce0c23.png)

###さてと。不要なデータを削除してディスク空き容量を増やします。

```
$ rm 1G.dummy
$ rm tempfile
$ rm empty3gb
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda2       25G   14G  9.5G  59% /
```

###あれれ～。もう十分にディスクに空き領域があるのにアラートが解除されない。
[recovered]メールも届かない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/624b3ff7-9dd0-05ff-d161-ed8c589c0054.png)

この[Resolve]ボタンを押すのかな。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/19487d9f-fc5e-9a57-f5dd-d6cdaac5de22.png)
ぽち。おお、これっぽい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/b6059233-f0cd-82b8-923c-480ef0598bb7.png)
たらーん。どうやら[Forecast Alert]の場合は、対策を講じたあと、手動でアラートを解除するようだ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/dc2d75f6-4be8-d9dd-7a38-d1961be9d39b.png)

###おわぁぁ。対策したのに、またアラート通知メール来たっ
（原因）モニタの設定にアドバンスド設定があって、予測値アルゴリズムを”Default”モデルとしていたため、直近の大きな変動はノイズとしてデータ傾向を分析するすばらしい機能があったようです。対策後のデータ数が十分に蓄積されないとデータ傾向が改善されないモデルの様です。このままアラートが解除されるのを待つのだと思う。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/72e3575a-d53d-3eeb-c27b-c612a5656cee.png)

###モニタ設定＞アドバンスト＞予測値アルゴリズムを変えてみた
（Reactモデル）予測値アルゴリズムを”React”モデルにした場合、より直近のデータ範囲で将来を予測する。このモデルは、もしも直近のデータ変動がノイズだった場合も将来の予測に影響を与えてしまうかもしれない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/aeda8e7a-69ca-ee58-9ee2-e7be93b9f036.png)
（Simpleモデル）予測値アルゴリズムを”Simple”モデルにした場合、直近のデータ傾向だけで、将来を予測するらしい。これは面白い。しかし直近傾向だけで判断するのは今回の主旨に合わない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/8ba8f895-c1da-10ba-ecfc-cec47cafe7f7.png)
（結論：デフォでいいんじゃない）アラート通知に対する対策を講じた後、しばらくデータが蓄積されて将来の予測が見直しされるまで静観することを許容する運用手順とすることを前提に予測値アルゴリズムは”Default”のままで良いと思う。

###そして約３時間後、予測ラインが更新されてアラートが解除された
メール件名：[Monitor Alert] Recovered: ターゲットのディスク容量が残り10%しかありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/a9cd2d00-0ebb-16ea-d87d-3c5dfa7662ed.png)

##予測その２．WEBサイトの応答時間をモニタリング
下図、実際の過去データが左側、右側は将来の毎日のデータ予測。予測の傾向を見ると、毎日午前05:00から徐々に応答時間が長くなって午前11:00の364msをピークに、今度は徐々に応答時間が短くなると予測された。実績データのばらつきを見るととても午前11:00がピークにキレイな正弦波になるとは思えなかったから驚いた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/5172736f-ee06-28cc-e5e1-0874fdfd279b.png)

###WEB応答時間のモニタ設定
アラート通知の設定欄にある[Advanced Options]を開き、[Seasonal]予測を選んだ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189936/56ba52f7-3419-c327-25ab-db8db2062077.png)


##まとめ
Datadogの[Forecast Alert]機能を使って、過去データから将来の傾向データを予測する手順を理解した。これからは、イベントが発生するだろうと予測できた時点から、イベントが発生するまでの期間に空き時間を見つけて対策すれば良いので、仕事の平準化ができる。ちょっと嬉しい。

## Datadog関連記事

- [図解で、Datadogエージェントの設定手順] (https://qiita.com/1Kano/items/3533a8ebe5f6777840a6)
- [DatadogカスタムCheckの一番小さなコード] (https://qiita.com/1Kano/items/f1f897d8ee943f318c3e)
- [Datadogのデータ予測機能を使う] (https://qiita.com/1Kano/items/b6b484ae3e9afca3d296)
- [図解で、うちのワンコを真夏の暑さから守る（Datadogで）] (https://qiita.com/1Kano/items/5f2eed58794f13776a8e)
- [Datadog基本設定メモ（Windowsサーバ）] (https://qiita.com/1Kano/items/633b17fecec058a8eb2c)
- [Datadog基本設定メモ（CentOSサーバ）] (https://qiita.com/1Kano/items/6851fbe099f9be3fbe14)
- [Datadog基本設定（Log Explorer）] (https://qiita.com/1Kano/items/1c959c20cba3151db071)
- [Datadog基本設定（APM）] (https://qiita.com/1Kano/items/33dbcbc6bc86d369146a)