Y-Ken Studio

新しもの好きのデータエンジニアが四方山話をお届けします。

MySQLテーブルへの更新/削除イベントを逐次取得するFluentdプラグイン「fluent-plugin-mysql-replicator」をリリースしました

任意のSQLクエリで取得した結果の差分から、insert/update/deleteイベントを検知するプラグインをリリースしました。イベント検知だけでなく、レコードの内容と共にElasticsearch/Solrへ同期を行う、Outputプラグインも同封しています。 これはあえてバイナ…

個人情報を難読化するfluent-plugin-anonymizerの安定版をリリースしました #fluentd

photo by minnepixel 突然ですが皆さん、アプリログをFluentdで収集する際に個人情報となるデータの扱い、どうしていますか? こういったログデータは個人情報保護や内部統制の観点から、データマスキングをしてから分析した方が好ましいです。 しかしながら…

Fluentd+Elasticsearch+Kibana構成で便利な、logstash形式インデックスの粒度をカスタマイズする方法

fluent-plugin-elasticsearchやKibanaのデフォルトであるlogstash形式では、年月日毎にインデックスを作成されて使われることを想定されています。 これは扱いやすいのですが万能では無く、次のような状況ではパフォーマンス的な観点で、このインデックスの…

Fluentdのタグ書き換えが捗る「tag_parts」プレースホルダを使ってみよう

Fluentdでログのちょっとした加工をする際に、タグの付け替えが必要です。 新しいタグを指定するか、先頭文字列の付け替えを行う手法が良く使われます。 しかしそれだけではかゆいところに手が届かず、もどかしい思いをされたことでしょう。 そんな時、タグ…

MySQLでMyISAMからInnoDBに乗り換える際に知らないとハマる、怖い話

photo by byte MySQLといえば、巷ではInnoDBばかり注目され、MyISAMの地下アイドル化がにわかに語られる今日この頃、皆様いかがお過ごしでしょうか。 まあカジュアルにストレージエンジンを変換するだけで済むなら、簡単なのです。 -- legacy_my_tableをInno…

Fluentdが流行る理由がいま分かる、10の実践逆引きユースケース集

ログデータを活用してビジネスに役立てようという最近のトレンドは理解できる。 しかし、なぜログ収集ソフトウェアのFluentdがこれほどまで話題になるのか、不思議に感じている方もいるのではないだろうか。単にログデータを収集するならばsyslog-ngやrsyslo…

第2回 ElasticSearch勉強会で発表してきました&参加レポート #elasticsearchjp

2013年11月12日にリクルートテクノロジーズで開催された「第2回 ElasticSearch勉強会」に参加&発表しましたので、レポートします。 発表テーマ 「ElasticSearch+Kibanaでログデータの検索と視覚化を実現するテクニックと運用ノウハウ」というテーマで発表し…

全文検索付きMySQL5.0から5.6への移行にまつわるお話をMySQL Casual Talks Vol.5にて発表しました #mysqlcasual

MySQL5.0から5.6へ移行するにあたり、全文検索機能をTritonnからmroongaへ乗り換えるというプロジェクトの体験記をお届けします。2013年10月25日開催のMySQL Casual Talks Vol.5での発表資料です。

2013年10〜12月開催の勉強会への登壇予定をお知らせします

この秋には3つの勉強会でお話させて頂けることになりました。 いずれも、データベース周りのお話を行う予定です。 photo by mari ce

fluent-plugin-geoip v0.0.4 をリリースしました。ElasticSearch+Kibanaの世界地図に位置情報をプロットするために必要なFluentdの設定サンプルも紹介します

fluent-plugin-geoip v0.0.4をリリースしました。 今回は主にGeoLiteCityデータベース参照パスの不備の修正とREADMEの加筆を行いました。 https://github.com/y-ken/fluent-plugin-geoip http://rubygems.org/gems/fluent-plugin-geoip 修正内容の説明に続け…

ElasticSearchに関するスライド・資料まとめ

ElasticSearchについて理解が深まるスライドをまとめました。

mruby版MessagePackを利用して著しい性能向上を果たしたmruby-fluent-logger v0.0.2をリリースしました

mruby-fluent-logger (別名 fluent-logger-mruby) のv0.0.2をリリースしました。 今回の目玉は、シリアライズエンジンの変更です。 これまでのJSONから、suzukazeさんにより移植されたmruby-msgpackへ切り替えることで、パフォーマンスが向上しています。 ht…

有料版GeoIP Cityの料金体系や、無料版GeoLite Cityとの精度の違いについて調べてみた

IPアドレスを元に位置情報を返すデータベース、GeoIPがあります。 こちらの料金体系や精度について調査したので、まとめました。

初の安定版 fluent-plugin-geoip v0.0.3 をリリースしました #fluentd

初の安定版となるfluent-plugin-geoip v0.0.3をリリースしました。 今回は主に安定性の向上と、READMEの加筆を行いました。 https://github.com/y-ken/fluent-plugin-geoip http://rubygems.org/gems/fluent-plugin-geoip 例えばこれをWebサーバのアクセスロ…

「Fluentdコア&プラグイン開発ハッカソン」に参加し、Fluentd v11向けにプラグイン移植を実践してみた話

Fluentdコア&プラグイン開発ハッカソン #1 &生ハム原木会へ行ってきました。 ふっふはっほさんのオフィス白金台にあるなんて素敵です。 私はこれらをテーマに、もくもくと開発をしました。 fluent-plugin-geoipの作成とリリース 既存プラグインのFluentd v…

IPアドレスを元に位置情報をリアルタイムに付与する fluent-plugin-geoip v0.0.1をリリースしました #fluentd

FluentdのレコードにあるIPアドレスを元に位置情報を付与するプラグインをリリースしました! これを使えば、Maxmind社の提供するGeoIPというデータベースを利用してリアルタイムに位置情報を付与できます。 パフォーマンスを重視するため、BufferedOutputを…

Thunderboltケーブルを使わないターゲットディスクモードの使い方

2013年に発売されているMacにはFireWire端子は無くなり、Thunderbolt端子に取って代わりました。 新しい機種に乗り換えた時など、古いMacとターゲットディスクモード(Macを外付けハードディスク化するモード)を使ってデータの転送を行いたいケースがありま…

Twitterクライアント"twicca"が利用する写真共有サービス"via.me"が閉鎖。twiccaの延命方法と、過去にアップロードした写真の回収方法を紹介します。

twiccaの一時的な不具合でアップロードできないのかと思いきや、 なんと連携先であるvia.meが閉鎖していることによるトラブルでした。 これは影響が大きいですね。

MySQLサーバのディスク容量減少アラートが飛んできた!ってときにどう対処するか

MySQLサーバで希に遭遇するディスク残量障害事例と共に紹介します。 こちらは、以下エントリよりネタをパクりましたインスパイアしました。すみません。 Linuxサーバがディスク容量不足になった!何か消さねば!ってなった時にどう対処するか - 元RX-7乗りの…

Fluentdのレコードが全てString型になるアレな挙動を改善するpull-reqを出した話

Apache/Nginxのアクセスログやローカルファイルから、Fluentdのin_tail機能を使ってログを収集しているケースはあると思います。この時、元々は123といった数値や123.45といったfloat型だったものが、全てString型になっていること、ご存じでしょうか。 それ…

不具合修正版 fluent-plugin-rewrite-tag-filter v1.3.1 をリリースしました #fluentd

ログ収集ツールFluentdに、Apacheのmod_rewriteのようにtagを自在に書き換える機能を追加する、fluent-plugin-rewrite-tag-filterのv1.3.1をリリースしました。 https://github.com/y-ken/fluent-plugin-rewrite-tag-filter http://rubygems.org/gems/fluent…

mrubyからイベントログ収集ツールFluentdを扱う"mruby-fluent-logger"を公開しました

イベントログ収集ツールFluentdに、mrubyからも構造化ログデータを送りたい。 その情熱に勢いを任せて、"mruby-fluent-logger" を作りましたので公開します。 これを使えば、C/C++アプリに組み込んだmruby等からFluentdを容易に扱えますね。 そんな"mruby-fl…

安定性を強化した fluent-plugin-munin v0.3.2をリリースしました #fluentd

ログ収集ツールFluentdで、リソース監視データも収集可能となる fluent-plugin-munin v3.0.2をリリースしました。 多数のMunin向けプラグインで採取できるデータを、お好みの間隔でFluentdに流すことが出来ます。 https://github.com/y-ken/fluent-plugin-mu…

待望の正規表現の否定パターンに対応した fluent-plugin-rewrite-tag-filter v1.3.0 をリリースしました #fluentd

ログ収集ツールFluentdに、Apacheのmod_rewriteのようにtagを自在に書き換える機能を追加する、fluent-plugin-rewrite-tag-filterのv1.3.0をリリースしました。 https://github.com/y-ken/fluent-plugin-rewrite-tag-filter http://rubygems.org/gems/fluent…

fluent-plugin-rewrite-tag-filter v1.2.1 をリリースしました。設定サンプルと共にプレースホルダ機能強化内容を紹介します。 #fluentd

ログ収集ツールFluentdに、Apacheのmod_rewriteのようにtagを自在に書き換える機能を追加する、fluent-plugin-rewrite-tag-filterのv1.2.1を先日リリースしました。 https://github.com/y-ken/fluent-plugin-rewrite-tag-filter http://rubygems.org/gems/fl…

gihyo.jpにて、MySQLで使える全文検索プロダクトmroongaに関する連載を始めました

MySQL 5.0+Sennaという組み合わせの「Tritonn」が広まり始めたのは2008年頃でしたでしょうか。 あれから月日が経つこと5年。2013年となった今、ドキュメントが陳腐化するMySQL 5.0を捨て、MySQL 5.6で使える全文検索プロダクト「mroonga」へ移行しようとあ…

InnoDBはALTER TABLE ○○○ ORDER BY ○○○ DESC;で並び替え済みテーブルを作れない

MyISAM全盛時代には、こんな参照性能高速化手法がありました。 ALTER TABLE foo_table ORDER BYsortDESC;といったクエリで予めテーブルの内容を並び替えておくことで、SELECT時のORDER BY句が省略出来るというものです。 しかしこれ、InnoDBでは使えないので…

mroongaで「API version for STORAGE ENGINE plugin is too different」というエラーが起きたときの対処法

以下のエラーが起きてしまった時の対処法を紹介します。 2013-06-04 17:36:01 21440 [ERROR] Can't open shared library 'ha_mroonga.so' (errno: 0 API version for STORAGE ENGINE plugin is too different)

Git小技:実例で見る、別ブランチの差分をrebaseやmerge以外で取り込む方法

git

ブランチを切ってから時間が経過し、大本のmasterないしdevelopブランチのコミット内容を取り込みたい時のお役立ちメモ。 使えるシーン fast-forwardでの取り込みはこんな時に便利です。 緊急リリースなどで、git-flowのお約束であるdevelopブランチを経由せ…

mysqldumpで作ったSQLファイルを流し込んだときに'multiple triggers with the same action time and event for one table'というエラーが起きたときの処方箋

とある日のこと、MySQL-5.6環境にてmysqldumpを行いつつmysqlコマンドでデータを流し込んでいると、以下のエラーが発生して止まりました。 そんな時はmysqldumpコマンドの引数に--skip-triggersを追加しましょう。