実は便利な Redash の「アラート機能」

今日は「Redash Advent Calendar 2017」11日目の記事として,初心者向けに,Redash のアラート機能を紹介したいと思う.

qiita.com

Redash Advent Calendar は既に7日目にも記事を書いた.ハンズオン資料には今回紹介するアラート機能も含めているので,是非合わせて見てもらえると!

kakakakakku.hatenablog.com

アラート機能

「データ可視化ツールとして」 Redash を活用している人は多いと思うけど,アラート機能はそこまで普及してないように感じる.データを可視化するだけではなく,値が異常値に達した場合にアラートを通知することもできるので,「業務データのモニタリングツールとしても」 Redash を活用できる.さぁ,今すぐ試してみよう!

公式ドキュメント

仕様などは,公式ドキュメント(最近ドメインが変わった)に詳しくまとまっている.

help.redash.io

ポイントとなる部分を箇条書きにしてみた.

  • パラメータ付きクエリはアラート機能で使えない(特定のクエリを定期的に実行してモニタリングをするため)
  • アラートの通知先は全部で4種類ある
    • Email
    • Slack
    • HipChat
    • Webhook
      • IFFFT など,好きなように連携することもできる
  • アラートの状態は全部で3種類ある
    • TRIGGERED ... アラートに設定した閾値を超えた状態
    • OK ... アラートに設定した閾値を超えていない状態
    • UNKNOWN ... まだクエリの実行ができていない状態
  • 再通知のハンドリングは Rearm に設定する
    • ブランク ... ステータスに変化があったときに1度だけ通知する
    • 秒数 ... ステータスが TRIGGERED になっているときに,指定した秒数ごとに再通知を行う

Slack Incoming WebHooks

今回は Slack を通知先にして紹介する.まずは,Slack で Incoming WebHooks の設定画面を開く.基本的には Webhook URL が取得できれば良いけど,以下も合わせて設定しておくと便利.

  • Customize Name を「Redash Alerts」など,すぐわかる名前にしておく
  • Customize Icon に Redash のアイコンなどを設定しておく

f:id:kakku22:20171210035230p:plain

Alert Destination

次は,Redash の設定画面から通知先を登録する.右上にある設定アイコンをクリックし,Alert Destination の登録画面に遷移する.既に Slack Incoming WebHooks 側に設定をしているため,ここでは Slack Webhook URL を設定するだけで良い.設定を上書きすることもできる.

f:id:kakku22:20171210035249p:plain

クエリに定期実行の設定をする

詳しくはハンズオン資料を見てもらうとして,アラート機能を使う場合は,モニタリング対象にするクエリを定期実行する必要がある.よって,クエリの設定で Refresh Schedule を設定する.

アラートを設定する

最後はアラートを設定する.設定項目は大体見ればわかると思うけど,Op は以下の3種類から選ぶ必要がある.あと,右側にある Notifications で,通知先を選択する.複数の通知先に通知することもできる.

  • Op = Operator
    • greater than ... 閾値より大きい場合
    • less than ... 閾値より小さい場合
    • equals ... 閾値と一致する場合

f:id:kakku22:20171210035302p:plain

すると,Slack に通知ができる.

f:id:kakku22:20171210035313p:plain

複数の閾値を考慮する

もし,複数の閾値を考慮してアラートを通知したい場合は,クエリ側で閾値のチェックを用意し,もし 1 が返ってきたらアラートを通知するという工夫で回避することができる.これは公式ドキュメントにも書かれている.もしくは Python Datasource などを活用して,カスタムクエリを作ってしまう方法もあると思う.

help.redash.io

残念なところ

現状だと,Slack に通知される情報が少ないため,実際にクエリ結果を見に行く必要がある.例えば「閾値」と「トリガーした値」も通知するなど,Slack を見るだけで,最低限の状況がわかるようになれば,より便利に使えるとは思う.

まとめ

  • Redash は「データ可視化ツールとして」だけではなく「業務データのモニタリングツールとしても」活用できる
  • Email / Slack / HipChat / Webhook に通知できる
  • Rearm を設定すれば,再通知のハンドリングもできる

引き続き Redash Advent Calendar 2017 を盛り上げていきましょ!

GitHub 新作パーカー : Reflective Hoodie を安く購入した

11月に発売された GitHub 新作パーカー : Reflective Hoodie が欲しくて,3年振りに GitHub Shop で購入してみた.予想以上に安く,スムーズに購入できて驚いたので,紹介も兼ねて整理しておこう.

3年前を振り返る

3年前に GitHub Shop で購入したときに「送料と税金が高すぎたり」「二重決済になって揉めたり」して,ツラかった過去があり,その後は GitHub Shop で購入しないようにしていた.詳しくはブログ記事に書いてある.ただし,購入した GitHub グッツは今もずっと愛用していて,本当にカッコイイ!

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com

購入

今回は計3点を購入した.GitHub パーカーは本当に暖かくて冬には重宝するからオススメ!(黒もよく着てる)

金額

まず,GitHub Shop では Free shipping (over $75) になるため,購入する場合は $75 を超えるように購入するのをオススメする.さらに今回は期間限定のクーポンコードも適用して 30% 割引になった!ちなみに GitHub 公式 Twitter を見るとクーポンコードを公開している場合があるため,定期的に見ておくと良いかと.

結果的に3点を購入して $94.5 となり,非常に安く購入できた.

f:id:kakku22:20171210015711p:plain

配送

予定より1日早く,たった8日間で配送された.3年前も9日間で配送されていて,海外輸送も安定していると思う.

  • 2017/11/26 (日) 購入
  • 2017/12/04 (月) 配送完了

まとめ

  • 3年振りに GitHub Shop で購入をした
  • $75 を超えるように購入すると配送料が無料になる
  • 公式 Twitter に出るクーポンコードを使うと安く購入できる
  • Reflective Hoodie を着て最高のエンジニアリングをするぞ!

関連記事

The GitHub Blog には技術情報だけじゃなく GitHub Shop の新発売情報も流れてくるから最高に便利!

github.com

re:Invent 2017 で発表された Launch Templates を使って簡単にインスタンスを起動する

re:Invent 2017 で発表されたアップデートの中で,比較的地味ながら,個人的に嬉しかった機能が「Launch Templates」だった.簡単に言うと「インスタンスの起動オプションをテンプレート化して管理することができる機能」と表現できる.対象はオンデマンドインスタンスだけではなく,オートスケーリングでも使えるらしく,さっそく試してみた!

なぜ嬉しいか

正直言って,インスタンスの作成で管理コンソールをポチポチする場面がまだあって,CloudFormation / AWS CLI などに移行できないような環境もある.そういうときに,管理コンソールをポチポチする手順書を作ったり,CLI のオプションを Wiki にまとめたりするんだけど,属人化する感覚があるし,オペレーションミスが起きる可能性もあるので,そのリスクを軽減できる「Launch Templates」は非常に助かるなーと思っている.そういう需要が多いってことなのかも.

公式ドキュメントを読んだ

試す前に公式ドキュメントをザッと読んで,ポイントを洗い出した.

  • 起動テンプレートにバージョンを付与することができる
    • 自動的にバージョンが割り当てられる
    • デフォルトバージョンという概念がある
  • 起動テンプレートに制限がある
    • リージョンごとに最大1000個まで作れる
    • 起動テンプレートあたり,作れるバージョンは10000個まで
  • 起動テンプレートに設定するオプションは任意で,設定しても良いし,起動時に設定しても良いし,起動時に上書きしても良い
    • ただし,起動時に起動オプションを無効化することはできないため,その場合は起動テンプレートで設定しないでおく
  • 起動テンプレートを保存するときにバリデーションは行わないため,起動時にエラーになる場合がある
  • IAM ポリシーで,操作できる起動テンプレートを詳細に制限することもできる

docs.aws.amazon.com

テンプレートを作る

管理コンソールから「EC2 → Launch Templates」で,設定画面を開くことができる.設定画面としては,あまり凝った感じではなく,項目がズラリと並んでいる感じだった.テンプレートとして設定できる項目はドキュメントに載っている通りでかなり多く,例えば以下などがある.重要なのは「テンプレート名以外は必須ではない」という点で,共通化が必要な部分だけを設定しておくことができる.

  • Launch template contents
    • AMI ID
    • Instance type
  • Network interfaces
  • Storage (Volumes)
  • Tags
  • Security groups
  • Advanced Details
    • IAM instance profile
    • User data

f:id:kakku22:20171208004602p:plain

ただし,設定画面がシンプルすぎて,入力補完などもなかったため,このあたりは改善できそうな気がする.例えば「Key pair name」や「セキュリティグループ」は,存在する候補の中から選べるようになっていないと間違える可能性があるけど,ドキュメントにも以下のように書いてあるので,間違えないように,意識的に正しく設定をする必要がある.とは言え,最低限のバリデーションはして欲しいかなー.

Launch template parameters are not validated when you create the launch template. Ensure that you specify the correct values for the parameters and that you use supported parameter combinations.

f:id:kakku22:20171208004617p:plain

テンプレートから起動する

あとは,インスタンスを作成するときに「テンプレートからインスタンスを起動する」ボタンを押して,テンプレートを修正しながら最終的な項目を決めていく.なお,ここでテンプレートを修正しても,テンプレートには反映されないため,注意すること.このままインスタンスを起動することができるため,ポチポチする量が圧倒的に減った!

f:id:kakku22:20171208004638p:plain

ただし,インスタンスを起動しようとしたら,以下のようなエラーが出ることがあったので,テンプレートの修正と,インスタンスの起動を何度も繰り返す必要があった.

  • The parameter iops is not supported for gp2 volumes.
  • Parameter encrypted is invalid. You cannot specify the encrypted flag if specifying a snapshot id in a block device mapping.

AWS CLI からテンプレートを使って起動する

起動テンプレートがあれば,CLI で簡単にインスタンスを起動することができる.CLI を最新版にすると --launch-template オプションが使えるようになるため,ここに LaunchTemplateId を指定するだけで良い.もしデフォルトバージョン以外で起動する場合は Version も指定する.圧倒的に簡単になった!

$ aws --version
aws-cli/1.14.5 Python/2.7.13 Darwin/15.6.0 botocore/1.8.9
$ aws ec2 run-instances --launch-template '{ "LaunchTemplateId": "lt-11111111111111111" }'

http://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html

バージョンを消す

起動テンプレートを実際に作ってみるとわかるけど,バリデーションが行われないため,インスタンスを起動しようとしてテンプレートがエラーになることが非常に多かった.なので,エラーになるバージョンが大量にできることになり,これは消さないと事故に繋がってしまう.管理コンソールからバージョンを選んで消すことができる.

また,珍しく便利だなと思ったのは「AWS CLI ならこうやって実行すれば良いよ」という「コマンドサンプル」が管理コンソールに表示されている点だった.今までこんな画面あったっけ?実際に試してみたら,問題なく表示されているコマンドでバージョンを消すことができた.

f:id:kakku22:20171208004909p:plain

オートスケーリングで使う

起動テンプレートは,オートスケーリングでも使えるとのことだったので,Auto Scaling Group の作成時に起動テンプレートを指定してみたけど,うまく動かなかった.詳しくはドキュメントに載っているけど,オートスケーリングで起動テンプレートを使う場合は「テンプレートを完全に作っておく」必要がある.設定を上書きする自由度がないとも言える.

You must ensure that your template includes all parameters required to launch an EC2 instance.

docs.aws.amazon.com

それは仕様として良いとは思うけど,Auto Scaling Group の保存時に出るエラーが完全に固定で,起動テンプレートのどこにミスがあるのか判断できず,かなり厳しかった.エラー内容を詳細に表示するようになると嬉しい.

f:id:kakku22:20171208005034p:plain

まとめ

  • re:Invent 2017 で「起動テンプレート (Launch Templates)」が発表された
  • 起動テンプレートを使うと,インスタンスの起動オプションをテンプレート化して管理することができる
  • 管理コンソールでも,CLI でも,簡単にインスタンスを起動できるため,オペレーションの負荷軽減だけではなく,ミスの削減にも繋がる
  • 起動テンプレートを保存するときに設定のバリデーションが行われないため,起動時にエラーになる場合がある
    • 実際に試してみて,かなりエラーが出たので,最初の試行錯誤はそこそこハマりそう

参考「re:Invent 2017 速報」

re:Invent 2017 で発表されたアップデートをキャッチアップするなら Black Belt の資料が1番良いと思う.12/1 の Black Belt にも参加したけど,その後も何度も見直してるし,非常にまとまっていて素晴らしかった.Launch Templates も P.64 に載っている.

www.slideshare.net

Redash を詳しく学べる「Redash ハンズオン資料」を作った

今日は「Redash Advent Calendar 2017」7日目の記事として,最近作った「Redash ハンズオン資料」を紹介したいと思う.

qiita.com

Redash ハンズオン資料

全て GitHub に公開していて,誰でも学べるようになっているし,ハンズオンの対象者として Redash 未経験者だけではなく,経験者(初中級者あたり?)も含めている.是非,試してみてもらって,感想エントリーなどフィードバックをもらえると嬉しい.年末年始の課題にしてみるのはどうでしょー?

github.com

なぜハンズオン資料を作ったのか?

まず「Redash は知っていて興味はあるけど,まだ試したことがない」という人がそこそこ多いような気がしていて,未経験者が数時間で Redash の全体像を学べるようなコンテンツを作ったら価値があるのではないかと考えていた.そしてもう1点,Redash でクエリを作って,グラフを作って,ダッシュボードを作るという一般的なフローであれば,学習コストも少なくすぐに使えるようになると思うけど,Redash には「便利なのにあまり知られていない機能」が多くあり(ドキュメントには書いてあるんだけど...),この機能を仕事でメンバーに教える機会が多かったため,リファレンスとしてまとめたら価値があるのではないかと考えた.例えば,以下のような機能は,あまり知られていないように思う.

  • Counter グラフで目標値を設定できること
  • パラメータ付きクエリを作れること
  • フィルタ機能とマルチフィルタ機能で動的に検索条件を変えられること(貼った画像のように!)
  • クエリ結果に色を付けられること
  • ダッシュボードをグルーピングできること

この2点のモチベーションを整理した結果,ブログを書くのではなく「ハンズオン資料」として公開すると良さそうという結論になり,作ることにした.

f:id:kakku22:20171205114932p:plain

(マルチフィルタ機能)

「Redash ハンズオン資料」の活用方法

未経験者の場合

Redash 未経験者の場合は,ハンズオン資料を上から順番に試してもらうのが良いと思う.今回 Redash だけではなく,MySQL のデータセット(world データベース)も一緒に起動するように工夫しているため,「Redash は起動できたけど,接続するデータセットがない!」という状況にはならないようにしている.約2時間で,一通りは終わると思う.

経験者の場合

Redash 経験者の場合は,ハンズオン資料を一通り流し読みしてもらって,知らない機能が多いのであれば,上から順番に試してみてもらうのが良いと思う.もし,ほとんど知ってるけど,一部知らない機能があるのであれば,その機能だけを試してみて欲しい.もし仕事で使っている Redash 環境があるのであれば,そっちの環境を使うのも良いと思う.

環境

Docker Compose で起動できるようにしているため,最低限 Docker を動かす環境が必要になる.今回,以下の環境は実際に動作確認をしているため,問題なく使える.

  • Docker For Mac
  • Docker For Windows

また Redash のバージョンは,2017年11月時点で最新の Redash v2.0.1 を前提にしている.現在 Redash v3 は正式リリース待ちという状態で,Redash v4 は絶賛開発中という状態なので,もし今後最新バージョンが変わる場合は,ハンズオン資料も更新する可能性がある.

Redash Meetup 開催

今日紹介をした「Redash ハンズオン資料」を公開したところ,id:ariarijp に「イベントを開催したらどうか?」と誘って頂き,12/19 (火) に Redash Meetup として「ハンズオンイベント」を開催することになった.そして今回,講師を担当させて頂くことに!

既に定員オーバー(キャンセル待ちも多数)という状況になっているけど,もし需要がありそうなら再演も検討できるため,直接ご連絡を頂ければと!(社内勉強会などに出張することも検討できるかも!)

connpass.com

さらに id:ariarijp が Redash 作者の Arik 氏に「ハンズオンイベント」を開催する旨を伝えたところ,Redash 公式アカウントからもシェアして頂くことができた!嬉しすぎる!

まとめ

  • 「Redash ハンズオン資料」を作った
  • Redash の「便利なのにあまり知られていない機能」を学ぼう!
  • Redash Meetup で「ハンズオンイベント」を開催するぞー!

github.com

2017年 : 登壇を振り返る

今日は「登壇者 Advent Calendar 2017」5日目の記事として,今年の登壇を振り返ると同時に,なぜ登壇するのか?というモチベーションの部分を整理してみたいと思う.なお,今回の記事ではアドベントカレンダー名を尊重して「登壇」という単語に統一し,「発表」や「プレゼン」という似た単語は使わないことにする.

adventar.org

登壇 : 計13回

今年の登壇は計13回で過去最高だった(実は今月もまだ登壇予定がある).

  • 勉強会 : 登壇9回
  • 社内勉強会 : 登壇4回

ちなみに,社内勉強会だとしても,基本的に全て資料を公開するように意識している.時系列で並べると以下のようになる.

振り返り

今年の登壇を振り返ると「大きく3点」良いことがあった.

1. 多種多様な技術テーマで登壇することができた

モニタリング / データベース / コンテナ / サーバレス / プロジェクトマネジメント / 組織マネジメントなど,多種多様な技術テーマで登壇することができたのは非常に良かった.それぞれ参加者の層が違うため,幅広く興味を持ってもらえたのではないかなと思う.特に今年は仕事に奮闘し,技術面でも組織面でも「何でもやる」という気持ちで進めてきたので,登壇ネタが尽きることはなかった.

2. 様々なスタイルの登壇を経験することができた

去年までは LT 専門のような感じだったが,今年は「5 min / 15 min / 25 min / 45 min / 80 min」と,様々な時間枠の登壇を経験でき,さらに「LT / セッション / パネルディスカッション」など,登壇スタイルの幅も広げることができた.LT では面白く簡潔に話したり,セッションではストーリーを意識して深く話したり,スタイル別に工夫して登壇することもできた.

3. 登壇後も注目を集める資料を作ることができた

登壇後に資料を公開し,資料がホッテントリに入ることも多かった.ストーリーを意識して,デザインも意識して,とにかく考えに考え抜いた資料ばかりなので,注目を集めることができたのは素直に嬉しかった.今後も誰かの役に立つ資料を作りたいと思う.

なぜ登壇するのか?

先週「なぜブログを書くのか?」というテーマで登壇したけど,アウトプットの形として,登壇のメリットは「ストーリーを参加者にダイレクトに伝えることができること」だと考えている.言い換えれば「共感が生まれやすい」とも言える.また,登壇者の「人柄(雰囲気)」が伝わることもメリットだと思う.僕が「プレゼン芸人」と呼ばれたりするのも「人柄(雰囲気)」が少なからず影響しているのではないかなと思っている.だからこそ,僕はアウトプットの形として,ブログと登壇をうまく併用することを意識している.

kakakakakku.hatenablog.com

登壇する技術

正直に言って,参加者に強い印象を残すには,登壇内容だけではなく「登壇する技術」が必要になる.今年はいろいろな人から「どうしたらうまく登壇できるか?」という相談があり,できる限りサポートもしてきた中で,体系化できた部分は既に記事を書いている.是非,参考にしてもらえればと思う.

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com

来年は?

来年も引き続き登壇をしたいと思うけど,単に登壇をするだけではなく,登壇や資料作成に悩んでいる人がいれば「教える活動」にも積極的に挑戦していきたいと思っている.登壇依頼,サポート依頼など,興味があれば気軽にご連絡を頂ければと!

最後に

登壇はいいぞ!

関連記事

developers.cyberagent.co.jp