Y-Ken Studio

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

みんなのGO言語、いよいよ発売です(書評)

GO言語いいですよね。学習しやすくパフォーマンスも良く、メモリ管理が楽で、さらにワンバイナリも作れると。 コマンドラインツールなどもGo言語でさくっと書けば、ワンバイナリで非常に便利な物ができあがります。 今回「みんなのGO言語」をsuzuken (@suzu_…

Appraisalを用いた、Fluentdプラグインの後方互換性を保てるテスト方法 #Fluentd

2015年にはFluentd v0.12系が主流となってきましたが、まだ古いv0.10系を利用している環境も残っていると思います。 プラグイン開発する上では、Fluentdの後方互換性が保てているかのテストもTravis-CIで行いたいですよね。 その時にどのように行うのか、メ…

Travis-CIでapt-get installに失敗する時の対処法

最近はTravisCIでの不可解なエラーのためgem update bundlerを追記する対応が必要になり話題となりましたね。 なんと今度は、今まで動いていたapt-get installが、次のメッセージで失敗するようになりました。 E: Unable to locate package libgeoip-dev さ…

Fluentdのレコードにホスト名を付与する最良の方法

Fluentdでログを集める時にそのサーバのホスト名(hostname)をレコードに追加したい。 そういう時に便利な設定サンプルを紹介します。 ユースケース tailプラグインで収集したApacheのエラーログに、ホスト情報を付与する その他、ございましたら教えてくだ…

Rubyで全角英数字を半角英数字にnkfで変換する時の落とし穴

RubyでUTF-8文字列の全角英数字の表記揺れを統一したいとき、 気をつけないと希に文字化けする事象を見つけたのでメモします。 NKFを用いて全角英数字→半角英数字に変換する方法 ググるとよく出てくる方法は次の通りです。 もちろん、問題なく普通に動きます…

jqコマンドをsudoを使わずにインストールし、PATHを通す方法

JSONデータをコマンドラインでフィルター出来るjqコマンド、便利ですよね。 割と新しいepelリポジトリであれば、yum -y install jqで使えるようになります。 しかし次のようなケースでは大抵フルパスでバイナリを指定するのではないでしょうか。 root権限は…

データ可視化アプリの新星、PrometheusをCentOSにインストールする方法

SoundCloudが内製しているモニタリングシステム「Prometheus」がいま気になっております。 時系列データベースを用いた柔軟なクエリ言語を用い、ダッシュボードによる可視化やアラート機能もあるそうです。 Prometheus: Go言語で書かれたモニタリングシステ…

elasticsearchのファイルディスクリプタを監視する

elasticsearchはLuceneをベースにしているため、細かい粒度でのファイルを多く生成します。 そのため "too many open files" エラーが発生して停止しないよう、安定稼働のためには日頃のリソース監視が必要です。 では、どのようにファイルディスクリプタの…

どこでもオンライン♪ 人工衛星経由でリモート作業を進めるテクニック

こんにちは、某L社のAdventCalendarの25日目を担当する事になりました、よしけんさんです。 「人工衛星経由でインターネットできる」と聞いたら、なんだか未来感があってワクワクしませんか? これさえ持っていれば、どんな過酷な旅をしていようとも通信でき…

FluentdでURL付きツイートを漏れなく収集する方法

Twitterで言及されている様々な記事のURLを収集したいと考えた時、次の方法が選択肢となります。 定期的にAPIを叩く ストリーミングAPIを使う 前者の方法では単位時間毎のAPIコール制限を容易に超えてしまうので避けたいところですね。 そこでストリーミング…

要確認!GitHubでうっかり放置してしまったIssueやPullRequestを検索する方法

git

GitHubで後で見ておこうと放置してしまったIssueやPullRequestはございませんか? ブラウザUIで見られるダッシュボードからはPull RequestsやIssuesが見られますが、 その一覧には自分のリポジトリへ第三者が発行したIssueやPull Requestはありません。 この…

実は簡単なFluentdプラグインのv1-config対応テストの書き方

Fluentd Advent Calendarの4日目は、Fluentdプラグインを数多くメンテナンスする@yoshi_kenがお届けします。 Fluentdはその拡張性の高さから、数多くのプラグインがリリースされております。 これをご覧になる方の中には、プラグインを自作された方もいらっ…

elasticsearchのクラスタで利用するNICをインターフェース名で指定する方法

複数のインターフェースを搭載するマシンでelasticsearchをクラスタ稼働させると、1つ目のインターフェースのIPを対向クラスタへ返します。そのため、1つ目のインターフェースでクラスタ同士の疎通が出来ない構成で稼働させるには、network.publish_hostの調…

ElasticsearchのLogstash形式インデックスをお手軽に削除するワンライナー

photo by Irina Souiki elasticsearchのlogstash形式インデックスを、定期的にcronで削除したいときに便利なワンライナーを紹介します。 使うコマンドはdateとcurlのみという大変シンプルなものですので、環境を選びません。

データ可視化に便利なkibanaは、elasticsearchのsiteプラグインとして構成すると便利 #fluentd

Fluentdなどから収集したメッセージをelasticsearchへ格納してKibanaで可視化するソリューションは素晴らしく、とても人気があります。 しかしそれだけのためにApacheやNginxなどのWEBサーバを新たに起ち上げるのは手間ですよね。 実は新たに起ち上げない方…

Fluentdのお勧めシステム構成パターンについて発表しました

2014年9月9日開催の『サーバ/インフラエンジニア養成読本 ログ収集〜可視化編』 出版記念!執筆者が語る大講演会!にて発表してきました。 今回は「Fluentdのお勧めシステム構成パターン」というタイトルで、ユースケース毎にどのようなシステム構成をすると…

Fluentd、Kibana、Elasticsearch本の電子書籍版が発売開始&Fluentdステッカーが購入特典で付録する都内某書店を紹介

Fluentd、Kibana、Elasticsearchを大特集した本書は好評を集め、Amazonを始めとする大手書店でもベストセラー入りしております! そんなログ収集から可視化を実現するためのノウハウが凝縮された本書は、フロントエンジニアの方にも大変おすすめです。 さら…

ログ収集や可視化で話題のFluentd、Elasticsearch、Kibanaを徹底解説したムック本が発売となります

2014年8月8日、ログ収集や可視化を始めたいエンジニア必携の書籍が技術評論社より刊行されます。 本邦初公開となる、全編書き下ろしの特集で構成された本書を読むことで、ログ解析の有用性からログ収集、保存、可視化手法を習得できます。 私はこの第2特集「…

SoftBank携帯とnet.ipv4.tcp_tw_recycle=1の相性が悪い本当の理由

photo by saschaaa LinuxにおいてTIME_WAITなコネクションを減らす手法としてnet.ipv4.tcp_tw_recycle=1にするテクニックは有名です。 しかし環境によってはSoftBankに限らず問題が起きるため、利用には注意が必要です。 一体どのような問題が起きるのか、詳…

5分あれば出来る、Muninでelasticsearch 1.xのリソース監視を行う方法

JVMで動くelasticsearchを安定運用させるにはリソース監視も欠かせません。 今回は手軽なリソース監視が出来るMuninを用いて、インストール方法から作られるグラフサンプルの紹介まで行います。 利用プラグイン elasticsearch 1.x系で動くプラグインは現状こ…

プロキシを使わずにRuby-1.9/2.1混在環境も作れる、Apache2+Passenger4+rbenvを用いた混在環境の作り方

Passenger 3.x で複数のRubyバージョンを使い分けるには、とてもトリッキーな対応が必要でした。 ところがPassenger 4.0.0 より公式に複数のRubyバージョンに対応しました。つまり、同一筐体のApacheで動く他アプリケーションへ影響を与えることなく、気軽に…

MySQLからelasticsearchへ、レコードをネスト構造化しつつ同期出来る fluent-plugin-mysql-replicator v0.4.0 を公開しました

elasticsearchは全文検索サーバとしても知名度を獲得しており、次のような記事も人気を集めています。 elasticsearchを全文検索サーバとして活用するなら読んでおきたい、6つのブログ記事をピックアップ - Y-Ken Studio http://y-ken.hatenablog.com/entry/e…

elasticsearchを全文検索サーバとして活用するなら読んでおきたい、6つのブログ記事をピックアップ(追記あり)

LuceneベースのNoSQL全文検索サーバ、elasticsearchはログ解析の収集先として取り上げられることが多いですが、優れたNoSQL全文検索サーバでもあります。 日本でも2013年末頃から続々とブログ記事や利用事例が増えている注目の技術でもあります。 今回は、そ…

プレースホルダ設定に対応した fluent-plugin-geoip v0.1.1 をリリースしました

GeoIPを用いてIPアドレスを元に位置情報をレコードに付与するFluentdプラグイン、fluent-plugin-geoip v0.1.1をリリースしました。 今回の目玉は、GeoIP判定対象の複数キー対応化と、プレースホルダ記法への対応するための設定ファイル仕様の変更です。 http…

Fluentdでelasticsearchの一般ログ・スロークエリログを収集する設定

FluentdのtailプラグインでElasticsearchのログを収集する方法を紹介します。

不正バイト文字列対策済の fluent-plugin-rewrite-tag-filter v1.4.1 をリリースしました #fluentd

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

タグ書き換えが捗るFluentd用Mixinプラグイン「Fluent::Mixin::RewriteTagName」を公開

fluent-mixin-rewrite-tag-nameというFluentd向けMixinプラグインを公開しました。 このMixinプラグインは、<source>や<match **>の中で使えるtagオプションを追加します。 タグ書き換え周りのプラグイン実装の省力化ができますね! https://github.com/y-ken/fluent-mixin-rew</match></source>…

LXCベースのDockerゲストマシンとホストマシンのディスクI/O性能を比較検証(Bonnie++編)

dotCloudが開発しているLinuxコンテナ型仮想ソフト「Docker」が巷で話題ですね! これはLXCにストレージドライバとしてunionfsから派生したaufs(CentOSではLVMのThin Provisioning)を組み合わせた所がキモで、つまりファイルシステムの差分管理が出来る特…

elasticsearch-1.0.0正式版がリリースされたので、0.9.xからのアップグレード手順をまとめました(追記あり)

Elasticsearch 1.0.0 released ということで、早速アップデートしてみました!

第3回elasticsearch勉強会でトークしました #elasticsearchjp

2014年2月7日にリクルートテクノロジーズで開催された「第3回 ElasticSearch勉強会」でトークしてきました!前回の皆様の発表はKibanaに関する情報がメインでしたが、今回は検索技術中心のガチな内容でとても楽しかったです。 懇親会では今回発表したYamabik…

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型になっていること、ご存じでしょうか。 それ…