つかびーの技術日記

(情報)工学修士, 元SIer SE, 現Web系 SEの技術blogです。Scala, Java, JS, TS, Python, Ruby, AWS, GCPあたりが好きです。

モニタリングサービス Datadogの解説!

   

こんにちは、@s_tsukaです。

今回はシステムモニタリング(監視)クラウドサービスであるDatadogについて解説していきます。

どのようなサービスなのかご存じない方も多いと思いますので、ざっくりと広範囲に渡って機能などの説明を行います。

dd_logo_600x600

Datadogとは

DatadogとはITシステムのモニタリングクラウドサービスです。少し作業を行うだけでご自身のITシステムをモニタリングすることができます。

類似のクラウドサービスにmackerelNew Relic、類似のソフトウェアにNagiosMuninZabbixがあります。

それぞれ違いや得意とする領域が違いますが、だいたいは同じです。ようするにDatadogはモニタリングするためのクラウドサービスです。具体的には対象とする(自分の)サーバのCPU利用率やDISK利用率、ロードアベレージなどを収集し、表示するサービスです。

百聞は一見に如かず、実際にDatadogの画面を見てみる

まずは以下の公式の概要ページをざっと見てみると良いかと思います。

Datadogが提供するサービスの概要

色々あるのですが、ずばり1点だけ紹介するとしたら何といってもメトリクスのグラフ表示機能です!自分もこのblogサーバやWebアプリサーバの監視にDatadogを利用していますで、ここはひとつ自分の例をお見せしましょう。

All performances  Datadogこんな感じでシステムの状態を把握することが出来ます。上記のグラフは安定しているのであまり面白くないグラフですが、実務環境で利用すればもう少し意味のある可視化ができます。

他にも所有しているインフラの一覧(ホストの一覧)を見る画面だったり、タグ付けされた同種のホストをホストマップとしてハニカム構造で一望できる機能もあったりします。(異様に負荷が高いホストなどがひと目でわかる)

Datadogのプラン解説

以下のページで確認することができます。

https://www.datadoghq.com/pricing/

2015年8月現在、Free, Pro, Enterpriseの3つのプランが用意されています。Freeでは5台まで監視することができます。Pro以上は1台につき、1月15ドルと結構お高めです。

はじめはみなさん、Freeを使うと思いますが、FreeプランではMetric alertが使えません。(Proのトライアルは使える)

このMetric alertはかなり重要です。これは収集している値、例えばCPU利用率が設定した閾値を越えるとアラート(メール、SMS、各種チャットアプリ通知)を送信する、というものです。商用環境では必須ですので、個人レベルや検証段階ではFreeで良くても、商用利用する場合はProプランにしましょう。

(ちなみに私は個人ではとても$15/1host/1month支払えないのでFreeです。)

retentionとありますが、これは収集したメトリクス値の保持保証期間です。例えばFreeでは1 day retentionとあります。これは過去1日分しか見れ無い、という訳ではなく、過去1日は保持を保証するけど、その他は無保証というだけです。実際にFreeプランを利用すればわかりますが、普通に過去データを残しておいてくれます。そのため、Freeでも数日運用してみるとそれなりに面白いグラフが見れたりするかもしれません。

DatadogでDocker containerをモニタリングする場合の料金

さきほど$15/1host/1monthと説明しましたが、この$15にはcontainerを10台まで監視する料金が含まれています。11台目からは+1$です。

つまり、マシンA上でdocker container 10個動いてたとすると料金は$15です。

(少しだけ自信ありませんが、多分2台目でも同様に10 container動いてたら+$15で合計$30かな?と思います。)

競合サービスとの料金比較

競合サービスとの料金を比較してみます。

Datadog Pro mackerel Standard New Relic Pro
1ホスト料金(月) $15 約$16(\2000) $149
データ保証期間 1年 1年 無限

New Relicは以前はもっと安かったようなのですが、どうなんでしょう。Datadogとmackerelはほぼ同じのようですね。

実は最大メトリクス数とか機能とか細かい違いは沢山あるんですが、mackerelもNew Relicも詳しく無いのでそこは省略します。

とりあえず使うDatadog(導入手順)

Datadogは非常に簡単に使うことができます。

  1. まずはここからsign inしてログインします。
    https://app.datadoghq.com/account/login
  2. 次にIntegrations -> Agentページを開きます。
    Setup___Datadog
  3. 最後にDatadog agentを入れたい(監視したい)環境を選んで、指示通りのコマンドを叩くだけです。例えばMacマシンを監視する場合はこんな感じのコマンドが表示されているはずです。
    DD_API_KEY=あなたのKEY bash -c "$(curl -L https://raw.githubusercontent.com/DataDog/dd-agent/master/packaging/osx/install.sh)"

非常に簡単ですね。他のLinux環境とかでも基本的には同じで表示されているコマンドを叩くだけです。

Agentが動き出したらmetricが取れるはずなのでご自身のDatadog画面上で見ることができます。

メトリックを検索、表示してみる

前節の通りAgentを入れれば後は勝手に値をDatadogに送信(収集)してくれますので、いよいよその値を見てみましょう。

Metricタブを開いてGraphで適当なものを選択すれば何かしらの値を見ることが出来ます。

Metric Explorer  Datadogこの画像の例ではsystem.load.1を選んでいます。システムのロードアベレージのグラフを表示しています。

このグラフだと例えばDatadog agentを2つ以上のマシンに入れている場合、それらの平均値になってしまいます。特定の環境だけ、だったり特定のホストだけ見たい場合は、Overなどの項目を選択して絞ります。

他にも「1h, 4h, 1day, 2day, 1week, 1month, 任意の期間」などで範囲選択できたりします。また平均値の他にも単位時間あたりの最大値、最小値を表示したり、Sumったり、色々できます。

Dashboardの作成

上記のMetricタブは実はほとんど使う必要はありません。予めグラフの設定を色々して複数のグラフを保存しておく為のダッシュボード画面が存在します。

初めに挙げたこの画像です。

All performances  Datadogこの画面はDashboardsタブから作成することができます。

上記の自分のダッシュボードはあまり面白く無いですが、色々なグラフのタイプがあり、工夫次第では見やすく、面白く、使いやすいダッシュボードが作れます。

Banners_and_Alerts_と_Metric_Explorer___Datadog例えば少しだけ例を載せますと

このような積み上げ棒グラフや

All_performances___Datadog折れ線グラフ

All_performances___DatadogグラフのタイプもTimeseriesだけでなく、Heatmap, Distribution, Toplist, Change, Hostmapなど様々です。

これはToplistの例です。

All_performances___DatadogCloudFrontのdistributionごとの(単位時間あたりの)リクエスト数なのですが、e2hswlf3bca2hqが一番高いことがわかりますね。グラフの色も変えられたりします。

これらはJSONで定義されているのでコピペも簡単です。またJSONの定義部分ではちょっとした計算式が書けるので単位など色々変更することができます。

All_performances___Datadogイベントをグラフ上に反映することもできます。例えば以下のように「デプロイ」というキーワードを登録して

All_performances___Datadog別のEvents画面(チャット画面的なものです)でデプロイと発言すると・・・

All_performances___Datadogこのようにピンクの線が付きます。必ずデプロイを行うときにEvents画面に手動や自動でデプロイと発言しておくことでピンクの線が出て便利です。どこからシステムが変わりだしたか(良くなったか・悪くなったか)がわかります。

各種システムとの連携、AWSの例

DatadogにはAWSシステムとの連携機能なども付いていて、これらを使うと他システムの値などを取得・表示することが出来ます。

連携機能の種類は以下で確認することができます。

https://www.datadoghq.com/product/integrations/

例えばAWSのCPU CreditやELBのアクセス数など、普通は取得できない値でも見ることが出来ます。

Datadog_cloud_front_request自分ではこのblogを初め、いくつかの静的リソースをAmazon Cloud Frontで配信しています。Cloud FrontはマネージドサービスなのでDatadog agentをインストールすることはできませんが、このようにIntegration機能を使えば見ることができるようになります。

チャット系の連携機能はそれらのチャットへの通知などです。システム系の連携機能はそれらのシステムの値をDatadogに取り込むものです。New Relicとかのデータも取り込めるようですね。

アラート設定

(アラート設定はFreeでは使えません)

アラートは設定したメトリックがしきい値を超えると何らかのアクション(メール通知、SMS送信、チャット通知)を行うものです。

自分はPro Trial期間終了しているのでもうアラートは使えないのでお見せできませんが、とりあえず割と簡単に設定できると覚えておけば良いかと思います。

Zabbix経験との比較

仕事でZabbixを利用したこともありますが、そちらと比べると以下のような利点があると思います。

  • 管理画面が格段に綺麗
  • 使いやすいI/F。少ない設定項目でやりたいことを実現できるので簡単
  • 充実しているグラフ機能
  • 充実している連携機能
  • 自分で監視システムを監視しなくて良い(Zabbixを自前で用意するとそのZabbixを監視しなくてはならない)
  • Agentがお手軽

まあ、Datadog高いんですけども・・・利点は多いかと思います。Zabbixは本読みながら分からん分からん・・・つぶやいてましたが、Datadogは適当に使っているだけですらすらと頭に入ってきました。

まとめと雑感

Datadogの説明や機能説明などを行いました。自分は個人と仕事でDatadogを利用していますが、かなり良いサービスだと思います。金銭的に余裕があるのであればZabbixなどよりもDatadogを選択すると思います。

料金は高いですし、スケールアウトするたびにホストが増えるような環境だと利用料はばかにならないと思います。ですが、Amazon ECSのような(Docker)コンテナクラスタ技術を使えば利用料は抑えられるかもしれません。(hostが増えるとダメですが、1host上10containerまでならOKなので)

話がそれましたが、Datadogかなり良いサービスだと思いますので、みなさんも使ってみてはいかがでしょうか?

 - クラウドサービス ,