Назад | Перейти на главную страницу

Отправка нескольких строк журнала (mysql-slow.log, php5-fpm.log.slow) в syslog

Я пытаюсь собрать несколько источников сообщений об ошибках в одном месте, чтобы упростить контекст. В настоящее время я просматриваю 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. Его можно легко настроить для анализа многострочных записей - и делает это невероятно чисто.

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'
  }
}