Nagiosgraph – графици у Nagiosu, инсталација
Nagiosgraph прикупља, анализира и раставља излазне податке добијене од Nagios плагинова и смешта те податке у RRD фајлове, креира графике и генерише HTML странице са графицима.
Nagiosgraph је важна екстензија, додатак Nagios-у који нам омогућава брзи преглед историје перформанси за сваки хост или сервис кога надгледамо и то у графичком приказу.
Интегрисан је у Nagios али је и даље независтан од њега. Писан је у програмском језику Perl па га је могуће модификовати по потребама. Не треба класичну базу већ све чува у rrd(round-robin database) фајловима. Нови графици за нове хостове и сервисе се генеришу аутоматски ако постоји одговарајући приказ излаза у perl фајлу map. Ако немамо приказ у map-у онда је потребно ажурирати фајл map и рестартовати Nagios.
Укратко, Nagiosgraph скрипта insert.pl прикупља излазне податке, раставља их према предефинисаним критеријумима који се налазе у конфигурационом фајлу map и креира или ажурира RRD фајлове. Обично постоји један RRD фајл по сервису или хосту. Сви RRD фајлови везани за један хост се налазе у директоријуму са називом тог хоста.
Графици перформанси су интегрисани у сам Nagios приказ преко линка и још једне мале додатне иконице која се налази поред самог сервиса. Кликом на иконицу добијамо приказ графика за тај сервис за све хостове.
Инсталација
Упутство је тестирано на оперативном систему ЦентОС 7 на коме су већ инсталирани Nagios Core 4.1.1 и Nagios plugin 2.1.1 и где се тренутно надгледа само localhost и неки његови сервиси.
За инсталацију Nagios Core и Nagios додатак видети упутство на https://kompjuteras.com/osnovna-instalacija-i-konfiguracija-nagios-4-na-centos-7-korak-po-korak/
Предуслови
Потребно је да, поред Nagios сервера који је у функцији, имамо инсталиране и још неке додатне пакете (perl-GD, php-gd, rrdtool-perl,…) и то радимо следећом командом:
yum -y install perl-GD php-gd rrdtool-perl rrdtool-php rrdtool perl-CGI perl-Time-HiRes
Корак 1: Креирање директоријума и преузимање са интернета Nagiosgraph пакета
Креирамо директоријум nagiosgraph за Nagiosgraph инсталацију
mkdir /root/nagiosgraph cd /root/nagiosgraph
Помоћу команде wget преузимамо последњу верзију Nagiosgraph пакета, распакујемо је командом tar и прелазимо у новокреирани директоријум nagiosgraph-1.5.2
wget http://downloads.sourceforge.net/project/nagiosgraph/nagiosgraph/1.5.2/nagiosgraph-1.5.2.tar.gz tar -xzvf nagiosgraph-1.5.2.tar.gz cd nagiosgraph-1.5.2
Корак 2: Провера потребних предуслова за инсталацију Nagiosgraph
Провера да ли су инсталирани сви потребни пакети вршимо користећи „install.pl“ скрипту са опцијом „check-prereq“
./install.pl --check-prereq
Ако не добијемо никакву грешку прелазимо на корак 3.
Ако нам се појави следећи приказ где имамо грешку за пакете Digest::MD5…***FAIL*** i Nagios::Config…FAIL<<<< онда је потребно додатно да инсталирамо недостајуће пакете.
Да би инсталирали недостајуће пакете потребно је прво да инсталирамо CPAN shell. При самој инсталацији одговарамо да хоћемо аутоматску инсталацију.
yum install perl-CPAN -y
Прелазимо у CPAN shell. Када први пут стартујемо CPAN добијемо гомилу питања на која одговарамо или са Yes или једноставно ударимо Ентер на тастатури.
perl -MCPAN -e shell
Инсталирамо недостајуће модуле и излазимо из CPAN shell-а после сваке инсталације појединачног модула, то у нашем случају је:
cpan>install Digest::MD5 cpan>exit
Сад опет улазимо у CPAN.
perl -MCPAN -e shell
cpan>install Module::Build cpan>exit
Опет улазимо у CPAN командом
perl -MCPAN -e shell
cpan> install Nagios::Config cpan> exit
Опет проверавамо да ли имамо све потребне пакете и модуле.
./install.pl --check-prereq
Потребно је да добијемо следећу слику:
Сада смо спремни за конфигурацију nagiosgraph-а.
Корак 3: Креирање директоријума nagiosgraph и копирање садржаја
Креирање директоријума nagiosgraph у оквиру подразумеваног фолдера nagios на локацији /usr/local/nagios/.
Копирање целог фолдера nagiosgraph/nagiosgraph-1.5.2/etc у новокреирани доректоријум nagiosgraph на путањи /usr/local/nagios/.
cd /usr/local/nagios mkdir /usr/local/nagios/nagiosgraph/ cp /root/nagiosgraph/nagiosgraph-1.5.2/etc/* /usr/local/nagios/nagiosgraph/
Корак 4: Измена cgi скрипти и скрипте insert.pl и њихово копирање
Све фајлове у фолдеру /root-nagiosgraph/nagiosgraph-1.5.2/cgi/ отворити са nano и изменити „use lib“ линију тако да показује на директоријум из претходне тачке (на /usr/local/nagios/nagiosgraph)
cd /root/nagiosgraph/nagiosgraph-1.5.2/cgi/
Имамо осам фајлова да изменимо – export.cgi, show.cgi, showconfig.cgi, showgraph.cgi, showgroup.cgi, showhost.cgi, showservice.cgi, testcolor.cgi.
Пример за export.cgi.
nano export.cgi
Ово можете урадити ручно кроз „vi“ едитор или једноставном командом за замену текста
sed -i s/"use lib '\/opt\/nagiosgraph\/etc';"/"use lib '\/usr\/local\/nagios\/nagiosgraph';"/g *.cgi
Фајл insert.pl у фолдеру /root/nagiosgraph/nagiosgraph-1.5.2/lib/ отворити и изменити „use lib“ линију тако да показује на директоријум из претходне тачке (на /usr/local/nagios/nagiosgraph/)
cd /root/nagiosgraph/nagiosgraph-1.5.2/lib/ sed -i s/"use lib '\/opt\/nagiosgraph\/etc';"/"use lib '\/usr\/local\/nagios\/nagiosgraph';"/g insert.pl
Сада овако преправљене фајлове копирамо на одговарајуће путање (insert.pl у директоријум /usr/local/nagios/libexec а све cgi фајлове у директоријум /usr/local/nagios/sbin)
cp /root/nagiosgraph/nagiosgraph-1.5.2/lib/insert.pl /usr/local/nagios/libexec/ cp /root/nagiosgraph/nagiosgraph-1.5.2/cgi/*.cgi /usr/local/nagios/sbin
Корак 5: Копирање CSS, Javascript фајлова, измена конфигурационих и лог фајлова, креирање припадајућих директоријума
Копирати CSS и Javascript фајлове из директоријума /root/nagiosgraph/nagiosgraph-1.5.2/share/ у директоријум веб сервера /usr/local/nagios/share
cp /root/nagiosgraph/nagiosgraph-1.5.2/share/nagiosgraph.css /usr/local/nagios/share cp /root/nagiosgraph/nagiosgraph-1.5.2/share/nagiosgraph.js /usr/local/nagios/share
Измена фајла nagiosgraph.cfg
Потребно је изменити фајл nagiosgraph.conf у директоријуму /usr/local/nagios/nagiosgraph/etc/
cd /usr/local/nagios/nagiosgraph/ nano nagiosgraph.conf
Мењамо следеће линије (можете и да закоментаришете постојеће па ове само додате после последњег коментара):
logfile = /usr/local/nagios/var/nagiosgraph.log cgilogfile = /usr/local/nagios/var/nagiosgraph-cgi.log perflog = /usr/local/nagios/var/perfdata.log rrddir = /usr/local/nagios/nagiosgraph/rrd mapfile = /usr/local/nagios/nagiosgraph/map nagiosgraphcgiurl = /nagios/cgi-bin javascript = /nagios/nagiosgraph.js stylesheet = /nagios/nagiosgraph.css
Креирање директоријума rrd и измена дозвола
Креирамо директоријум rrd на путањи /usr/local/nagios/nagiosgraph и дајемо кориснику nagios права читања, уписивања и извршавања.
mkdir /usr/local/nagios/nagiosgraph/rrd chown nagios /usr/local/nagios/nagiosgraph/rrd chmod 777 /usr/local/nagios/nagiosgraph/rrd
Креирање фајла nagiosgraph.log и измена дозвола
Намештамо право приступа фајлу nagiosgraph.log тако да корисник nagios може да му приступи и да уписује, чита и извршава (прво са командом touch направимо празан лог фајл)
touch /usr/local/nagios/var/nagiosgraph.log chown nagios /usr/local/nagios/var/nagiosgraph.log chmod 777 /usr/local/nagios/var/nagiosgraph.log
Креирање фајла nagiosgraph-cgi.log и измена дозвола
Намештамо право приступа фајлу nagiosgraph-cgi.log тако да корисник nagios може да му приступи и да уписује, чита и извршава(прво са командом touch направимо празан лог фајл)
touch /usr/local/nagios/var/nagiosgraph-cgi.log chown nagios /usr/local/nagios/var/nagiosgraph-cgi.log chmod 777 /usr/local/nagios/var/nagiosgraph-cgi.log
Измене пермисија над директоријумом „var“
Подешавамо права приступа корисника nagios над директоријумом /usr/local/nagios/var тако да може да креира и брише perfdata фајлове
chown nagios /usr/local/nagios/var chmod 777 /usr/local/nagios/var
Корак 6: Измена Nagios конфигурационог фајла
У Nagios конфигурационом фајлу мењамо следеће линије:
nano /usr/local/nagios/etc/nagios.cfg
process_performance_data=1 service_perfdata_file=/usr/local/nagios/var/perfdata.log service_perfdata_file_template=$LASTSERVICECHECK$||$HOSTNAME$||$SERVICEDESC$||$SERVICEOUTPUT$||$SERVICEPERFDATA$ service_perfdata_file_mode=a service_perfdata_file_processing_interval=30 service_perfdata_file_processing_command=process-service-perfdata
Корак 12: Измене пермисија над nagiosgraph фајловима и директоријумима
Подешавамо права приступа корисника nagios над директоријумом /usr/local/nagios/nagiosgraph
chown nagios /usr/local/nagios/nagiosgraph chmod 755 /usr/local/nagios/nagiosgraph
Промена власника фајла insert.pl
chown nagios /usr/local/nagios/libexec/insert.pl
Корак 14: Nagios фајл commands.cfg
У nagios commands.cfg фајлу потребно је да додамо дефиницију команде.
cd /usr/local/nagios/etc/objects nano commands.cfg
Коментаришемо постојећу дефиницију за process-service-perfdata па додајемо нашу на крај фајла:
define command { command_name process-service-perfdata command_line /usr/local/nagios/libexec/insert.pl }
…тако да сам то изгледа овако:
Корак 15: Провера Nagios конфигурације, рестарт и верификација рада
Проверу конфигурације Nagiosа радимо командом:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Рестартујемо nagios командом:
/etc/init.d/nagios restart
Верификација да nagiosgraph ради је провера следецег линка (унесите вашу адресу сервера, у овом случају ће се радити о адреси 192.168.11.105 – што можете видети у скриншоту):
http://<<server>>/nagios/cgi-bin/showconfig.cgi
У веб браузеру треба да добијемо следеће:
Корак 18: Измене Nagios .cfg фајлова
У nagios templates.cfg фајлу потребно је да додамо дефиницију сервиса.
cd /usr/local/nagios/etc/objects nano templates.cfg
Додајемо следеће линије на крај фајла:
define service { name Service-graph ;The name of this service template use generic-service ;Inherit difolt values from the generic-service definition action_url /nagios/cgi-bin/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$'onMouseOver='showGraphPopup(this)' onMouseOut='hideGraphPopup()'rel='/nagios/cgi-bin/showgraph.cgi?host=$HOSTNAME$&service=$SERVICEDESC$ register 0 }
Измене Nagios фајла localhost.cfg
Креирамо линк ка графику за одређени сервис тако што додајемо template Service-graph том сервису у фајлу localhost.cfg.
Када будемо креирали nagios фајл services.cfg и повезали га у конфигурационом фајлу nagios.cfg онда ћемо template Service-graph додавати сервисима разлицитих хостова у фајлу services.cfg.
Тренутно, у фајлу localhost.cfg додајемо template Service-graph сервисима PING, Root Partition, Current Load.
cd /usr/local/nagios/etc/objects nano localhost.cfg
У оквиру дефиниције сервиса иза кључне речи use додајемо и template Service-graph.
define service {
use local-service,Service-graph
…
}
Конкретно у нашем случају за дефиницију сервиса PING то треба да изгледа као на слици:
Замена Nagios иконице са nagiosgraph иконицом
mv /usr/local/nagios/share/images/action.gif /usr/local/nagios/share/images/action.gif-orig cp /root/nagiosgraph/nagiosgraph-1.5.2/share/graph.gif /usr/local/nagios/share/images/action.gif
Измена фајла nagiosgraph.ssi
У фајлу nagiosgraph.ssi поставити тачан УРЛ за фајл nagiosgraph.js
nano /root/nagiosgraph/nagiosgraph-1.5.2/share/nagiosgraph.ssi
мењамо линију
src=“/nagiosgraph/nagiosgraph.js“
нова линија је
src=“/nagios/nagiosgraph.js“
Копирамо новокреирани фајл nagiosgraph.ssi уместо фајла common-header.ssi
cp /root/nagiosgraph/nagiosgraph-1.5.2/share/nagiosgraph.ssi /usr/local/nagios/share/ssi/common-header.ssi
Додајемо линкове ка графицима на nagios services html страницама.
Мењамо фајл side.php на путањи /usr/local/nagios/share
nano /usr/local/nagios/share/side.php
после 49 линије (ако је некоме лакши рад у Notepad++ онда прекопира преко програмчића WinSCP-а фајл на Виндовс и отвори га у Notepad++ и тамо га ажурира, па га поново аплоудује кад заврши)
додати следеће линије
<li><a href="/nagios/cgi-bin/show.cgi" target="main">Graphs</a></li> <li><a href="/nagios/cgi-bin/showservice.cgi" target="main">Graphs by Service</a></li>
Провера конфигурације и рестарт Nagiosа
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg /etc/init.d/nagios restart
Корак 24: Права приступа фајловима
На крају је остало да подесимо права приступа одређеним фајловима.
Потребно је урадити следеће:
chmod 777 /usr/local/nagios/share/nagiosgraph.js chmod 777 /usr/local/nagios/share/nagiosgraph.css chmod 755 /usr/local/nagios/nagiosgraph/* chmod 777 /usr/local/nagios/nagiosgraph/nagiosgraph.conf chown nagios /usr/local/nagios/nagiosgraph chown nagios /usr/local/nagios/libexec/*.* chmod 755 /usr/local/nagios/libexec/* chmod 777 /usr/local/nagios/libexec/insert.pl chmod 766 /usr/local/nagios/etc/objects/* chown -R nagios:nagios /usr/local/nagios/nagiosgraph/rrd chown -R nagios:nagios /usr/local/nagios/sbin/ chmod 777 /usr/local/nagios/sbin/*
Корак 25: Провера рада nagiosgraph скрипте и провера постојања rrd фајлова
Можемо да проверимо сам рад скрипте insert.pl тако што ћемо је покренути директно из командне линије.
Ако не добијемо никакву грешку скрипта ради ок.
cd /usr/local/nagios/libexec ./insert.pl
Можемо да проверимо и да ли већ постоје rrd фајловим класичним листањем поддиректоријума хоста за који желимо да погледамо фајлове (потребно је да протекне одређено време око 15-ак минута како би се појавили rrd фајлови).
ls /var/nagios/rrd/localhost
ДОДАТАК: MAP (мап) фајл
Nagiosgraph RRD фајлови се генеришу тако што скрипта insert.pl „чита“ конфигурациони фајл map у директоријуму /usr/local/nagios/nagiosgraph. У том конфигурационом фајлу који је писан у perl језику се налази синтакса за читање aутпута или perfdata из фајла nagiosgraph.log.
Подразумевани map конфигурациони фајл који долази са овом верзијом nagiosgraph-а (верзија 1.5.2) није баш најадекватнији и најкориснији. На пример, график за сервис PING је тотално бескористан и изгледа као на следећој слици.
Видимо на графику да су приказани подаци само за pl (packet loss) који су 99% увек исти, а битан график rta (round trip average) немамо.
Зато је препорука да се овај подразумевани map конфигурациони фајл замени са фајлом у коме можемо ми сами да додајемо синтаксу за цртање графова.
У директоријуму nagiosgraph-1.5.2 имамо и директоријум еxamples где нам је дато више примера map конфигурационог фајла.
Моја препорука је да се ископира фајл map_1_4_3 из овог директоријума на путању /usr/local/nagios/nagiosgraph, да се преименује фајл map у map-original, а овај нови да се преименује у map тако да он постане главни конфигурациони map фајл. Потребно је избрисати rrd фајлове из поддиректоријума localhost, рестартовати nagios (корак 23), и сачекати одређено време (15-ак минута) да се креирају нови rrd фајлови.
У овом фајлу синтакса за сервис PING је:
service nagios stop rm -rf /usr/local/nagios/nagiosgraph/rrd/localhost/* mv /usr/local/nagios/nagiosgraph/map /usr/local/nagios/nagiosgraph/map-original cp /root/nagiosgraph/nagiosgraph-1.5.2/examples/map_1_4_3 /usr/local/nagios/nagiosgraph/map service nagios start
# Service type: ping # output:PING OK - Packet loss = 0%, RTA = 0.00 ms /output:PING.*?(\d+)%.+?([.\d]+)\sms/ and push @s, [ 'pingloss', [ 'losspct', GAUGE, $1 ]] and push @s, [ 'pingrta', [ 'rta', GAUGE, $2/1000 ]];
График је:
Кад кликнемо на иконицу: добијамо само график за тај сервис.
Можемо директно на графику да изаберемо детаљнији приказ за одређени временски интервал.
У горњем десном углу имамо опцију и да изаберемо и хост и service
Као додатак за map конфигурациони фајл унео сам и већ готове и проверене синтаксе за одређене сервисе.
#---------------------------------------------------------------------------- # # Service type:Zauzetost CPU # output:2 CPU, average load 0.0% 70% : OK # alternate out:4 CPU, average load 0.0% 70% : OK /output:(\d+) CPU,.*average load (\d+\.\d+)\% ([0-9]+)\% : / and push @s, [ $1, [ avg5min, GAUGE, $2 ] ]; #---------------------------------------------------------------------------- # # Service type:Zauzetost memorije # output:Virtual Memory: 10%used(1722MB/16428MB) (85%) : OK /output:(\S+ Memory): (\d+)\%/ and push @s, [ $1, [ 'pctused', GAUGE, $2 ] ]; #---------------------------------------------------------------------------- # # Service type:Zauzetost particije C hard diska # output:C:\ Label: Serial Number c0725793: 82%used(42090MB/51098MB) (85%) : OK /output:(\S+):\\ Label:.*: (\d+)\%used/ and push @s, [ "$1_drive", [ 'pctused', GAUGE, $2 ] ]; #---------------------------------------------------------------------------- # # Service type:Provera iskoriscenosti memorije # output:Status is OK - Memory: total: 206.85 MB, used: 22.88 MB (11%), free: 183.97 MB /output:.*MEMORY:.* \((\d+)\%\).*/ and push @s, [ "MemoryUtil", [ 'memutil', GAUGE, $1 ] ]; #---------------------------------------------------------------------------- # # Service type:Provera srednje vrednosti CPU load u zadnjih 5 minuta # output:Status is OK - CPU load average (5 min): 1 %, temperature normal /output:.*CPU load average .*: (\d+) \%\.*/ and push @s, [ "CPULoadAvg", [ 'cpuload', GAUGE, $1 ] ]; #---------------------------------------------------------------------------- # # Service type:Protok linka na cisco ruteru # output:OK Out: 9.39Kbps: In: 4.05Kbps (Sent 351.99Kb, Received 152.02Kb in 300 seconds) /output:.* Out:.* (\d+.\d+).*: (\d+.\d+).*/ and push @s, [ "BandwidthOut", [ 'Out', GAUGE, $1 ] ] and push @s, [ "BandwidthIn", [ 'In', GAUGE, $2 ] ]; #---------------------------------------------------------------------------- # #servicedesc:Root Partition # output:DISK OK - free space: / 41750 MB (89% inode=99%): # perfdata:/=4910MB;37328;41994;0;46661 /output:DISK.*inode=/ and do { my @_pct = /: (\/.*?) .*?(\d+)% inode=(\d+)%/g; while ( my($_d,$_b,$_i) = splice @_pct,0,3 ) { my @_s; /perfdata:.*$_d=(\d+)\w*?;(\d+);(\d+);(\d+);(\d+)/; push @s, [ DiskSpace, [ 'DiskUsed', GAUGE, $1*1024**2 ], [ 'DiskWarning', GAUGE, $2*1024**2 ], [ 'DiskCritical', GAUGE, $3*1024**2 ], [ 'DiskMax', GAUGE, $5*1024**2 ] ]; } };
Велики број синтакси за разне сервисе можемо да нађемо на линку http://nagios.fm4dd.com/nagiosgraph/
Када будемо додавали хостове и сервисе nagiosgraph ће аутоматски да црта графове ако постоји одговарајућа синтакса у map фајлу. Толико за сада.