Photoruction工事中!

Photoructionの開発ブログです!

Datadogを触ってみた

はじめに

  • Photoructionでエンジニアをしております。北原です。

前提

  • 環境は、EC2です

目的

  • そろそろ弊社も監視しないとやばいよね?という流れからsentryかdatadogどちらにするかってなりdatadogになりました

以下個人的な考え

  • できる範囲で言うとsentryでできることはdatadogでも大概できます。(大概ね大概)
    • じゃ最初からdatadog一択じゃんてなるかもしれませんがまぁ目的として何を監視したいかで変わると思います。
    • アプリケーションモニタリング&エラートラッキングだけでいいやってなるならsentryだけで問題なく、またメトリクスはawsを使用しているならaws wayで行くぜ!でもいいと思います
    • datadogはできることが膨大にあります。お金もたくさんかかります。あくまで手段なので何をどのように把握したいのかas is / to beなので理想状態(目的)が何かをちゃんと把握してから手段として正しいか判断した上で導入することをお勧めします

環境

  • 前提にも書きましたがEC2です。
    • 詳細
      • PHP/Laravelを使用しているのでこれらの設定をしていく

やったこと

datadogの作業開始前に

  • EC2をコマンド操作できる状態にしておいてください
  • datadogにLoginしてください。
    • 14日間は、無料で試せるのでアカウントをお持ちじゃない方はぜひにtryしてみてはいかがでしょうか?

まずは下記ページに遷移します(Integrations > agent > Amazon Linux)

SaaSはよくUIが変わったりしてどこに何があったっけとなるのでこちらの画像は、あくまで参考程度にとどめてください

  • 遷移しましたら画像にも映っていますSelect API Keyをクリックして今回使用するAPI Keyを選択しましょう

①に書いてあります Use our easy one-step install. の箇所の下記コマンドをコピペしましょ

DD_API_KEY="ここに選択したAPI keyが入ります" DD_SITE="datadoghq.com" bash -c "$(curl -L <https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh>)"

EC2上でコマンドを実行しますとinstallが始まりますので終わるまで待機です。

設定fileを書いていきます

  • こちらもdatadogにLoginしている状態ですと基本的には、何を用意すればいいのか書かれてます。
    • Logs > Get started > server > phpにページ遷移しましょう
    • ここに書かれている内容をそのままEC2に内に写経するだけ終わっちゃいます
  • datadog-agent以下にあるdatadog-agent.yamlの該当箇所のコメントをコメントインする
logs_enabled: true
  • これでdatadogは、loggingしてくれるようになります。phpに限ったことではないですが例えばnginxのlogも見たいんよなーって要望があった際にもここをtrueにしておけばあとは、各middleware用の設定fileをよしなにするだけですね
  • laravel.logをdatadogに送ってあげましょ
    • datadogは、 /etc/datadog-agent/conf.d/***.d/以下に設定されます。***の箇所は、middlewareの名称で存在しています
      • 設定file名は、conf.yamlで書くといいでしょう。(多分)
    • datadogは、Laravel用のディレクトリを用意してくれているわけではありませんので今回は/etc/datadog-agent/conf.d/php.d/conf.yamlとしてディレクトリとファイルを作成しましょう

作成したら以下のように記述します

logs:
  - type: file
    path: "/path/to/laravel.log"
    service: php
    source: php
    sourcecategory: sourcecode
        log_processing_rules:
       - type: multi_line
         name: new_log_start_with_date
         pattern: \\[\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])
  • 上記のように設定してあげればひとまずは問題ないです
    • type: multi_line 以下に関して
      • これを書かないとスタックトレースやら何やらが複数行にわたってdatadog上で表示されて全くもって見づらい状態になりますので書いた方がいいかなと思います。

動作確認

  • 設定fileを書き終えたらdatadog-agentを再起動します。
sudo systemctl restart datadog-agent
  • 再起動終わりましたら、datadogのlogsで確認することが可能になります。
    • 補足しておきますとLaravelのlogの設定次第で表示される内容が異なりますから、スタックトレース見たいなーって思う方は、意図的に発生させてみてください。

参照

株式会社フォトラクションでは一緒に働く仲間を募集しています