SRE Group Managerをしている前田 (@glidenote)です。 弊社では先日監視システムを刷新し、Datadogを全サーバに導入し、今年3月にDatadogから正式リリースされたDatadog Log Managementを利用しNginxのエラー監視をするようにしました。今回はその件について紹介します。
TL;DR
- Datadog Log Managementを利用して、Nginxのエラーを監視するようにした
- とりあえずLogを送っておいて、グラフを作ったり、後から必要な形に加工するという運用が簡単に出来るようになった
- 正式リリース間もないので、まだまだな部分があるが、手軽にログ監視が出来るので今後の機能拡張が楽しみ
前提
以前から弊社では、
という感じの処理を行っています。
従来のSentryを利用したNginxのログ監視概要
これまで弊社ではNginxのログをFluentd + grep Filter Plugin+ fluent-plugin-sentryを利用して、Sentryに送り監視をしていました。
下記はSentry上でのエラーイベントの表示画面。エラートラッキングサービスなので、エラーの詳細なども見やすいです。
Datadog Log Managementとは
- Datadog社の提供するログ管理サービスで、ログを収集し、検索、グラフ化、アラートの作成などが容易になるサービスです
Introducing Log Processing and Analytics in Datadog from Datadog TV on Vimeo.
- 弊社ではNewrelicを利用しているので、まだ利用出来ていないですが公式の動画を見るとDatadog APM と組み合わせると、アプリのパフォーマンスが劣化したときに、どんなことが発生していたか該当時刻のログと合わせ調査が行えたりするようです。
- Datadog APMとの組み合わせは現在検証中なので、正式導入した時にまたこのブログで紹介出来ればと思います。
Datadog Log Managementへログを送信する
Datadog Log Managementにログを送る方法はいくつかありますが、弊社では全サーバにDatadog Agent (version >= 6.0)が導入済みなのでDatadog Agentを利用してログを送信しています。
Datadog Agentを利用してログを送信する場合は、はじめに/etc/datadog-agent/datadog.yaml
で、Log機能を有効にし、
logs_enabled: true
NginxのLog Directory /var/log/nginx
なので、 下記のような /etc/datadog-agent/conf.d/nginx.d/conf.yaml
という設定ファイルを用意します。(service
部分などは適宜変更してください)
init_config: logs: - type: file path: /var/log/nginx/*.log service: webapp-k2 source: nginx sourcecategory: http_web_access
設定ファイルを用意し、datadog-agentを再起動するとDatadog Log Managementにログが送信されるようになります。
主要なOSS、コンテナ、クラウドサービスに予め対応しているので、ドキュメント通りに設定すれば、すぐ動くようになっています。
対応していないものでもDatadogが開発しているFluentdのプラグインfluent-plugin-datadogなどを利用してログ送信が可能です。
ログのParse Ruleをカスタムする
Datadog Log Management側でログを自動でよしなにParseしてくれるのですが、ログの形式をカスタムしている場合、上手く処理がされないので、その場合は、Grok Parserを利用して対応することが出来ます。
ログを監視しアラートを作成する
ログが送信されると下記のような形で確認が出来るようになります。
アラートは下記のような条件で抽出し、発生するたびにアラートが飛ぶようになっています。
- @http.status_code:[500 TO 599]
- env:prd
- service:webapp-k2
Slackへの通知は下記のような感じ。
ちなみにSentryからの通知は下記のような感じ。現時点ではSentryの通知の方が見やすい
従来の構成(Fluentd+Sentry)との比較
- 導入が非常に簡単
- 条件を指定しないと全ログが同じ画面に表示されているので、管理画面が見づらい
- 弊社はNginxの他に
/var/log/secure
などのログも収集しているので、全部が同じ画面に混在して表示されているのは見づらい
- 弊社はNginxの他に
- アラートが飛ぶのに数分かかる。
- Sentryは発生した瞬間にアラートが飛んでくる
- 開発ロードマップには入っているので、そのうち改善されるはず
正式リリースされて間もないので、まだまだな部分がありますがDatadog Log Managementは簡単に利用出来て、なにより監視サービスに統合されておりログ監視が容易になるのが素晴らしい。今後下記のような機能拡張が予定されているので楽しみなサービスです。