我试图将几个错误消息来源汇总到一个地方,以便更容易地将其放入上下文中。 我目前正在查看rsyslog,但我可以改变这一点 – 如果它阻止我做我想做的事情。
我的问题是,我怎样才能最好地处理mysql-slow.log和php5-fpm.log.slow ?
一个来自php5-fpm.log.slow的例子是:
Oct 16 17:16:39.820707 [pool www] pid 13060 script_filename = /var/www/somesite/index.php [0x0000000002f846c8] _path() /var/www/somesite/lib/Zend/Cache/Backend/File.php:895 [0x0000000002f844b0] _path() /var/www/somesite/lib/Zend/Cache/Backend/File.php:579 [0x0000000002f84210] _metadatasFile() /var/www/somesite/lib/Zend/Cache/Backend/File.php:545 [0x0000000002f83fb8] _loadMetadatas() /var/www/somesite/lib/Zend/Cache/Backend/File.php:479 [0x0000000002f830d0] _getMetadatas() /var/www/somesite/lib/Zend/Cache/Backend/File.php:750 [... Stack trace can be long, usually less than 30 lines ...]
而mysql-slow.log的一个例子是:
# Time: 111017 7:20:17 # User@Host: someusername[someusername] @ [127.0.0.1] # Thread_id: 183761313 Schema: somesitedb Last_errno: 0 Killed: 0 # Query_time: 13.705725 Lock_time: 0.000146 Rows_sent: 0 Rows_examined: 8315267 Rows_affected: 0 Rows_read: 18446744073709551491 # Bytes_sent: 1019 Tmp_tables: 0 Tmp_disk_tables: 0 Tmp_table_sizes: 0 # InnoDB_trx_id: B4BB5B67 use somesitedb; SET timestamp=1318828817; SELECT * FROM table;
我希望为每个条目发送一个系统日志消息,并保持时间戳完整,所以更容易将发生的情况置于上下文中。 我怎样才能最好地实现呢?
我自己研究了这个主题,偶然发现了一个非常酷的名为Logstash的工具。 它可以很容易地configurationparsing多行条目 – 它以一种令人难以置信的干净的方式。
input { file { type => 'mysql-slow' path => '/var/log/mysql/mysql-slow.log' } file { type => 'php5-fpm-slow' path => '/var/log/php5-fpm.log.slow' } } filter { multiline { type => 'mysql-slow' pattern => '^# Time: ' negate => true what => 'previous' } multiline { type => 'php5-fpm-slow' pattern => '^$' negate => true what => 'previous' } }