Использование событий 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.

Другие вопросы по тегам