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

Эта задача — шаг 19 курса «Процессы и сигналы»

Экспортёр завис и игнорирует TERM

средне~10 мин

Prometheus перестал получать метрики: запрос к http://localhost:9100/metrics висит без ответа. Процесс экспортёра на порту 9100 жив, но завис. Найди его, останови и запусти экспортёр заново из /opt/exporter/start.sh в фоне, чтобы curl -m 3 http://localhost:9100/metrics снова отдавал метрики.

Что потренируешь:
  • зависший процесс
  • ss -p
  • SIGTERM и SIGKILL
  • перезапуск демона
  • curl -m

Разбор темы

Зависший процесс отличается от упавшего: он есть в ps, держит сокет, ядро даже принимает соединения в очередь listen, но ответа нет — поэтому клиент виснет, а не получает отказ. Диагностика — запрос с таймаутом и ss -tlnp, чтобы найти держателя порта. Процесс, который застрял или сам перехватывает сигналы, может не отреагировать на SIGTERM и SIGHUP: обработчик не вызывается или сигнал игнорируется. SIGKILL перехватить нельзя — ядро снимает процесс без его участия, поэтому его оставляют на крайний случай, когда мягкие сигналы не сработали.

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

  1. экспортёр снова отдаёт метрики
  2. зависший процесс остановлен

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