Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Node.js: logs, debugging, error analysis, troubleshooting, application monitoring

Как искать причину ошибки по логам?

Этот вопрос проверяет умение анализировать логи приложения для диагностики ошибок, что необходимо для оперативного устранения сбоев в продакшене.

Короткий ответ

Чтобы найти причину ошибки по логам, сначала определи время её возникновения и отфильтруйте логи по этому периоду. Ищите сообщения уровня ERROR или FATAL, а также связанные по trace_id или request_id. Проанализируйте стектрейс, чтобы понять, в каком модуле и на какой строке кода произошла ошибка. Проверьте контекст: параметры запроса, состояние системы, предшествующие WARN-сообщения. Сопоставьте найденную ошибку с кодом приложения или документацией.

Длинный ответ

Поиск причины ошибки по логам — это систематический процесс анализа записей, которые приложение или система генерируют в ходе работы. Логи служат основным источником информации при инцидентах, так как фиксируют события, предупреждения и сбои.

Основные шаги анализа

  • Определение временного окна: Уточните точное время возникновения ошибки от пользователя или системы мониторинга.
  • Фильтрация по уровню: Сначала ищите записи с высоким уровнем серьёзности (ERROR, CRITICAL, FATAL).
  • Поиск по идентификаторам: В распределённых системах используйте correlation ID (trace_id, request_id), чтобы собрать все логи, относящиеся к одному запросу.
  • Изучение контекста: Проанализируйте записи, которые шли непосредственно до и после ошибки (уровни INFO, WARN). Они могут указывать на аномальное состояние.
  • Анализ стека вызовов (stack trace): Это ключевой элемент. Он показывает последовательность вызовов методов, которая привела к исключению, включая номера строк кода.

Практический пример

Представьте, что в логах веб-приложения на Node.js появилась следующая запись:

2023-10-26T14:30:15.123Z ERROR [user-service] Request failed: GET /api/users/xyz
Error: Database connection timeout
    at Query.execute (/app/src/db/client.js:45:15)
    at UserRepository.findById (/app/src/repositories/user.js:28:5)
    at UserController.getUser (/app/src/controllers/user.js:12:10)
Request ID: req-abc-123, User ID: 456

Анализ:
1. Время ошибки: 2023-10-26T14:30:15.123Z.
2. Уровень: ERROR. Сервис: user-service.
3. Сообщение: "Database connection timeout" — указывает на проблему с БД.
4. Stack trace: Ошибка возникла в файле db/client.js на строке 45 внутри метода execute. Вызов шёл из user.js, затем из user.js.
5. Контекст: Request ID позволяет найти другие логи этого запроса. User ID помогает воспроизвести сценарий.

Где применяется и дополнительные инструменты

Этот навык критичен при:
- Расследовании инцидентов на продакшене (SRE, DevOps).
- Локальной отладке сложных проблем.
- Анализе качества кода и устойчивости системы.

Для эффективной работы используйте:
- Централизованные системы сбора логов (ELK Stack, Loki, Splunk).
- Инструменты агрегации и визуализации (Grafana).
- Практику структурированного логирования (JSON-логи), которая облегчает фильтрацию по полям.

Вывод: Системный анализ логов — фундаментальный навык для быстрой диагностики сбоев. Его стоит применять при любом инциденте, а также для проактивного поиска проблем по предупреждениям (WARN) до того, как они приведут к ошибкам.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • Node.js

    Node.js

  • Linux

    Linux

Ключевые слова

#logs

#debugging

#error analysis

#troubleshooting

#application monitoring

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