Практическое задание

Эта задача — шаг 11 курса «Выкатываем релиз»

Смоук-тест после релиза по cron

средне~15 мин

Релиз выкачен — теперь нужен смоук-тест на будущее. Напиши исполняемый скрипт /usr/local/bin/smoke-test, который получает URL первым аргументом и выходит с кодом 0, если URL ответил HTTP 200, и 1 в любом другом случае (404, 500, сервис не отвечает). Затем повесь cron-задачу (crontab любого пользователя или файл в /etc/cron.d/), которая каждые 5 минут запускает его против http://localhost:8090/healthz и дописывает вывод в /var/log/billing-smoke.log.

Что потренируешь:
  • curl http_code
  • код выхода
  • cron
  • */N
  • дозапись >>

Разбор темы

Смоук-тест — минимальная проверка «сервис вообще жив» сразу после выкатки и потом по расписанию. Результат он сообщает кодом выхода: 0 — всё хорошо, не ноль — тревога, и на этом строится любая автоматика, от cron до CI. Важно смотреть именно на HTTP-статус, а не на то, ответил ли сервер: curl без флагов успешно завершается и на 404, поэтому код ответа достают опцией -w '%{http_code}', а тело выбрасывают в /dev/null. Периодический запуск — строка cron с шагом */5 в поле минут и дозаписью вывода в лог через >>.

Что проверяется

  1. скрипт smoke-test исполняемый
  2. для живого /healthz — код 0
  3. для ответа 404 — код 1
  4. для лежащего сервиса — код 1
  5. cron запускает smoke-test каждые 5 минут

Как это выглядит