Posts Tagged zarządzanie

Polecenie twiddle: operacje na zasobach serwera

Polecenie twiddle pozwala na wykonywanie różnych operacji na serwerze aplikacji JBoss.

List wszystkich wpisów z tej serii:

  1. Polecenie twiddle: jak połączyć się z serwerem aplikacji JBoss AS
  2. Polecenie twiddle: jak znaleźć informacje o ziarnach i metodach
  3. Polecenie twiddle: operacje na na zasobach serwera

Pobranie informacji o wartości atrybutu: get

Przy użyciu polecenia twiddle można uzyskać informacje o wartości różnych atrybutów poszczególnych ziaren przy użycia komendy get. Konstrukcja polecenia jest następująca:

$ twiddle.sh -H get
Help for command: 'get'

Get the values of one or more MBean attributes

usage: get [options] <name> [<attr>+]
  If no attribute names are given all readable attributes are retrieved
options:
    --noprefix    Do not display attribute name prefixes
    --            Stop processing options

Jak widać, aby poznać wartość wybranego ziarna należy odwołać się do ziarna oraz podać listę atrybutów, których wartości nas interesują. Przykładowe wywołanie, sprawdzające czy serwer wystartował:

$ twiddle.sh get "jboss.system:type=Server" Started
Started=false

Jak widać, serwer jeszcze nie działa, polecenie zostało wykonane w trakcie jego startu. Wydanie go już po pomyślnym starcie serwera zwraca następujący wynik:

$ twiddle get --noprefix "jboss.system:type=Server" Started
true

Widać tutaj także jak wpływa na wynik działania użycie opcji --noprefix, zostanie wyświetlona tylko wartość podanego atrybutu, bez jego nazwy.

A oto jak działa pobranie wartości więcej niż jednego atrybutu (w tym przypadku minimalnej i maksymalnej ilości otwartych połączeń w danej puli):

$ twiddle.sh get jboss.jca:name=DefaultDS,service=ManagedConnectionPool MinSize MaxSize
MinSize=5
MaxSize=20

To samo polecenie, ale bez nazw atrybutów:

$ twiddle.sh get --noprefix jboss.jca:name=DefaultDS,service=ManagedConnectionPool MinSize MaxSize
5
20

Ustawienie wartości atrybutów: set i setattrs

Do ustawienia wartości pojedynczego atrybutu można użyć komendy set:

$ twiddle.sh -H set
Help for command: 'set'

Set the value of one MBean attribute

usage: set [options] <name> <attr> <val>
options:
    --noprefix    Do not display attribute name prefixes
    --            Stop processing options

Do zmiany wartości atrybutu potrzeba jest wiedza o nazwie ziarna oraz nazwie atrybutu. Przykładowe wywołanie, zmieniające minimalną ilość otwartych połączeń w puli:

$ twiddle.sh set jboss.jca:name=DefaultDS,service=ManagedConnectionPool MinSize 10
MinSize=10

Ustawia wartość otwartych połączeń na 10.

Do jednoczesnej zmiany wartości więcej niż jednego atrybutu w danym ziarnie można użyć komendy setattrs:

$ twiddle.sh -H setattrs
Help for command: 'setattrs'

Set the values of one or more MBean attributes

usage: setattrs [options] <name> [<attr value>+]
options:
    --noprefix    Do not display attribute name prefixes
    --            Stop processing options

Struktura polecenia jest taka sama jak polecenia set, pozwala jednak na podanie większej ilości atrybutów. Przykładowe wywołanie zmieniające minimalną i maksymalną ilość połączeń w puli:

$ twiddle.sh setattrs jboss.jca:name=DefaultDS,service=ManagedConnectionPool MinSize 5 MaxSize 30
The following attributes were set successfuly:
MinSize=5
MaxSize=30

Warto zauważyć, że w wyniku działania tego polecenia albo zostaną ustawione wszystkie wartości wybranych atrybutów (jeżeli nie wystąpi żaden błąd w trakcie działania polecenia) lub też żadne zmiany nie zostaną wprowadzone (w przypadku wystąpienia jakiegoś błędu):

$ twiddle.sh setattrs jboss.jca:name=DefaultDS,service=ManagedConnectionPool MinSize 1 MaxSize pięć
11:52:02,550 ERROR [Twiddle] Exec failed
java.lang.NumberFormatException: For input string: "pięć"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
        at java.lang.Integer.parseInt(Integer.java:449)
        at java.lang.Integer.valueOf(Integer.java:554)
        at sun.beans.editors.IntEditor.setAsText(IntEditor.java:21)
        at org.jboss.console.twiddle.command.SetAttrsCommand.execute(SetAttrsCommand.java:174)
        at org.jboss.console.twiddle.Twiddle.main(Twiddle.java:306)

Pobranie informacji o ziarnach zwróci następujące wartości:

$ twiddle.sh get jboss.jca:name=DefaultDS,service=ManagedConnectionPool MinSize MaxSize
MinSize=5
MaxSize=30

Wywołanie akcji na ziarnie: invoke

Za wywołania konkretnych metod na wybranym ziarnie odpowiada komenda invoke:

$ twiddle -H invoke
Help for command: 'invoke'

Invoke an operation on an MBean

usage: invoke [options] <query> <operation> (<arg>)*

options:
    -q, --query-type[=<type>]    Treat object name as a query
    --                           Stop processing options

query type:
    f[irst]    Only invoke on the first matching name [default]
    a[ll]      Invoke on all matching names

Jako argumenty przyjmuje ona nazwę ziarna na którym ma zostać wykonana dana akcja, nazwę metody do wywołania jej parametry (jeżeli są potrzebne). Wywołania drzewa JNDI:

$ twiddle invoke jboss:service=JNDIView list true
...
<h1>java: Namespace</h1>
<pre>
  +- securityManagement (class: org.jboss.security.integration.JNDIBasedSecurityManagement)
  +- comp (class: javax.namingMain.Context)
  +- XAConnectionFactory (class: org.jboss.jms.client.JBossConnectionFactory)
  +- JBossCorbaInterfaceRepositoryPOA (class: org.omg.PortableServer.POA)
...

Ponieważ polecenie to pozwala na bezpośrednie wywoływania różnych akcji na danym serwerze, istotne jest zabezpieczenie dostępu do konsoli JMX poprzez ustawienie odpowiedniego użytkownika oraz mocnego hasła.

Tags: , , , , , , , , ,

Polecenie twiddle: jak znaleźć informacje o ziarnach i metodach

Polecenie twiddle.sh udostępnia polecenia, które umożliwiają uzyskanie informacji o istniejących ziarnach, ich metodach oraz parametrach.

List wszystkich wpisów z tej serii:

  1. Polecenie twiddle: jak połączyć się z serwerem aplikacji JBoss AS
  2. Polecenie twiddle: jak znaleźć informacje o ziarnach i metodach
  3. Polecenie twiddle: operacje na na zasobach serwera

Lista dostępnych poleceń

Aby uzyskać listę dostępnych poleceń należy wywołać polecenie twiddle.sh z przełącznikiem --help-commands:

$ twiddle.sh --help-commands
twiddle.sh commands:
    jsr77          Print out JSR77 related information
    xmbean         Print out mbean metadata as an xmbean descriptor
    info           Get the metadata for an MBean
    get            Get the values of one or more MBean attributes
    invoke         Invoke an operation on an MBean
    create         Create an MBean
    setattrs       Set the values of one or more MBean attributes
    unregister     Unregister one or more MBeans
    queryMethod    Query the server for a list of matching methods of MBeans
    listDomains    Query the server for a list of available domains
    query          Query the server for a list of matching MBeans
    set            Set the value of one MBean attribute
    serverinfo     Get information about the MBean server

Polecenie to także udostępnia krótką pomoc do każdej z tych komend:

$ twiddle.sh -H query
Help for command: 'query'

Query the server for a list of matching MBeans

usage: query [options] <query>
options:
    -c, --count    Display the matching MBean count
    --             Stop processing options
Examples:
 query all mbeans: query '*:*'
 query all mbeans in the jboss.j2ee domain: query 'jboss.j2ee:*'

Zerknijmy na jedno z częściej wywoływanych poleceń pobranie danych z drzewa JNDII:

$ twiddle.sh invoke jboss:service=JNDIView list true
<h1> Other components with java:comp namespace</h1>
<h1>java: Namespace</h1>
<pre>
  +- securityManagement (class: org.jboss.security.integration.JNDIBasedSecurityManagement)
  +- comp (class: javax.namingMain.Context)
  +- XAConnectionFactory (class: org.jboss.jms.client.JBossConnectionFactory)
  +- JmsXA (class: org.jboss.resource.adapter.jms.JmsConnectionFactoryImpl)
  +- TransactionPropagationContextImporter (class: com.arjuna.ats.internal.jbossatx.jta.PropagationContextManager)
  +- policyRegistration (class: org.jboss.security.plugins.JBossPolicyRegistration)
  +- ClusteredConnectionFactory (class: org.jboss.jms.client.JBossConnectionFactory)
....

Polecenie to składa się z kilku części:

  • twiddle.sh – wywołanie polecenia twiddle
  • invoke – komenda, jak ma zostać wykonana (w tym przypadku wywołanie metody na wybranym ziarnie)
  • jboss – domena, w której znajduje się wybrane ziarno
  • service=JNDIView – nazwa ziarna, jakie ma zostać wywołane
  • list – akcja na wybranym ziarnie
  • true – parametr przekazany do ziarna

Jak widać, trzeba podać sporo rożnych danych, aby wywołać dowolne zarządzane ziarno. Odpowiednie parametry można poznać używając np. aplikacji WWW JMX Console, ale także można je uzyskać przy użyciu polecenia twiddle.sh.

Lista dostępnych domen: listDomains

Polecenie listDomains pozwala na wyświetlnie listy wszystkich grup, na jakie podzielone są ziarna zarządzane:

$ twiddle.sh -H listDomains
Help for command: 'listDomains'

Query the server for a list of available domains

usage: listDomains [options]
options:
    -c, --count    Display the domain count
    --             Stop processing options

Przykładowe użycie:

$ twiddle.sh listDomains
jboss.security
jboss.jdbc
jboss.remoting
jboss.mq
jboss.classloader
jboss.admin
jboss.j2ee
jboss
...

Jak widać zostały wyświetlone tylko grupy. Ale jest to jednocześnie pierwsza część nazwy ziarna.

Lista dostępnych ziaren: query

Aby uzyskać informacje zarejestrowanych ziarnach należy użyć polecenia query:

$ twiddle.sh -H query
Help for command: 'query'

Query the server for a list of matching MBeans

usage: query [options] <query>
options:
    -c, --count    Display the matching MBean count
    --             Stop processing options
Examples:
 query all mbeans: query '*:*'
 query all mbeans in the jboss.j2ee domain: query 'jboss.j2ee:*'

Aby poznać jakie ziarna należą do domeny jboss należy użyć takiego polecenia:

$ twiddle.sh query 'jboss:*'
...
jboss:type=Service,name=SystemProperties
jboss:service=KeyGeneratorFactory,type=UUID
jboss:service=proxyFactory,target=ClientUserTransactionFactory
jboss:service=invoker,type=http,target=Naming
jboss:service=JNDIView
jboss:service=invoker,type=pooled
...

Jak widać, na liście znalazło się ziarno JNDIView.

Można łatwo także uzyskać informacje o wszystkich ziarnach, jakie znajdują się na serwerze JBoss wstawiając znak * w miejsce domeny:

$ twiddle.sh query '*:*'

Lista dostępnych metod dla wybranego ziarna: info

Posiadamy już nazwę ziarna, należałoby teraz uzyskać informacje o tym jaki akcje możemy na nim wykonać, czyli poznań metody oraz ich argumenty. Służy do tego polecenie info.

$ twiddle.sh -H info
Help for command: 'info'

Get the metadata for an MBean

usage: info <mbean -name>
  Use '*' to query for all attributes

Oto co wyświetli pytanie o ziarno JNDIView:

$ twiddle.sh info jboss:service=JNDIView
Description: JNDIView Service. List deployed application java:comp namespaces,
the java: namespace as well as the global InitialContext JNDI namespace. Also
list HA-JNDI namespace in a cluster environment.
+++ Attributes:
 Name: Name
 Type: java.lang.String
 Access: r-
 Name: State
 Type: int
 Access: r-
 Name: StateString
 Type: java.lang.String
 Access: r-
 Name: HANamingService
 Type: java.lang.String
 Access: rw
+++ Operations:
 java.lang.String list(boolean verbose)
 java.lang.String listXML()
 void create()
 void start()
 void stop()
 void destroy()
 void jbossInternalLifecycle(java.lang.String method)

Jak widać poza informacjami o samym ziarnie można zobaczyć listę metod jakie ono udostępnia. Jedną z nich jest list przyjmująca jeden argument typu boolean.

Tym sposobem właśnie udało się uzyskać informacje o wszystkich składowych, które były użyte w wywołaniu polecenia invoke.

Lista dostępnych metod: queryMethod

Istnieje jeszcze jeden sposób na odszukanie ziarna oraz metody. Komenda queryMethod pozwala na odszukanie wszystkich ziaren oraz metod, które zawierają w sobie podany ciąg znaków.

$ twiddle.sh -H queryMethod
Help for command: 'queryMethod'

Query the server for a list of matching methods of MBeans

usage: queryMethod [options] <query>
options:
    -c, --count    Display the matching method count
    -f, --filter   Filter by domain
    --             Stop processing options
Examples:
 query methods of all MBeans: queryMethod list
 query all methods of all MBeans in the jboss domain: queryMethod -f "jboss:*" list

Aby odszukać metodę list w ziarnie JNDIView możemy użyć nastepujących poleceń:

  • nie wiemy do jakiej domeny należy ziarno z szukaną metodą
    $ twiddle.sh  queryMethod list
    jboss.deployment:id="SecurityConfig",type=Component  listAttachments boolean
    jboss.deployment:id="WebInfLibFilter",type=Component  listAttachments boolean
    jboss.deployment:id="TopicTemplateInfo",type=Component  listAttachments boolean
    ...

    W moim przypadku polecenie to znalazło ponad 1400 metod zwierających słowo list w swojej nazwie. Nie jest to do końca użyteczna informacja, ale zawsze jakaś :).

  • wiemy w jakiej domenie znajduje się interesujące nas ziarno
    $ twiddle.sh  queryMethod -f "jboss:*" list
    jboss:type=Service,name=SystemProperties  removeListener org.jboss.util.property.PropertyListener
    jboss:type=Service,name=SystemProperties  addListeners [Lorg.jboss.util.property.PropertyListener;
    jboss:type=Service,name=SystemProperties  addListener org.jboss.util.property.PropertyListener
    jboss:type=Service,name=SystemProperties  addListener java.lang.String
    jboss:service=JNDIView  list boolean
    jboss:service=JNDIView  listXML
    jboss:service=AttributePersistenceService  apmListAll
    jboss:service=AttributePersistenceService  apmListAllAsString
    jboss:service=invoker,type=unified  addListener org.jboss.remoting.callback.InvokerCallbackHandler
    jboss:service=invoker,type=unified  removeListener org.jboss.remoting.callback.InvokerCallbackHandler

    Tym raza lista jest krótsza i od razu widać jak nazywa się szukane ziarno łącznie z definicją metody potrzebną do wywołania akcji.

Polecenie queryMethod jako wynik podaje zarówno pełną nazwę ziarna, jak pełną definicję metody (łącznie z parametrami używanymi do jej wywołania).

Źródła

Tags: , , , , , , , , , , , ,

Polecenie twiddle: jak połączyć się z serwerem aplikacji JBoss AS

Twiddle jest to aplikacja, która pozwala na zdalne komunikowanie się z serwerem aplikacji JBoss AS. Przy jej pomocy można bezpośrednio wywoływać odpowiednie polecenia, akcje. W praktyce można robić to samo co przy użyciu konsoli JMX. Polecenie to można znaleźć w katalogu $JBOSS_HOME/bin.

List wszystkich wpisów z tej serii:

  1. Polecenie twiddle: jak połączyć się z serwerem aplikacji JBoss AS
  2. Polecenie twiddle: jak znaleźć informacje o ziarnach i metodach
  3. Polecenie twiddle: operacje na na zasobach serwera

Podstawowe opcje jakie można podać w aplikacji twiddle

Podstawowy zestaw przełączników jest dostępny przy uzyciu opcji -h.

Polecenia pozwalające na uzyskanie pomocy

  • -h – pomoc o przełącznikach
  • –help-commands – lista dostępnych poleceń wraz z krótkimi opisami
  • -H – wyświetlenie dodatkowej pomocy o wybranym poleceniu

Definiowanie parametrów połączenie

Teraz czas na zestaw przełączników pomocnych do nawiązania połączenia z serwerem JBoss:

  • -s – adres IP oraz port na którym nasłuchuje serwer (domyślnie localhost:1099)
  • -u – nazwa użytkownika potrzeba do uwierzytelnienia (powinna zostać zdefiniowana w pliku $JBOSS_HOME/server/PROFIL/conf/props/jmx-console-users.properties)
  • -p – hasło użytkownika potrzebne do uwierzytelnienia (powinno zostać zdefiniowane w pliku $JBOSS_HOME/server/PROFIL/conf/props/jmx-console-users.properties)

Jeżeli serwer JBoss został zabezpieczony lub też nie został uruchomiony na innym interfejsie niż lokalny, to będzie trzeba używać tych przełączników przy każdym połączeniu z serwerem aplikacji. W poniższych przykładach nie będą one umieszczane, ale nie można o nich zapominać.

Lista poleceń

Listę dostępnych poleceń jakie można wydawać za pomocą narzędzia twiddle.sh można uzyskać przy użyciu przełącznika --help-commands:

$ ./twiddle.sh --help-commands
twiddle.sh commands:
    jsr77          Print out JSR77 related information
    xmbean         Print out mbean metadata as an xmbean descriptor
    info           Get the metadata for an MBean
    get            Get the values of one or more MBean attributes
    invoke         Invoke an operation on an MBean
    create         Create an MBean
    setattrs       Set the values of one or more MBean attributes
    unregister     Unregister one or more MBeans
    queryMethod    Query the server for a list of matching methods of MBeans
    listDomains    Query the server for a list of available domains
    query          Query the server for a list of matching MBeans
    set            Set the value of one MBean attribute
    serverinfo     Get information about the MBean server

Polecenia te pozwalają na wykonanie już konkretnych akcji po stronie serwera aplikacji.

Przykładowe użycie polecenia

Uzyskanie pomocy o poleceniu serverinfo:

$ ./twiddle.sh -H serverinfo
Help for command: 'serverinfo'

Get information about the MBean server

usage: serverinfo [options]

options:
    -d, --domain    Get the default domain
    -c, --count     Get the MBean count
    -l, --list      List the MBeans
    --              Stop processing options

W podobny sposób można uzyskać krótkie informacje o wszystkich poleceniach dostępnych w twiddle.sh

Uzyskanie informacji o domyślnej domenie serwera (bez autentykacji, serwera aplikacji pracuje na domyślnym interfejsie sieciowym):

$ ./twiddle.sh serverinfo -d
jboss

Dodanie autentykacji do połączenia:

$ ./twiddle.sh -u admin -p admin serverinfo -d
jboss

Dodanie informacji o interfejsie sieciowym na którym znajduje się JBoss (lub zdalne łączenie z inną maszyną):

$ ./twiddle.sh -u admin -p admin -s SERWER:PORT serverinfo -d
jboss

Trzeba pamiętać, że przełączniku określające sposób łączenia należy podawać przed nazwą polecenia jakie ma zostać wykonane.

W pozostałych przykładach pominę już autentykację użytkownika i serwer do którego chcemy się podłączyć. W razie potrzeby należy te informacje odpowiednio dodać do polecenia.

Pobranie informacji o MBeanach pasujących do zapytania:

$ ./twiddle.sh query 'jboss:service=invoker,*'
jboss:service=invoker,type=local
jboss:service=invoker,type=jrmp
jboss:service=invoker,type=http,target=Naming
jboss:service=invoker,type=pooled
jboss:service=invoker,type=http
jboss:service=invoker,type=unified
jboss:service=invoker,type=http,target=Naming,readonly=true

Pobranie informacji o atrybutach danego ziarna:

$ ./twiddle.sh get jboss:service=invoker,type=jrmp
Name=JRMPInvoker
ServerAddress=jboss1
RMIClientSocketFactory=null
StateString=Started
Backlog=200
State=3
RMIServerSocketFactory=null
RMIServerSocketFactoryBean=org.jboss.net.sockets.DefaultSocketFactory@ad093076[bindAddress=null]
RMIObjectPort=4444
EnableClassCaching=false
RMIClientSocketFactoryBean=null
SecurityDomain=null

Wyświetlenie drzewa JNDI:

$ ./twiddle.sh invoke jboss:service=JNDIView list true
<h1> Other components with java:comp namespace</h1>
<h2>java:comp namespace of the component jboss.j2ee:ear=eBikes.ear,jar=jboss-seam.jar,name=EjbSynchronizations,service=EJB3 :</h2>
<pre>
  +- EJBContext (class: javax.ejb.EJBContext)
  +- TransactionSynchronizationRegistry[link -> java:TransactionSynchronizationRegistry] (class: javax.naming.LinkRef)
  +- UserTransaction (class: org.jboss.ejb3.tx.UserTransactionImpl)
  +- env (class: org.jnp.interfaces.NamingContext)
  +- ORB[link -> java:/JBossCorbaORB] (class: javax.naming.LinkRef)
</pre>
<h2>java:comp namespace of the component jboss.j2ee:jar=Common.jar,name=InventoryDAOImpl,service=EJB3 :</h2>
<pre>
  +- EJBContext (class: javax.ejb.EJBContext)
....

Przykłady jak instalować aplikację przy użyciu twiddle.sh można znaleźć w tym wpisie: Zarządzanie instalacją aplikacji w JBoss AS.

Źródła

Tags: , , , , , , , ,

VirtualBox: zarządzanie uruchamianiem maszyn wirtualnych przy użyciu linii poleceń (VBoxManage)

VirtualBox jest aplikacją, która pozwala na używanie wirtualnych systemów operacyjnych. Standardowo jest dostarczana z przyjaznym interfejsem użytkownika, który pozwala na zarządzanie tymi maszynami. Przy jego użyciu można robić takie rzeczy jak:

  • tworzenie i usuwanie maszyn wirtualnych
  • uruchamianie i zatrzymywanie maszyn wirtualnych
  • modyfikację konfiguracji poszczególnych maszyn wirtualnych
  • inne rzeczy związane z obsługą wirtualnych maszyn

Jest także dostępna możliwość zarządzanie wirtualnymi komputerami przy użyciu linii poleceń za pomocą komendy VBoxManage. Pozwala ono na takie same akcje jak narzędzie graficzne oraz kilka rzeczy, których nie da się za jego pomocą zrobić.

  • lista zarejestrowanych maszyn wirtualnych:
    $ VBoxManage list vms
    Sun VirtualBox Command Line Management Interface Version 3.1.6
    (C) 2005-2010 Sun Microsystems, Inc.
    All rights reserved.

    "ChromeOs" {7ca42bf2-4b33-4b0b-a0f8-669cb3d2703a}
  • uruchomienie wybranej maszyny wirtualnej:
    $ VBoxManage startvm ChromeOs
    Sun VirtualBox Command Line Management Interface Version 3.1.6
    (C) 2005-2010 Sun Microsystems, Inc.
    All rights reserved.

    Waiting for the remote session to open...
    Remote session has been successfully opened.
  • wstrzymanie działania maszyny wirtualnej:
    $ VBoxManage controlvm ChromeOs pause
  • ponowne wznowienie pracy:
    $ VBoxManage controlvm ChromeOs resume
  • wyłączenie maszyny:
    $ VBoxManage controlvm ChromeOs acpipowerbutton
    $ VBoxManage controlvm ChromeOs poweroff
  • zapisanie stanu maszyny i jej wyłączenie
    $ VBoxManage controlvm ChromeOs savestate

To jest podstawowy zestaw komend, który pozwala na zarządzanie procesem uruchamiania i zatrzymywania maszyn wirtualnych. Polecenie to pozwala na dużo więcej, warto zapoznać się zarówno z dokumentacją dostarczaną z VirtualBoxem jak i pomocą wyświetlaną przez aplikację.

Źródła

Tags: , , , ,