Кто-нибудь знает, насколько эффективен журнал событий Windows?
У меня есть сценарий, в котором каждую минуту можно регистрировать множество событий.
Хорошо ли оптимизирован журнал событий Windows для обработки большого количества событий?
Было бы это сопоставимо, например, с SQL Server с точки зрения производительности.
И, наконец, можно ли отправить журналы в базу данных?
Журнал событий Windows достаточно надежен, чтобы обрабатывать много событий в секунду, поэтому в зависимости от того, сколько событий вы говорите (100 по сравнению с 100000) в минуту и что именно вам нужно делать с данными, будет зависеть от того, буду ли я использовать событие войти или нет. Если мне просто нужно использовать его для устранения неполадок, журнал событий очень хорош для этого, но если мне нужно проанализировать данные, я всегда в конечном итоге помещаю их в базу данных или вытаскиваю из журнала событий и анализирую. Для этого есть несколько инструментов, но это ненужный шаг, если вы можете перейти непосредственно к базе данных.
Я не уверен в точных характеристиках, но для более легкой вставки записей журнал событий должен потреблять меньше ресурсов, чем запуск локального SQL-сервера. С точки зрения производительности я бы сказал, что SQL-сервер будет намного лучше, чем журнал событий. Я считаю, что журнал событий также хранится в памяти.
Имейте в виду, что размер журнала событий также ограничен. Если вам нужно сохранить много журналов, вам нужно будет запустить автоматические сценарии для его экспорта и убедиться, что у вас есть правильные настройки журнала событий, чтобы вы не потеряли информацию. Если журнал событий имеет максимальный размер, журналы не будут сохраняться, пока он не будет очищен.
Журналы событий можно регистрировать в базе данных или системном журнале, но, честно говоря, я бы не рекомендовал этого.
Я бы порекомендовал вам взвесить свои варианты, но если вы говорите о тяжелых транзакциях, подумайте о базе данных.
Для запроса и извлечения данных о событиях на основе критериев он абсолютно несравним с SQL и не предназначен для этого.
Доступно множество приложений, которые пересылают данные о событиях на централизованный сервер. Один из них - Snare: http://www.intersectalliance.com/projects/SnareWindows/index.html
Windows 2008/7 / Vista имеют встроенную возможность пересылки событий централизованному «сборщику», но на самом деле это не база данных. Ниже приведен пример того, как это настроить:
Сборщик событий Windows
http://msdn.microsoft.com/en-us/library/bb427443%28v=vs.85%29.aspx
Сборщик событий Windows Настройка подписки, инициированной источником.
http://msdn.microsoft.com/en-us/library/bb870973(v=vs.85).aspx
Вместо того, чтобы помещать журналы событий в базу данных, вы можете импортировать их постфактум. Если вам нужен эффективный запрос данных, это может быть подходящим вариантом.
Несколько лет назад (текущая была Windows 2000 Server) консультант Microsoft сказал мне, что система журнала событий хороша для нескольких событий в секунду, но регистрация сотен - плохая идея (но, вероятно, справится). Для больших объемов журналов трассировка событий для Windows (ETW) была лучшим выбором (но трудно получить действенную информацию: о разработчике или администраторе).
Однако в Vista / 2008 система событий была полностью переработана (поддерживает гораздо больше журналов, не отображает весь журнал в памяти ядра), поэтому хорошая практика могла измениться.
Кроме того, теперь в .NET и в подсистеме регистрации событий есть поддержка ETW, поэтому время обучения значительно сокращается.
Если вы регистрируетесь на внешнем хосте (например, в базе данных), подумайте, как вы будете регистрировать ошибки при подключении к этому серверу (т. Е. База данных не может быть единственным маршрутом для ведения журнала).
Также нужно учитывать потребителя событий. Если у кого-то нет эффективного способа для проверки статуса или диагностики проблемы для извлечения необходимой информации, тогда все усилия по регистрации теряют свою ценность.