Phillips Hueを活用したインシデント通知

大変ご無沙汰しております。 自分が担当する記事では、

tech.geniee.co.jp

から実に約半年ぶりの投稿になります。

今回も唐突ではございますが、Phillips Hue

f:id:xxj:20150401211222j:plain:w100 http://www2.meethue.com/ja-JP

を使用して、Sensuからのアラートをランプで視覚化してみましたのでそれについて簡単にご紹介させていただきます。 Sensuについては弊社のhmikisatoの過去の記事

tech.geniee.co.jp

をお読みいただければと思います。

続きを読む

Pentahoを使ったデータ分析

明けましておめでとうございます。

2015年の第一弾はデータの分析に関する内容を紹介させていただきます。

今回紹介するのはオープンソースのBIツールPentahoを使ったデータ分析についてです。

Pentahoとは

PentahoとはオープンソースのBIツールです。

PentahoはBIスイートですので、レポーティング、アナリティクス、ダッシュボード、データ統合など様々な機能が用意されていて、これらの機能の中から必要な機能に限定して利用することもできます。

導入の背景

弊社では広告配信に関連するデータを集計して日々モニタリングしています。 データを分析する切り口はユーザによって様々であり、定型的なレポートを各ユーザごとに作成するのが難しい状況でした。 そこで、Pentahoのアナリティクス機能を導入し、ユーザがそれぞれ自分の見たい切り口でデータを分析できる環境を準備することになりました。

環境構築

PentahoとSaiku Analyticsを使ってデータ分析を行います。データを蓄積するDBにはMySQLを利用しています。

  • biserver-ce 5.2
  • Saiku Analytics 2.6
  • MySQL 5.x

MySQLはデータ分析用にレプリケーションされたものを利用します。 アナリティクス環境ではユーザが自由にクエリを発行できるため、広告配信用のDBとは分離して分析専用のDBを用意することにしました。

f:id:ptraft:20150106172848p:plain

今回はDBにMySQLを使っているため、Pentahoの設定ファイルでMySQLに接続するための設定を行う必要があります。

スキーマ設定

分析を行う前に、分析対象となるデータのスキーマを設定する必要があります。

キューブ、ディメンジョン、メジャーをそれぞれ設定します。

キューブとは多次元構造を表すもので、1つのデータソースとなります。 キューブに対して、分析を行う集計軸(ディメンジョン)と指標(メジャー)を設定します。

スキーマの設定はSchema Workbenchを使って行いましたが、ここでは詳細な操作方法については割愛させていただきます。

分析例

Saikuの操作は直感的に操作できるインターフェースとなっています。

ここでは、日付(Date)と広告のサイズ(Size)別にインプレッション(Impression)とクリック(Click)を抽出してみます。

まず、左側のMeasuresからImpressionとClickを選択します。 次にDimensionsからSizeを選択してColumnsに、DateのYear/Month/DayをRowsに設定します。 設定後にクエリを実行すると、画面右側のマトリックスが表示されます。 (※結果の数値は適当な値です)

結果のマトリックスをご覧いただければ分かるように、日付、広告サイズ別のインプレッションとクリックが指定した行列形式で表示されます。

f:id:ptraft:20150106201137p:plain

今回はシンプルなキューブを作成して分析を行いましたが、実際にはディメンジョン、メジャー共に10種類以上の項目を設定して利用しています。

Pentaho構築前は細かな集計をエンジニアに都度依頼して集計してもらう必要がありましたが、Pentahoの構築によって利用者は項目を自由に選択して分析できるようになりました。

エンジニアに依頼して集計してもらう場合は依頼するハードルやコスト、結果が出るまでに時間がかかる等、いろいろな問題が発生してしまいますが、これらの問題を少し解決できたのではないかと思います。

便利な時系列データベースのInfluxDBと、その可視化ツールGrafanaについて

今回は、前回の記事で少し話題に出したデータベースのInfluxDBと、その可視化フロントエンドのGrafanaについて紹介していきたいと思います。 InfluxDBは、単純に利用するだけならばMySQL等のRDBMSと似た感覚で使用する事ができ、監視系のデータをとりあえず入れておくという用途にはぴったりのデータベースです。 GrafanaはInfluxDBに入れたデータを綺麗なグラフにして表示する事ができ、複数のグラフをまとめたものをダッシュボードとして保存して、いつでもそのグラフセットを簡単に呼び出すなど、機能も豊富な可視化ツールです。

続きを読む

CactiをSensu(とInfluxDB)で置き換えた話

今回は、弊社のインフラを監視しているシステムについて紹介させていただきます。

広告の配信は24時間365日行われなければならないので、一旦配信サーバが落ちてしまうと大変な損害になります。 弊社の配信サーバに限らず、止まってはいけないサーバに対しては、ほぼリアルタイムでサーバの状態を監視するシステムが動いていると思います。このような監視システムの例として、 CactiZabbixMuninなどが知られています。 これらのシステムは、サーバの状態を監視および記録し、異常を検知した時には、メールなどで通知を行います。

システムを置き換えるに至ったモチベーション

弊社ではこのシステムとしてCactiを使用していましたが、事業が拡大していくにつれて、 監視システムを運用していく面で色々と使いづらくなっていきました。 弊社で運用していたCactiの問題点としては、

続きを読む

AES-NIという加速装置のお話

今回は、暗号の話をしましょう。といっても、難しい数学の話をするわけではありませんよ。ただ、数個のコマンドをたたくだけです。

インターネットという開かれた空間の中であんまり収集されると困る情報をやりとりするのに暗号は重要です。弊社では広告配信のステータスをユーザのブラウザを介して送受信するので、そこで最も暗号化処理が活躍します。

私の勝手なイメージですが、ブロック暗号の中ではBlowfishが処理速度が速いと思っていました。他にも3DESやAESといったよく使われる暗号方式はありますが、それらはBlowfishと比べて暗号強度は強いが処理は遅いものだと思っていました。しかし、世の中にはAES-NIという加速装置があるではありませんか! この加速装置がどのくらいの性能であるのかみてみましょう。

AES-NIは、AES (Advanced Encryption Standard)専用のCPU命令群です。AESのために専用の回路がCPUの中にあるわけです。CPUに足し算やかけ算をさせるのと同じように、AES(の処理の1ステップ)をやれ、と命令できるわけです。さすが暗号標準と言われるだけありますね。すさまじい優遇措置です。

続きを読む