Symfoware

Symfowareについての考察blog

Logstash json形式のログファイルを読み込む(codec)

Logstashでテキストログを読み取りデータベースに登録してみました。
Logstash CodeIgniterで出力したログを収集する

grokを使用して既存のログファイルを解析しましたが、
json形式でログを出力すればひと手間減るのでは?と思い試してみます。



json形式のログ出力



前回同様、CodeIgniterからログを出力します。
こんな感じで適当にテキストファイルを出力するプログラムを作成しました。


  1. <?php
  2. class Test extends CI_Controller {
  3.     public function index() {
  4.         
  5.         $dt = new DateTime();
  6.         
  7.         $log = [
  8.             'timestamp' => $dt->format('Y-m-d H:i:s'),
  9.             'logdata' => 'ログの情報',
  10.         ];
  11.         
  12.         file_put_contents(FCPATH . 'json.log', json_encode($log) . PHP_EOL, FILE_APPEND);
  13.         
  14.     }
  15. }




プログラムを実行するとこんなテキストファイルが出力されます。

・json.log


  1. {"timestamp":"2016-08-07 20:50:21","logdata":"\u30ed\u30b0\u306e\u60c5\u5831"}






codec



入力を指定された形式に加工するにはcodecを使えば良いようです。
https://www.elastic.co/guide/en/logstash/current/codec-plugins.html

そのものずばりのjsonコーデックがありますので、これを使用します。
設定ファイルは以下のようになりました。


  1. input {
  2.     file {
  3.         path => "/var/dev/php/ci3/json.log"
  4.         start_position => beginning
  5.         codec => json
  6.     }
  7. }
  8. output {
  9.     
  10.     jdbc {
  11.         connection_string => "jdbc:mariadb://localhost/sample?user=root&password=P@ssw0rd"
  12.         statement => [ "INSERT INTO log (host, timestamp, message) VALUES(?, ?, ?)", "host", "timestamp", "logdata" ]
  13.     }
  14.     
  15. }




設定を再読み込み


# /etc/init.d/logstash reload




プログラムを実行してログを出力すると、ちゃんとデータベースに登録できました。


MariaDB [sample]> select * from log;
+----+------+---------------------+-----------------+
| id | host | timestamp         | message         |
+----+------+---------------------+-----------------+
| 39 | php5 | 2016-08-07 20:50:21 | ログの情報     |
+----+------+---------------------+-----------------+
1 row in set (0.00 sec)





avroやmsgpackといったcodecも用意されていますね。
inputにtcpを選択した時は帯域を節約できそうです。

関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2016/08/07(日) 21:06:02|
  2. Java
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<Ubuntu 16.04 eclipse neonのインストールと日本語化 | ホーム | Logstash CodeIgniterで出力したログを収集する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1912-5f75b590
この記事にトラックバックする(FC2ブログユーザー)