RedashのAlert機能を使ってログデータの欠損や異常値をチェックする

初めまして。 データサイエンティスト兼、データ基盤エンジニアのshobyです。

突然ですが皆さんは、データウェアハウスに保存されたログデータの信頼性をどのようにチェックしていますか? 日々追加されるログデータが分析に耐えうる品質の物かをチェックするのはなかなか難しい作業です。

皆さんも、気合いを入れてデータを分析をしようと思った段階で、データに欠損や異常値が見つかり 「そもそもこのログデータ信頼できるの...?」というところから検証が必要...といった経験はあるのではないかと思われます。

今回は、RedashのAlert機能を使い、ログデータの欠損や異常値をチェックする方法をご紹介します。*1

概要

  • ログデータ信頼性チェックの重要性
  • RedashのAlert機能を用いたログデータの監視

ログデータ信頼性チェックの重要性

信頼の置けるデータ分析を行うためには、分析に耐えうる品質のデータを用意することが必要です。 ログデータの欠損や異常値を定期的にチェックすることで、ログデータの収集・加工プロセスにおける問題を早期に発見し、データ分析結果の信頼性を向上させることができます。

ログデータの中身についてチェックをするためには、定期実行の監視用scriptを書くのが一般的ですが、 RedashのAlert機能を使うことで簡単に監視をすることができます。

RedashのAlert機能

RedashにはAlertという機能が存在し、クエリ実行結果の値が閾値を超えた場合、Slackやメールにアラートを飛ばすことができます。 この機能を定期実行クエリと組み合わせることで、ログデータの監視を行うことができます。

Setting Up An Alert | Redash

RedashのAlert機能はSQLを用いて柔軟に監視条件を記述でき、GUIベースで簡単にアラートが追加できるというメリットがありますが、 ログデータの監視に当たってはデータを何らかのデータソースに格納しなければならないというデメリットがあります。

ログの生データの送受信処理自体や、ログの収集加工プロセス処理自体を監視したい場合、別の監視方法も検討しましょう。

今回は、データウェアハウスに格納済みのログデータに対して、ログ欠損を監視することを考えます。

以下が具体的な方法の紹介です。

まず、Redash上でクエリを書き、そのクエリを定期実行にします。

f:id:shoby:20180523162322p:plain

f:id:shoby:20180523162434p:plain

その定期実行クエリに対して、Alertを設定します。 対象のクエリ名、閾値設定をするcolumn名、条件、閾値、再通知時間の設定が必要です。

f:id:shoby:20180523163516p:plain

Slack連携を設定した場合、Alertの条件に引っかかると以下のようなメッセージが送信されます。

f:id:shoby:20180523164247p:plain

このように、ログデータに欠損が発生したことを素早く検知して対応をすることができます。

TVISION INSIGHTSでの活用事例

TVISION INSIGHTSでは、テレビ視聴に関するログデータの信頼性を向上させるためにRedashのAlert機能を利用しています。

TVISION INSIGHTSはテレビの視聴ログを調査対象世帯に設置した端末から収集しており、そのログデータがビジネスの要です。 そのため、ログデータの欠損や異常値を発見次第、素早く対応をする必要があります。

具体的には、24時間全くデータが送られてきていない端末が存在しないか、1時間辺りのログデータの件数は閾値を割っていないか、といった様々な条件でAlertを設定しており、データの信頼性向上に役立てています。

まとめ

信頼の置けるデータ分析を行うためには、分析に耐えうる品質のデータを用意することが重要です。 RedashのAlert機能を用いることで、ログデータの欠損や異常値をチェックし、信頼性向上に役立てることができます。

*1:この記事では、Redashのv4.0.1環境を想定しています。