FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > CentOS > CentOS

 
 
LinkBack Thread Tools
 
Old 08-04-2012, 10:19 PM
Tim Dunphy
 
Default find errors in a directory of files

hello list,

I'm trying to write a script that will search through a directory of trace
logs for an oracle database. From what I understand new files are always
being created in the directory and it's not possible to know the exact
names of the files before they are created. The purpose of this is to
create service checks in nagios. Because you don't know the names of the
files ahead of time traditional plugins like check_logs or
check_logfiles.plwon't work.

Here's what I was able to come up with:

#!/bin/bash



log1='/u01/app/oracle/admin/ecom/udump/*'
crit1=($(grep 'ORA-00600' $log1))
crit2=($(grep 'ORA-04031' $log1))
crit3=($(grep 'ORA-07445' $log1))



if [ $crit1 ] ; then
echo "$crit1 on ecom1"
status=2


elif [ $crit2 ]; then
echo "$crit2 on ecom1"
status=2

elif [ $crit3 ]; then
echo "$crit3 on ecom1"
status=2
fi


echo $status
exit $status


This is a very early version of the scripts, so as you can see I'm echoing
a test message at the end letting you know the exit status.

The problem with this script is that it is only able to detect one error in
the logs. If you echo more than one test phrase into a log file or into
multiple log files it still only picks up one error message.

I was just wondering if anyone on the list might have a suggestion on how
best to accomplish this task?

Thanks
Tim

--
GPG me!!

gpg --keyserver pool.sks-keyservers.net --recv-keys F186197B
_______________________________________________
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos
 
Old 08-04-2012, 11:23 PM
Woodchuck
 
Default find errors in a directory of files

On Sat, Aug 04, 2012 at 06:19:39PM -0400, Tim Dunphy wrote:
> hello list,
>
> I'm trying to write a script that will search through a directory of trace
> logs for an oracle database. From what I understand new files are always
> being created in the directory and it's not possible to know the exact
> names of the files before they are created. The purpose of this is to
> create service checks in nagios. Because you don't know the names of the
> files ahead of time traditional plugins like check_logs or
> check_logfiles.plwon't work.
>
> Here's what I was able to come up with:
>
> #!/bin/bash
>
>
>
> log1='/u01/app/oracle/admin/ecom/udump/*'
> crit1=($(grep 'ORA-00600' $log1))
> crit2=($(grep 'ORA-04031' $log1))
> crit3=($(grep 'ORA-07445' $log1))
>
>
>
> if [ $crit1 ] ; then
> echo "$crit1 on ecom1"
> status=2
>
>
> elif [ $crit2 ]; then
> echo "$crit2 on ecom1"
> status=2
>
> elif [ $crit3 ]; then
> echo "$crit3 on ecom1"
> status=2
> fi
>
>
> echo $status
> exit $status
>
>
> This is a very early version of the scripts, so as you can see I'm echoing
> a test message at the end letting you know the exit status.
>
> The problem with this script is that it is only able to detect one error in
> the logs. If you echo more than one test phrase into a log file or into
> multiple log files it still only picks up one error message.
>
> I was just wondering if anyone on the list might have a suggestion on how
> best to accomplish this task?
>
> Thanks
> Tim

I'm not sure I understand the problem well. But, perhaps something like
this

#!/bin/sh

for log in /u01...../udump/*
do
egrep -e 'ORA-00600|ORA-04031|ORA-07445' ${log}
done

this will find any line matching any of the ORA- keys. You can
capture the return code if you wish.

Output of egrep could be passed to wc to echo instead a count of the
errors. Filenames could be produced, too, with a bit more scripting,
which you can obviously handle.

Dave
--
The principles of accounting are not arbitrary. They are natural law.
-- Mencius Moldbug

_______________________________________________
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos
 
Old 08-06-2012, 03:52 PM
Tilman Schmidt
 
Default find errors in a directory of files

Am 05.08.2012 00:19, schrieb Tim Dunphy:
> I'm trying to write a script that will search through a directory of trace
> logs [...] and it's not possible to know the exact
> names of the files before they are created. The purpose of this is to
> create service checks in nagios.
[...]
> The problem with this script is that it is only able to detect one error in
> the logs. If you echo more than one test phrase into a log file or into
> multiple log files it still only picks up one error message.

That is a consequence of using the variable=($(...)) + echo idiom.
If you write your script as

#!/bin/bash
log1='/u01/app/oracle/admin/ecom/udump/*'
grep -e 'ORA-00600' -e 'ORA-04031' -e 'ORA-07445' $log1 && status=2
echo $status
exit $status

sending the result of grep to standard output, you'll get a complete
list of matches. (If you need a specific output format you can replace
"grep" with "sed".)

But I doubt that Nagios will be able to receive more than one error
from a single plugin invocation. AFAIK it expects a single-line result.

HTH
T.

--
Tilman Schmidt
Phoenix Software GmbH
Bonn, Germany
_______________________________________________
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos
 

Thread Tools




All times are GMT. The time now is 02:56 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org