fluentd1. *
2013/03/22
Keisuke.K
3. * 鎌田啓佑
* Java 好き
* FreeBSD 好き
* Jiemamy コミッタ&インフラ管理者
(http://jiemamy.org/)
* java-ja
*
5. * Treasure Data, Inc. の古橋氏が開発。
* Ruby 製
* 様々なログ入力、およびログ出力方法を備えて
いる。
* 入力: TCP, HTTP, tail, exec, syslog (udp), scribe
* 出力: ファイル, TCP, exec, stdout, S3,
MongoDB, HDFS
*
6. "Fluentd" is a OSS lightweight and flexible log
collector. Fluentd receives logs as JSON streams,
buffers them, and sends them to other systems
like S3, MongoDB, Hadoop, or other Fluentds.
公式サイトより引用
*
7. "Fluentd" is a OSS lightweight and flexible log
collector. Fluentd receives logs as JSON streams,
buffers them, and sends them to other systems
like S3, MongoDB, Hadoop, or other Fluentds.
公式サイトより引用
*
10. * JavaScript Object Notation
* {”name”: ”John Doe”, ”age”: 28}
* Twitter などの API の返却値として利用される
ことも。
* つまり、プログラム側で処理しやすい。
*
12. * Configure ntpd.
* /etc/limits.conf
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535
* /etc/sysctl.conf
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10240 65535
*
14. 2013-03-21 18:38:49 +0900: starting fluentd-0.10.30
2013-03-21 18:38:49 +0900: reading config file path="/etc/td-agent/td-
agent.conf"
2013-03-21 18:38:49 +0900: using configuration file: <ROOT>
:
2013-03-21 18:38:49 +0900: adding source type="forward"
2013-03-21 18:38:49 +0900: adding source type="http"
2013-03-21 18:38:49 +0900: adding source type="debug_agent"
2013-03-21 18:38:49 +0900: adding match pattern="td.*.*" type="tdlog"
2013-03-21 18:38:49 +0900: adding match pattern="debug.**" type="stdout"
2013-03-21 18:38:49 +0900: listening fluent socket on 0.0.0.0:24224
2013-03-21 18:38:49 +0900: listening dRuby uri="druby://127.0.0.1:24230"
object="Engine"
*
16. FluentLogger logger =
FluentLogger.getLogger(”tag”);
Map<String, Object> data =
new HashMap<String, Object>();
data.put(”key”, ”value”);
logger.log(”label”, data);
*
17. * syslog で言う facility みたいなもの。
* 任意に設定可能なので、アプリケーションごと
のログ設定とかで使えるかも。
<match tag.label>
type stdout
</match>
*
20. <dependencies>
<dependency>
<groupId>org.fluentd</groupId>
<artifactId>fluent-logger</artifactId>
<version>0.2.8</version>
</dependency>
<dependency>
<groupId>org.twitter4j</groupId>
<artifactId>twitter4j-core</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>org.twitter4j</groupId>
<artifactId>twitter4j-stream</artifactId>
<version>3.0.3</version>
</dependency>
</dependencies>
*
21. FluentLogger logger = FluentLogger.getLogger("t2fluentd");
Twitter twitter = TwitterFactory.getSingleton();
StatusListener listener = new StatusAdapter() {
@Override
public void onStatus(Status status) {
Map<String, Object> data = new HashMap<String, Object>();
data.put("name", status.getUser().getName());
data.put("screenName", status.getUser().getScreenName());
data.put("text", status.getText());
LOGGER.log("stream", data);
}
};
TwitterStream twitterStream = new TwitterStreamFactory().getInstance(accessToken);
twitterStream.addListener(listener);
twitterStream.addListener(new UserStreamAdapter());
twitterStream.user();
*
23. 2013-03-21 21:06:11 +0900 t2fluentd.stream: {"text":"うー、池袋でラーメン食べ歩きしたい…...","name":"***","screenName":"***"}
2013-03-21 21:06:21 +0900 t2fluentd.stream: {"text":"RT @***: @*** とくにすぐ無くなるとは...","name":"***","screenName":"***"}
2013-03-21 21:06:31 +0900 t2fluentd.stream: {"text":"“ITProみたいにベンダーに広告もらって...","name":"***","screenName":"***"}
2013-03-21 21:06:32 +0900 t2fluentd.stream: {"text":"Riak CSがOSSになったのは結構すごいこ...","name":"***","screenName":"***"}
2013-03-21 21:06:42 +0900 t2fluentd.stream: {"text":"全然cssが効かないんですけお!!!!...,"name":"***","screenName":"***"}
2013-03-21 21:06:54 +0900 t2fluentd.stream: {"text":"では今日はそろそろ失礼します。あした...","name":"***","screenName":"***"}
2013-03-21 21:07:01 +0900 t2fluentd.stream: {"text":"えっ、星矢オメガの新章、スチールセイ...","name":"***","screenName":"***"}
2013-03-21 21:07:01 +0900 t2fluentd.stream: {"text":"しかし仮に5V導入したとして置き場所が...","name":"***","screenName":"***"}
2013-03-21 21:07:06 +0900 t2fluentd.stream: {"text":"なぜ博多ラーメンが好きなのかというと...","name":"***","screenName":"***"}
2013-03-21 21:07:09 +0900 t2fluentd.stream: {"text":"RT @***: 「型システム入門」の訳者の...","name":"***","screenName":"***"}
2013-03-21 21:07:15 +0900 t2fluentd.stream: {"text":"#ジョルダンライブ [03/21 21:06] #山...","name":"***","screenName":"***"}
2013-03-21 21:07:18 +0900 t2fluentd.stream: {"text":"もう一蘭で全然いいよぅ…","name":"***","screenName":"***"}
2013-03-21 21:07:18 +0900 t2fluentd.stream: {"text":"大胆な金融緩和も良いけれど、ベッドに...","name":"***","screenName":"***"}
2013-03-21 21:07:46 +0900 t2fluentd.stream: {"text":"もう後先考えずやるか","name":"***","screenName":"***"}
*
24. * tag が任意なので syslog より設定が自由に効く
* S3 や HDFS に出力できるところから見ると、
ビッグデータ用にも使える?
* とにかく強力そう
* 検証で作ったコードは Bitbucket に push して
あります
https://bitbucket.org/ewigkeit1204/t2fluentd
*