СистемаТап
![]() | |
Первоначальный выпуск | 2005 |
---|---|
Стабильная версия | 5.1
/ 26 апреля 2024 г |
Репозиторий | |
Написано в | С , С++ |
Операционная система | Линукс |
Тип | Отслеживание языка программирования |
Лицензия | Стандартная общественная лицензия GNU |
Веб-сайт | исходное программное обеспечение |
В вычислениях SystemTap ( stap ) — это язык сценариев и инструмент для динамического инструментирования работающих Linux на базе операционных систем . Системные администраторы могут использовать SystemTap для извлечения, фильтрации и обобщения данных, чтобы обеспечить диагностику сложных проблем производительности или функциональных проблем.
SystemTap состоит из бесплатного программного обеспечения с открытым исходным кодом и включает в себя вклад Red Hat , IBM , Intel , Hitachi , Oracle , Университета Висконсин-Мэдисон и других членов сообщества. [1]
История
[ редактировать ]SystemTap дебютировал в 2005 году в Red Hat Enterprise Linux 4 Update 2 в качестве предварительной версии технологии. [2]
После четырех лет разработки SystemTap 1.0 был выпущен в 2009 году. [3]
По состоянию на 2011 год [update]SystemTap полностью поддерживается во всех дистрибутивах Linux, включая RHEL/CentOS 5. [4] начиная с обновления 2, SLES 10, [5] Федора, Дебиан и Убунту.
Точки трассировки в виртуальных машинах CPython и JVM были добавлены в SystemTap 1.2 в 2009 году. [6]
В ноябре 2019 года в SystemTap 4.2 включен экспортер Prometheus .
Использование
[ редактировать ]Файлы SystemTap написаны на языке SystemTap. [7] (сохранено как .stp
файлы) и запустите с помощью stap
командная строка. [8]
Система выполняет ряд анализов сценария, прежде чем разрешить его запуск. Скрипты могут выполняться с помощью одного из трех серверов, выбранных пользователем. --runtime=
вариант. По умолчанию используется загружаемый модуль ядра , который имеет самые полные возможности для проверки и управления любой частью системы и, следовательно, требует большинства привилегий. Другой бэкэнд основан на библиотеке динамического анализа программ DynInst и предназначен только для инструментирования собственных программ пользовательского пространства и требует минимальных привилегий. Новейший бэкэнд [9] основан на байт-коде eBPF , ограничен возможностями интерпретатора ядра Linux и требует промежуточного уровня привилегий. В каждом случае модуль выгружается после завершения работы скрипта.
Сценарии обычно фокусируются на событиях (таких как запуск или завершение сценария), скомпилированных точках проверки, таких как «точки трассировки» Linux, или выполнении функций или операторов в ядре или пользовательском пространстве.
Некоторые сценарии «режима гуру» также могут иметь встроенный язык C, который может работать с -g
опция командной строки. Однако использование режима гуру не рекомендуется, и каждый выпуск SystemTap включает в себя больше точек проверки, предназначенных для устранения необходимости в сценариях режима гуру. Режим Guru необходим для того, чтобы сценарии могли изменять состояние инструментального программного обеспечения, например, для применения некоторых типов экстренных исправлений безопасности.
Начиная с версии SystemTap 1.7, в программном обеспечении реализована новая группа stapsys и уровень привилегий. [10]
Простые примеры
[ редактировать ]Следующий сценарий показывает все приложения, устанавливающие параметры TCP- сокета в системе, какие параметры задаются и успешно ли установлен этот параметр.
# Show sockets setting options
# Return enabled or disabled based on value of optval
function getstatus(optval)
{
if ( optval == 1 )
return "enabling"
else
return "disabling"
}
probe begin
{
print ("\nChecking for apps setting socket options\n")
}
# Set a socket option
probe tcp.setsockopt
{
status = getstatus(user_int($optval))
printf (" App '%s' (PID %d) is %s socket option %s... ", execname(), pid(), status, optstr)
}
# Check setting the socket option worked
probe tcp.setsockopt.return
{
if ( ret == 0 )
printf ("success")
else
printf ("failed")
printf ("\n")
}
probe end
{
print ("\nClosing down\n")
}
Многие другие примеры поставляются вместе с SystemTap. [11] На странице «Военные истории» также представлены реальные примеры использования SystemTap. [12]
Импорт скриптов из других технологий трассировки
[ редактировать ]SystemTap может присоединяться к маркерам DTrace , когда они скомпилированы в приложение с помощью макросов из sys/sdt.h
заголовочный файл.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Обновление SystemTap» . LWN.net .
- ^ «Документация продукта для Red Hat Enterprise Linux» . Красная шляпа .
- ^ «Джош Стоун — SystemTap, версия 1.0» .
- ^ «Документация на продукцию» . Красная шляпа .
- ^ «Необязательное обновление для SystemTap» . Новелл . 10 октября 2006 г.
- ^ «Функции/SystemtapStaticProbes — FedoraProject» . Проект Федора.
- ^ «Справочник по языку SystemTap» .
- ^ Сравнить Римляне, Робб (2009). «Справочник по языку SystemTap: руководство по конструкциям и синтаксису, используемым в сценариях SystemTap». Красная шляпа: 4. CiteSeerX 10.1.1.172.5186 .
SystemTap [...] требует привилегий root для фактического запуска объектов ядра, которые он создает, с помощью команды sudo, применяемой к программе staprun.[...] staprun является частью пакета SystemTap, предназначенной для загрузки и выгрузки модулей и ядра -Передача данных пользователя.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Мерей, Аарон (18 октября 2017 г.). «Выпуск systemtap 3.2» . Проверено 18 октября 2017 г.
Команда systemtap объявляет о выпуске 3.2 [...] ранней экспериментальной серверной части eBPF (расширенный пакетный фильтр Беркли) [...]
[ постоянная мертвая ссылка ] - ^ Эйглер, Фрэнк Ч. (01.02.2012). «Выпуск systemtap 1.7» . Проверено 26 марта 2013 г.
Команда systemtap объявляет о выпуске 1.7 [...] Добавлена новая группа и уровень привилегий «stapsys» [...]
- ^ «Примеры SystemTap» .
- ^ «Военные истории — Systemtap Wiki» .
Внешние ссылки
[ редактировать ]- Официальный сайт
- SystemTap вики
- Справочник по языку SystemTap ( PDF )
- Анализ проекта SystemTap от Ohloh
- Динамическая трассировка с помощью DTrace и SystemTap
- Учебное пособие по Systemtap Фрэнк Ч. Эйглер
- Руководство для начинающих SystemTap Дон Доминго, Уильям Коэн
- Решение проблем с помощью Systemtap , Симпозиум Linux в Оттаве. Архивировано 13 сентября 2008 г. на Wayback Machine, 2006 г.
- Решение проблем с помощью SystemTap. Архивировано 22 февраля 2012 г. на Wayback Machine , Юджин Тео, представлено на Red Hat Summit 2007 ( сценарии ).
- Динамическая трассировка и анализ производительности с использованием SystemTap , Джошуа Стоун, представлено на конференции LinuxWorld 2008.
- Учебное пособие по SystemTap , Джим Кенистон, представленное на Linux Plumbers Conference 2008