Должны ли мы хранить отладочную информацию в базе данных приложения - PullRequest
2 голосов
/ 20 июля 2011

У нас есть служба, работающая на 'n' хостах за VIP. Когда возникает какая-либо ошибка, возникающая при вызове определенного запроса, нам может быть интересно узнать причину, просматривая журналы на соответствующем хосте, где произошла ошибка. поскольку запрос может отправляться на любой хост, когда дело доходит до отслеживания журналов, нам нужно знать, с какого хоста произошла ошибка.

Одним из решений является сохранение имени хоста в базе данных нашего сервиса вместе с другой информацией. Альтернатива - перенести логи в общий магазин и отследить его там.

Я лично чувствую, что если мы пойдем с первым подходом, мы можем в конечном итоге добавить много таких атрибутов, связанных с отладкой, в базу данных приложения, тем самым загрязняя его. Однако второй вариант также не так прост в реализации и требует дополнительных затрат. Более того, на каком хосте произошла ошибка, это не сильно помогает, за исключением случая, когда ошибка возникла из-за какой-то аппаратной проблемы.

Что вы, ребята, предлагаете?

Ответы [ 2 ]

1 голос
/ 20 июля 2011

Не зная больше о вашей инфраструктуре, трудно быть точным, но вот некоторые общие точки зрения.

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

Я рекомендую использовать встроенную в вашу операционную систему систему регистрации событий;большинство каркасов регистрации поддерживают это из коробки.В Windows это журнал событий;на * nix есть система syslog.Регистрация должна быть быстрой, дешевой и пуленепробиваемой - это то, что вы получаете от инструментов ОС.

Второй вопрос заключается в том, как использовать эти журналы для устранения неполадок и мониторинга.Для этого существует множество инструментов, хотя в основном они предназначены для системных администраторов, а не для разработчиков.У Microsoft есть MoM, есть Tivoli и Big Brother, а также целый набор инструментов с открытым исходным кодом.Я бы использовал их, а не создавал собственное решение.

Ключевой момент - ведение журнала должно быть быстрым, дешевым и надежным;анализ и мониторинг должны быть полностью отделены от логики вашего приложения, чтобы вы могли повторно использовать инструменты и процессы в нескольких проектах.

0 голосов
/ 20 июля 2011

хранение имени хоста должно быть довольно дешевым, я думаю. Я так понимаю, вы добавляете логи в БД? Вы также можете сохранить pid для каждого процесса, который может помочь вам, если у вас есть несколько процессов, работающих на одном имени хоста. Комбинация имя хоста / pid / timestamp обеспечит уникальную идентификацию процесса.

...