Поиск по сайту:

Как установить готовый к работе сервер мониторинга Naemon


На этой странице

  1. Установка сервера Naemon
  2. Установка клиента мониторинга для мониторинга узлов
    1. 192.168.1.21 — клиент nrpe — centos 6
    2. 192.168.1.182 — клиент nrpe — ubuntu
    3. 192.168.1.75 — клиент nscp — сервер Windows 2012R2

    1. 192.168.1.21 — клиент nrpe — centos 6
    2. 192.168.1.182 — клиент nrpe — ubuntu
    3. Конфигурация на сервере Naemon
    4. Конфигурация pnp4nagios

    Naemon — это новый пакет мониторинга, который должен быть быстрым, стабильным и инновационным, давая вам четкое представление о состоянии вашей сети и приложений. Это замена серверу nagios, он очень стабилен и использует потрясающую панель управления под названием thruk. Настроить naemon очень просто, и он имеет текущий статус в сборке. В этом руководстве я покажу вам, как установить и настроить naemon в производственной среде вместе с pnp4nagios для графиков. Naemon очень стабилен, я покажу вам, как поддерживать конфигурации в крупномасштабной среде.

    В этом уроке я буду использовать четыре сервера.

    • 192.168.1.170 — сервер Naemon — Centos 7
    • 192.168.1.21 — клиент nrpe — centos 6
    • 192.168.1.182 — клиент nrpe — ubuntu
    • 192.168.1.75 — клиент nscp — сервер Windows 2012R2

    Установка Naemon Server

    Я использую хост CentOS 7 с минимальной установкой, отключенным SELinux и включенным firewalld.

    [ ~]# sestatus
    SELinux status:                 disabled
    [ ~]#

    Установка репозитория:

    [ ~]# yum -y install https://labs.consol.de/repo/stable/rhel7/x86_64/labs-consol-stable.rhel7.noarch.rpm

    включение репозитория epel:

    yum -y install epel-release

    Установка пакета Naemon:

    [ ~]# yum install naemon*

    Naemon использует тот же плагин Nagios и nrpe для мониторинга хостов. Теперь мы установим их:

    [ ~]# yum install nagios-plugins nagios-plugins-all nagios-plugins-nrpe nrpe -y

    Добавим правила брандмауэра:

       
    [ ~]# firewall-cmd --add-service=http --permanent
    success
    [ ~]# firewall-cmd --add-service=https --permanent
    success
    [ ~]# firewall-cmd --reload
    success
    [ ~]# firewall-cmd --list-all
    public (active)
      target: default
      icmp-block-inversion: no
      interfaces: eno16777736
      sources:
      services: dhcpv6-client http https ssh
      ports:
      protocols:
      masquerade: no
      forward-ports:
      sourceports:
      icmp-blocks:
      rich rules:
    
    [ ~]#
    
        

    Установка pnp4nagios.

    yum install gcc-c++ rrdtool perl-Time-HiRes perl-rrdtool php-gd php php-cli wget

    Качаем pnp4nagios.

    [ ~]# wget https://svwh.dl.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.25.tar.gz
        [ ~]# tar -zxvf pnp4nagios-0.6.25.tar.gz
        [ ~]# cd pnp4nagios-0.6.25/
    [ pnp4nagios-0.6.25]# ./configure --with-nagios-user=naemon --with-nagios-group=naemon
    [ pnp4nagios-0.6.25]# make all
    [ pnp4nagios-0.6.25]# make fullinstall
    [ pnp4nagios-0.6.25]# make install-webconf
    [ pnp4nagios-0.6.25]# make install-config
    [ pnp4nagios-0.6.25]# make install-init
        

    Перезапуск и включение службы.

        [ ~]# systemctl enable httpd && systemctl restart httpd
    [ ~]# systemctl enable naemon && systemctl restart naemon
    [ ~]# systemctl enable thruk && systemctl restart thruk
    [ ~]# systemctl enable npcd && systemctl restart npcd
        

    вы должны иметь доступ к URL-адресу с http://192.168.1.170/thruk

    Имя пользователя по умолчанию — thrukadmin, пароль — thrukadmin.

    Если вы хотите изменить пароль thrukadmin, запустите:

    [ ~]# htpasswd /etc/thruk/htpasswd thrukadmin

    Установка клиента мониторинга для мониторинга узлов

    Установка клиентов nrpe для мониторинга хостов Linux

    192.168.1.21 — клиент nrpe — centos 6

    Установка плагина Nagios и клиента nrpe:

    [ ~]# yum install nagios-plugins nagios-plugins-all nagios-plugins-nrpe nrpe -y

    Сделайте резервную копию файла nrpe.cfg:

    [ ~]# cp /etc/nagios/nrpe.cfg /etc/nagios/nrpe.cfg.bkp

    Замените содержимое файла nrpe.conf следующим содержимым:

    [ ~]# cat /etc/nagios/nrpe.cfg
    log_facility=daemon
    pid_file=/var/run/nrpe/nrpe.pid
    nrpe_user=nrpe
    nrpe_group=nrpe
    allowed_hosts=127.0.0.1,192.168.1.170
    dont_blame_nrpe=1
    debug=0
    command_timeout=60
    connection_timeout=300
    include_dir=/etc/nrpe.d/
    
    [ ~]#
        

    В разделе allow_host добавьте IP-адрес сервера naemon, здесь это 192.168.1.170.

    Теперь нам нужно перезапустить службу nrpe:

    	[ ~]# service nrpe restart
    	[ ~]# chkconfig nrpe on
    	

    192.168.1.182 — клиент нрпе — убунту

    :~# apt-get install nagios-nrpe-server nagios-plugins -y

    Сделайте резервную копию файла nrpe.cfg:

    [ ~]# cp /etc/nagios/nrpe.cfg /etc/nagios/nrpe.cfg.bkp

    Замените содержимое файла nrpe.conf следующим содержимым:

    :~# cat /etc/nagios/nrpe.cfg
    log_facility=daemon
    pid_file=/var/run/nagios/nrpe.pid
    nrpe_user=nagios
    nrpe_group=nagios
    allowed_hosts=127.0.0.1,192.168.1.170
    dont_blame_nrpe=1
    debug=0
    command_timeout=60
    connection_timeout=300
    include_dir=/etc/nagios/nrpe.d/
    :~#
        

    Теперь нам нужно перезапустить службу nrpe:

    	:~# systemctl restart nagios-nrpe-server.service
    	:~# systemctl enable nagios-nrpe-server.service
    	

    Установка Nscp в Windows

    192.168.1.75 — клиент nscp — сервер Windows 2012R2

    Загрузите nscp с этого веб-сайта:

    После загрузки следуйте скриншотам установки

    Выбирайте универсальный.

    Выберите полный:

    Выберите путь по умолчанию:

    Теперь в разделе разрешенных хостов добавьте хост naemon. Здесь в нашей настройке это 192.168.1.170.

    Убедитесь, что вы указали сложный пароль. В этом примере я использовал пароль как «howtoforge». Следующая проверка включает nsclient и nrpe.

    После завершения установки убедитесь, что служба запущена и работает.

    Теперь мы проверим с хоста naemon, чтобы убедиться, что мы можем связаться с ним.

    Подтвердите nrpe и nscp с сервера Naemon, чтобы проверить возможность подключения.

    [ ~]# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.1.182
    NRPE v2.15
    [ ~]# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.1.21
    NRPE v2.15
    [ ~]#
    	
    [ ~]# /usr/lib64/nagios/plugins/check_nt -H 192.168.1.75 -p 12489 -v CLIENTVERSION -s 'howtoforge'
    NSClient++ 0.5.0.62 2016-09-14
    [ ~]#
    
    	

    Мониторинг серверов

    В этом руководстве мы будем отслеживать производительность серверов.

    В производственной среде нам нужно будет отслеживать использование ЦП, памяти и жесткого диска, а также проверку работоспособности хоста.

    Добавление следующих строк в nrpe conf /etc/nrpe.d/base.cfg

    192.168.1.21 — клиент nrpe — centos 6

      [ ~]# cat /etc/nrpe.d/base.cfg
    command[check_disks]=/usr/lib64/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
    command[check_disk]=/usr/lib64/nagios/plugins/check_disk -X nfs -X cifs -X none -X tmpfs -w $ARG1$ -c $ARG2$
    command[memory]=/usr/lib64/nagios/plugins/check_memory -w $ARG1$ -c $ARG2$
    command[load]=/usr/lib64/nagios/plugins/check_load -w $ARG1$ -c $ARG2$
    command[check_total_procs]=/usr/lib64/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$
    command[check_procs_c]=/usr/lib64/nagios/plugins/check_procs -c $ARG1$ -C $ARG2$
    command[check_procs_a]=/usr/lib64/nagios/plugins/check_procs -c $ARG1$ -a $ARG2$
      

    Сохраните и перезапустите файл, затем перезапустите nrpe.

    [ ~]# /etc/init.d/nrpe restart
    Shutting down nrpe:                                        [FAILED]
    Starting nrpe:                                             [  OK  ]
    [ ~]#
     

    Плагин памяти не будет доступен в качестве плагина по умолчанию. Мы будем использовать приведенный ниже плагин.

     [ ~]# cd  /usr/lib64/nagios/plugins/
     [ plugins]# vim check_memory
    

    Добавьте приведенный ниже контент.

    #! /usr/bin/perl -w
    ##Included Perf data
    #The nagios plugins come with ABSOLUTELY NO WARRANTY. You may redistribute
    #copies of the plugins under the terms of the GNU General Public License.
    #
    use strict;
    use Getopt::Long;
    
    my ($opt_f, $opt_h, $opt_c, $opt_w);
    my ($result, $message, $ram_percent);
    
    my $PROGNAME="check_memory";
    
    $opt_f = "";
    
    Getopt::Long::Configure('bundling');
    GetOptions(
            "h"   => \$opt_h, "help"        => \$opt_h,
            "c=s" => \$opt_c, "Warning_Percentage"  => \$opt_c,
            "w=s" => \$opt_w, "Critical_Percentage" => \$opt_w,
    );
    
    if ($opt_h) {
            &print_help();
            exit 0;
    }
    
    $opt_w = shift unless ($opt_w);
    $opt_c = shift unless ($opt_c);
    
    if (! $opt_c && ! $opt_w) {
            print "Warning and Critical must be specified\n";
            exit 3;
    }
    if ($opt_c <= $opt_w){
            print "Critical must be greater than Warning CRITICAL: $opt_c WARNING: $opt_w\n";
            exit 3;
    }
    
    
    
    $result = 'OK';
    open(FREE_M, "free -m|");
    while (my $line = ){
            if ($line =~ /^Mem/){
                    my ($junk,$total_mem,$used_mem,$free_mem,$shared_mem,$buffered_mem,$cached_mem)=split(/\s+/,$line);
                    $ram_percent=int(($total_mem-($free_mem+$cached_mem+$buffered_mem))/$total_mem*100*100)/100;
    
            }
    }
    close(FREE_M);
    
    if ($ram_percent > $opt_c){
    print "Memory usage is: CRITICAL: ${ram_percent}% used | used=$ram_percent;$opt_w;$opt_c\n";
    exit 2;
    }elsif ($ram_percent > $opt_w) {
    print "Memory usage is: WARNING: ${ram_percent}% used | used=$ram_percent;$opt_w;$opt_c\n";
    exit 1;
    }
    else{
    print "Memory usage is: $result: ${ram_percent}% used | used=$ram_percent;$opt_w;$opt_c\n";
    exit 0;
    }
    
    sub print_usage () {
            print "Usage:\n";
            print "  $PROGNAME -f \n";
            print "  $PROGNAME -c \n";
            print "  $PROGNAME -w \n";
            print "  $PROGNAME [-h | --help]\n";
            print "  $PROGNAME [-V | --version]\n";
    }
    
    sub print_help () {
            print << EOF; 
    $PROGNAME v1.0.01
    The nagios plugins come with ABSOLUTELY NO WARRANTY. You may redistribute
    copies of the plugins under the terms of the GNU General Public License.
    EOF
            &print_usage();
            print "\n";
            exit 3;
    }
    
    
    

    Ссылка для скачивания плагина check_memory

    Вы должны дать права на выполнение файла:

      [ plugins]# chmod 755 check_memory

    Добавление следующих строк в nrpe conf /etc/nagios/nrpe.d/base.cfg

    192.168.1.182 — клиент нрпе — убунту

    Здесь путь к файлу другой:

    Папка плагина lib, а не lib64.

      :~# cat /etc/nagios/nrpe.d/base.cfg
    command[check_disks]=/usr/lib/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
    command[check_disk]=/usr/lib/nagios/plugins/check_disk -X nfs -X cifs -X none -X tmpfs -w $ARG1$ -c $ARG2$
    command[memory]=/usr/lib/nagios/plugins/check_memory -w $ARG1$ -c $ARG2$
    command[load]=/usr/lib/nagios/plugins/check_load -w $ARG1$ -c $ARG2$
    command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$
    command[check_procs_c]=/usr/lib/nagios/plugins/check_procs -c $ARG1$ -C $ARG2$
    command[check_procs_a]=/usr/lib/nagios/plugins/check_procs -c $ARG1$ -a $ARG2$
      

    Добавьте тот же самый скрипт check_memory в /usr/lib/nagios/plugins.

      :~# vim /usr/lib/nagios/plugins/check_memory
    :~# chmod 755 /usr/lib/nagios/plugins/check_memory
    :~# systemctl restart nagios-nrpe-server.service
    :~#
    

    Конфигурация на сервере Naemon

    Войдите как пользователь naemon:

    [ ~]# su - naemon
    Last login: Thu Mar  9 17:11:39 CET 2017 on pts/0
    -sh-4.2$
    
    

    Измените почту администратора в /etc/naemon/naemon.cfg

    ........
    ........
    
    
    ........
    ........
    

    Теперь мы настроим пользовательские команды для проверки в /etc/naemon/conf.d.

    Создайте пользовательские команды с именем custom_commands.cfg с приведенным ниже содержимым.

    $ vim /etc/naemon/conf.d/custom_commands.cfg
    ## Host Alive check ##
    # command 'check_icmp Host Alive'
    define command{
        command_name                   host_alive
        command_line                   $USER1$/check_icmp -H $HOSTADDRESS$ -n 1 -w 3000.00,80% -c 5000.00,100%
        }
    ### Service Command ##
    # command 'check_nrpe_disks'
    define command{
        command_name                   check_nrpe_disks
        command_line                   $USER1$/check_nrpe -t 55 -u -H $HOSTADDRESS$ -c check_disks -a $ARG1$ $ARG2$ $ARG3$
        }
    
    # command 'nrpe'
    define command{
        command_name                   nrpe
        command_line                   $USER1$/check_nrpe -t 55 -u -H $HOSTADDRESS$ -c $ARG1$
        }
    
    # NRPE With Arguements
    define command{
        command_name                   check_nrpe_a
        command_line                   $USER1$/check_nrpe -t 55 -u -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$ $ARG3$ $ARG4$
        }
    #####################################
    # Windows NSClient++ Checks
    # command 'check_nt'
    define command{
        command_name                   nt
        command_line                   $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$ -s $USER4$
        }
    
    

    В целях безопасности сохраните пароль клиентов nscp в /etc/naemon/resource.cfg.

    ...........
    ...........
    $USER4$=howtoforge
    ...........
    ............
    

    Теперь нам нужно определить конфигурацию хоста.

    Мы создаем файл с именем linux.cfg.

    $ vim /etc/naemon/conf.d/linux.cfg
    define host {
      host_name                      centos6.sunil.cc
      alias                          Centos
      address                        192.168.1.21
      use                            linux-server
      hostgroups                     linux-servers
    }
    define host {
      host_name                      ubuntu.sunil.cc
      alias                          Ubuntu
      address                        192.168.1.182
      use                            linux-server
      hostgroups                     linux-servers
    }
    

    Мы делаем то же самое для хоста Windows.

    $ vim /etc/naemon/conf.d/windows.cfg
    define host {
      host_name                      ad.sunil.cc
      alias                          My Windows Server
      address                        192.168.1.75
      use                            windows-server
    }
    
    define hostgroup {
      hostgroup_name                 windows-servers
      alias                          Windows Servers
    }
    
    

    Теперь нам нужно определить конфигурацию службы.

    $ vim linux_services.cfg
    define service {
      service_description            Disks Status
      hostgroup_name                  linux-servers
      use                            generic-service                       
      check_command                  check_nrpe_a!check_disk!15%!5%
    }
    define service{
        use                            generic-service
        hostgroup_name                 linux-servers
        service_description            Load Average
        check_command                  check_nrpe_a!load!30,25,20!45,40,35
        }
    define service{
        use                            generic-service
        hostgroup_name                 linux-servers
        service_description            Memory Usage
        check_command                  check_nrpe_a!memory!80!90
        }
    

    Для Windows создаем аналогичный конфиг.

    $ vim window_services.cfg
    define service{
        use                            generic-service
        hostgroup_name                 windows-servers
        service_description            Disk - C:
        check_command                  nt!USEDDISKSPACE!-l c -w 80 -c 90
         }
    define service{
        use                            generic-service
        hostgroup_name                 windows-servers
        service_description            Load Average
        check_command                  nt!CPULOAD!-l 60,90,95
        }
    define service{
        use                            generic-service
        hostgroup_name                 windows-servers
        service_description            Memory Usage
        check_command                  nt!MEMUSE!-w 90 -c 95
        }
    

    Теперь мы изменим контактный адрес электронной почты.

    $ vim contacts.cfg
    define contact {
      contact_name                   naemonadmin                         ; Short name of user
      alias                          Naemon Admin                        ; Full name of user
      use                            generic-contact                     ; Inherit default values from generic-contact template (defined above)
      email                                       ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
    }
    

    Теперь мы удаляем ненужные конфиги, которые не требуются.

    $ mv switch.cfg switch.cfg.bkp
    $ mv printer.cfg printer.cfg.bkp

    Для проверки конфигов.

    $ naemon -v /etc/naemon/naemon.cfg
    
    Naemon Core 1.0.6-pkg
    Copyright (c) 2013-present Naemon Core Development Team and Community Contributors
    Copyright (c) 2009-2013 Nagios Core Development Team and Community Contributors
    Copyright (c) 1999-2009 Ethan Galstad
    License: GPL
    
    Website: http://www.naemon.org
    Reading configuration data...
       Read main config file okay...
       Read object config files okay...
    
    Running pre-flight check on configuration data...
    
    Checking objects...
            Checked 20 services.
            Checked 4 hosts.
            Checked 1 contacts.
            Checked 2 host groups.
            Checked 0 service groups.
            Checked 1 contact groups.
            Checked 29 commands.
            Checked 5 time periods.
            Checked 0 host escalations.
            Checked 0 service escalations.
    Checking for circular paths...
            Checked 4 hosts
            Checked 0 service dependencies
            Checked 0 host dependencies
            Checked 5 timeperiods
    Checking global event handlers...
    Checking obsessive compulsive processor commands...
    Checking misc settings...
    
    Total Warnings: 0
    Total Errors:   0
    
    Things look okay - No serious problems were detected during the pre-flight check
    -sh-4.2$
    

    Войдите в систему как root и перезапустите службу naemon.

    [ conf.d]# systemctl restart naemon
    [ conf.d]# systemctl status naemon
    ? naemon.service - Naemon Monitoring Daemon
       Loaded: loaded (/usr/lib/systemd/system/naemon.service; enabled; vendor preset: disabled)
       Active: active (running) since Thu 2017-03-09 19:14:36 CET; 7s ago
         Docs: http://naemon.org/documentation
      Process: 5112 ExecStart=/usr/bin/naemon --daemon /etc/naemon/naemon.cfg (code=exited, status=0/SUCCESS)
      Process: 5110 ExecStartPre=/usr/bin/chown -R naemon:naemon /var/run/naemon/ (code=exited, status=0/SUCCESS)
      Process: 5108 ExecStartPre=/usr/bin/mkdir /var/run/naemon (code=exited, status=1/FAILURE)
     Main PID: 5114 (naemon)
       CGroup: /system.slice/naemon.service
               ??5114 /usr/bin/naemon --daemon /etc/naemon/naemon.cfg
               ??5115 /usr/bin/naemon --worker /var/lib/naemon/naemon.qh
               ??5116 /usr/bin/naemon --worker /var/lib/naemon/naemon.qh
               ??5117 /usr/bin/naemon --worker /var/lib/naemon/naemon.qh
               ??5118 /usr/bin/naemon --worker /var/lib/naemon/naemon.qh
               ??5119 /usr/bin/naemon --daemon /etc/naemon/naemon.cfg
    
    Mar 09 19:14:36 naemon.sunil.cc systemd[1]: Starting Naemon Monitoring Daemon...
    Mar 09 19:14:36 naemon.sunil.cc systemd[1]: Failed to read PID from file /var/run/naemon/naemon.pid: Invalid argument
    Mar 09 19:14:36 naemon.sunil.cc systemd[1]: Started Naemon Monitoring Daemon.
    [ conf.d]#
    
    

    Войдите в панель управления, и вы увидите, что службы запущены и работают.

    Мы видим, что службы не работают для хоста Ubuntu.

    It is seen that nrpe package compiled for ubuntu had enable arguments disabled for security vulnerabily and that is the reason it is failing

    Нам нужно будет перекомпилировать пакет, чтобы включить аргументы, чтобы управлять настройкой из naemon.

    По ссылке ниже показано, как его можно перекомпилировать. Вы также найдете пакет, уже скомпилированный с параметрами enable на этом сайте. Я буду использовать этот предварительно скомпилированный пакет для этого урока.

    https://www.claudiokuenzler.com/blog/626/nrpe-debian-jessie-command-ags-arguments-not-working-error
    :~# wget https://www.claudiokuenzler.com/downloads/nrpe/nagios-nrpe-server_2.15-1ubuntu2_amd64.xenial.deb

    Установите пакет.

    :~# dpkg -i nagios-nrpe-server_2.15-1ubuntu2_amd64.xenial.deb
    (Reading database ... 79576 files and directories currently installed.)
    Preparing to unpack nagios-nrpe-server_2.15-1ubuntu2_amd64.xenial.deb ...
    Unpacking nagios-nrpe-server (2.15-1ubuntu2) over (2.15-1ubuntu1) ...
    Setting up nagios-nrpe-server (2.15-1ubuntu2) ...
    Processing triggers for systemd (229-4ubuntu16) ...
    Processing triggers for ureadahead (0.100.0-19) ...
    Processing triggers for man-db (2.7.5-1) ...
    :~#
    

    Перезапустите NRPE.

    :~# systemctl restart nagios-nrpe-server.service

    Теперь мы мониторим все хосты с помощью naemon.

    Конфигурация pnp4nagios

    Нам нужно будет настроить pnp4nagios для графика производительности.

    Теперь мы будем использовать тот же метод аутентификации, что и панель управления thruk. Сначала мы сделаем резервную копию файла и изменим следующие строки.

    [ conf.d]# cd /etc/httpd/conf.d/
    [ conf.d]# cp pnp4nagios.conf pnp4nagios.conf.bkp
    [ share]# cat /etc/httpd/conf.d/pnp4nagios.conf
    # SAMPLE CONFIG SNIPPETS FOR APACHE WEB SERVER
    
    Alias /pnp4nagios "/usr/local/pnp4nagios/share"
    
    <Directory "/usr/local/pnp4nagios/share">
            AllowOverride None
            Order allow,deny
            Allow from all
            #
            # Use the same value as defined in nagios.conf
            #
            AuthName "Thruk Access"
            AuthType Basic
            AuthUserFile /etc/thruk/htpasswd
            Require valid-user
            
                    # Turn on URL rewriting
                    RewriteEngine On
                    Options symLinksIfOwnerMatch
                    # Installation directory
                    RewriteBase /pnp4nagios/
                    # Protect application and system files from being viewed
                    RewriteRule "^(?:application|modules|system)/" - [F]
                    # Allow any files or directories that exist to be displayed directly
                    RewriteCond "%{REQUEST_FILENAME}" !-f
                    RewriteCond "%{REQUEST_FILENAME}" !-d
                    # Rewrite all other URLs to index.php/URL
                    RewriteRule "^.*$" "index.php/$0" [PT]
            
    
    [ share]#
    [ conf.d]# systemctl restart httpd.service
    

    Теперь нам нужно изменить страницу конфигурации.

    [ share]# cd /usr/local/pnp4nagios/share/
    [ share]# mv install.php install.php.txt
    

    Теперь нам нужно будет изменить файл конфигурации для pnp4nagios.

    Измените nagios на naemon в файле конфигурации.

    [ conf.d]# vi /usr/local/pnp4nagios/etc/config_local.php
    ............................
    ................................
    $conf['nagios_base'] = "/naemon/cgi-bin";
    ..................................
    ............................

    Включить данные о производительности от 0 до 1.

    [ conf.d]# vi /etc/naemon/naemon.cfg
    .....................
    .....................
    process_performance_data=1
    ......................
    ......................
    

    Добавьте приведенные ниже строки в конец файла naemon.conf.

    [ conf.d]# vi /etc/naemon/naemon.cfg
    #
    # service performance data
    #
    service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata
    service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$
    service_perfdata_file_mode=a
    service_perfdata_file_processing_interval=15
    service_perfdata_file_processing_command=process-service-perfdata-file
    
    #
    #
    # 
    host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata
    host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$
    host_perfdata_file_mode=a
    host_perfdata_file_processing_interval=15
    host_perfdata_file_processing_command=process-host-perfdata-file
    

    Теперь нам нужно добавить следующие строки в custom_commands.conf.

    [ conf.d]# vim /etc/naemon/conf.d/custom_commands.cfg
    
    define command{
           command_name    process-service-perfdata-file
           command_line    /bin/mv /usr/local/pnp4nagios/var/service-perfdata /usr/local/pnp4nagios/var/spool/service-perfdata.$TIMET$
    }
    
    define command{
           command_name    process-host-perfdata-file
           command_line    /bin/mv /usr/local/pnp4nagios/var/host-perfdata /usr/local/pnp4nagios/var/spool/host-perfdata.$TIMET$
    }
    

    Теперь создадим шаблон графика производительности хоста и сервиса.

    $ cd /etc/naemon/conf.d/templates/
    $ cat pnp.cfg
    define host {
       name host-pnp
       process_perf_data 1
       action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_
       register 0
    }
    
    define service {
       name service-pnp
       process_perf_data 1
       action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$
       register 0
    }
    

    Теперь, чтобы получить доступ к графику производительности для необходимых вам сервисов, нам нужно обновить файл service.cfg.

    $ cat linux_services.cfg
    define service {
      service_description            Disks Status
      hostgroup_name                  linux-servers
      use                            generic-service,service-pnp                       ; Name of service template to use
      check_command                  check_nrpe_a!check_disk!15%!5%
    }
    define service{
        use                            generic-service,service-pnp
        hostgroup_name                 linux-servers
        service_description            Load Average
        check_command                  check_nrpe_a!load!30,25,20!45,40,35
        }
    define service{
        use                            generic-service,service-pnp
        hostgroup_name                 linux-servers
        service_description            Memory Usage
        check_command                  check_nrpe_a!memory!80!90
        }
    $ cat window_services.cfg
    define service{
        use                            generic-service,service-pnp
        hostgroup_name                 windows-servers
        service_description            Disk - C:
        check_command                  nt!USEDDISKSPACE!-l c -w 80 -c 90
         }
    define service{
        use                            generic-service,service-pnp
        hostgroup_name                 windows-servers
        service_description            Load Average
        check_command                  nt!CPULOAD!-l 60,90,95
        }
    define service{
        use                            generic-service,service-pnp
        hostgroup_name                 windows-servers
        service_description            Memory Usage
        check_command                  nt!MEMUSE!-w 90 -c 95
        }
    

    Чтобы проверить граф хоста, нам нужно включить его в файл ниже.

    $ cat linux.cfg
    define host {
      host_name                      centos6.sunil.cc
      alias                          Centos
      address                        192.168.1.21
      use                            linux-server,host-pnp
      hostgroups                     linux-servers
    }
    define host {
      host_name                      ubuntu.sunil.cc
      alias                          Ubuntu
      address                        192.168.1.182
      use                            linux-server,host-pnp
      hostgroups                     linux-servers
    }
    $ cat windows.cfg
    define host {
      host_name                      ad.sunil.cc
      alias                          My Windows Server
      address                        192.168.1.75
      use                            windows-server,host-pnp
    }
    
    define hostgroup {
      hostgroup_name                 windows-servers
      alias                          Windows Servers
    }
    

    Подтвердите конфигурацию.

    $ naemon -v /etc/naemon/naemon.cfg
    
    Naemon Core 1.0.6-pkg
    Copyright (c) 2013-present Naemon Core Development Team and Community Contributors
    Copyright (c) 2009-2013 Nagios Core Development Team and Community Contributors
    Copyright (c) 1999-2009 Ethan Galstad
    License: GPL
    
    Website: http://www.naemon.org
    Reading configuration data...
       Read main config file okay...
       Read object config files okay...
    
    Running pre-flight check on configuration data...
    
    Checking objects...
            Checked 20 services.
            Checked 4 hosts.
            Checked 1 contacts.
            Checked 2 host groups.
            Checked 0 service groups.
            Checked 1 contact groups.
            Checked 31 commands.
            Checked 5 time periods.
            Checked 0 host escalations.
            Checked 0 service escalations.
    Checking for circular paths...
            Checked 4 hosts
            Checked 0 service dependencies
            Checked 0 host dependencies
            Checked 5 timeperiods
    Checking global event handlers...
    Checking obsessive compulsive processor commands...
    Checking misc settings...
    
    Total Warnings: 0
    Total Errors:   0
    
    Things look okay - No serious problems were detected during the pre-flight check
    
    

    Перезапустите службы.

    [ ~]# systemctl enable npcd
    npcd.service is not a native service, redirecting to /sbin/chkconfig.
    Executing /sbin/chkconfig npcd on
    [ ~]# systemctl restart npcd
    [ ~]# systemctl restart naemon