FuelPHPとFluentdを連携させてみる
FuelPHP AdventCalendar 2013の20日目です。
今回はFluentd + FuelPHPについて書きたいと思います。
まず, 「Fluentdって何?」と思った方はこちら
今回の目標はFluentdとObserverを連携して, データを送れるようにします。
手順は次のとおりです。
- ライブラリの取得
- packagesの準備
- Observerの設定
1. ライブラリの取得
これをfuel/packages/fluentd/vendor/以下に入れます
2. packagesの準備
fuel/packages/fluentd/以下にbootstrap.phpを作成します
fuel/packages/fluentd/bootstrap.php
<?php require_once __DIR__.'/vendor/Fluent/Autoloader.php'; Autoloader::add_classes(array( 'Fluentd\\Observer_Td' => __DIR__.'/classes/observer/td.php', ));
このAutoloaderに合わせてfuel/packages/fluentd/classes/に必要なファイルを記述します
fuel/packages/fluentd/classes/observer/td.php
<?php class Observer_Td extends \Orm\Observer { public function after_save(\Orm\Model $obj) { $save_data = array(); foreach(array_keys($obj->properties()) as $p){ $save_data[$p] = $obj->{$p}; } $instance = new \Fluent\Logger\FluentLogger(‘localhost’,’24800’,array(),null); $instance->post(’tag_name_for_fluentd’, $save_data); } }
3. Observerの設定
Observerを設定して実際にmodelのデータをFluentdに渡します
<?php class model { protected static $_observers=array( 'Fluentd\Observer_Td'=>array( 'events'=>array('after_save') ) ); }
これでmodelでsaveメソッドが実行された時にsaveされたデータをFluentdに 渡すことが出来ます