Datadogを利用した、無料で利用できる自宅サーバ監視と非監視時間の設定
はじめに
Datadogとは、SaaSのログ監視サービスのこと。最低価格が1ホストあたり$15/Month (2021.04.25時点)という価格設定で個人ではとてもじゃないが利用できない、かと思いきや、5台まではFreeプランで利用できる。
また、現在のところ、モニター(Slack連携や外部メトリック通知)などに関してはFreeプランの範囲内とも範囲外とも記載がない。記載がないが、現在のところ利用できる。こちらを利用して自宅サーバの監視とSlack連携をした。
特にモニターの設定やアラートの中に動的にホスト名を入れる方法等、いくつかハマった点があるので、今後のためにハマりどころをメモ。
価格体型
料金のページに記載があるが、この料金体型を読み解くのがなかなか難しい。ざっくりいうと、基準となるサービスがあるというわけではなく、それぞれのサービス、それぞれの価格体型を組み合わせたものがDatadogのサービスとなる。
例えば、おうちk8sのノードが3つあって、そこでコンテナが10個稼働している。ログを保存したくはないが、ログをDatadogにあげて、エラー時に検知させたい、という使い方であれば、
- ホスト:$45 ($15*3)
- ログ: $0.01 * ログ/GB
がかかってくる計算となる。
Agentとその設定について
各種データをDatadogに上げるにあたっては、Agentが必要となる。このAgentを1つインストールすればそれで済む、ということではない。
Agentを導入した時点で収集されるデータはホストのメトリックとなっている。例えば、ログを上げるためには追加でログ用のAgentを設定を追加(多くはコメントアウトされているので、有効化)する。
14日間のトライアル中は全ての機能が利用できるものの、ログ検索はFreeプランには含まれていないので、今回は設定しないでおく。
Datadogを利用したモニター(アラート)設定
Slack連携
USサイトのDatadogを利用している場合、Slack連携はGUIにそって、DatadogのIntegrationsからSlackにログインすることで完了する。WebhookのURLを発行する必要もない。
連携テスト
Monitorを作成すると、その設定画面の右下に「Test Alert」が表示される。
よく考えられていて、アラートしか設定していなければ「Test Alert」しか通知できないが、アラートの設定の中で、Warning設定や、(アラート後の)復旧設定を行なっておくと、Warning、Recoveringのテスト通知をすることもできる。
一つ気になるのは、DatadogのSlackアプリからアラートが通知されると、「Declare Incident」(インシデント作成)ができること。
2020年内は「Incident」は無料であったが、2021年に入ってからはこの機能は「更新アカウント数(参照だけであれば無料)毎に課金」という料金体型が発表されている。
Slack通知からインシデントを作成すると、もしかしたら課金対象となるのかもしれない。(やったことないのでわからない)
復旧アラートの非通知
デフォルトだと、復旧時に都度Slack通知が発生する。少し悩んだのだが、最終的に以下のようにすれば、通知されなくなった。
要は、Slack通知自体をアラート発生時だけの条件式の中に入れてしまう、ということ。
{{#is_alert}} @slack通知先 {{/is_alert}}
夜間のアラート停止
Downtimeの設定
特定の期間だけ、特定のSlack通知を停止したい、といったケースにはDowntimeの機能を利用する。
DowntimeはMonitorを指定するか、Monitorに設定したTagに対して設定することができる。
特に後者をうまく利用することで、1つのDowntimeルールに対して複数のMonitorを適用させることができるので、共通して無効化したいMonitorには共通したTagをうまくつけるように考える必要がある。
Downtimeは繰り返し(Recurring)機能があるため、毎日21時から翌朝6時まで停止、という事も可能。
ただ少し痒いのが、平日(Weekly)といった概念や祝日の概念がないため、祝祭日は手動で設定する必要があることと、平日、月曜から金曜21時〜明朝6時までは無効化、土日のみ24時間無効化、といったことをしたい場合は、
- 月曜から金曜は9時PMから9時間無効化
- 土曜と日曜は6時AMから24時間無効化
という2つのDowntimeスケジュールを登録する必要がある。