Мы используем nxLog для отправки всех видов регистрационной информации в Graylog. Это работает как для журнала ошибок SQL Server, так и для журналов аудита SQL, но также и для других журналов, не относящихся к SQL Server. Сначала мы изучали возможность использования аудита SQL для получения имени приложения для пользовательского подключения, но мы используем SQL Server 2016, и он доступен только начиная с SQL Server 2017. Вместо этого мы попытались использовать расширенные события для ведения журнала. Основные идеи работают, и при открытии файла расширенных событий в SSMS мы можем увидеть запрошенную информацию. Проблема в том, что расширенные файлы событий являются двоичными, и мы не можем использовать тот же тип конфигурации nxLog, что и для журнала ошибок или журналов аудита SQL. Вместо этого мы пытались использовать etw_classic_sync_target и трассировку событий для Windows (ETW).
Мы используем модуль nxLog im_etw для сбора информации об ETW. Я проверил конфигурацию nxLog (nxLog -v), и в основном конфигурация, похоже, работает, и некоторые события отправляются вперед. Проблема в том, что это не события из нашего расширенного сеанса событий! Скорее всего, причина в том, что мы не используем правильный поставщик ETW. Мне не удалось найти никакой информации о том, какой поставщик использует этот SQL Server и расширенные события. Я пробовал самые очевидные из них, например, sqlserver, но ни один из них не кажется правильным.
Кто-нибудь знает имя поставщика ETW, который использует расширенное событие etw_classic_sync_target? ИЛИ кто-то видит другую причину, почему это не работает?
Мы настроили модуль nxLog как это
<Input xe_etw>
Module im_etw
Provider sqlserver
</Input>