PNP4Nagios - Problem mit Service

Hi,

ich habe ein Problem mit PNP4Nagios: Ich monitore einen Host über check_load, check_swap, check_disk, check_ssh und check_iftraffic. Wo notwendig mittels NRPE. Alles wird von PNP4Nagios auch eingesammelt und in einen Graphen geplottet außer das was check_iftraffic so von sich gibt. Ich habe PNP4Nagios nach dem Icinga Wiki installiert, dh Icinga schreibt die Werte nach /usr/local/pnp4nagios/var/service-perfdata und /usr/local/pnp4nagios/var/host-perfdata. Alle 15 Sekunden werden die Dateien nach /usr/local/pnp4nagios/var/spool verschoben und dann von pnp4nagios in RRD konvertiert.

Ein Service will allerdings nicht:


kvm01.cfg

Code:
define host {
        host_name               kvm01
        use                     linux-server
        address                 192.168.1.10
        hostgroups              linux-servers
        statusmap_image         server.png
}

define service {
        use                     generic-service
        service_description     ETH0 Traffic
        host_name               kvm01
        check_command           check_iftraffic_nrpe!eth0!1000!80%!90%
        contact_groups          linux-admins
}

commands.cfg

Code:
define command {
        command_name    check_iftraffic_nrpe
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -p 5666 -c check_iftraffic -a $ARG1$ $ARG2$ $ARG3$ $ARG4$
        }

check_nrpe Test:
Code:
$ /usr/local/icinga/libexec/check_nrpe -H kvm01 -p 5666 -c check_iftraffic -a eth0 1000 80% 90%
Total RX: 167.75 MB, Total TX: 263.96 MB Avg: 0.25 kB/s (0.0%) in, 0.39 kB/s (0.0%) out|inUsage=0.0;80%;90%;0.0 outUsage=0.0;80%;90%;0.0
$

Die Performance Werte landen auch in /usr/local/pnp4nagios/var/service-perfdata:

Code:
$ cat service-perfdata  | grep ETH0
DATATYPE::SERVICEPERFDATA       TIMET::1342382395       HOSTNAME::kvm01 SERVICEDESC::ETH0 Traffic       SERVICEPERFDATA::inUsage=0.0;80%;90%;0.0 outUsage=0.0;80%;90%;0.0       SERVICECHECKCOMMAND::check_iftraffic_nrpe!eth0!1000!80%!90%     HOSTSTATE::UP   HOSTSTATETYPE::HARD     SERVICESTATE::OK        SERVICESTATETYPE::HARD
$

Ab hier scheint es irgendwie schief zu laufen, denn in /usr/local/pnp4nagios/var/perfdata/kvm01 gibt es keine RRD Datenbank zu diesem Dienst:

Code:
$ ls -l
total 3424
-rw-rw-r-- 1 icinga icinga 1151504 Jul 15 22:00 CPU_Load.rrd
-rw-rw-r-- 1 icinga icinga    3340 Jul 15 22:00 CPU_Load.xml
-rw-rw-r-- 1 icinga icinga  768232 Jul 15 21:59 _HOST_.rrd
-rw-rw-r-- 1 icinga icinga    2527 Jul 15 21:59 _HOST_.xml
-rw-rw-r-- 1 icinga icinga  768232 Jul 15 22:00 Ping.rrd
-rw-rw-r-- 1 icinga icinga    2619 Jul 15 22:00 Ping.xml
-rw-rw-r-- 1 icinga icinga  384960 Jul 15 22:00 SSH.rrd
-rw-rw-r-- 1 icinga icinga    1914 Jul 15 22:00 SSH.xml
-rw-rw-r-- 1 icinga icinga  384960 Jul 15 22:00 Swap_Free.rrd
-rw-rw-r-- 1 icinga icinga    1963 Jul 15 22:00 Swap_Free.xml
$

NPCD befindet sich im debug log level und logt in eine Datei:

Code:
$ grep -E "^log_(level|file)" /usr/local/pnp4nagios/etc/npcd.cfg 
log_file = /usr/local/pnp4nagios/var/npcd.log
log_level = -1
$

In der Log Datei finde ich aber leider nur eine ganze Menge dieser Meldungen:

Code:
2012-07-15 22:02:50 [5833] [0] RRDs::update /usr/local/pnp4nagios/var/perfdata/mail/Ping.rrd 1342382545:1.520000:0
2012-07-15 22:02:50 [5833] [0] RRDs::update ERROR /usr/local/pnp4nagios/var/perfdata/mail/Ping.rrd: illegal attempt to update using time 1342382545 when last update time is 1342382565 (minimum one second step)

Aber auch nur bzgl der Dienste, dei funktionieren.


So, jetzt fehlt mir die Erfahrung mit pnp4nagios um hier weitere Nachforschungen anzustellen. Hat jemand eine Idee oder kennt vllt das Problem?

Grüße
serow
 
Fehlt da nicht ein Semikolon zum Abtrennen der verschiedenen Werte? inUsage=0.0;80%;90%;0.0; outUsage=0.0;80%;90%;0.0.; Wenn du schon Warn- und Error-Level mit drin hast, müssen diese auch durch Semikolon getrennt und abgeschlossen werden soweit ich weiss, sonst kann ja rrdtool nicht unterscheiden wo die Werte aufhören und versucht einen String in den Int-Graphen einzubeziehen. Ich hab jedenfalls keinen Graphen in meinem Nagios, wo Semikolon und Freizeichen gemischt als Separator verwendet werden.
 
Hi Bitmuncher,

der Output von check_iftraffic sieht jetzt so aus:

Code:
$ check_nrpe -H kvm01 -p 5666 -c check_iftraffic -a eth0 1000 80% 90%
Total RX: 168.51 MB, Total TX: 265.23 MB Avg: 0.20 kB/s (0.0%) in, 0.15 kB/s (0.0%) out|inUsage=0.0;80%;90%;0.0; outUsage=0.0;80%;90%;0.0;
$

Ich wäre jetzt davon ausgegangen, dass der Chart einfach in pnp4nagios auftaucht wenn es funktioniert - tut er aber leider nicht.

Grüße
serow
 
Hi,

stimmt natürlich, allerdings gibt es ja das default Template, welches ja eigentlich alles andere abfangen sollte was es nicht konkret als eigenes Template gibt:

Code:
check_apachestatus_auto.php               check_jmx4perl_memory_gc_time.php   check_openmanage.php
check_apachestatus.php                    check_jmx4perl_memory_heap.php      check_oracle_connection-time.php
check_dell_bladechassis.php               check_jmx4perl_thread_count.php     check_oracle_health_connection-time.php
check_disk.php                            check_jmx4perl_thread_increase.php  check_oracle_health_pga-in-memory-sort-ratio.php
check_dns.php                             check_load.php                      check_oracle_health.php
check_esx3.php                            check_local_disk.php                check_oracle_health_redo-io-traffic.php
check_fping.php                           check_local_load.php                check_oracle_health_switch-interval.php
check_gearman.php                         check_messpc_temp.php               check_oracle_health_tablespace-usage.php
check-host-alive.php                      check_mssql_health.php              check_ping.php
check_hpasm.php                           check_multi_nagiostats.php          check_ping_tick.php
check_hp_bladechassis.php                 check_multi.php                     check_pnp_rrds.php
check_http.php                            check_mysql_health.php              check_smtp.php
check_icmp.php                            check_nt_cpu.php                    check_snmp_int-bits.php
check_iftraffic_counter.php               check_nt_disk.php                   check_snmp_int.php
check_iftraffic_pct.php                   check_nt_mem.php                    check_swap.php
check_jmx4perl_connector_errors.php       check_ntp_time.php                  check_tcp.php
check_jmx4perl_connector_nr_requests.php  check_nwstat_CONNS.php              check_users.php
check_jmx4perl_connector_proc_time.php    check_nwstat_LOAD15.php             default.php
check_jmx4perl_connector_received.php     check_nwstat_LOAD1.php              integer.php
check_jmx4perl_connector_sent.php         check_nwstat_LOAD5.php              nagiostats.php
check_jmx4perl_connector_threads.php      check_nwstat_LOAD.php               pnp-runtime.php
check_jmx4perl_memory_gc_count.php        check_nwstat_ofiles.php             response.php
root@icinga:/usr/local/pnp4nagios/share/templates.dist#

Grüße
serow
 
Meiner Erfahrung nach fängt das Default-Template aber nicht alles ab. Ich musste z.B. für meine Memory-Graphen u.a. eigene Templates anlegen. Daher würde ich empfehlen mal ein Template für den Graphen anzulegen. Nagios runterfahren, Performance-Daten bereinigen und Nagios neu starten danach nicht vergessen.
 
Hi,

ich habe jetzt folgendes Template für check_iftraffice_nrpe gefunden:

Code:
<?php
#
# Plugin: check_iftraffic.pl (COUNTER)
#
# 2007-11-13 Copyright (c) Herbert Straub <herbert@linuxhacker.at>
# See http://www.linuxhacker.at
#
$opt[1] = "--vertical-label \"Traffic\" -b 1024 --title \"Interface Traffic for $hostname / $servicedesc\" ";
$def[1] = "DEF:inp=$rrdfile:$DS[3]:AVERAGE " ;
$def[1] .= "DEF:out=$rrdfile:$DS[4]:AVERAGE " ;
$def[1] .= "CDEF:aggsum=inp,out,+ " ;

$def[1] .= "AREA:aggsum#ff303a:\"sum\" " ;
$def[1] .= "GPRINT:aggsum:LAST:\"%3.2lf %Sb/s last\" " ;
$def[1] .= "GPRINT:aggsum:AVERAGE:\"%3.2lf %Sb/s avg\" " ;
$def[1] .= "GPRINT:aggsum:MAX:\"%3.2lf %Sb/s max\\n\" ";

$def[1] .= "AREA:inp#6af036:\"in\" " ;
$def[1] .= "GPRINT:inp:LAST:\"%3.2lf %Sb/s last\" " ;
$def[1] .= "GPRINT:inp:AVERAGE:\"%3.2lf %Sb/s avg\" " ;
$def[1] .= "GPRINT:inp:MAX:\"%3.2lf %Sb/s max\\n\" " ;
#
$def[1] .= "AREA:out#70a1f7:\"out\" " ;
$def[1] .= "GPRINT:out:LAST:\"%3.2lf %Sb/s last\" " ;
$def[1] .= "GPRINT:out:AVERAGE:\"%3.2lf %Sb/s avg\" " ;
$def[1] .= "GPRINT:out:MAX:\"%3.2lf %Sb/s max\" ";
?>

Ich habe das File nach /usr/local/pnp4nagios/share/templates/check_iftraffic_nrpe.php geschoben und npcd neugestartet. Da in der service-perfdata die Daten so drin stehen

Code:
DATATYPE::SERVICEPERFDATA       TIMET::1342457839       HOSTNAME::kvm01 SERVICEDESC::ETH0 Traffic       SERVICEPERFDATA::       SERVICECHECKCOMMAND::check_iftraffic_nrpe!eth0!1000!80%!90%     HOSTSTATE::UP   HOSTSTATETYPE::HARD     SERVICESTATE::UNKNOWN   SERVICESTATETYPE::SOFT

und SERVICECHECKCOMMAND "check_iftraffic_nrpe" zeigt, wäre ich davon ausgegangen, dass es jetzt läuft. Leider nicht ...

Was übersehe ich?

Grüße
serow
 
Zurück
Oben