SlideShare une entreprise Scribd logo
1  sur  25
*
    2013/03/22
    Keisuke.K
この資料は、社内技術発表会用に作成しています
が、外部に公開することを意識した内容になって
います。




               *
* 鎌田啓佑
* Java 好き
* FreeBSD 好き
* Jiemamy コミッタ&インフラ管理者
 (http://jiemamy.org/)
* java-ja




                         *
*
* Treasure Data, Inc. の古橋氏が開発。
* Ruby 製
* 様々なログ入力、およびログ出力方法を備えて
 いる。
* 入力: TCP, HTTP, tail, exec, syslog (udp), scribe
* 出力: ファイル, TCP, exec, stdout, S3,
 MongoDB, HDFS




                                    *
"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.

公式サイトより引用




                            *
"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.

公式サイトより引用




                            *
ジェイソンさんとは、

ホラー映画『13日の金曜日』シリーズに登場するキャラクター『ジェイソ
ン』に扮してチェーンソーアートを行う人物である。

2011/07/07放送のTV番組「ZIP!」で中の人は60歳の仏像彫刻師であることが
明かされた。

ジェイソンさんにとってのチェーンソーアートとは、ご本人曰く
「1ヶ所切り込むと、後は自然に出来上がる」
「材料に合わせ、作りたいものを作るだけ」

引用元
http://dic.nicovideo.jp/a/%E3%82%B8%E3%82%A7%E3%82%A4%E3%82%BD%E3%83%B3%E3%81%95%E3%82%93




                                                                            *
ジェイソンさんとは、

ホラー映画『13日の金曜日』シリーズに登場するキャラクター『ジェイソ
ン』に扮してチェーンソーアートを行う人物である。

2011/07/07放送のTV番組「ZIP!」で中の人は60歳の仏像彫刻師であることが
明かされた。

ジェイソンさんにとってのチェーンソーアートとは、ご本人曰く
「1ヶ所切り込むと、後は自然に出来上がる」
「材料に合わせ、作りたいものを作るだけ」

引用元
http://dic.nicovideo.jp/a/%E3%82%B8%E3%82%A7%E3%82%A4%E3%82%BD%E3%83%B3%E3%81%95%E3%82%93




                                                                            *
* JavaScript Object Notation
* {”name”: ”John Doe”, ”age”: 28}
* Twitter などの API の返却値として利用される
 ことも。
* つまり、プログラム側で処理しやすい。




                            *
*
* 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



                     *
* curl-L http://toolbelt.treasure-
 data.com/sh/install-redhat.sh | sh
* service   td-agent start




                *
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"




          *
* MessagePack プロトコルで fluentd にログを投
 げる Java ライブラリ。
* Maven Central Repository にある。




           *
FluentLogger logger =
    FluentLogger.getLogger(”tag”);

Map<String, Object> data =
    new HashMap<String, Object>();
data.put(”key”, ”value”);

logger.log(”label”, data);



                    *
* syslog で言う facility みたいなもの。
* 任意に設定可能なので、アプリケーションごと
 のログ設定とかで使えるかも。


<match tag.label>
  type stdout
</match>




                    *
*
* Twitter4j を使ってタイムラインをストリームで
 受信。
* 受信したツイートを fluent-logger-java でロギ
 ング。
* というツールを想定。




                      *
<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>




                                                *
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();




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


<source>
  type forward
</source>



                  *
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":"***"}




                                                                                 *
* tag が任意なので syslog より設定が自由に効く
* S3 や HDFS に出力できるところから見ると、
ビッグデータ用にも使える?
* とにかく強力そう
* 検証で作ったコードは Bitbucket に push して
あります
 https://bitbucket.org/ewigkeit1204/t2fluentd




                                      *
ご清聴ありがとうございました

Contenu connexe

Tendances

mod_auth_ticket - Bringing Single-Sign-On to lighttpd
mod_auth_ticket - Bringing Single-Sign-On to lighttpdmod_auth_ticket - Bringing Single-Sign-On to lighttpd
mod_auth_ticket - Bringing Single-Sign-On to lighttpdTaisuke Yamada
 
MongoDBではじめるカジュアルなタイムラインシステム
MongoDBではじめるカジュアルなタイムラインシステムMongoDBではじめるカジュアルなタイムラインシステム
MongoDBではじめるカジュアルなタイムラインシステムHitoshi Asai
 
Ruby Postgres 2009
Ruby Postgres 2009Ruby Postgres 2009
Ruby Postgres 2009Akio Ishida
 
現場で役に立たないsudoの使い方
現場で役に立たないsudoの使い方現場で役に立たないsudoの使い方
現場で役に立たないsudoの使い方(^-^) togakushi
 
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎Insight Technology, Inc.
 
FreeBSDでおうちのルーター
FreeBSDでおうちのルーターFreeBSDでおうちのルーター
FreeBSDでおうちのルーターhoo0005
 
OpenSSHの認証に証明書を使う
OpenSSHの認証に証明書を使うOpenSSHの認証に証明書を使う
OpenSSHの認証に証明書を使うHironobu Saitoh
 
WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築Saito5656
 
Jailが起動しないので調査してみた
Jailが起動しないので調査してみたJailが起動しないので調査してみた
Jailが起動しないので調査してみたToshinori Hayashi
 
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~Kazuya Wada
 
OpenSSH User EnumerationTime-Based Attack と Python-paramiko
OpenSSH User EnumerationTime-Based Attack と Python-paramikoOpenSSH User EnumerationTime-Based Attack と Python-paramiko
OpenSSH User EnumerationTime-Based Attack と Python-paramiko(^-^) togakushi
 
はじめてのWebサーバ構築 さくらvps
はじめてのWebサーバ構築 さくらvpsはじめてのWebサーバ構築 さくらvps
はじめてのWebサーバ構築 さくらvpsAtsuhiro Takiguchi
 
Mac_Terminal_ver1.0
Mac_Terminal_ver1.0Mac_Terminal_ver1.0
Mac_Terminal_ver1.0Satoshi Kume
 

Tendances (20)

Hudson using Groovy #jggug
Hudson using Groovy  #jggugHudson using Groovy  #jggug
Hudson using Groovy #jggug
 
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
mod_auth_ticket - Bringing Single-Sign-On to lighttpdmod_auth_ticket - Bringing Single-Sign-On to lighttpd
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
 
sshdのお話
sshdのお話sshdのお話
sshdのお話
 
MongoDBではじめるカジュアルなタイムラインシステム
MongoDBではじめるカジュアルなタイムラインシステムMongoDBではじめるカジュアルなタイムラインシステム
MongoDBではじめるカジュアルなタイムラインシステム
 
Ruby Postgres 2009
Ruby Postgres 2009Ruby Postgres 2009
Ruby Postgres 2009
 
現場で役に立たないsudoの使い方
現場で役に立たないsudoの使い方現場で役に立たないsudoの使い方
現場で役に立たないsudoの使い方
 
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
 
FreeBSDでおうちのルーター
FreeBSDでおうちのルーターFreeBSDでおうちのルーター
FreeBSDでおうちのルーター
 
OpenSSHの認証に証明書を使う
OpenSSHの認証に証明書を使うOpenSSHの認証に証明書を使う
OpenSSHの認証に証明書を使う
 
WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築
 
Jailが起動しないので調査してみた
Jailが起動しないので調査してみたJailが起動しないので調査してみた
Jailが起動しないので調査してみた
 
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
 
GContractsの基礎
GContractsの基礎GContractsの基礎
GContractsの基礎
 
Spockの基礎
Spockの基礎Spockの基礎
Spockの基礎
 
Maatkitの紹介
Maatkitの紹介Maatkitの紹介
Maatkitの紹介
 
OpenSSH User EnumerationTime-Based Attack と Python-paramiko
OpenSSH User EnumerationTime-Based Attack と Python-paramikoOpenSSH User EnumerationTime-Based Attack と Python-paramiko
OpenSSH User EnumerationTime-Based Attack と Python-paramiko
 
Ilstudy001_20110806
Ilstudy001_20110806Ilstudy001_20110806
Ilstudy001_20110806
 
Janog33.5
Janog33.5Janog33.5
Janog33.5
 
はじめてのWebサーバ構築 さくらvps
はじめてのWebサーバ構築 さくらvpsはじめてのWebサーバ構築 さくらvps
はじめてのWebサーバ構築 さくらvps
 
Mac_Terminal_ver1.0
Mac_Terminal_ver1.0Mac_Terminal_ver1.0
Mac_Terminal_ver1.0
 

Similaire à fluentd

Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoGo言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoShoot Morii
 
IoTLT-Vol92-Wiki-IoT-20221009-1.pptx
IoTLT-Vol92-Wiki-IoT-20221009-1.pptxIoTLT-Vol92-Wiki-IoT-20221009-1.pptx
IoTLT-Vol92-Wiki-IoT-20221009-1.pptxTakashi Yamanoue
 
node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るnode+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るKiyoshi SATOH
 
5分でわかったつもりになるParse.com
5分でわかったつもりになるParse.com5分でわかったつもりになるParse.com
5分でわかったつもりになるParse.comKenta Tsuji
 
2005 11 29_template_customize_seminer_04
2005 11 29_template_customize_seminer_042005 11 29_template_customize_seminer_04
2005 11 29_template_customize_seminer_04Tom Hayakawa
 
組み込みシステムのセキュリティ
組み込みシステムのセキュリティ組み込みシステムのセキュリティ
組み込みシステムのセキュリティFFRI, Inc.
 
D3.js と SVG によるデータビジュアライゼーション
D3.js と SVG によるデータビジュアライゼーションD3.js と SVG によるデータビジュアライゼーション
D3.js と SVG によるデータビジュアライゼーションKohei Kadowaki
 
社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ 社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ Daisuke Ikeda
 
Let's begin WebRTC
Let's begin WebRTCLet's begin WebRTC
Let's begin WebRTCyoshikawa_t
 
zozotown real time linkage infrastructure
zozotown real time linkage infrastructurezozotown real time linkage infrastructure
zozotown real time linkage infrastructureKeisukeTaniguchi2
 
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会Jumpei Ogawa
 
Twitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackTwitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackkimukou_26 Kimukou
 
OpenGLプログラミング
OpenGLプログラミングOpenGLプログラミング
OpenGLプログラミング幸雄 村上
 
Develop Web Application with Node.js + Express
Develop Web Application with Node.js + ExpressDevelop Web Application with Node.js + Express
Develop Web Application with Node.js + ExpressAkinari Tsugo
 
Dart のコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法について
Dart のコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法についてDart のコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法について
Dart のコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法についてKosuke Saigusa
 
○○大学の本当にあった怖い話
○○大学の本当にあった怖い話○○大学の本当にあった怖い話
○○大学の本当にあった怖い話idkqh7 Nishino
 
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...NTT DATA Technology & Innovation
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス5mingame2
 

Similaire à fluentd (20)

Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoGo言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
 
IoTLT-Vol92-Wiki-IoT-20221009-1.pptx
IoTLT-Vol92-Wiki-IoT-20221009-1.pptxIoTLT-Vol92-Wiki-IoT-20221009-1.pptx
IoTLT-Vol92-Wiki-IoT-20221009-1.pptx
 
node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るnode+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作る
 
5分でわかったつもりになるParse.com
5分でわかったつもりになるParse.com5分でわかったつもりになるParse.com
5分でわかったつもりになるParse.com
 
2005 11 29_template_customize_seminer_04
2005 11 29_template_customize_seminer_042005 11 29_template_customize_seminer_04
2005 11 29_template_customize_seminer_04
 
組み込みシステムのセキュリティ
組み込みシステムのセキュリティ組み込みシステムのセキュリティ
組み込みシステムのセキュリティ
 
D3.js と SVG によるデータビジュアライゼーション
D3.js と SVG によるデータビジュアライゼーションD3.js と SVG によるデータビジュアライゼーション
D3.js と SVG によるデータビジュアライゼーション
 
社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ 社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~
 
Let's begin WebRTC
Let's begin WebRTCLet's begin WebRTC
Let's begin WebRTC
 
zozotown real time linkage infrastructure
zozotown real time linkage infrastructurezozotown real time linkage infrastructure
zozotown real time linkage infrastructure
 
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
 
Twitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackTwitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hack
 
Ingress on GKE/GCE
Ingress on GKE/GCEIngress on GKE/GCE
Ingress on GKE/GCE
 
OpenGLプログラミング
OpenGLプログラミングOpenGLプログラミング
OpenGLプログラミング
 
Develop Web Application with Node.js + Express
Develop Web Application with Node.js + ExpressDevelop Web Application with Node.js + Express
Develop Web Application with Node.js + Express
 
Dart のコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法について
Dart のコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法についてDart のコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法について
Dart のコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法について
 
○○大学の本当にあった怖い話
○○大学の本当にあった怖い話○○大学の本当にあった怖い話
○○大学の本当にあった怖い話
 
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
 
OpenStack Grizzly構築手順書
OpenStack Grizzly構築手順書OpenStack Grizzly構築手順書
OpenStack Grizzly構築手順書
 

fluentd