MRTG (Multi Router Traffic Grapher) jest narzędziem służącym do
monitorowania i wizualizacji niemalże dowolnych wielkości związanych z
działaniem systemu komputerowego, począwszy od ruchu sieciowego (do analizy
którego został zaprojektowany i którym się zajmiemy), poprzez obciążenie
procesora, pamięci, zajętość dysku i wiele, wiele innych. Istnieje możliwość
dostarczenie dowolnych wielkości, o ile je tylko dostarczymy w zjadliwym
przez MRTG formacie. MRTG generuje stronę HTML zawierającą wykresy w
formacie .png, które dostarczają na żywo graficzne wykresy ruchu jaki odbywa
się na naszych interfejsach. Używa on w dużej mierze przenośnej
implementacji SNMP napisanej w całości w Perlu, dlatego też potrzebujemy
jakiejkolwiek zewnętrznej paczki SNMP."
Pozwoliłem sobie zacytować fragment artykułu autorstwa Artura Kulda, który
znajduje się TU.
W artykule opiszę proces instalacji i konfiguracji SNMPD, oraz MRTG (na
przykładzie miernika sieci oraz obciążenia procesora).
Przy pisaniu artykułu korzystałem z:
SNMPD
Najpierw zainstalujmy pakiet net-SNMP (Simple Network Managment
Protocol).
Przechodzimy więc do portu Net-SNMP i go instalujemy:
W zależności od mocy naszej maszyny, instalacja może trochę potrwać :). Pod udanej instalacji otrzymujemy poradę od autorów, co należy wpisać w /etc/rc.local, aby monitor SNMP uruchamiał się razem z systemem:
To have snmpd start at boot time, you must edit /etc/snmp/snmpd.conf and uncomment the following in /etc/rc.local. #if [ -x /usr/local/sbin/snmpd ]; then # echo -n ' snmpd'; /usr/local/sbin/snmpd #fi This will start snmpd and use /etc/snmp/snmpd.conf for the configuration. The snmpconf tool can be used to help edit your configuration files. See snmpconf(1), snmpd(8), and snmpd.conf(5) for more options.
Chyba nie muszę tłumaczyć tego dla użytkowników OpenBSD :).
Gdy już wyedytujemy rc.local, czas na konfigurację samego SNMP. W tym celu posłużymy
się skryptem przygotowanym przez autorów.
Pomoże nam to utworzyć standardową konfigurację SNMPd. A więc do rzeczy.
Odpalamy snmpconf:
The following installed configuration files were found: 1: /etc/snmp/snmpd.conf Would you like me to read them in? Their content will be merged with the output files created by this session. Valid answer examples: "all", "none","3","1,2,5" Read in which (default = all): all, lub po prostu sam [ENTER]
Skrypt pyta nas, który plik z konfigiem chcemy edytować (wybieramy ten podstawowy). Teraz dostajemy pytanie, czy chcemy utworzyć podstawowe informacje o systemie. Domyślnie jest 'y' (chcemy). Wciskamy więc ENTER i je podajemy.
> The location of the system: Serwerownia The contact information: Admin@serwera.pl
Teraz skrypt pyta nas, czy chcemy ustawić wartość identyfikatora sysServices.0. Tak, chcemy... Wklepujemy więc ENTER przy pytaniu:
Do you want to properly set the value of the sysServices.0 OID (if you don't know, just say no)? (default = y):
Następnie podajemy za pomoc? 0 i 1 dalsze dane. (0 - oznacza n, czyli NO, 1 - y,czyli YES). Wybieramy 0 przy pytaniach:
does this host offer physical services (eg, like a repeater) [answer 0 or 1]: 0 does this host offer datalink/subnetwork services (eg, like a bridge): 0
Chyba, że serwer z uruchomionym SNMPd robi za jaki? mostek lub 'repeater'. Nastepnie podajemy wartość 1 przy pytaniach:
does this host offer internet services (eg, supports IP): 1 does this host offer end-to-end services (eg, supports TCP): 1 does this host offer application services (eg, supports SMTP): 1
Teraz będziemy ustawiać ważny aspekt konfiguracji, jakim jest dostęp i co za tym idzie bezpieczeństwo serwera. SNMPd może odbierać zapytania (i na nie odpowiadać) z różnych adresów sieciowych. Nam zależy tylko, aby demon komunikował się tylko z nami na 'localhoście'. W zabezpieczaniu dużą rolę odgrywa 'społeczność'. Jest to swoisty login dostępowy do zapytań SNMPd. Domyślne wartości 'private' i 'public' s? znane szerokiej rzeszy doświadczonych użytkowników systemów, a co za tym idzie, każdy taki osobnik będzie mógł potem "odpytywać" nasz serwer. Nazwa społeczności powinna być unikalna i trudna do odgadnięcia przez potencjalnego "użyszkodnika". Ja, na potrzeby artykułu wymyśliłem nazwę społeczności: MisieWCiapki. Z pomocą tej społeczności będziemy później odpytywać SNMPd, i ustawimy MRTG. Skonfigurujemy również nasze SNMPd, aby pracowało w trybie "tylko odczyt".
Do you want to configure the agent's access control? (default = y):[ENTER]
Na powyższe pytanie odpowiadamy więc twierdząco. Następnie jesteśmy pytani o sposób dostępu do protokołu SNMPv3. Nie jest on nam potrzebny, jak i protokół SNMPv1/v2c w trybie odczyt/zapis. Odpowiadamy więc przecząco na poniższe pytania:
Do you want to allow SNMPv3 read-write user based access (default = y): n Do you want to allow SNMPv3 read-only user based access (default = y): n Do you want to allow SNMPv1/v2c read-write community access (default = y): n
Następnie jesteśmy pytani czy chcemy aby SNMPv1/2c pracowało w trybie 'tylko odczyt'. Odpowiadamy twierdząco, a następnie ustawiamy społeczność i host:
Do you want to allow SNMPv1/v2c read-only community access (default = y): y Configuring: rocommunity Description: a SNMPv1/SNMPv2c read-only access community name arguments: community [default|hostname|network/bits] [oid] The community name to add read-only access for: MisieWCiapki The hostname or network address to accept this community name from [RETURN for all]: localhost The OID that this community should be restricted to [RETURN for no-restriction]: [ENTER] Finished Output: rocommunity MisieWCiapki localhost
Jeżeli nie mamy zamiaru dodawać innej społeczności to w poniższym pytaniu odpowiadamy przecząco.
Do another rocommunity line? (default = y):n
Następnie jesteśmy pytani, czy chcemy używać "pułapki". Służy ona do wysyłania danych do innego komputera, w przypadku gdy pozycje MIB zostaną wyzerowane. Nie jest to nam potrzebne, więc odpowiadamy przecząco:
Do you want to configure where and if the agent will send traps? (default = y):n
Dobrnęliśmy już do sekcji, która opisuje co mamy monitorować. Chcemy monitorować np wolne miejsce na dysku, odpowiadamy więc twierdząco na poniższe pytanie:
Do you want to configure the agent's ability to monitor various aspects of your system? (default = y):y
Nie chcemy jednak (póki co) monitorować procesów, więc odpowiadamy 'n' na pytanie:
Do you want to configure the agents ability to monitor processes? (default = y): n
Teraz dostajemy pytanie, czy chcemy monitorować dyski. Tak, chcemy:
Do you want to configure the agents ability to monitor disk space? (default = y):y
Przechodzimy do sekcji dodawania informacji o dyskach (partycjach). Ja dla przykładu dodam tylko /home, ale Wy możecie dodać wszystkie. Opcja MIN oznacza, ile może być minimalnie wolnego miejsca, zanim użytkownik zostanie ostrzeżony.
Configuring: disk Description: Check for disk space usage of a partition. The agent can check the amount of available disk space, and make sure it is above a set limit. disk PATH [MIN=100000] PATH: mount path to the disk in question. MIN: Disks with space below this value will have the Mib's errorFlag set. Can be a raw byte value or a percentage followed by the % symbol. Default value = 100000. The results are reported in the dskTable section of the UCD-SNMP-MIB tree Enter the mount point for the disk partion to be checked on: /home Enter the minimum amount of space that should be available on /home: 5% Finished Output: disk /home 5% Do another disk line? (default = y): n
Na koniec jesteśmy pytani, czy chcemy monitorować średnie obciążenie i rozmiar plików. Na początek się obejdziemy bez tego:
Do you want to configure the agents ability to monitor load average? (default = y): n Do you want to configure the agents ability to monitor file sizes? (default = y): n
I to by było tyle na początek naszej przygody z SNMP. Otrzymujemy informację:
The following files were created: snmpd.conf installed in /usr/local/share/snmp
Następnie kopiujemy sobie ten konfig na miejsce domyślnego (pamiętając o zrobieniu kopii).
Jeżeli mamy już uruchomiony SNMPD, przeładowujemy go, lub uruchamiamy od nowa. Najwygodniej jest podczas uruchamiania SNMPD wskazywać na plik z konfiguracją:
(Jeżeli wybierzesz ten sposób, to pamiętaj o dodaniu ścieżki do konfiga w rc.local). Czas na testy. Gdy upewnimy sie, że SNMPD działa, wydajemy polecenie:
Powinniśmy otrzymać wartość (w procentach) czasu, jaki zużywa nasz CPU na wykonywanie programów użytkownika. Listę wszystkich wartości można otrzymać, kierując wynik snmpwalk do jakiegoś pliku:
Przydatnym programem jest też snmptranslate, który wyświetla wiele
przydatnych informacji dotyczących poszczególnych pozycji MIB (dla
wnikliwych polecam dokumentację).
Instalację i konfigurację SNMPD możemy uznać za zakończoną. Teraz zajmiemy
się..
MRTG
Przechodzimy do portu z MRTG i go instalujemy:
Następnie, gdy już mamy MRTG na pokładzie, tworzymy plik konfiguracyjny. Pamiętajmy, by zmienić nazwę domyślnemu plikowi w /etc:
Edytujemy teraz nasz plik konfiguracyjny /etc/mrtg.cfg
# Podajemy ścieżkę do pliku, w którym będziemy zapisywać info WorkDir: /home/karol/public_html/mrtg #Poniżej mamy trochę informacji o naszym systemie #Domyślnie mamy konfiguracje interfejsów sieciowych #Odhashujmy te, które chcemy monitorować #Ja podałem tylko przykład dla głownego interfejsu #Pamiętajcie, aby w konfigu podać własne IP i własny interfejs sieciówki # ### Interface 2 >> Descr: 'rl0' | Name: '' | Ip: '212.33.82.196' | Eth: '00-0c-xx-xx-xx-xx' ### ### The following interface is commented out because: ### * has a speed of 0 which makes no sense Target[siec]: 2:MisieWCiapki@localhost: SetEnv[siec]: MRTG_INT_IP="212.33.82.196" MRTG_INT_DESCR="rl0" MaxBytes[siec]: 1250000 Title[siec]: SatanBSD.org (inet) PageTop[siec]: <h1>SatanBSD.org (inet)</h1> <table> <tr><td>System:</td> <td>SatanBSD.org (inet)</td></tr> <tr><td>Description:</td><td>rl0 </td></tr> <tr><td>Max Speed:</td> <td>100.0 Mbits/s</td></tr> <tr><td>Ip:</td> <td>212.33.82.196 (SatanBSD.org)</td></tr> </table> # #A to przykładowy konfig wyświetlający info o zużyciu CPU # Title[cpu]: SatanBSD.org - Zużycie CPU YLegend[cpu]: Zużycie CPU WithPeak[cpu]:wmy MaxBytes[cpu]:100 Target[cpu]:.1.3.6.1.4.1.2021.11.9.0&.1.3.6.1.4.1.2021.11.10.0:MisieWCiapki@localhost ShortLegend[cpu]:CPU LegendI[cpu]: CPU użytkowników LegendO[cpu]: CPU systemowe Legend1[cpu]: Zużycie procesora (użytkownicy) Legend2[cpu]: Zużycie procesora (system) Legend3[cpu]: Max. 5 min. zużycie procesora (użytkownicy) Legend4[cpu]: Max. 5 min. Zużycie procesora (system) Options[cpu]: growright, gauge PageTop[cpu]: <h1>Zużycie CPU na SatanBSD.org>/h1>
Zapisujemy plik i sprawdzamy efekt naszej pracy:
Na początku możemy dostać komunikat w stylu:
Rateup WARNING: /usr/local/bin/rateup could not read the primary log file for cpu
Po prostu nie było jeszcze żadnych zapisanych wyników. Po parokrotnym
wywołaniu mrtg, ostrzeżenia powinny zniknąć.
Możemy również wygenerować stronę indeksów naszych statystyk:
Potem wystarczy wejść na stronę WWW i zobaczyć wynik.
Na samym końcu dodajemy wpis do crona, który uruchomi MRTG co 5 min:
I to by było chyba na tyle...
Dodatek:
Stąd można pobrać skrypt, który wypisze nam w postaci listy wszystkie
pozycje MIB do pliku *.html (lub innego po modyfikacji), oraz je opiszę.
(Opis użycia w środku skryptu).
Przydatne linki:
Oryginalny artykuł znajduje się w serwisie BSD4U.
Autor: Karol 'lofix' Gogiel.
Powrót na górę strony...