Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

社内向けTech Talk資料~Fluentdの基本紹介~

6,796 views

Published on

社内での勉強会で発表した資料です。
fluentdの基本的な内容を紹介しました。
ZabbixやMongoDBとの連携用Pluginについても少し書いています。

社内向けTech Talk資料~Fluentdの基本紹介~

  1. 1. fluentd ~log collector tool~ Teck-Talk TIS Daisuke Ikeda
  2. 2. Whats fluentd?Fluentd is an event collector system.It is a generalized version of syslogd,which handles JSON objects for its logmessages.※・イベントログ収集ツール・JSONオブジェクトとしてログデータを管理可能・Ruby実装のOSS ※https://github.com/fluent/fluentd
  3. 3. Architecture of fluentd3段階構成Input Buffer Output ・file・syslog ・memory ・AmazonS3・httpリクエスト ・file ・DB ・Zabbix・file などなどなどなど
  4. 4. Install fluentdgemパッケージとして提供(Ruby1.9.2以上必須)# gem install fluentdSuccessfully installed msgpack-0.4.7Successfully installed yajl-ruby-1.1.0Successfully installed iobuffer-1.1.2Successfully installed cool.io-1.1.0Successfully installed http_parser.rb-0.5.3Successfully installed fluentd-0.10.22ソースコードからもインストール可td-agentというパッケージからもインストール可ログを送信する側、受信する側両者にインストール
  5. 5. Configure fluentd設定ファイルの生成# fluentd --setup /etc/fluent# ls /etc/fluent/fluent.conf plugin設定(fluent.conf)source matchの2つを定義## built-in TCP input ## match tag=debug.** and dump to## $ echo <json> | fluent-cat <tag> console<source> <match debug.**> type forward type stdout</source> </match> sourceから取得した内容を match定義のtagに一致したものをmatchの中身の定義に応じてOutput
  6. 6. fluent-cat→output logfluent-catを使って試しにfluentdに出力## built-in TCP input <match debug.**>## $ echo <json> | fluent-cat <tag> type file<source> path /home/ike-dai/log/fluentd.log type forward </match></source>fluentd起動 # fluentd -c /etc/fluent/fluent.conffluent-catでログ送付 # echo {"test":12345} | fluent-cat debug.test1 $ less log/fluentd.log.20120519.b4c06414d3dc93f8c 2012-05-19T22:59:45+09:00 debug.test1 {"test":12345}
  7. 7. Plugin of fluentdfluent-logger (0.4.3)fluent-plugin-cassandra (0.0.2)fluent-plugin-couch (0.5.0)fluent-plugin-dstat (0.1.0)fluent-plugin-growl (0.0.5)fluent-plugin-ikachan (0.1.0)fluent-plugin-kestrel (0.1.0) 各種OutputやInput用のpluginが多数公開fluent-plugin-librato-metrics (0.2.3) gem insgtallで導入可能fluent-plugin-mongo (0.6.7)fluent-plugin-msgpack-rpc (0.2.1)fluent-plugin-mysql (0.0.2)fluent-plugin-parser (0.1.0)fluent-plugin-pghstore (0.1.2)fluent-plugin-redis (0.2.0)fluent-plugin-s3 (0.2.2)fluent-plugin-sns (0.2.1)fluent-plugin-solr (0.1.1)fluent-plugin-splunk (0.0.1.1)fluent-plugin-sqs (0.2.1)fluent-plugin-zabbix (0.0.1)
  8. 8. fluent-plugin-zabbixgem install $ gem install fluent-plugin-zabbix設定ファイル変更 <match stats.**> type zabbix zabbix_server localhost host fluent name_keys fluent1 add_key_prefix test </match>
  9. 9. fluent-plugin-zabbixzabbix item設定
  10. 10. fluent-plugin-zabbixfluent-catでログ送付$ echo {"fluent1":"test-log"} | fluent-cat stats.zabbix結果
  11. 11. fluent-plugin-mongogem install $ gem install fluent-plugin-mongo設定ファイル変更 <match debug.**> type copy <store> type stdout </store> <store> type mongo host localhost database fluent collection fluent </store> </match>
  12. 12. fluent-plugin-mongoMongoDBのデータ確認# mongo localhost:27017> use fluentswitched to db fluent> show collectionsfluentsystem.indexes> db.fluent.find(){ "_id" : ObjectId("4fbb0dab2663b31095000001"), "mongo": 1000, "time" : "Tue May 22 2012 12:52:56 GMT+0900(JST)" }
  13. 13. fluent-plugin-mongoapacheのログをmongoに格納 <source> <match apache.access> type tail type mongo format apache host localhost path /var/log/httpd/access_log database log tag apache.access collection logs </source> </match>{ "_id" : ObjectId("4fc2f0642663b30bed000001"), "host" : "172.19.xx.xx","user" : "-", "method" : "POST", "path" : "/zabbix/api_jsonrpc.php/api_jsonrpc.php", "code" : "200", "size" : "68", "referer" : "-", "agent" : "Zbx Ruby CLI", "time" : "Mon May 28 2012 12:25:29 GMT+0900 (JST)" }
  14. 14. Sample ApplicationNode.js + mongoose + mongoDB + fluentdでログを表示・検索できるWebアプリ作ってみた JSONオブジェクトでデータを扱えるので この組み合わせが非常にやりやすい 一括管理して検索機能とかあれば非常 に便利になるのでは
  15. 15. Closing● ログの管理という点で非常に柔軟性がある● とにかく盛り上がっている● pluginも大量に出てきている● Zabbixとうまく組み合わせて可視化してみると楽しいかも● 使ってみてちょっと気になった点 ○ apache ログをmongoDBに格納する際に少しタイムラグ あり? →Bufferのレイヤの挙動を今後確認予定

×