えいのうにっき

主に Web 系技術ネタ。背景画像 is powered by grass-graph.moshimo.works

Datadog を試してみた

先日開催された Mackerel User Group Meeting で LT をしてきたぐらいには Mackerel ユーザーな僕なんだけど、聞くところによると Datadog というプロダクトも監視系 SaaS としては使っているユーザーが多いということなので、ちょっと試してみることにした。

今回試すにあたり、自分のホームページ(死語)をホストしている home.a-know.me に実際にエージェントをインストールした。例によって、Chef のカスタムレシピ(CentOS / Redhat 向け)を書いてインストールしたので、興味があればそちらも。

もくじ

サインアップ 〜 エージェントのインストールまで

f:id:a-know:20160618122538p:plain

まずはサインアップ。

その後、アンケート?みたいなものに答えると、以下の様なエージェントのセットアップ手順を OS ごとに教えてくれる画面になる。

f:id:a-know:20160618122723p:plain

Datadog も Mackerel と同じく、エージェントインストール型の監視 SaaS。Datadog エージェントは、Mackerel と同じく各種メトリックを Datadog に送るだけでなく、アプリケーションログの解析も行わせることができる様子。Elasticsearch + kibana みたいなことが Datadog でもできるよ、ということだろうか。

エージェントのセットアップについては、OS やディストリビューションごとに手順やセットアップスクリプトを用意してくれているようだ。

ぼくも今回これを使って手動でインストールしてもよかったのだけど、今のところ home.a-know.me が Chef で管理できていることもあり、ちょっと遠回りではあるけど、提供されているスクリプトの中身を解釈してカスタムレシピを書いてやることにした。スクリプトの中身を読んでみてわかったけど、python が必要な様子。

github.com

カスタムレシピを書き、cook をし…

Recipe: datadog::default
  * service[datadog-agent] action restart
    - restart service service[datadog-agent]

Running handlers:
Running handlers complete
Chef Client finished, 4/97 resources updated in 35 seconds

さっそくエージェントが動き始めてくれたようで、さっきの画面の下にあったボタンが押せるようになった!ヽ(=´▽`=)ノ

f:id:a-know:20160618122905p:plain

Datadog コンソールを開いてみる

さきほどの「Finish」ボタンを押してみると。

f:id:a-know:20160618131156p:plain

こんなかんじの画面が表示される。初期表示は、各種イベントを表示してくれる「Events」表示のようす。(画面右上に見えるのは無料トライアル期間。Datadog にサインアップしてから実際にエージェントを動かすまでに2日掛かってしまい、そのぶんトライアルの期間も減ってる。)

ここ↓をクリックすると、

f:id:a-know:20160618123151p:plain

こんな↓かんじに。

f:id:a-know:20160618123248p:plain

こんな↓ふうに、各イベントにコメントを残せるっぽい。

f:id:a-know:20160618131322p:plain

Markdown supported とあったけど、emoji はダメだったw

グラフの表示期間はプルダウンで選択できる。

f:id:a-know:20160618124032p:plain

続いて、ツアー的なものがあるのでそれをやってみる。

f:id:a-know:20160618131434p:plain

2種類のダッシュボードの作成

まずは「Create a dashboard」から。ふたつのフォーマットから選べるっぽい。

f:id:a-know:20160618124235p:plain

まずは TimeBoard から。For troubleshooting and correlation Time-synchronized metricks and event graphs とあるので、まぁそんな感じの用途に向いてるダッシュボードかな?

ドラッグアンドドロップで好きにレイアウトできて…

f:id:a-know:20160618124402p:plain

ビジュアライズのスタイルもたくさんの中から選べる。

f:id:a-know:20160618124602p:plain

試しに LA についての全種類グラフを載せてみた。

f:id:a-know:20160618131845p:plain

ScreenBoard も作ってみる。用途的には、プロジェクトルーム内に大きなモニタを置いて、そこにこれで 各種数値・ステータスを常時表示させておくようなイメージだろうか。こっちもいろいろおいてみた。

f:id:a-know:20160618125000p:plain

さっきの TimeBoard よりもさらに色々置けるかんじ。画像も置けるしフキダシも設置できる。

緑の六角形は Hostmap で、負荷によって色が赤く変化していくらしい。また、フィルタリングやグループ化もできるっぽい。

ちょっと驚いたのが iframe も指定できるようなので、

f:id:a-know:20160618125102p:plain

この通り、 Mackerel のグラフも置ける。w ちゃんと動くし、更新もされる。

インテグレーションを試す

先日、Mackerel が AWS Integration を発表したのは記憶にも新しい。Datadog にもいくつか Integration がある様子。

f:id:a-know:20160618125218p:plain

いくつか…じゃないな、結構な数がある。すごい。

いろんなインテグレーションについ目移りしてしまうんだけど、とりあえず目についたものについて見てみる。

  • capistrano
    • dogapi gem の追加インストー
    • Capfile に設定を追加
  • Chef
    • comunity cookbook を使用する必要あり
  • nginx
    • conf.d/nginx.yaml に追加設定要
  • Ruby
    • Ruby のコードの中から直接メトリックを投稿できる?
    • dogstatsd-ruby gem を追加インストー
    • statsd を require し投稿するコードを書く
  • fluentd
    • conf に追加の記述が必要
  • Google Cloud Platform
    • 当該プロジェクトを持つアカウントで連携要
    • プロジェクト ID の指定要
    • WEB コンソールからだけで連携可能

他にももっともっとある。

「すごいな、Datadog のインテグレーションはたくさんあるんだな」と最初は思ったけど、でも上記のとおり、モノによっては gem を入れたり設定を追加しないといけなかったりで、Mackerel のいう「インテグレーション」とはちょっとニュアンスが違うのかな、と思った。Mackerel でいうと「プラグイン」に近いのかも。

※追記※ …と思ったけど、AWS Integration に関しては Mackerel のそれと似たような感じっぽい。やっぱり AWS についてはどこも手厚く対応するよね…。。なので、Mackerel でいう「インテグレーション」と「プラグイン」の両方を合わせたものを Datadog では「インテグレーション」としてる、っていうかんじなのかも。)

とりあえず、追加で細かい設定が必要なさそう(Google アカウントの連携だけで ok)な GCP 連携だけやってみた。

連携後、少し時間を置いて見てみると、なるほど、取得できるメトリックの種類が増えていた。

f:id:a-know:20160618132145p:plain

どうやら、GCP 内の特定プロジェクト全体に関するメトリックが中心のようす?ただ、stop 状態のインスタンスも取得してくれていて、Hostmap がいいかんじに表示されるようになった。

f:id:a-know:20160618132313p:plain

監視設定の追加

つづいて監視設定をしてみる。「Monitoring」の初期画面は↓こんなかんじ。

f:id:a-know:20160618125604p:plain

初期設定だと ntp だけ監視してくれてるっぽい。

ちょいとアラートを追加してみる。お試しなのでなんでもいいんだけど、「起動中のインスタンス数」についてアラートを、しかも必ず発報するような閾値で設定してみる。

f:id:a-know:20160618125847p:plain

f:id:a-know:20160618125903p:plain

アラート発生時のイベントメッセージは、ここで自由に設定できるっぽい。 基本的には Markdown のようだけど、独自のテンプレート変数も使えるみたい。https://docs.datadoghq.com/ja/guides/monitors/ が詳しい。

↓は監視項目の管理画面。

f:id:a-know:20160618130001p:plain

当該項目を選択すると、↓こんなかんじの画面になる。その監視対象のグラフも合わせて確認できる。

f:id:a-know:20160618130102p:plain

これでよし…、、と思ったんだけど、なぜか「NO DATA」のまま、アラートを出してくれない。 いろいろやってみたんだけどどうしてもアラートになってくれず。公式のヘルプ よくあるご質問(FAQ) を見てみると、AWS 連携についての記述があり、どうやらデータ取得に時間が掛かってることによるもの?っぽい。

でも、こうして監視を追加したことも、イベントとして登録されている。

f:id:a-know:20160618130228p:plain

チームで利用している場合、いつの間にか誰かの手によって監視ルールが追加されてた、なんてことに気が付きやすいかも。

…とかなんとかやってたら、GCP から値が取れたのか、アラートが発報されていた。 (先ほどから監視設定が増えてるのは、あれこれ試していたせいです :pray: )

f:id:a-know:20160618130352p:plain

f:id:a-know:20160618130400p:plain

最初の「Events」表示でも、アラートが上がっていることがイベントとして表示されている。

f:id:a-know:20160618130514p:plain

コメントが残せるのはこういう↓感じで使うってことなのかな。

f:id:a-know:20160618130637p:plain

あ、ちゃんとメールも来てた。

f:id:a-know:20160618130757p:plain

今回は設定してないけど、きっと slack とかにも通知できるはず。

最後に、課金体系

IT Performance Monitoring Pricing | Datadog にある通りで、3つのプランがあってそれぞれでメトリックの保持期間とかが違うんだけど、ざっくり言うと、$15 / host(2016/06/18 現在)。でも今回の GCP Integration で取れるようなメトリック(Mackerel でいうサービスメトリック?)はどういう体系になるのかがよくわからなかった。 All prices include unlimited integrations per monitored host. We will only count a monitored host once, no matter how many of our plugins you use with it. という記述は見つけたので、もしかしたらホストに紐付かないメトリックはいくつでも自由なのかも。



follow us in feedly