弥生開発者ブログ弥生開発者ブログ2020-02-03Redashから始める計測生活Misoca開発チームの黒曜(@kokuyouwind)です。2020でパターンマッチの話をしてきました。もとい鱒寿司も食べられたので満足です。社内Redash去年の開発合宿で社内Redashが立ち上がり、現在では社内KGI/KPIやSREチームのSLOなど、いろいろな指標の可視化に活用されています。tech.misoca.jptech.misoca.jpとはいえ、もっといろいろなものを測りたくなってきますよね。いう問題意識があり、これをRedashで可視化したくなりました。Misocaでは現在、以下のような流れでリリース準備が行われています。終わったらビジュアルリグレッションテストのジョブが起動する(Jenkins)2a.と3.のジョブが両方完了したらリリース準備完了それぞれのジョブ完了はSlackに通知される順序を図にすると以下のような流れです。「リリース準備にかかる時間」は1.から4.までの時間ですが、いくつかのツールをまたいでいるため、どうやって計測するかという問題がありました。APIを叩くことができますね。sourceを使うほうが良いかもしれません。チャンネルで「リリースしたい」と発言した時刻を集めるためのクエリコードは以下のようになります。'datetime')これで「リリースしたいと発言した時刻」だけが入ったテーブルができあがります。UTCになっていますが、これは後でJSTに補正します。同じように「リリース前のテストが完了した時刻」と「ビジュアルリグレッションテストが完了した時刻」もそれぞれクエリを作ります。Resultデータソースこの3つが取れれば、あとは「リリースしたいと発言した時刻」に対して、それ以降で最も近い「リリース前のテストが完了した時刻」と「ビジュアルリグレッションテストが完了した時刻」を対応づければ「リリース準備にかかった時間」を計算することができます。Resultデータソースを利用すれば書くことができます。tここで、query_xはそれぞれ以下のクエリです。「ある時刻以降で直近のレコード」を取るためにサブクエリを使う必要があったり、JSTに補正したりといった部分で複雑になっていますが、基本的にはquery_1をベースに情報を混ぜているだけになっています。これで「リリース準備にかかる時間」を可視化できるようになりました!縦軸は隠していますが、たまにリリーストラブルが起こり準備完了までにものすごく時間がかかっていることがわかりますね。感想Redashは普通にRDSなどの情報を可視化するだけでも便利ですが、Pythonデータソースを使ってAPIを叩けるようにすると活用の幅がめちゃくちゃ広がって便利でした。Slackを使ったChatOpsをしている場合は、とりあえずSlackに投げておいてAPIから集計・可視化ということができるのは大体何にでも応用できそうです。id:m...2019-11-21木曜の夜はもくテク!!(Misoca冬のLT大会のご案内)こんにちは。