Sunday, May 22nd 2011, 8:26pm UTC+2

You are not logged in.

Zwei Fragen zu check_logfiles ...

bern

Professional

Posts: 1,406

Number of Nagios server: 2-5

Nagios Versions: 1-3

Distributed monitoring: Nein

Redundant monitoring: Nein

Number of hosts: 80-200

Number of services: 1400-2000

OS: Linux

Plugin Versions: Whatever I can download, patch, or cobble together myself :-)

Other Addons: n2rrd, PNP, livestatus

1

Thursday, May 19th 2011, 11:22am

Zwei Fragen zu check_logfiles ...

... weil's mit meinen PERL-Kenntnissen leider nicht so weit her ist ... :whistling:

1. Ich würde gerne $CL_HOSTNAME$ benutzen, weil der Hostname im Pfad des Logfiles auftaucht - aber leider ist Oracle beteiligt und die Version im Pfad ist deswegen plötzlich lowercase-only. Läßt sich das allein per Config-File hindrehen, oder muß das lc() ins Plugin selbst gepatcht werden?

(Sorry, alert Log in die DB selbst umzuverlagern ist keine Option.)

2. Mir ist bei den Namen der Seek Files 'was aufgefallen, nämlich daß dort noch die Makro-Namen statt des Werts der Makros auftauchen (check_logfiles v3.4.3.1). Drinstehen tut natürlich die expandierte Version des Filenamens. Soll(te) das so ... ?

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$MACROS = {
        ORA_VER => '10.2.0',
        ORA_ROOT => '/opt/oracle',
        CL_HOSTNAME_LOW => 'h00018l'
};
[...]
        {
                tag => 'CONFtest',
                logfile => '$ORA_ROOT$/CONF/db/tech_st/$ORA_VER$/admin/CONF_$CL_HOSTNAME_LOW$/bdump/alert_CONF.log',
                criticalpatterns => '^ORA-[0-9]{3,5}',
        #       criticalexceptions => 'ORA-01017',
                options => 'noprotocol'
        },
[...]


Quellcode

1
2
3
4
5
# ls -l /var/tmp/check_logfiles/*test*
-rw-r--r-- 1 root root 687 May 19 11:00 /var/tmp/check_logfiles/check_logfiles._ORA_ROOT__CONF_db_tech_st__ORA_VER__admin_CONF__CL_HOSTNAME_LOW__bdump_alert_CONF.log.CONFtest
# grep alert /var/tmp/check_logfiles/*test*
                                'logfile' => '/opt/oracle/CONF/db/tech_st/10.2.0/admin/CONF_h00018l/bdump/alert_CONF.log'
        'logfile' => '/opt/oracle/CONF/db/tech_st/10.2.0/admin/CONF_h00018l/bdump/alert_CONF.log'

lausser

Professional

Posts: 1,286

Gender: male

Location: München

Occupation: Informatiker

Number of Nagios server: 1

Nagios Versions: 3.2.0

Distributed monitoring: Nein

Redundant monitoring: Ja

Number of hosts: 204

Number of services: 3855

OS: Linux/SLES10, CentOS5.2

Plugin Versions: 1.4.14

NDO Version: 1.4b7

Other Addons: PNP

2

Thursday, May 19th 2011, 11:29pm

Hi,

der Macro CL_TAG existiert als CL_tag. Du kannst sowas machen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
$MACROS = {
        ORA_VER => '10.2.0',
        ORA_ROOT => '/opt/oracle',
};
[...]
        {
                template => 'CONFtest',
                logfile => '$ORA_ROOT$/CONF/db/tech_st/$ORA_VER$/admin/CONF_$CL_tag$/bdump/alert_CONF.log',
                criticalpatterns => '^ORA-[0-9]{3,5}',
        #       criticalexceptions => 'ORA-01017',
                options => 'noprotocol'
        },

und das Plugin dann so aufrufen

Quellcode

1
2
3
define service{
     ... 
     check_command       check_logfiles --config ... --tag $HOSTNAME$


Gerhard

bern

Professional

Posts: 1,406

Number of Nagios server: 2-5

Nagios Versions: 1-3

Distributed monitoring: Nein

Redundant monitoring: Nein

Number of hosts: 80-200

Number of services: 1400-2000

OS: Linux

Plugin Versions: Whatever I can download, patch, or cobble together myself :-)

Other Addons: n2rrd, PNP, livestatus

3

Friday, May 20th 2011, 2:40pm

[Doku nachles]

Hmmm, Zusatzfrage: Verstehe ich das richtig, daß ein Config-File nur ein Template enthalten kann (und dann u.U. gar keine expliziten Tags mehr)?

(Hintergrund: Ein Stall Server, ein halbes Dutzend "Instanzen" - CONF ist eine davon -, auf jedem Server laufen nur ein bis drei davon ... und ich möchte die Config Files serverunabhängig bekommen. Ein Config File pro Instanz (und dann den Hostnamen per $CL_tag$ 'reinzaubern) wäre aber wohl darstellbar ... glaube ich.)

lausser

Professional

Posts: 1,286

Gender: male

Location: München

Occupation: Informatiker

Number of Nagios server: 1

Nagios Versions: 3.2.0

Distributed monitoring: Nein

Redundant monitoring: Ja

Number of hosts: 204

Number of services: 3855

OS: Linux/SLES10, CentOS5.2

Plugin Versions: 1.4.14

NDO Version: 1.4b7

Other Addons: PNP

4

Yesterday, 12:12pm

Du kannst mehrere Templates im Konfigfile haben. Wenn du dann check_logfiles mit --tag=TT aufrufst, wird intern bei jedem Search das template-Attribut durch ein tag-Attribut ersetzt (mit dem Wert template+tag, damit sich die Dateinamen der Seekfiles unterscheiden, in denen ja der Tag vorkommt).
Mit ist aber noch was eingefallen, was dir helfen könnte:
Du hast ja variable Teile in der Datei, die SID, den Hostnamen und den kleingeschriebenen Hostnamen, ORACLE_HOME, Version. Die kannst du von aussen übergeben.

Quellcode

1
2
3
4
5
6
7
check_logfiles --config oracle.cfg --macro ORA__SID=CONF --macro CL_DBSRV=H00018L --macro CL_DBSRVKLEIN=h00018l --macro ORA_ROOT=/opt/oracle --macro ORA_VER=10.2.0

 = ({
    tag => 'oerr',
    logfile => '$ORA_ROOT$/$ORA_SID$/db/tech_st/$ORA_VER$/admin/$ORA_SID$_$CL_DBSRVKLEIN$/bdump/alert_$ORA_SID$.log',
    ....
});

--macro NAME=WERT hat den gleichen Effekt wie

Quellcode

1
2
$MACROS = {
  NAME => "WERT",


Gerhard

p.s. blöd ist natürlich, daß man in der Servicedefinition beim check_command zwar CL_DBSRV=$HOSTNAME$ schreiben kann, aber Nagios kein Macro in Kleinbuchstaben bietet, so daß man den Namen hart reinkodieren muss. Wenn du den Service an eine Hostgruppe vergeben willst, ginge eventuell ein Konstrukt wie
--macro DBSRV=$HOSTNAME$ --macro DBSRVKLEIN=`echo $HOSTNAME$|tr 'A-Z' 'a-z'`

Similar threads