while(true) ;

クソNoobな情報系学生のblog。c++やRuby, Railsやってます。perlは猛勉強中。

td-agentを使ってMysqlにLogを格納する Part 2 [td-agentの導入]

前回に続き、

kazunyaaan.hatenablog.com

最近作っているTCPハニーポットのLogをtd-agentを使ってMysqlに格納していきます。

td-agent (fluentd)でmongodbにVPSTCPスキャンログを取っていたのですが、なんとなくMysqlに移行して行こうと思います。

td-agent (Fluentd)って?

Fluentdの安定リリースだそうです。 knowledge.sakura.ad.jp

以下、OSはcentos 6.8です。rubygemでfluentdをインストールする方法もありますが、今回は公式からyumリポジトリを追加し、インストールしました。

td-agentのインストールと起動

$ curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh

$ sudo service td-agent start
Starting td-agent: td-agent                                [  OK  ]
$ sudo service td-agent status
td-agent is running                                        [  OK  ]

td-agentのmysqlプラグインをインストール

$ sudo td-agent-gem install fluent-plugin-mysql

rubyでテストコードを作成

require 'fluent-logger'

Fluent::Logger::FluentLogger.open(nil, host: 'localhost', port:12345)
Fluent::Logger.post('td.honeypot.log',
{
  TIME: "#{Time.new}",
  IP: "127.0.0.1",
  PORT: "22",
  COUNTRY: "TEST",
  DATA: "hogehoge"
}

td-agentの設定ファイル変更

$ sudo vim /etc/td-agent/td-agent.conf

あらかじめMysqlでcreate tableしておきます。rubyのプログラムに合わせて設定していきます。

<source>
  @type forward
  port 12345
</source>

<match td.honeypot.log>
  @type copy
  <store>
    @type mysql_bulk
    host 127.0.0.1
    port 12346
    username XXXX
    password xxxx
    database honeypot
    table log
    column_names time,ip,port,country,data
    key_names TIME,IP,PORT,COUNTRY,DATA
  </store>
</match>

最後にtd-agentに設定ファイルをreloadさせて終わり。

$ sudo service td-agent reload

これで
 Ruby -> td-agent -> mysql
へLogを渡し、格納していくことができました。