fluent-plugin-mecab

誰が何のために使うのかよくわからないけど,新しいfluentd plugin書きました.
fluntdに流れてくる日本語のデータをmecabに食わせて形態素解析結果をもう一度fluentdに流すプラグインです.

install

Gemfileに以下を書いて,bundle installすればいいです

gem 'fluent-plugin-mecab', git: 'git://github.com/katsyoshi/fluent-plugin-mecab.git'


使い方は簡単です.以下のように設定します

<source>
  type forward
</source>

<match mikutter.**>
  type copy
  <store>
    type stdout
  </store>
  <store>
    type mecab
    key message
    tag mecab.meacab
  </store>
</match>

<match mecab.**>
  type stdout
</match>

ってやる形態素解析結果をfluentdに投げることができます

やらないといけないこと

1. gem化
2. mecabの出力方法に対応
chasen,wakatiなど

miktter advent calendar 2013 12日目

コンソールでmikutter

みなさんご存知のmikutterdを使ってmikutterからついーとします.

以前作ったmikutter-rpcを利用すればすぐにできます.
pluginディレクトリにmikutter-rpcを導入し,mikutterを起動したあと
以下のスクリプトを実行するとついーとできるようになります.

require 'msgpack/rpc'

cli = MessagePack::RPC::Client.new('127.0.0.1',5000)

loop do
  line = gets
  break if line.chomp == 'exit'
  count = 0
  begin
    cli.call :tweet, {message: line}
  rescue MessagePack::RPC::ConnectionTimeoutError => e
    count += 1
    raise e if count > 3
    sleep 0.1
    retry
  rescue => e
    p e
  end
end


スクリプトを実行すると一行ごとについーとされるようになります

これでひとの目を気にせずにツイッターができますね!!

mikutter advent calendar 2013 9日目

rakeでgem依存関係解決☆(ゝω・)v

はい

http://dev.mikutter.hachune.net/issues/628

ruby mikutter.rb --confroot=/path/to/conf/path

で起動できるのにpluginのgemfileを読み込む設定を手動で書き換える必要があります.
めんどくさいのでrakeでインストールできる様にしました.

rake gemfile [confroot=/path/to/conf/path] # Gemfileの生成
rake install [gem_dir=/path/to/bundler/path] # bundler利用してgemのインストール
rake run # mikutterの起動

mikutter advent calendar 2013 1日目

mikutterでビッグデータ処理

はいネタです.
とりあえずmikutterにmessagepack-rpcを導入します.
以下のプラグインを.mikutter/plugin/に導入します.

require 'msgpack/rpc'
Plugin.create(:rpc) do
  UserConfig[:tw_port] ||= 5000

  class Remote
    def tweet(msg)
      Service.primary_service.update(msg)
      true
    end

    def bigdata(str)
      Plugin.activity :system, str
      true
    end
  end

  on_boot do
    start
  end

  def start
    @server = MessagePack::RPC::Server.new
    @server.listen('0.0.0.0', UserConfig[:tw_port], Remote.new)
    Thread.new do
      @server.run
    end
  end

  def stop
    @thread.kill
  end

  settings "rpc" do
    adjustment "port number", :tw_port, 1024, 0xffff
  end
end

これを導入するとmikutterでmsgpack-rpcが使えるようになります.
そこでクライアントとして以下のプログラムを実行します.

require 'msgpack/rpc'
5000.times do |t|
  cli = MessagePack::RPC::Client.new('127.0.0.1', 5000)
  cli.call(:bigdata, t.to_s)
  cli.close
end

この例だと5000個のデータをmikutterに投げつけてます.
mikutterは受け取るのはそんなに時間はかかりませんが,表示するのに時間がすごくかかります.
ので,mikuttter.dを使ってGUI表示しなければそんなに時間かからないと思うのでそこそこ使えるのでは?

homebrewにtd-agentがやってきた

今日,mac向けにtd-agentのhomebrew用のformulaが公開されたのでインストールしたお話を.

Install

とりあえずインストール方法*1ですが,

$ brew install  "http://toolbelt.treasure-data.com/brew/td-agent.rb"

でインストールでできます

インストール終わったら,設定ファイルを設定します.
設定ファイルは/usr/local/etc/td-agent/td-agent.confが読み込まれるのでそれを編集します.
以前から利用している設定ファイルを置けば動きます.
次にdaemonとして登録し,起動します.

$ ln -sfv /usr/local/opt/td-agent/homebrew.mxcl.td-agent.plist ~/Library/LaunchAgents/.
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.td-agent.plist

で起動できます.

ログファイルは/usr/local/var/log/td-agent/td-agent.logに出力されます

オプションとか

$ brew options td-agent
--fluentd-rev=<revision>
        Using specify Fluentd revision

Jubatusハンズオンにいってきた

Jubatusハンズオンにいってきました.Jubatusの簡単な使い方をハンズオン形式
ですすめていってました.

で,そこでいま作って動かしてるmikutter-jubatusについてLTしてきました.

という感じになってます.発表時は設定について説明してなかったので
設定について説明を追加してます.

Fluentd Casual Talks#2と第4回カーネル/VM勉強会@関西でLTしてきた

Fluentd Casual Talks#2と第4回カーネル/VM勉強会@関西でLTしてきました.
ネタとしてはBeagleBoardでtd-agent(fluentd)の性能評価,ビルドねたです.
2つとも同じネタで話してますが,Fluentd Casual Talksで話してないところ
があります.

最後にtd-agent-armhf.debのダウンロードリンクです.
http://dl.dropbox.com/u/6352435/td-agent_1.1.11-1_armhf.deb