先日開催された Mackerel User Group Meeting で LT をしてきたぐらいには Mackerel ユーザーな僕なんだけど、聞くところによると Datadog というプロダクトも監視系 SaaS としては使っているユーザーが多いということなので、ちょっと試してみることにした。
今回試すにあたり、自分のホームページ(死語)をホストしている home.a-know.me
に実際にエージェントをインストールした。例によって、Chef のカスタムレシピ(CentOS / Redhat 向け)を書いてインストールしたので、興味があればそちらも。
もくじ
サインアップ 〜 エージェントのインストールまで
まずはサインアップ。
その後、アンケート?みたいなものに答えると、以下の様なエージェントのセットアップ手順を OS ごとに教えてくれる画面になる。
Datadog も Mackerel と同じく、エージェントインストール型の監視 SaaS。Datadog エージェントは、Mackerel と同じく各種メトリックを Datadog に送るだけでなく、アプリケーションログの解析も行わせることができる様子。Elasticsearch + kibana みたいなことが Datadog でもできるよ、ということだろうか。
エージェントのセットアップについては、OS やディストリビューションごとに手順やセットアップスクリプトを用意してくれているようだ。
ぼくも今回これを使って手動でインストールしてもよかったのだけど、今のところ home.a-know.me
が Chef で管理できていることもあり、ちょっと遠回りではあるけど、提供されているスクリプトの中身を解釈してカスタムレシピを書いてやることにした。スクリプトの中身を読んでみてわかったけど、python が必要な様子。
カスタムレシピを書き、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
さっそくエージェントが動き始めてくれたようで、さっきの画面の下にあったボタンが押せるようになった!ヽ(=´▽`=)ノ
Datadog コンソールを開いてみる
さきほどの「Finish」ボタンを押してみると。
こんなかんじの画面が表示される。初期表示は、各種イベントを表示してくれる「Events」表示のようす。(画面右上に見えるのは無料トライアル期間。Datadog にサインアップしてから実際にエージェントを動かすまでに2日掛かってしまい、そのぶんトライアルの期間も減ってる。)
ここ↓をクリックすると、
こんな↓かんじに。
こんな↓ふうに、各イベントにコメントを残せるっぽい。
Markdown supported とあったけど、emoji はダメだったw
グラフの表示期間はプルダウンで選択できる。
続いて、ツアー的なものがあるのでそれをやってみる。
2種類のダッシュボードの作成
まずは「Create a dashboard」から。ふたつのフォーマットから選べるっぽい。
まずは TimeBoard から。For troubleshooting and correlation
Time-synchronized metricks and event graphs
とあるので、まぁそんな感じの用途に向いてるダッシュボードかな?
ドラッグアンドドロップで好きにレイアウトできて...
ビジュアライズのスタイルもたくさんの中から選べる。
試しに LA についての全種類グラフを載せてみた。
ScreenBoard も作ってみる。用途的には、プロジェクトルーム内に大きなモニタを置いて、そこにこれで 各種数値・ステータスを常時表示させておくようなイメージだろうか。こっちもいろいろおいてみた。
さっきの TimeBoard よりもさらに色々置けるかんじ。画像も置けるしフキダシも設置できる。
緑の六角形は Hostmap で、負荷によって色が赤く変化していくらしい。また、フィルタリングやグループ化もできるっぽい。
ちょっと驚いたのが iframe も指定できるようなので、
この通り、 Mackerel のグラフも置ける。w ちゃんと動くし、更新もされる。
インテグレーションを試す
先日、Mackerel が AWS Integration を発表したのは記憶にも新しい。Datadog にもいくつか Integration がある様子。
いくつか...じゃないな、結構な数がある。すごい。
いろんなインテグレーションについ目移りしてしまうんだけど、とりあえず目についたものについて見てみる。
- 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 連携だけやってみた。
連携後、少し時間を置いて見てみると、なるほど、取得できるメトリックの種類が増えていた。
どうやら、GCP 内の特定プロジェクト全体に関するメトリックが中心のようす?ただ、stop 状態のインスタンスも取得してくれていて、Hostmap がいいかんじに表示されるようになった。
監視設定の追加
つづいて監視設定をしてみる。「Monitoring」の初期画面は↓こんなかんじ。
初期設定だと ntp だけ監視してくれてるっぽい。
ちょいとアラートを追加してみる。お試しなのでなんでもいいんだけど、「起動中のインスタンス数」についてアラートを、しかも必ず発報するような閾値で設定してみる。
アラート発生時のイベントメッセージは、ここで自由に設定できるっぽい。 基本的には Markdown のようだけど、独自のテンプレート変数も使えるみたい。http://docs.datadoghq.com/ja/guides/monitoring/ が詳しい。
↓は監視項目の管理画面。
当該項目を選択すると、↓こんなかんじの画面になる。その監視対象のグラフも合わせて確認できる。
これでよし...、、と思ったんだけど、なぜか「NO DATA」のまま、アラートを出してくれない。 いろいろやってみたんだけどどうしてもアラートになってくれず。公式のヘルプ よくあるご質問(FAQ) を見てみると、AWS 連携についての記述があり、どうやらデータ取得に時間が掛かってることによるもの?っぽい。
でも、こうして監視を追加したことも、イベントとして登録されている。
チームで利用している場合、いつの間にか誰かの手によって監視ルールが追加されてた、なんてことに気が付きやすいかも。
...とかなんとかやってたら、GCP から値が取れたのか、アラートが発報されていた。 (先ほどから監視設定が増えてるのは、あれこれ試していたせいです :pray: )
最初の「Events」表示でも、アラートが上がっていることがイベントとして表示されている。
コメントが残せるのはこういう↓感じで使うってことなのかな。
あ、ちゃんとメールも来てた。
今回は設定してないけど、きっと 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.
という記述は見つけたので、もしかしたらホストに紐付かないメトリックはいくつでも自由なのかも。