Serwer RHQ może monitorować Apache, ale do uzyskania informacji o wirtualnych serwerach wy,aga instalacji modułu SNMP. Umożliwi to agentowi monitorującemu pobieranie tych informacji bezpośrednio z serwera Apache, bez potrzeby analizy plików konfiguracyjnych.

Pozostałe wpisy z tej serii to:

Aby mieć możliwość instalacji tego modułu trzeba spełnić kilka warunków:

  • Apache musi być skompilowany z obsługą modułów
  • należy skompilować moduł lub użyć plików binarnych oraz zainstalować w ramach serwera Apache
  • należy odpowiednio skonfigurować serwer tak, aby z niego korzystał

Informacje skąd można pobrać pliki źródłowe można znaleźć we wpisie: Monitorowanie serwera Apache przy użyciu RHQ Server – instalacja modułu Response Time.

Po dekompresji pliku connector-apache.zip pliki modułu można znaleźć w katalogu apache-snmp. Tutaj również można naleźć dwa katalogi: ze wersjami binarnymi pakietów oraz ze źródłami. Tym razem jednak mamy w źródłach skompilowane moduły dla różnych wersji serwera Apache oraz dla architektur intelowskich 32 i 64 bitowych.

Kompilacje ze źródeł jest opisana w pliku apache-snmp/sources/README.txt, w praktyce powinno wystarczyć wywołanie polecenia build_apache_snmp.sh.

$ cd apache-snmp/sources
$ ./build_apache_snmp.sh 2.0 /usr/bin/apxs2

Jednak z moim przypadku kompilacja się nie powiadała. Na szczęście w tym przypadku są dostępne już skompilowane wersje modułów z których można skorzystać.

Czyli trzeba moduły rozkompresować:

$ cd apache-snmp/binaries
$ unzip snmp_module-x64-linux-apache2.2.zip

Zostanie utworzony katalogu snmp_module_2.2 a w nim niezbędne pliki konfiguracyjne oraz z modułami. Moduły dla serwera Apache znajdują się w katalogu module, czyli kopiujemy je teraz do odpowiedniej lokalizacji:

# cd snmp_module_2.2
# mkdir -p /usr/local/lib/apache2/modules
# cp module/*.so /usr/local/lib/apache2/modules/

Kopiujemy plik konfiguracyjny modułu:

# mkdir -p /etc/apache2/snmpd/conf
# cp conf/snmpd.conf /etc/apache2/snmpd/conf

W domyślnej konfiguracji moduł SNMP nasłuchuje na przychodzące połączenia od klientów na porcie 1610 na wszystkich interfejsach sieciowych. Ponieważ w naszym przypadku klientem będzie agent monitorujący działający na maszynie lokalnej, można otworzyć jedynie ten port na interfejsie localhost. Czyli należy w pliku /etc/apache2/snmpd/conf/snmpd.conf zmienić wpis agentaddress na taki:

34
agentaddress 1610@127.0.0.1

Należy jeszcze utworzyć specjalny katalog na pliki tworzone przez moduł:

# mkdir -p /var/lib/apache2/snmpd/var

Tworzymy plik /etc/apache2/mods-available/snmpd.load ładujący moduł SNMP do serwera Apache:

1
2
LoadModule snmpcommon_module /usr/local/lib/apache2/modules/libsnmpcommon.so
LoadModule snmpagt_module /usr/local/lib/apache2/modules/libsnmpmonagt.so

Teraz tworzymy plik konfigurujący moduł /etc/apache2/mods-available/snmpd.conf:

1
2
SNMPConf /etc/apache2/snmpd/conf
SNMPVar /var/lib/apache2/snmpd/var

Ostatnim krokiem będzie włączenie modułu:

# a2enmod snmpd

Aby moduł SNMP działał poprawnie, muszą zostać precypitynie zdefiniowane nazwy serwerów wirtualnych. W nazwie musi znaleźć się nie tylko nazwa tego serwera, ale także port na którym serwer Apache będzie nasłuchiwał. Czyli odpowiedni wpis w definicji serwera wirtualnego musi mieć następującą postać:

1
2
3
4
<VirtualHost *:80>
        ServerName blog.stelmisoft.pl:80
        ....
</VirtualHost>

Teraz pozostaje restart serwera Apache i sprawdzenie czy wszystko zadziała:

# /etc/init.d/apache2 restart

Źródła