Poniżej znajduje się krótki przewodnik w którym przestawię w jaki sposób skompilować oraz zainstalować ze źródeł zarówno serwer RHQ jak i pluginy dostarczane z aplikację JOPR. Kroki są te niezbędne, aby udało się uruchomić monitorowanie JBossa EAP 5 (lub też wersji społecznościowe 5.1) przy użyciu Jopra. Standardowa instalacja (w wersji 2.3.1) niestety nie zawiera odpowiedniego pluginu.

Krok 1: warunki wstępne

Przed rozpoczęciem kompilacji tych aplikacji, trzeba wcześniej zainstalować w systemie następujące aplikacje:

  • Java – zainstalować JDK 6, należy także poprawnie skonfigurować zmienną systemową $JAVA_HOME, która powinna wskazywać na katalog domowy z Javą
  • Maven – zainstalowany w wersji przynajmniej 2.1.x, można pobrać go ze strony http://maven.apache.org/download.html
  • Subversion – należy zainstalować klienta tego systemu wersji
  • PostgreSQL – zainstalować bazę danych, w wersji przynajmniej 8.3 (ja używałem wersji 8.4)

Krok 2: pobranie źródeł

Zanim przystąpimy do konfiguracji kolejnych aplikacji, można rozpocząć pobieranie źródeł aplikacji. Proces ten zajmuje trochę czasu, więc może się wykonywać w czasie gdy przystosujemy kolejne elementy instalacji.

Źródła należy pobrać z repozytorium SVN udostępnianego zarówno przez RHQ jak i Jopra. Najprościej to zrobić używając komendy svn, ale można też użyć innych aplikacji współpracujących z tym systemem kontroli wersji.

Pobranie kodu źródłowego RHQ Server:

svn co http://svn.rhq-project.org/repos/rhq/trunk/ rhq

Pobranie kodu źródłowego Jopr:

svn co https://anonsvn.jboss.org/repos/jopr/trunk/ jopr

W moim przypadku została dla RHQ Serwer została pobrana wersji repozytorium o numerze 5305 a dla Jopr o numerze 1360, także pozostałe informacje dotyczą tych wersji kodu. W nowszych niektóre rzeczy na pewno mogą się zmienić.

Krok 3: konfiguracja bazy danych

RHQ Server do swojego działania potrzebuje bazy danych. Może on działać produkcyjnie na bazie danych PostreSQL lub Oracle, testowo na HSQL (istnieje także eksperymentalne wsparcie dla MSSQL). Na potrzeby tej instalacji skonfigurujemy bazę danych PostgresSQL.

Konfiguracja bazy danych sprowadza się do następujących punktów:

  • konfiguracja pliku pg_hba.conf, w przypadku Ubunut plik ten znajduje się w tym katalogu: /etc/postgresql/8.4/main, należy włączyć logowanie zaufane dla użytkowników korzystających z lokalnego interfejsu sieciowego oraz z lokalnego komputera (uwaga, powoduje to, że nie będą oni pytani o hasło dostępu przy próbie łączenia się z bazą danych):
    82
    83
    84
    85
    86
    #local   all         all                               ident
    local   all         all                               trust
    # IPv4 local connections:
    #host    all         all         127.0.0.1/32          md5
    host    all         all         127.0.0.1/32          trust
  • utworzenie użytkownika w bazie danych o nazwie rhqadmin oraz z hasłem rhqadmin:
    createuser -U postgres -S -D -R -P rhqadmin
  • utworzyć bazę danych rhq, której właścicielem będzie użytkownik rhqadmin:
    createdb -U postgres -O rhqadmin rhq

Krok 4: kompilacja RHQ Server

Można teraz przystąpić do kompilacji oraz instalacji serwera RHQ. Robi się to przy użyciu aplikacji Maven, która powinna być dostępna na ścieżce. Pierwsze wykonanie kompilacji może zająć sporo czasu (w moim przypadku trwało to ponad godzinę), ponieważ muszą zostać pobrane odpowiednie biblioteki niezbędne do kompilacji.

Uruchomić kompilacje można wydając takie polecenie (należy jednocześnie znajdować się w katalogu z plikami źródłowymi RHQ Server):

mvn -Penterprise,dev -Dmaven.test.skip=true -Ddbsetup install

Parametr -Ddbsetup powoduje utworzenie schematu w bazie danych i jest wymagany podczas pierwszej kompilacji i za każdym razem gdy jej schemat zostanie zmieniony.

W trakcie procesu kompilacji zostanie utworzony schemat bazy danych. Zostanie także utworzony katalogu dev-container, w którym będzie znajdowała się aplikacji. Aby uruchomić RHQ Server, należy wejść do katalogu dev-container/bin i wykonać polecenie:

cd dev-container/bin
./rhq-server.sh start

Spowoduje to uruchomienie serwera RHQ. Po uruchomieniu powinien o być dostępny pod adresem: http://localhost:7080. Aby się do niego zalogować, należy użyć loginu rhqadmin oraz hasła rhqadmin.

About RHQ

Informacje o wersji RHQ Server

Istnieje także możliwość utworzenia archiwum z serwerem RHQ, które będzie można następnie użyć do instalacji nowej jego instancji. Należy w takim przypadku wydać następujące polecenie (będąc w katalog głównym ze źródłami RHQ):

mvn -Penterprise,dist -Dmaven.test.skip=true -Ddbsetup install

Spowoduje to kompilację projektu i utworzenie w katalogu modules/enterprise/server/container/target zarówno katalogu z serwerem (rhq-server-1.4.0-SNAPSHOT), jak i odpowiedniego archiwum zip (rhq-server-1.4.0-SNAPSHOT.zip). Uruchomienie tak przygotowanego serwera spowoduje konieczność przejścia przez kolejne kroki związane z jego konfiguracją.

Krok 5: kompilacja Jopr

Ostatnim elementem jest kompilacja pluginów wchodzących w skład Jopr oraz ich instalacja w ramach serwera RHQ.

Zanim jednak uda się zbudować Jopr, trzeba zmodyfikować pliki konfiguracyjne pom.xml w kilku miejscach. Jest to spowodowane tym, że znajdują się w nich odwołania do repozytorium Mavena, które nie istnieją, więc nie daje się przeprowadzić pomyślnie kompilacji projektu. Mam nadzieję, że zostanie to zmienione w repozytorium i nie będzie potrzeby wprowadzania tych zmian, ale dla wersji której ja używałem niestety było to potrzebne.

Przygotowałem plik o nazwie jopr-1360.patch, który zawiera różnice pomiędzy modyfikacjami które wprowadziłem oraz wersją źródeł które używałem. Należy pobrać ten plik i użyć aplikacji patch, która zastosuje go do źródeł. Aplikację te należy wywołać w katalogu w którym znajdują się źródła jopr:

$ patch -p0 < ../jopr-1360.patch.txt
patching file modules/tools/jbas5-plugin-descriptor-gen/pom.xml
patching file modules/plugins/jboss-as-5/testsuite/pom.xml
patching file modules/plugins/jboss-as-5/pom.xml
patching file modules/plugins/jboss-cache-v3/pom.xml
patching file pom.xml
patching file etc/jbas5-ejb2-mdb-test/pom.xml
patching file etc/jbas5-jnp-client/pom.xml
patching file etc/jbas5-ejb-client/pom.xml

Należy zwrócić uwagę na to, że niekoniecznie ten plik będzie działał, jeżeli coś się zmieniło w źródłach aplikacji. Dlatego też w przypadku gdy kompilacja nie będzie działać, proponują zobaczyć co ten plik modyfikuje i ręcznie te modyfikacje nanieść do odpowiednich plików.

Sama kompilacja Jopr polega na wywołaniu aplikacji Maven (w katalogu ze źródłami aplikacji):

mvn -Pdev -Drhq.containerDir=rhq/dev-container/ install

Za pomocą parametru -Drhq.containerDir wskazujemy miejsce, gdzie znajduje się skompilowana wersja RHQ Server. Należy zwrócić uwagę, aby podać pełną ścieżkę do tego katalogu, w innym przypadku pluginy mogą zostać skopiowane do innego katalogu.

Zamiast katalogu z wersją deweloperską serwera RHQ można także podać katalog modules/enterprise/server/container/target/rhq-server-1.4.0-SNAPSHOT. Wtedy wtyczki zostaną skopiowane do tej instancji serwera, wystarczą ją teraz skompresować i już można spróbować zainstalować na innym serwerze.

Tyle przynajmniej w teorii :(. Z jakiś magicznych powodów podczas instalacji serwera RHQ łącznie z wtyczkami z Jopra pojawiał się błąd o niemożliwości instalacji jednej z aplikacji (rhq.ear).W moim przypadku nie chciało to do końca działać. Rozwiązaniem okazało się utworzenie dwóch oddzielnych archiwów: w jednym był serwer RHQ, w drugim wtyczki Jopr. Czy w przypadku kompilacji wtyczek Jopr nie podajemy katalogu do samego serwera, ale jakiś katalog tymczasowy. Zostanie w nim odzwierciedlona odpowiednia struktura serwera, i wtyczki zostaną zapisane w odpowiednie miejsca. Wystarczy po instalacji serwera RHQ po prostu skopiować te pliki i już powinno działać.

Oto serwer RHQ Server oraz wtyczki Jopr, skompilowane: