Сегодня поговорим про логирование и 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
}
Есть ли другие способы мониторинга для подобных ситуаций? Конечно есть! Но способ который я описал выше, используется практически всеми. По крайней мере я на него натыкаюсь постоянно у ребят в различных компаниях.
Потому что люди не любят усложнять и предпочитают быстренько накидать костылей, получить желаемый результат и дальше смотреть свои любимые сериальчики и наши мемчики.
О других способах я обязательно напишу отдельный пост, пусть это будет интригой, ну а может ты сам загуглишь и нам потом расскажешь.
В общем, адью, албибэк, увидимся! 😎