Jump to content

СистемаТап

СистемаТап
Первоначальный выпуск 2005  ( 2005 )
Стабильная версия
5.1 / 26 апреля 2024 г .; 3 месяца назад ( 26.04.2024 )
Репозиторий
Написано в С , С++
Операционная система Линукс
Тип Отслеживание языка программирования
Лицензия Стандартная общественная лицензия GNU
Веб-сайт исходное программное обеспечение .org /systemtap /

В вычислениях 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 год 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 заголовочный файл.

См. также

[ редактировать ]
  1. ^ «Обновление SystemTap» . LWN.net .
  2. ^ «Документация продукта для Red Hat Enterprise Linux» . Красная шляпа .
  3. ^ «Джош Стоун — SystemTap, версия 1.0» .
  4. ^ «Документация на продукцию» . Красная шляпа .
  5. ^ «Необязательное обновление для SystemTap» . Новелл . 10 октября 2006 г.
  6. ^ «Функции/SystemtapStaticProbes — FedoraProject» . Проект Федора.
  7. ^ «Справочник по языку SystemTap» .
  8. ^ Сравнить Римляне, Робб (2009). «Справочник по языку SystemTap: руководство по конструкциям и синтаксису, используемым в сценариях SystemTap». Красная шляпа: 4. CiteSeerX   10.1.1.172.5186 . SystemTap [...] требует привилегий root для фактического запуска объектов ядра, которые он создает, с помощью команды sudo, применяемой к программе staprun.[...] staprun является частью пакета SystemTap, предназначенной для загрузки и выгрузки модулей и ядра -Передача данных пользователя. {{cite journal}}: Для цитирования журнала требуется |journal= ( помощь )
  9. ^ Мерей, Аарон (18 октября 2017 г.). «Выпуск systemtap 3.2» . Проверено 18 октября 2017 г. Команда systemtap объявляет о выпуске 3.2 [...] ранней экспериментальной серверной части eBPF (расширенный пакетный фильтр Беркли) [...] [ постоянная мертвая ссылка ]
  10. ^ Эйглер, Фрэнк Ч. (01.02.2012). «Выпуск systemtap 1.7» . Проверено 26 марта 2013 г. Команда systemtap объявляет о выпуске 1.7 [...] Добавлена ​​новая группа и уровень привилегий «stapsys» [...]
  11. ^ «Примеры SystemTap» .
  12. ^ «Военные истории — Systemtap Wiki» .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 078d10f910433a469fad6868856a6acf__1714159920
URL1:https://arc.ask3.ru/arc/aa/07/cf/078d10f910433a469fad6868856a6acf.html
Заголовок, (Title) документа по адресу, URL1:
SystemTap - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)