Используя rsyslog v8.2.2, я хотел бы сгруппировать многострочные сообщения, например, те, которые выводятся в журнале медленных запросов MySQL.
Каждое новое сообщение начинается с трех последовательных строк с символом «#» в качестве первого символа в строке, хотя в некоторых сообщениях только две строки содержат «#» в начале сообщения. (Я подозреваю, что запросы, инициированные PHP cli вместо стандартного PHP, не содержат # Time:
печать). Пример:
# Time: 140817 0:59:22
# User@Host: root[root] @ localhost []
# Query_time: 5.864315 Lock_time: 0.000033 Rows_sent: 857715 Rows_examined: 857715
SET timestamp=1408237162;
SELECT /*!40001 SQL_NO_CACHE */ * FROM `sales_flat_quote_shipping_rate`;
# Time: 140817 1:00:06
# User@Host: user2[user2] @ localhost []
# Query_time: 4.070595 Lock_time: 0.000068 Rows_sent: 0 Rows_examined: 1536
use db2;
SET timestamp=1408237206;
DELETE FROM `catalog_product_index_price_idx`;
# User@Host: db3[db3] @ localhost []
# Query_time: 3.892674 Lock_time: 0.046493 Rows_sent: 0 Rows_examined: 659
use db3;
SET timestamp=1408237206;
UPDATE user SET cert = 'yes' WHERE site_id < 10;
# Time: 140817 1:00:06
# User@Host: user2[user2] @ localhost []
# Query_time: 4.070595 Lock_time: 0.000068 Rows_sent: 0 Rows_examined: 1536
use db2;
SET timestamp=1408237206;
DELETE FROM `catalog_product_index_price_idx`;
# User@Host: db3[db3] @ localhost []
# Query_time: 3.892674 Lock_time: 0.046493 Rows_sent: 0 Rows_examined: 659
use db3;
SET timestamp=1408237206;
UPDATE user SET cert = 'yes' WHERE site_id < 10;
Как мне настроить rsyslog для отправки их в виде одного сообщения?
Rsyslog может сгруппировать многострочное сообщение журнала в одно сообщение через imfile модуль, однако поддерживаются только следующие три режима чтения:
Ваш случай не соответствует ни одному из них, поэтому вы не можете выполнить группировку напрямую через rsyslog. Однако вы можете проанализировать файлы журнала и преобразовать их в формат, понятный rsyslog. Простой сценарий оболочки может сделать эту работу, или вы можете взглянуть на полнофункциональные инструменты управления журналами, такие как logstash.