目次
記事概要
こんにちは、ネットオン開発Sec.のサイトーさんです。
今回は採用係長でよく使われているDatadogについてお話ししていきたいと思います。
Datadogとは
DatadogはSaaS形式で提供されるシステムモニタリングサービスです。AWSやAsureなどのクラウドサービスやNode.jsなどのプラットフォームの監視を行ったり、JiraやSlackのコラボレーションツールなどにDatadogで発生したアラートを通知したりすることができます。
Logs
Logsは名前の通り、システムから送られてきたログを収集して、検索やアーカイブすることができます。以下の画像は Logs へアクセスした際の画像です。(なお、画像は実際に利用しているものをお見せすることができないので、 Datadog のマニュアル内から取得しています。)

ログを検索するには時間の指定と facets を指定する必要があります。まず、時間の指定ですが、Logs ではデフォルトで過去15分のデータを表示するようになっており、それより過去のデータを検索するには時間を指定する必要があります。画面の右上に以下のようなプルダウンがあり、ここから過去のデータを範囲指定することができます。

プルダウンには過去1時間や2日などの指定がありますが、選択下部にある Select from calender… を選択することで過去の日付で検索することができます。また、具体的な時間で検索したい場合は直接時間を入力することでも時間の範囲を絞ることができます。
次に facets での検索ですが、facets とはログのユーザ定義やタグを指しており、データの属性を指定することで検索や分析をすることができます。具体的な facets は Logs 画面の左のメニューにあるリストから指定することができます。

facets で指定できる属性は多くあるため、 facets リストの上部に検索フォームがありここから絞り込むことも可能です。
また、指定した facets は Logs 画面の上部にある Search for の検索フォームに自動で入力されるので、そこから他の属性を指定することも可能です。ちなみに、 Search for で facets にない単語を入力すると、ログリストの CONTENT の検索となります。
AMP
APM とは Application Performance Monitoring の略で、主にWebサービスのレスポンスや DB のリクエスト、レイテンシーなどのパフォーマンスを監視する機能です。

APM のトレース機能では Logs のようにDBのリクエストやレイテンシのログが収集されており、facets や時間で検索することが可能です。さらに、表示されているログを選択することで、フロントからのリクエストの応答に関わるバックエンドやDBのクエリなどの処理や処理時刻を確認することができます。

APMのサービス監視機能では、監視している各サービスのリクエスト処理数や平均レイテンシやエラーリクエスト量などのサマリーを確認することができます。

RUM
RUM では、実際にシステムを利用しているユーザのリアルタイムのアクティビティとエクスペリエンスを収集する機能です。RUM エクスプローラでは Logs のように各ユーザのアクセスしたページや押下したボタンなどをセッションごとにまとめて収集しており、フロントの操作でエラーが発生した際などのエラー情報を確認することができます。検索も Logs と同様に、facets や時間で検索するとができます。

RUM には Session Replay 機能というものもあり、この機能を利用することでユーザのweb上での動きを視覚的に再生することができます。そのため、ユーザが起こしたエラーの詳細な再現やアプリの利用パターンなどの確認することが可能です。
他のシステムとの連携について
Datadog ではクラウドサービスやアプリケーションなど500以上のサービスと連携することができます。ここではネットオンで利用している ChatWork との連携方法について解説してみます!
1. ChatWork API 利用申請を以下のURLから行う。(申請が完了するまでに最大2日かかるそうです。)
https://developer.chatwork.com/docs
2. ChatWork API が利用可能になると、ChatWork のサービス連携ページのメニューにある API トークンからトークンを発行します。
3. Datadog へアクセスし、左メニューにある Integration を開きます。

すると以下のように上記画像のように様々なシステムが表示されるので ChatWork を検索します。
4. ChatWork のアイコンをクリックするとトークン入力のフォームが表示されるので 2. で取得したトークンを入力します。
5. 設定が完了すると以下のようにルーム情報を入力する画面が表示されます。

6.通知したいルームのIDと任意の名前を入力し、Update Configration を押下する。(ルームIDはweb版 ChatWork でルームにアクセスした際の URL 末尾の数値がルームIDになります。)
以上の手順だけでChatWorkとの連携を完了させることができます。あとは、Datadog のMonitors機能などを用いることでエラーの発生などをトリガーとして通知を ChatWork に通知することができるようになります。詳しい方法は改めて記事にしてみたいと思います。
まとめ
今回はDatadogの基本的な機能の紹介をさせていただきましたが、Datadogにはこれ以外にもさまざまな機能があり、それらを学習するためのコンテンツとして以下のものが用意されています。
この学習サイトでは、テーマ別にハンズオン形式のコースが用意されており、仮想のシステムとテストアカウントを利用して実際の設定などを学習することができるので、Datadogに興味がある方は利用してみていかがでしょうか?