サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
猫
y-ken.hatenablog.com
photo by minnepixel 突然ですが皆さん、アプリログをFluentdで収集する際に個人情報となるデータの扱い、どうしていますか? こういったログデータは個人情報保護や内部統制の観点から、データマスキングをしてから分析した方が好ましいです。 しかしながら、サーバにアクセス出来る人が限られるといった理由で問題の先送りをしているケースがあるかもしれません。 最近流行のログの見える化により、データマスキングされないまま多くの人がそういった情報にアクセス出来るようになっているのなら、余計にマズいですよね。 そこでデータマスキングを実現するfluent-plugin-anonymizerの出番です。 このプラグインを経由することで、文字列のハッシュ化と、IPv4/IPv6アドレスの丸め処理が出来ます。 リアルタイム分析用のElasticsearch+Kibanaといった検索ダッシュボー
fluent-plugin-elasticsearchやKibanaのデフォルトであるlogstash形式では、年月日毎にインデックスを作成されて使われることを想定されています。 これは扱いやすいのですが万能では無く、次のような状況ではパフォーマンス的な観点で、このインデックスの粒度を変更することを検討すると良いケースがあります。 粒度を細かくしたいケース(時間単位) 日毎のインデックス作成では、elasticsearchに割り当てたメモリ量を超えてしまう 粒度を荒くしたいケース(週単位/月単位/年単位) 日毎のインデックス作成では容量が小さく、日常的に検索する範囲が複数のインデックスに渡るとき Kibanaは年月日以外の粒度(時間・日・週・月・年)にも対応していますので、変更することも容易です。これは次の2つの設定変更で適用できます。 ログ収集を行うElasticsearchへ流し込む、
Fluentdでログのちょっとした加工をする際に、タグの付け替えが必要です。 新しいタグを指定するか、先頭文字列の付け替えを行う手法が良く使われます。 しかしそれだけではかゆいところに手が届かず、もどかしい思いをされたことでしょう。 そんな時、タグをドットで分解した要素毎に分解して使えるプレースホルダが大活躍します。 この記事を読めば、これがなぜ今まで無かったのか不思議に感じる程です。 そう思えるほど便利な新機能、それでは早速紹介します。 プレースホルダとは プレースホルダとは、一部のfluentdプラグインの設定値の中で使える変数です。 良く使われるプレースホルダとして次のようなものがあります。 ${tag} __TAG__ {$tag_parts[n]} __TAG_PARTS[n]__ ${hostname} __HOSTNAME__ これはFluentdに届いたログを次のように加工
photo by byte MySQLといえば、巷ではInnoDBばかり注目され、MyISAMの地下アイドル化がにわかに語られる今日この頃、皆様いかがお過ごしでしょうか。 まあカジュアルにストレージエンジンを変換するだけで済むなら、簡単なのです。 -- legacy_my_tableをInnoDBストレージエンジンに変換する ALTER TABLE legacy_my_table ENGINE=InnoDB; よし終わった!さあランチタイムだ! ・・・と片付けてしてしまうと、悲劇が起こるかもしれません。(>o<;) それでは本日、MyISAMからInnoDBへ移行するなら知っておきたい意外な落とし穴とTipsを紹介します。 AUTO INCREMENTの挙動が違う落とし穴 以下に該当するクエリを利用している場合には、注意が必要です。私はハマりました。 INSERT IGNORE INTO
ログデータを活用してビジネスに役立てようという最近のトレンドは理解できる。 しかし、なぜログ収集ソフトウェアのFluentdがこれほどまで話題になるのか、不思議に感じている方もいるのではないだろうか。単にログデータを収集するならばsyslog-ngやrsyslogで十分ではないかという意見もあるだろう。 それらは既存のログシステムを置き換えるプロダクトであり、Fluentdのそれとは根本的に異なる。Fluentdは、既存のログシステムに手を入れることなく新たにログの収集を行い、ストリームデータ処理を実現するプロダクトなのである。 一般的にログデータはサーバの数だけ分散しており、それを定期実行処理で収集するということだけでも、なかなか骨の折れる仕事である。さらに集めるだけでなく、日々増え続けるログデータを活用できる形に加工してしかるべきデータストアに保管するということに挫折した方もいるのでは
2013年11月12日にリクルートテクノロジーズで開催された「第2回 ElasticSearch勉強会」に参加&発表しましたので、レポートします。 発表テーマ 「ElasticSearch+Kibanaでログデータの検索と視覚化を実現するテクニックと運用ノウハウ」というテーマで発表しました。 ElasticSearch+Kibanaでログデータの検索と視覚化を実現するテクニックと運用ノウハウ from Kentaro Yoshida まだ検証段階ではありますが、ElasticSearchとKibanaの組み合わせはかなり気に入っています。 なお、発表で言及した0.90.6の不具合が修正された elasticsearch-0.90.7 が既にリリースされておりますので、これからElasticSearchを使われる方は0.90.7をお使いください。 聴講メモ ElasticSearchの書籍
2013年10月25日にオラクルで開催された「MySQL Casual Talks Vol.5」に参加しました。 そう、前回の発表での約束を果たすために。という訳で今回は2回目の参加&2度目のトークです。 発表テーマ Tritonn (MySQL5.0.87+Senna)からの mroonga (MySQL5.6) 移行体験記 MySQL5.0から5.6へ移行するにあたり、全文検索機能をTritonnからmroongaへ乗り換えるというプロジェクトの体験記をお届けします。 発表資料 Tritonn (MySQL5.0.87+Senna)からの mroonga (MySQL5.6) 移行体験記 from Kentaro Yoshida http://www.slideshare.net/y-ken/mysql-migrate-mysql50-to-mysql56-with-fulltext
MySQL-ftppc (MySQL full-text parser plugin collection) という、全文検索パーサプラグインはご存じでしょうか。 これはMySQL標準の Full Text Parser を置き換えるもので、hiroaki-kawai氏によってこの世に生まれました。 ストレージはMyISAMを利用しますので、コンパクトなソースコードが特徴です。 パフォーマンスとしては400万行、インデックスファイル.MYIのサイズが2GBを対象の検索で0.8秒程と、決して速くは無いので、100万行くらいまでのデータ向きです。 Tritonn (MySQL-5.0 + Senna)を利用しており、InnoDBの性能向上を主な目的としてMySQL-5.5や5.6への移行を望んでいるが、全文検索の扱いに困っている方 にオススメです。 ニコニコニュースなどで採用されているという実
ElasticSearchについて理解が深まるスライドをまとめました。 もくじ http://www.slideshare.net/JunOhtani/elasticsearch-pyfes-201207 How ElasticSearch lives in my DevOps life - SlideShare by 琛琳 饶 on Jul 31, 2013 Logstash by 琛琳 饶 on Oct 05, 2012 http://www.slideshare.net/lsdr/es-prezo http://www.slideshare.net/shinsuke/es-study1 http://www.slideshare.net/cb372/debugging-and-testing-es-systems http://solr-vs-elasticsearch.com/ h
fluent-plugin-geoip v0.0.4をリリースしました。 今回は主にGeoLiteCityデータベース参照パスの不備の修正とREADMEの加筆を行いました。 https://github.com/y-ken/fluent-plugin-geoip http://rubygems.org/gems/fluent-plugin-geoip 修正内容の説明に続けて、後半では次のお役立ちTipsの紹介も行います。 インストール時のTips Fluentd + ElasticSearch + Kibana v3 を使う際のTips 変更内容概要 v0.0.3とv0.0.4の修正差分より紹介します。 [不具合] GeoLiteCityデータベース参照パスの不備を修正 [改善] 過剰なログ出力の削除 [改善] Travis-CIを用いた自動テストへの対応 Tips紹介 ここで、ハマりやす
初の安定版となるfluent-plugin-geoip v0.0.3をリリースしました。 今回は主に安定性の向上と、READMEの加筆を行いました。 https://github.com/y-ken/fluent-plugin-geoip http://rubygems.org/gems/fluent-plugin-geoip 例えばこれをWebサーバのアクセスログと組み合わせることで、国毎にどれほどのアクセスかを集計することができるようになります。 また、ElasticSearchへログデータを送出し、Rubyで書かれたKibanaというフロントエンドWebアプリを使えば、次のような視覚化も出来ます。 画像引用元: http://matthiasnehlsen.com/blog/2013/07/09/transforming-logs-into-information/ これまでのブログ
IPアドレスを元に位置情報を返すデータベース、GeoIPがあります。 こちらの料金体系や精度について調査したので、まとめました。 利用例 GeoIPデータベースは、次のような用途があります。 アクセス元の地域を判定し、最寄りのローカル情報を提供する ログのIPアドレスから計算した付加情報として付与し、解析に役立てる 但し前者についてはスマホが普及したことにより、GPSを用いた正確な位置情報が使えるようになりました。 GeoIPを使うか、そのHTML5のGeolocation APIを使うかはケースバイケースで考慮しましょう。 構成例 次のような組み合わせでGeoIPを使うことが出来ます。 Apache に mod_geoip を入れて、環境変数に位置情報を付与する http://dev.maxmind.com/geoip/legacy/mod_geoip2/ fluent-plugin-g
mruby-fluent-logger (別名 fluent-logger-mruby) のv0.0.2をリリースしました。 今回の目玉は、シリアライズエンジンの変更です。 これまでのJSONから、suzukazeさんにより移植されたmruby-msgpackへ切り替えることで、パフォーマンスが向上しています。 https://github.com/y-ken/fluent-logger-mruby https://github.com/y-ken/fluent-logger-mruby/releases/tag/v0.0.2 ログ収集エンジンFluentdをmrubyから利用するためのロガーパッケージ「mruby-fluent-logger」のmsgpack対応版をリリースしました。jsonに比べて著しい性能向上を果たしています。 https://t.co/kzi9YPBRFI #mru
FluentdのレコードにあるIPアドレスを元に位置情報を付与するプラグインをリリースしました! これを使えば、Maxmind社の提供するGeoIPというデータベースを利用してリアルタイムに位置情報を付与できます。 パフォーマンスを重視するため、BufferedOutputをベースに、GeoIPのC拡張を利用した設計としました。 y-ken/fluent-plugin-geoip https://github.com/y-ken/fluent-plugin-geoip http://rubygems.org/gems/fluent-plugin-geoip それでは早速使い方の紹介を行います。 使い方 インストール方法 # fluentdをシステム側に入れている場合 $ gem install fluent-plugin-geoip # td-agentを使っている場合 $ sudo /u
2013年に発売されているMacにはFireWire端子は無くなり、Thunderbolt端子に取って代わりました。 新しい機種に乗り換えた時など、古いMacとターゲットディスクモード(Macを外付けハードディスク化するモード)を使ってデータの転送を行いたいケースがあります。 しかしその為だけにThunderboltケーブルを購入するのは面倒だしもったいないですよね。 この商品、ケーブルなのに3000円以上します。 住友電工 Thunderboltケーブル (1.0m, 白) 出版社/メーカー: 住友電気工業(株)メディア: エレクトロニクス購入: 1人 クリック: 1回この商品を含むブログを見る もし手元にFireWire800対応のハードディスクのために購入したApple Thunderbolt - FireWireアダプタがあれば、実はThunderboltケーブルを買わずともターゲ
twiccaの一時的な不具合でアップロードできないのかと思いきや、 なんと連携先であるvia.meが閉鎖していることによるトラブルでした。 これは影響が大きいですね。 写真共有サイト「via.me」がサービス終了のお知らせ。Twitter連携していた人もいると思うので、必要に応じて過去写真のダウンロードを行っても良いかもしれません。 http://t.co/lx74f2hWIY— Y.Kentaro (@yoshi_ken) August 4, 2013 何が起きたか? 簡単にまとめると以下の通りです。 twiccaが利用する写真共有サービス via.me が2013年7月末をもって閉鎖 過去にアップロードした写真は、ダウンロードリクエストをすることでzipファイルで入手可能 2013年9月末までにダウンロードリクエストを送らない限りすべて削除対象 2013年10月18日に全ての画像を完全
MySQLサーバで希に遭遇するディスク残量障害事例と共に紹介します。 こちらは、以下エントリよりネタをパクりましたインスパイアしました。すみません。 Linuxサーバがディスク容量不足になった!何か消さねば!ってなった時にどう対処するか - 元RX-7乗りの適当な日々 Linuxサーバのディスク容量減少アラートが飛んできた!ってときにどう対処するか - tagomorisのメモ置き場 今回紹介する対処パターン 今回は4つの方法を紹介します。 不要なデータベース/テーブルを削除 スロークエリログ/クエリログを削除 バイナリログを削除 どれのパターンにも属さないレアなシチュエーション 不要なデータベース/テーブルを削除 あまりそういうケースは無いとは思いますが、 DROP DATABASE foo;やDROP TABLE foo;で削除します。 スロークエリログ/クエリログを削除 du -sc
Apache/Nginxのアクセスログやローカルファイルから、Fluentdのin_tail機能を使ってログを収集しているケースはあると思います。この時、元々は123といった数値や123.45といったfloat型だったものが、全てString型になっていること、ご存じでしょうか。 それをそのままTreasureData(Hive)やmongoDBなどで数値比較を行いたい時には、正規表現での比較を行うという奇妙な対処が必要です。 ※ もちろんJSON形式でファイルに書き出したり、直接Fluentdに転送している場合には問題になりませんが、それの話は棚に上げます。 そういった時の対処方法は用意されており、fluent-plugin-typecastやfluent-plugin-mongo-typedを使うことで、カラムを指定した上で、明示的に型変換を行えます。 しかしこれが面倒なのです。構造化
イベントログ収集ツールFluentdに、mrubyからも構造化ログデータを送りたい。 その情熱に勢いを任せて、"mruby-fluent-logger" を作りましたので公開します。 これを使えば、C/C++アプリに組み込んだmruby等からFluentdを容易に扱えますね。 そんな"mruby-fluent-logger"はこれらの用途に最適です。 アプリケーションログ・デバッグログを送る 組み込み機器のセンサー情報などを送る 夢が広がりますね! mruby-fluent-loggerとは mrubyから呼び出せるロガークラスで、Fluentdへ構造化データを送れます。 GitHubリポジトリにてソースを公開しております。 https://github.com/y-ken/fluent-logger-mruby mrubyからの呼び出し方法 アルファリリースとも言うべき段階のため、必要最
ログ収集ツールFluentdで、リソース監視データも収集可能となる fluent-plugin-munin v3.0.2をリリースしました。 多数のMunin向けプラグインで採取できるデータを、お好みの間隔でFluentdに流すことが出来ます。 https://github.com/y-ken/fluent-plugin-munin https://rubygems.org/gems/fluent-plugin-munin 今回は不具合修正が主となるリリースです。 今回の主な修正事項 修正履歴より紹介します。 [Bug] munin-nodeへの接続が起動時に失敗すると、繋がるまでリトライを続け、Fluentdが起ち上がらなくなる不具合を修正 [Bug] munin-nodeへの接続が起動後の定期取得時に失敗すると、再度繋がるまで無限リトライとなる不具合を修正 新しいリトライ動作 リトライ
ログ収集ツール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-plugin-rewrite-tag-filter 今回の目玉である新機能は、rewriteruleにおける正規表現の否定パターンへの対応です。 これは、正規表現に 該当する 場合のみタグの書き換えだけでなく、 正規表現に 該当しない 場合のタグ書き換えも出来るようになりました。 変更内容概要 修正履歴より紹介します。 [新機能] rewriteruleにて否定演算子が使えるようになりました [不具合
ログ収集ツール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/fluent-plugin-rewrite-tag-filter 今回は、プレースホルダの機能改善を行いました。 こちらは m.yuzuki (@ephemeralsnow)さんによる提案です。ありがとうございます。 v1.2.1の新機能紹介 hostname_commandというオプションを追加しました。 これは、書き換え後のタグに使えるプレースホルダである${hostname}や __HOSTNAME__の
とある日のこと、MySQL-5.6環境にてmysqldumpを行いつつmysqlコマンドでデータを流し込んでいると、以下のエラーが発生して止まりました。 そんな時はmysqldumpコマンドの引数に--skip-triggersを追加しましょう。 エラー内容 ERROR 1235 (42000) at line 5065: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' 対処法 mysqldumpコマンドを2つに分けます。--skip-triggersを追加したものと、そうでないものの2つです。 このエラーが起きないよう、--skip-lock-tablesを指定しましょう。 $ mysqldump --host 1
133もの不具合及び機能改善が施された MySQL-5.6.12 が配布開始となりました。 5.6.11に続き、今回の更新も盛り沢山ですね。後半では、yumでのアップデート方法も併せて紹介します。 リリースノート InnoDB関連の修正が39、レプリケーション関連の修正が21と、今回も盛り沢山な更新です。 私が注目したい修正箇所としては、以下の2つです。思わずアップデートしたくなります。。 Replication: Following disconnection from the master, the slave could under certain conditions report erroneously on reconnection that it had received a packet that was larger than slave_max_allowed_pack
mroongaのプラグインインストール・アンインストールを手動で行いたい方向けのメモ。 MySQLが起ち上がっていない状態で、プラグインをインストールした時にも必要ですね。 更新履歴 2014年1月8日:mroonga-3.07の新機能であるmroonga_escapeのトピックを追加 インストール時に実行しているクエリ DELETE IGNORE FROM mysql.plugin WHERE name = 'mroonga'; INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so'; CREATE FUNCTION last_insert_grn_id RETURNS INTEGER SONAME 'ha_mroonga.so'; CREATE FUNCTION mroonga_snippet RETURNS STRING SONAME 'ha_mr
MySQL-5.6ではSHOW SLAVE STATUS;の出力が大幅に変わりました。 嬉しいポイントとしては、Last_SQL_Error_Timestampというカラムが増えたことです。 これはレプリケーションエラーが起きた際、それが何時何分に起きたのかが分かるのです。 従来であればサーバのmysqld.logを確認する必要がありましたが、その必要はありません。 ますます進化したMySQL-5.6のSHOW SLAVE STATUS構文の出力結果を追ってみましょう! どう変わったか MySQL-5.0ではSHOW SLAVE STATUSの結果は33行でした。 MySQL-5.1/5.5を経て、5.6では54行にも増えました。 新しい21のカラム 私が注目する、4つの新機能から紹介します。 遅延スレーブの動作状況が見える SQL_Delay SQL_Remaining_Delay De
Fluentdを用いたサーバ・サービスの死活監視・通知の自動化を行う、夢のプロダクト構想があります。 しばらくは設計の検討を進め、6月頃から開発、2013年の秋頃に安定版のリリースを目指したい。 これを実現すべく、「こうあるべきだ論」「こんな事が実現できたら素敵」等々、ご意見を募集しております。 photo by energeticspell 2013年10月追記: 時間の工面が出来ておらず、開発準備中のままとなっております。申し訳ありません。 概要 fluent-plugin-guardianは、以下のような連携を行うプラグインです。 閾値の設定や通知方法に関しては永続型のインメモリDB「Redis」に保存します。 この設定の編集には、別途用意するコマンドラインツールを利用します。 1. fluentd : 各種ログを収集する基盤として利用 アプリログ アクセスログ エラーログ muni
Twilioを利用して電話を掛ける際、外部からアクセスできるXMLのURLを指定する必要があります。 それはつまり外部公開サーバの用意が必要となるので、利用の敷居が高いと思われがちです。 そこで、Twilioが公式に提供する「twimletsというサービスがあります。 GETパラメータのみ対応しているため、文字列の長さが限定されるという問題がありました。 さて、Pastebinという、GitHubのgist的なサービスをご存じでしょうか。 これのTwilio向けサービスとも言える「Twimlbin.com」を見つけたので、 早速プログラムから扱えるようRubyでラッパークラスを作りGem化しましたので紹介します。 更新履歴 2013年7月8日 twilio-twimlbin v0.0.3リリースに伴いプログラムサンプルを更新 2013年9月3日 twimlbin.comの仕様変更による不具
Twilio(トゥイリオ)という話題の電話APIサービスをご存じでしょうか。 これをFluentdに組み込むプラグイン「fluent-plugin-twilio」を作成・公開しました。 Boundioという電話APIサービスが廃止となり、行き場を失っていた方にも朗報です。 fluent-plugin-twilio https://github.com/y-ken/fluent-plugin-twilio Fluentd Output plugin to make a call with twilio. Twilioとは Web APIを利用し、電話を掛けたり、受けることの出来るサービスです。 TwiMLというXML言語を用い、大変自由度の高い動作を定義することが出来ます。 文字列として渡した漢字を含む日本語から、音声合成をして読み上げる機能も備わっています。 Twilioの料金(2013年
次のページ
このページを最初にブックマークしてみませんか?
『Y-Ken Studio』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く