この記事はもともと『UUUM攻殻機動隊(エンジニアブログ)』に掲載されていたものでしたが、
2024年頃にUUUMエンジニアブログが閉鎖されてしまったようですので、
Wayback Machine のデータをもとに、2025年1月にこちらのブログに移植いたしました。
こんにちは、新人エンジニアのハトネコエです。
気付いたらプログラミングを始めて2年が経ちました。
みなさまはゴールデンウィークをいかがお過ごしでしたでしょうか?
私は 人生初めてのVPS契約 をしました。
Ansible でサーバー構築のレシピを四苦八苦しながら作り、アプリケーションを動かせるまで至ると、
今度はサーバーの監視をしたくなってきます。
サーバー監視のクラウドサービスと言えば Mackerel がおなじみです。
見やすいグラフが印象的で、弊社でも一部利用させていただいております。
Mackerel が便利なのは知っているので、
今回は異なるクラウドサービスを使おうと考えました。 Datadog です。

わんわん。
Datadog の魅力は、その多彩な連携にあります。

これを書いている時点で 115 のサービスやアプリケーションとの連携 が用意されています。
連携方法はサービスやアプリケーションによってややこしいものもありますが、
下のように連携ページに設定方法が書かれているので、ドキュメントを探しに行かなくてよいのがなかなか親切です。

Datadogによる監視を有効にするには、Datadogエージェントをサーバーにインストールする必要があるのですが、
Ansibleですとそれがとても簡単です。

Datadog のアカウントを取得すると、上のスクリーンショットのようにインストール方法の一覧が出てきて、
その中に Ansible も含まれています。
ansible-galaxy コマンドを通して Datadog のオフィシャルロールをダウンロードしてきて、
YAMLファイルに数行記述し Ansible を実行するだけで、エージェントはインストールされます。
それだけでもサーバーのCPU使用率やメモリ使用率などは見られますが、
より詳しく、例えば
- プロセスの死活監視をしたい
- 指定したURL(公開しているサイト)にHTTPアクセスし応答があるか確認したい
- nginxへのリクエスト数を監視したい
といった監視項目を実現するには、下のような設定ファイルを作り、
Playbook内の vars_files のひとつとして指定すればOKです。
datadog_api_key: 'your_datadog_api_key' datadog_checks: process: init_config: instances: - name: ssh search_string: ['ssh', 'sshd'] - name: nginx search_string: ['nginx'] http_check: init_config: instances: - name: Example Project url: http://example.com timeout: 5 # 注)Datadog で nginx 連携をONにしてください # また、stub_status の設定が必要です (参考: http://qiita.com/hiroki_y/items/099a9a7c28ae7c592a2e ) nginx: init_config: instances: - nginx_status_url: http://127.0.0.1/nginx_status
そしてPlaybookを実行すると、Datadogの公式Ansible roleは
Datadogエージェントの設定フォルダ /etc/dd-agend/conf.d 以下に process.yaml , http_check.yaml , nginx.yaml を作成し、
その後Datadogエージェントを再起動し監視が動くようにしてくれます。



こんなふうに取得できるようになります。
このグラフではHTTPレスポンスが返ってこなくなった時間があることがわかりますね。(たしかバーチャルホストの設定をいじってた時間)
また、Ansible自体との連携もあります。
実行時間やchanged数・failed数のカウントをおこなえます。
最初は「そういうAnsibleの結果はローカルに表示されるからいらないのでは?」と思っていたのですが、
実際ログデータとして取ってみると、CPUのスパイクが発生している原因が明確になりましたし、
チーム開発だと「気付いたらサーバーの設定変わってる、あ、この時間にrole実行されてるじゃん」とわかって便利かもしれません。

上に書いてきた監視設定をMackerelで実現しようとすると、プラグインインストールやカスタムメトリックの設定などをがんばらなければいけなく、けっこうな時間を取られます。
「監視の設定のために時間を取られるなんて……」と考える方にとっては、MackerelよりDatadogの方がいいでしょう。
Datadogのいいところは監視設定の簡単さにとどまらず、ダッシュボードの使いやすさにあります。
グラフのサイズをキーボードの [ と ] のキーで変更でき、
グラフのタイトルをクリックするとグラフをブラウザサイズいっぱいで見られるといった、利便性の高いショートカットが用意されています。

それからもちろん、アラート機能もあります。
ですが、残念なことにこれは無料プランでは使うことが出来ません。本当に残念です。
設定をすると、条件に一致したときSlackなどに通知をおこなうことができます。

料金は年払いだと月額 $15 / host、月払いだと月額 $18 / host での提供です。
https://www.datadoghq.com/pricing/
ほぼMackerelと同額ですね。
https://mackerel.io/ja/pricing/
契約して最初の2週間は有料プランが体験できますので、
導入は簡単ですからお試しくださることをお勧めします。
こうしてサーバー監視までおこなうと、次はElasticsearchとKibanaを用いたログのブラウザ表示とか
やってみたくなってきますね! 次の長期休暇が訪れたら、のんびり設定してみたいなあと思います。