@kirill-93

Как правильно отслеживать выполнение cron скриптов?

У меня в проекте на Laravel много скриптов запускаются по крону.
Ну например что-нибудь такое:
$users = User::all();

foreach ($users as $user) {
    try {
        $json = file_get_contents('vkapicom/xxx');
        $content = json_decode($json, true);
        usleep(500);
    } catch (\Exception $e) {
        Log::create(['message' => $e->getMessage()]);
        continue;
    }

    if (isset($content)) {
        //do something
        try {
            Post::create([/*...*/]);
        } catch (\Exception $e) {
            Log::create(['message' => $e->getMessage()]);
        }
    }
}


Log - это мой класс, который складывает информацию об ошибках в БД, я ее в админке потом смотрю. Ну это примерно. Вот с какими проблемами я сталкиваюсь:
1. Некоторые ошибки повторяются регулярно. Я делаю запрос в АПИ, куда передаю id пользователя. Не для всех пользователей возвращаются значения, для некоторые апи возвращает 404 или 403 и это нормально. Но такие пользователи регулярно проверяются и засоряют лог.
2. Это один скрипт, есть еще пара-тройка, у них совершенно другая логика, совершенно другие ошибки. В основном там работа с АПИ разных сторонних сервисов.
В общем у меня никак не получается грамотно организовать мониторинг этого всего. То какой-то случай появляется, который не был предусмотрен, то лог превращается в кашу из ошибок, которые по-сути не ошибки, а нормальная ситуация.
Как вы мониторите разные крон скрипты? У вас единый лог для них? Или может быть для каждого отдельного скрипта свой лог? Или может быть лучше просто писать весь вывод в стандартный лог Laravel?
  • Вопрос задан
  • 256 просмотров
Пригласить эксперта
Ответы на вопрос 2
1210mk2
@1210mk2
а какая разница? что даст ответ?
на одном из проектов где есть оплаты я лог олпат выкидываю в отдельный файл, остальное всё сыпется в ларовский daily.

на другом - отработка тяжелого сборщика данных по крону - каждый инстанс сборщика в свой единый файл, ручками архивируется иногда.

на третьем дооолго исполняющемся сборщике, где важно что именно сейчас делает скрипт в свой лог выводится прямо дерево сегментов со свойствами, которые он собрался прорабатывать в эту итерацию и отбивка по каждому ок/неок. по свойствам можно ручками быстро написать запрос в БД, чтоб проверить возможные затыки.
Ответ написан
Комментировать
solotony
@solotony
покоряю пик Балмера
я все стараюсь в один лог класть, что бы не плодить мусор.

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

у меня функция записи лога кроме него пишет еще "системные события" - то есть то что мне как админу важно наблюдать. например системные ошибки
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы