Scroll to navigation

STAPVIRT(1) General Commands Manual STAPVIRT(1)

JMÉNO

stapvirt - připravit libvirt domény pro sondování systemtapem

POUŽITÍ

stapvirt [-c URI] [-d PATH] [-v] COMMAND ARGUMENTS

POPIS

Program stapvirt slouží k přidání portů do domén, které obsluhuje libvirt (viz <http://libvirt.org/>). Tyto porty pak umí využít stap ke spuštění skriptů uvnitř těchto domén (viz volba '--remote' v manuálové stránce stap(1))

Porty se do definice domény přidávají příkazem port-add a odebírají se analogickým příkazem port-remove. Poznamenejme, že počet možných systemtap sezení odpovídá počtu dostupných portů.

Při použití alespoň libvirt v1.1.1 a QEMU v0.10.0 mohou být porty přidávány a odebírány za běhu (hotpllugging). V tomto případě není iniciální port-add nutný.

Aby bylo možné se k portům přidaným za běhu připojit, je třeba zaručit, aby ovladač virtio-serial byl aktivní. Při vytváření domény programem virt-install se toho dá dosáhnout takto:

$ virt-install [...] --controller=virtio-serial

Pokud již doména existuje, použijte port-add, port-remove, a následně doménu restartujte. Port byl odebrán, ale ovladač zůstane na místě.

VOLBY

Podporují se následující volby. Jakákoliv jiná volba způsobí výpis nápovědy.

Určí URI libvirt ovladače ke kterému se plánujeme připojit (např. 'qemu:///system'). NULL je také bezpečná hodnota, která představuje žádost o připojení k výchozímu ovladači. Kompletní seznam podporovaných hodnot shrnuje <http://libvirt.org/uri.html>.

Určuje adresář pro UNIX sokety odpovídající přidaným portům. Výchozí adresář je '/var/lib/libvirt/qemu'.

Zvýšit upovídanost. Volbu lze opakovat pro další zvýšení povídanosti.

PŘÍKAZY

Program stapvirt přijímá následující příkazy. Jiný příkaz způsobí vypsání nápovědy.

Zobrazit nápovědu.

Vypsat dostupné domény.

Trvale přidat port do definice domény. Pokud doména zrovna běží, je nutné ji restartovat, aby změny byly efektivní.

Vypíše seznam cest k UNIX soketům, které odpovídají SystemTap portům v definici domény.

Odstraní port z definice domény. Pokud doména právě běží, je nutno ji restartovat, aby změny byly efektivní.

Zobrazit následující informace o doméně: jméno, UUID, stav, čísla SystemTap portů, a zda je podporován "hotpllugging", tj. přidávání a odebírání portů za běhu.

TUTORIÁl

Následuje lehký úvod do stapvirtu. Začněme vypsáním privilegovaných domén:

$ stapvirt -c 'qemu:///system' list
Available domains on URI 'qemu:///system':
ID      State     Type        Name
2       running   persistent  TestVM

Poznamenejme, že jsme určili URI pomocí přepínače -c. Jinak by mohl libvirt použít výchozí hodnotu, např. 'qemu:///session'.

Namísto opakovaného zadávání URI může být pohodlnější nastavit odpovídající proměnnou prostředí LIBVIRT_DEFAULT_URI a přepínač -c napříště vynechat (poznamenejme, že toto je funkcionalita libvirtu, viz <libvirt.org/uri.html> ).

Příkaz list ukazuje, že doména 'TestVM' běží a má ID 2. Použijme příkaz query abychom zjistili podrobnosti:

$ stapvirt query TestVM # by name
$ stapvirt query 2      # by ID

Name: TestVM
UUID: 905951c0-fa4f-409b-079c-c91ddda27028
State: running
ID: 2
Type: persistent
Permanent Ports: 0
Hotplugging: not supported

Příkaz query dává základní informace o doméně, jako UUID a stav. Z důležitějších informací jsou to pak čísla permanentních portů, a zda je podporován "hotplugging" (což technicky vzato závisí na libvirt a qemu a nesouvisí přímo s doménou).

Kdyby byl podporován "hotplugging", mohli bychom zde skončit a spustit přímo stap (s tím, že ovladač virtio-serial je dostupný, viz POPIS). Ale protože "hotplugging" v našem případě není podporován, musíme přidat porty ručně příkazem port-add:

$ stapvirt port-add TestVM
Added new port org.systemtap.stapsh.0
The domain must be powered off before changes take effect.

Ověřit, že port byl přidán, můžeme opět příkazem query:

$ stapvirt query TestVM
...

Permanent Ports: 1
Hotplugging: not supported

Nyní máme k dispozici 1 permanentní port. Pro více podrobností můžeme zavolat příkaz port-list:

$ stapvirt port-list TestVM
/var/lib/libvirt/qemu/TestVM.org.systemtap.stapsh.0.sock

Po restartu domény už můžeme zavádět systemtap sondy příkazem stap:

$ stap -e 'probe begin { printf("Hello from TestVM!\n"); exit() }' \

--remote=libvirt://TestVM Hello from TestVM!

Na závěr můžeme použitý port opět odebrat příkazem port-remove:

$ stapvirt port-remove TestVM
Removed port org.systemtap.stapsh.0
The domain must be powered off before changes take effect.

A to je vše!

VIZ TÉŽ

stap(1),
virt-install(1)

CHYBY

Použijte projektovou bugzillu, nebo mailing list. http://sourceware.org/systemtap/, <systemtap@sourceware.org>.

error::reporting(7stap), https://sourceware.org/systemtap/wiki/HowToReportBugs