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

Как заставить logwatch фильтровать даты в журналах сельдерея?

Я новичок в Logwatch, и я настроил его для просмотра файлов журнала, созданных сельдереем, распределенной очередью задач, популярной в мире Python.

Мой logwatch.conf «Диапазон» установлен на «между вчера 4 утра и сегодня 4 утра», и этот фильтр диапазона работает для других файлов журнала - но он не работает для моих файлов журнала сельдерея.

Это моя установка:

/etc/logwatch/conf/services/celery.conf

Title = "Celery worker errors"
LogFile = celery

/etc/logwatch/conf/logfiles/celery.conf

LogFile = /var/log/208-celery.log
LogFile = /var/log/234-celery.log
LogFile = /var/log/403-celery.log
LogFile = /var/log/dev-celery.log

/ и т.д. / logwatch / скрипты / услуги / сельдерей

#!/bin/bash
cat

Кажется, проблема заключается в том, что просто используется cat в качестве фильтра - очевидно, что это не фильтрация какой-либо даты, а просто прохождение строк файлов журнала celerry.

Я знаю, что в logwatch есть несколько встроенных фильтров формата даты, но я не понимаю, как их применять и подходит ли какой-либо из них формат журналов сельдерея, которые выглядят следующим образом:

[2016-04-26 11:59:37,851: WARNING/MainProcess] celery@big-dog ready.
[2016-04-26 11:59:37,852: DEBUG/MainProcess] | Worker: Hub.register Pool...
[2016-04-26 11:59:37,852: DEBUG/MainProcess] basic.qos: prefetch_count->16
[2016-04-26 11:59:43,146: INFO/MainProcess] Received task: hello_world[b29ef98a-d9fb-4cc6-b7db-9434a9bcc1e2]

Мой вопрос: как мне настроить logwatch для правильной фильтрации этих файлов журнала по дате?

Я думаю, что файл / usr / share / logwatch / scripts / shared / applyhttpdate был бы полезен.

Определите формат даты для сельдерея.

/ и т. д. / logwatch / скрипты / общий / applycelerydate

use Logwatch ':dates';

$Debug = $ENV{'LOGWATCH_DEBUG'} || 0;

$SearchDate = TimeFilter('%Y-%m-%d %H:%M:%S');

if ( $Debug > 5 ) {
   print STDERR "DEBUG: Inside ApplyCeleryDate...\n";
   print STDERR "DEBUG: Looking For: " . $SearchDate . "\n";
}

while (defined($ThisLine = <STDIN>)) {
   if ($ThisLine =~ m/\[$SearchDate/o) {
      print $ThisLine;
   }
}

И свяжите файл журнала с форматом даты.

/etc/logwatch/conf/logfiles/celery.conf

LogFile = /var/log/208-celery.log
LogFile = /var/log/234-celery.log
LogFile = /var/log/403-celery.log
LogFile = /var/log/dev-celery.log
*ApplyCeleryDate