Использование событий LTTng в приложении.NET Core
У меня есть приложение.NET Core, которое я хотел бы настроить для прослушивания событий LTTng, но я практически не нашел документации о том, как на самом деле сделать это в коде, в C# / .NET Core. Я много читал о том, что даже команда CoreCLR сделала ставку на то, что LTTng является их основным решением для трассировки в Linux (в то время как ETW является естественным существующим решением для Windows), но пока еще ничего не говорилось о направлении, которое могло бы пойти в коде. С другой стороны, довольно легко (и хорошо задокументировано) настроить приложение на прослушивание ETW в коде (например, это только один из множества примеров).
Кто-нибудь имел опыт этого или видел какую-либо хорошую документацию по этому поводу? Могут ли те же библиотеки / пакеты /nugets по-прежнему применяться в мире Linux и на.NET Core (т. Е. Нужно ли мне установить TraceEventSession
с ассоциированным TraceEventParsers
действующий на TraceEvent
Так же, как в Windows, или в Linux требуется другое направление / набор пакетов?
Любая помощь будет принята с благодарностью!
Примечание: я не хочу использовать lttng
сам инструмент для трассировки, но хочу встроить прослушивание в само приложение.NET Core.
0 ответов
Насколько мне известно, в.NET Core нет API для приема событий LTTng. Но с.NET Core 2.2 вы можете использовать EventListener
для прослушивания событий, генерируемых CLR в том же процессе. Вы можете найти инструкции здесь.
Если вам нужны не только внутрипроцессные события, тогда вам следует написать собственный код на C / C++, используя liblttng-ctl
(см https://github.com/lttng/lttng-tools для деталей) и Babeltrace 2 C API.