Redashを活用した見える化と検知自動化のすすめ

こんにちは。はじめまして。

ラクマでサーバーサイドエンジニアマネージャー的なことをしている iku です。

コロナ渦の環境で遠出もしづらい今日このごろ。
最近のブームは各地の名物グルメのお取り寄せ。牛タン・餃子に続いて今週は馬刺しがやってきます。
お取り寄せバンザイ!


さて、今回は【Redashを活用した見える化と検知自動化のすすめ】というお話を書きたいと思います。

redash_logo

ラクマがサービススタートしてからはや8年。

  • サービスの成長具合や日々の状況をわかりやすい形で見ていきたい。
  • 異常値の検知を早くしていきたい

という願望はずっとありました。
ただ限られた人員で、検知や状況把握の改善工数 vs 機能の拡充の工数 を考えると、
どうしても前者の優先度が下がり最低限のことしかできない状況が続いていましたが、
最近やっと念願叶い満足の行く検知システムを運用できるようになりました。

     

見える化と自動化をしたかった理由

では、何故私が 見える化と自動化 をしたかったのか。
それは単純に 「楽になりたかった」 からです。

なにかを議論する時・状況を把握する時、発言や文字だけだとなかなか理解しづらいですよね?

頭の中で情報を整理するのが大変だったり、情報を中途半端に理解した結果、
認識齟齬が発生することも少なくありません。
そんな状況を回避するに役に立つのが 図やグラフを使った視覚的な情報整理 です。

情報が整理されることで、無駄な説明時間を取らなくても良くなりますし、理解も深まり認識齟齬も減って議論もはかどりやすくなります。

ラクマの場合だと

  • ユーザーさんが日々どれくらいのサービスを使っているか。
  • 活性化させるにはどうするるべきか

という議論のために出品や購入状況をグラフ化してチェックしていました。
グラフ化は、定期的にSQLをかける人がデータをEXCELでグラフ化というほぼアナログスタイルです。
1ヶ月に1回程度ならこのアナログ作業もギリギリ許せる作業ですが頻度上がったら・・・・。

無理無理。面倒。 この作業から開放されたい。楽になりたい!!!!!!
これが欲望の1個めです。


次に、自動化 の方。

見える化をすると、色々な状況が見つけやすくなるため、当然のことながらイレギュラーな状態も一瞬で把握できるようになります。

把握できるのはとても良いことなんですが、見つけると大抵次のような会話に発展します。

「ここで異常でしたね。グラフってひと目で分かるのすごいね!」
「・・・・もっと早くみつけたかったね!」
「・・・・・リアルタイムでどうにかわからんもんなの?」
「・・・・・っていうか自動で検知できないの?」

  はい。自動化希望の機運です。
軽く自動化って言われるけど、結構面倒なんだよね・・・・。

自動で異常を検知してアラートって、そのためにバッチ作って定期実行させて自動でメール送信させるんでしょ・・・作ってる暇ないよ・・・。

自動化待望の圧から逃げたい・・・楽になりたい....
欲望の2個目です。

そんな2つの欲望を持ち続け数年もんもんとしてたら、世の中にはRedashという素敵なものが存在してました。  

Redashでの見える化・異常検知自動化の実例

ここからはラクマでのRedashを使った見える化・自動化の実例3つほどを紹介します。

1. 調査分析・数値計測

Producerなど非エンジニアの方から「◯◯についての推移を見てみたい」といった相談受けたときにさくっと対応する日常的な使い方で、依頼内容に沿ったSQLを書きRedashで実行→保存するという基本機能です。

図2
図1. Redashでクエリを作成・実行した結果

保存するとそのクエリ専用のURLが発行される(図上部のURL)ので、このURLをメンバーに共有するだけです。

この結果からグラフを作成したい場合はChart機能を使えばOK。クエリエリアの下にある[new Visualization]からグラフ作成ページへ移動し、折れ線グラフ・棒グラフやピボットテーブルなど作りたいグラフを作成 & 保存をしておきます。

図2
図2. Chartタブをクリックすると保存しておいたグラフが見える

作成した結果は、スケジュール機能を利用することで10分毎・1時間毎・1日毎など簡単に定期実行させることが可能です(図1では左下赤丸内にある通り30分毎の定期実行を設定)。 この設定をしておけばエンジニアがわざわざ再実行させなくても、結果もグラフを勝手に更新されるのです。ほんと便利ですね!!

2.モニタリング

これは ダッシュボードという機能を利用しています。

Redashでは複数のクエリの結果や、結果から作成したグラフを利用して、自由にダッシュボードを作ることができます。

私のチームでは、様々な数値計測用にRedashクエリを数十個以上保存していますが、これらをChromeなどブラウザで見る場合、数十タブ表示するのは重くチェックも非常に面倒なので、同じ属性の結果でダッシュボードを作成しひと目で状況を確認できるようにしています。

資料のスクショは、とあるもののステータスを時間別でグラフ化しているものですが、上段のグラフの真ん中あたり、右側が通常とは違う動きをしてい ます。これは外部で障害が発生していたときのものになります。

図3 ダッシュボード例
図3. ダッシュボード例

3. 異常検知の自動化

先程のグラフで紹介した異常箇所。それを拡大したのが下図になります。

図4
図4. 明らかに異常ステータスなときのグラフ

  事後に見る分には一目瞭然ですが、これだけはっきりと分かるならばできれば発生リアルタイムで・・・とまで言わなくてもなるべく早い段階で検知したくなります。というかしないと意味がありません。

とはいえ一日中グラフを見続けるのは無理ということで、ここで便利なのがアラート機能になります。

アラート機能は 検知で使いたいクエリ・チェックしたいデータの閾値と内容・異常を検知時のお知らせ先 をセットし、クエリを定期実行するだけでOK。超お手軽簡単!

図5
図5. alertの作成

図6. alertの作成(2)
図6. alertの作成(2)

図のように作成したらあとは異常検知のお知らせを待つだけです(来ないほうがいいんですが・・・)。

ラクマでは通知先をslackにしており、異常が見つかると下のような通知がくるので 見つけたら騒いで何かしら対応して正常に戻す ということをしています。

図7
図7.異常時のお知らせ

ラクマでの効果

ここまでRedash活用方法をざっと3つほど紹介しましたが、これによりラクマでは次のような効果がありました。

  • エンジニアコスト削減
  • 指標の視える化で、メンバーの意識向上
  • 異常がひと目でわかり、検知も爆速!

コスト削減については、ここまで何度も書いている通り、最初の1回クエリやグラフを作って渡すだけですむのでデータの頻繁な更新作業がなくなりました。
チリツモで相当な時間の削減につながっています。

つづいて、メンバーの意識向上は、主にダッシュボード化でのモニタリング効果です。

新規機能のリリース後など、グラフを見ながら経過観察をしていくと、利用者数の増加といった成果が目に見えてわかるのでプロジェクトに参加してきたメンバーの満足度向上につながり、今まで以上に一体感が持てていました。やはり誰しも、自分の作ったものの成果はわかりやすい形で出てると嬉しいものですよね。

最後の検知ですが、これはアラート機能によって爆速になり、数分〜数十分で検知できるものが増えてきました。また、外部APIとの連携も多いラクマですが、連携先からの連絡が来る前に異常を検知することも少なくありません。検知が早くなったことでその後の対応もスピーディになり、カスタマーサポートに問い合わせが来る前に何かしらのアナウンスを行うということもだいぶ増えており、お客様の不安も軽減させカスタマーサポートの問い合わせコストも削減という効果にもつながっています。

まとめ

以上、Redashを活用した見える化と検知自動化のすすめについてまとめてみました。

世の中には、Redashのようなツールはたくさんあると思います。みなさんも自身の関わっているサービスの運用にあわせてこういうツールを大いに活用し、お客様に提供しているサービスの質の向上をしていってください。