Найти тему
BASH DAYS | Linux Factory

Как собрать логи с Cron задач

Оглавление

Сегодня поговорим про логирование и cron. Но поговорим не про системное логирование процесса crond, а про более развернутое. Вывернет наизнанку, как ты любишь.

К примеру у тебя есть консольное приложение, после запуска которого, на экран выводится какой-либо результат.

Всё хорошо когда запустил ручками и посмотрел. Словил ВАУ эффект! Но если повесить эту задачу на cron, то в системном журнале ты увидишь лишь дату и время запуска.

Jul 11 00:00:01 bashdays CRON[123456]: (user) CMD (/var/www/htdocs/bin/console export:users)

Пожалуй очень информативно, правда? Ну запустился, а что произошло внутри, пёс его знает.

Щас исправим и получим красивое. Достаточно в конец команды добавить:

>> /var/log/cronlogs/www-console.log

тип того:

* */1 * * * php /var/www/htdocs/bin/console export:users >> /var/log/cronlogs/www-console.log

Теперь весь выхлоп с команды console export:users будет аккуратненько логироваться в файл www-console.log. По итогу в файле получаем красоту:

Папку только не забудь создать в /var/log, а то оно дурное и не додумается само.

[2023-07-11 10:04:20] service.stats.INFO: Processing users
[2023-07-11 10:04:20] service.stats.INFO: Updating local stats
[2023-07-11 10:04:20] service.stats.INFO: Updating count users
[2023-07-11 10:04:26] service.stats.INFO: Updating total stats
[2023-07-11 10:04:26] service.stats.INFO: Export Success

По желанию грепаем нужное нам, ну и всегда остаемся в курсе событий, зная что же происходит под капотом. Кстати отлично помогает при дебаге. То что кроновская задача выполнилась, еще ни о чем не говорит, внутри может быть злобный эксепшен.

Подпишись на BashDays в телеграм

Да и не забываем накинуть logrotate, чтобы место на диске не сжирало бигдатой, а лучше сразу перенаправляй это дело в какой-нибудь агрегатор логов типа ELK или LOKI.

Бонусом лови конфиг для logrotate, чтоб в гугле не лопатить:

/var/log/cronlogs/www-console.log {
su root root
daily
missingok
rotate 14
compress
notifempty
sharedscripts
}


Есть ли другие способы мониторинга для подобных ситуаций? Конечно есть! Но способ который я описал выше, используется практически всеми. По крайней мере я на него натыкаюсь постоянно у ребят в различных компаниях.

Потому что люди не любят усложнять и предпочитают быстренько накидать костылей, получить желаемый результат и дальше смотреть свои любимые сериальчики и наши мемчики.

О других способах я обязательно напишу отдельный пост, пусть это будет интригой, ну а может ты сам загуглишь и нам потом расскажешь.

В общем, адью, албибэк, увидимся! 😎

Рекомендую почитать