<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux infrastructure support and bash scripting, Unix/Linux System administration &#187; Monitoring process</title>
	<atom:link href="http://sysadminupdates.com/blog/category/monitoring-process/feed/" rel="self" type="application/rss+xml" />
	<link>http://sysadminupdates.com/blog</link>
	<description>Linux infrastructure support and bash scripting, Unix/Linux System administration</description>
	<lastBuildDate>Fri, 03 Sep 2010 03:12:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>How to catch 500 error from error logs in apache</title>
		<link>http://sysadminupdates.com/blog/2010/06/24/how-to-catch-500-error-from-error-logs-in-apache/</link>
		<comments>http://sysadminupdates.com/blog/2010/06/24/how-to-catch-500-error-from-error-logs-in-apache/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 05:51:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux Operating System]]></category>
		<category><![CDATA[Monitoring process]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Tomcat / jboss application server]]></category>
		<category><![CDATA[Trouble shooting]]></category>
		<category><![CDATA[Web server]]></category>
		<category><![CDATA[dedicated server set up]]></category>
		<category><![CDATA[linux unix issues and fixes]]></category>

		<guid isPermaLink="false">http://sysadminupdates.com/blog/?p=72</guid>
		<description><![CDATA[Catch 500 error]]></description>
			<content:encoded><![CDATA[<p>A. Enable cgi for your apache. Add following.</p>
<p>1) LoadModule cgid_module modules/mod_cgid.so</p>
<p>2)</p>
<p>&lt;Directory &#8220;/appl/apache2/cgi-bin&#8221;&gt;</p>
<p>AllowOverride None</p>
<p>Options ExecCGI</p>
<p>Order allow,deny</p>
<p>Allow from all</p>
<p>&lt;/Directory&gt;</p>
<p>3)</p>
<p>ScriptAlias /cgi-bin/ &#8220;/appl/apache2/cgi-bin/&#8221;</p>
<p>AddHandler cgi-script .cgi</p>
<p>ErrorDocument 413 /cgi-bin/error.cgi</p>
<p>4) Restart apache.</p>
<p>B. Set up the following python script to catch this error, send an email to admin and give the custome message to users.</p>
<p>/appl/apche/cgi-bin/error.cgi</p>
<p>chmod +x /appl/apache/cgi-bin/error.cgi</p>
<p>#!/usr/bin/python<br />
import sys, os<br />
SENDMAIL = &#8220;/usr/sbin/sendmail&#8221; # sendmail location<br />
print &#8220;Content-Type: text/html\n\n&#8221;;<br />
if (os.environ["REDIRECT_STATUS"] == &#8220;413&#8243;) or (os.environ["REDIRECT_STATUS"] == &#8220;500&#8243;):<br />
stats = &#8220;&lt;table border=1&gt;&lt;tr&gt;&lt;td&gt;Variable&lt;/td&gt;&lt;td&gt;Value&lt;/td&gt;&lt;/tr&gt;&#8221;<br />
for name, value in os.environ.items():<br />
stats += &#8220;&lt;tr&gt;&lt;td&gt;%s&lt;/td&gt;&lt;td&gt;%s&lt;/td&gt;&lt;/tr&gt;&#8221; % (name,value)<br />
stats += &#8220;&lt;/table&gt;&#8221;<br />
sendmail_location = &#8220;/usr/sbin/sendmail&#8221; # sendmail location<br />
p = os.popen(&#8220;%s -t&#8221; % &#8220;/usr/sbin/sendmail&#8221;, &#8220;w&#8221;)<br />
p.write(&#8220;From: %s\n&#8221; % &#8220;error-reporter@domain.com&#8221;)<br />
p.write(&#8220;To: %s\n&#8221; % &#8220;mail@domain.com&#8221;)<br />
p.write(&#8220;Content-Type: text/html\n&#8221;)<br />
p.write(&#8220;Subject: Error %s in accessing \n&#8221; % os.environ["REDIRECT_STATUS"])<br />
p.write(&#8220;\n&#8221;) # blank line separating headers from body<br />
p.write(stats)<br />
status = p.close()<br />
&#8221;&#8217;print &#8220;&lt;H3&gt;&lt;center&gt;Inconvenience Regretted.  Team has been notified of this issue&lt;/center&gt;&lt;/h3&gt;&#8221;&#8221;&#8217;<br />
cookieclearjs=&#8221;"&#8221;<br />
&lt;script language=&#8217;JavaScript&#8217;&gt;<br />
var todate = new Date ( );<br />
todate.setTime ( todate.getTime() &#8211; 100000 );<br />
var domain_url_del = window.location.href;<br />
var domain_Name_url_del = domain_url_del.split(&#8220;http://&#8221;);<br />
var domain_Name_temp_del = domain_Name_url_del[1].split(&#8220;/&#8221;);<br />
var domain_Name_del = domain_Name_temp_del[0];<br />
var cookieList = document.cookie.split(&#8216;;&#8217;);<br />
for(var i=0;i &lt; cookieList.length;i++)<br />
{<br />
var name = cookieList[i];<br />
if(name.indexOf(&#8220;MyLinks&#8221;)!=-1)<br />
{<br />
document.cookie = &#8221;+name+&#8217;=; path=//APPLICATION/PATH; domain=.&#8217; + domain_Name_del + &#8216;; expires=&#8217; + todate.toGMTString();<br />
document.cookie = &#8221;+name+&#8217;=; path=//APPLICATION/PATH; domain=.&#8217; + domain_Name_del + &#8216;; expires=&#8217; + todate.toGMTString();<br />
}<br />
}<br />
&lt;/script&gt;<br />
&#8220;&#8221;"<br />
print cookieclearjs<br />
print &#8220;&lt;script language=&#8217;JavaScript&#8217;&gt;window.location=&#8217;%s&#8217;&lt;/script&gt;&#8221; % os.environ["REDIRECT_SCRIPT_URI"]<br />
else:<br />
print &#8220;&lt;H3&gt;&lt;center&gt;What you are looking for, is not here&lt;/center&gt;&lt;/h3&gt;&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://sysadminupdates.com/blog/2010/06/24/how-to-catch-500-error-from-error-logs-in-apache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script for oracle Database monitoring</title>
		<link>http://sysadminupdates.com/blog/2010/03/03/script-for-oracle-database-monitoring/</link>
		<comments>http://sysadminupdates.com/blog/2010/03/03/script-for-oracle-database-monitoring/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 14:16:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Automation process]]></category>
		<category><![CDATA[Monitoring process]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://sysadminupdates.com/blog/?p=11</guid>
		<description><![CDATA[Database monitoring script. ]]></description>
			<content:encoded><![CDATA[<p>shell script for DB monitoring.</p>
<p>[root@MY_SERVER1 monitor]#<br />
#!/bin/bash<br />
count=0;<br />
SCRIPT_HOME=&#8221;/Your/folder/&#8221;<br />
MONITOR_SCRIPT=&#8221;${SCRIPT_HOME}/MyEnv_db_monitor.pl&#8221;<br />
LOCKFILE=/tmp/MyEnv_db_monitor.lock</p>
<p>if [ -f "${LOCKFILE}" ]<br />
then<br />
(<br />
echo &#8220;${LOCKFILE} ALREADY EXISTS.. DB monitor will not run&#8221;<br />
ls -la ${LOCKFILE}<br />
) | mail -s &#8220;MY ENVIRONMENTDB Monitor is not running. Lock&#8221; MY_EMAIL@DOMAIN.com<br />
else<br />
touch ${LOCKFILE}<br />
dblisteners=(IP2:PORT2 IP2:PORT1)<br />
len=${#dblisteners[*]} #Num elements in array</p>
<p>#echo &#8220;dblisteners are $len members.They are:&#8221;<br />
i=0<br />
while [ $i -lt $len ]; do<br />
#       echo &#8220;${dblisteners[$i]}&#8221;<br />
server=`echo &#8220;${dblisteners[$i]}&#8221; | cut -d: -f1`<br />
port=`echo &#8220;${dblisteners[$i]}&#8221; | cut -d: -f2`<br />
#       echo $server $port<br />
${MONITOR_SCRIPT} $server $port &gt; /dev/null 2&gt;&amp;1<br />
if [ $? -eq 0 ]<br />
then<br />
count=$((count+1))<br />
fi</p>
<p>let i++<br />
done<br />
# ${MONITOR_SCRIPT} &gt; /dev/null 2&gt;&amp;1<br />
if  [ $count -eq 2 ]<br />
then<br />
rm ${LOCKFILE}<br />
fi<br />
fi</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>[root@MY_SERVER1 monitor]# cat /Your/folder/MyEnv_db_monitor.sh<br />
#!/bin/bash<br />
count=0;<br />
SCRIPT_HOME=&#8221;/Your/Folder&#8221;<br />
MONITOR_SCRIPT=&#8221;${SCRIPT_HOME}/MyEnv_db_monitor.pl&#8221;<br />
LOCKFILE=/tmp/MyEnv_db_monitor.lock</p>
<p>if [ -f "${LOCKFILE}" ]<br />
then<br />
(<br />
echo &#8220;${LOCKFILE} ALREADY EXISTS.. DB monitor will not run&#8221;<br />
ls -la ${LOCKFILE}<br />
) | mail -s &#8220;MY ENVIRONMENTStage DB Monitor is not running. Lock&#8221; MY_EMAIL@DOMAIN.com<br />
else<br />
touch ${LOCKFILE}<br />
dblisteners=(IP1:PORT1 IP2:PORT2)<br />
len=${#dblisteners[*]} #Num elements in array</p>
<p>#echo &#8220;dblisteners are $len members.They are:&#8221;<br />
i=0<br />
while [ $i -lt $len ]; do<br />
#       echo &#8220;${dblisteners[$i]}&#8221;<br />
server=`echo &#8220;${dblisteners[$i]}&#8221; | cut -d: -f1`<br />
port=`echo &#8220;${dblisteners[$i]}&#8221; | cut -d: -f2`<br />
#       echo $server $port<br />
${MONITOR_SCRIPT} $server $port &gt; /dev/null 2&gt;&amp;1<br />
if [ $? -eq 0 ]<br />
then<br />
count=$((count+1))<br />
fi</p>
<p>let i++<br />
done<br />
# ${MONITOR_SCRIPT} &gt; /dev/null 2&gt;&amp;1<br />
if  [ $count -eq 2 ]<br />
then<br />
rm ${LOCKFILE}<br />
fi<br />
fi<br />
[root@MY_SERVER1 monitor]# cat /Your/folder/MyEnv_db_monitor.pl<br />
#!/usr/bin/perl -w</p>
<p>use warnings;<br />
use strict;<br />
use DBI;</p>
<p>BEGIN {<br />
$ENV{ORACLE_HOME}=&#8217;/opt/oracle/product/9.2.0&#8242;;<br />
$ENV{LD_LIBRARY_PATH}=&#8217;/opt/oracle/product/9.2.0/lib&#8217;;<br />
}</p>
<p>my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);<br />
my $timestamp = sprintf(&#8220;%4d-%02d-%02d %02d:%02d:%02d\n&#8221;,$year+1900,$mon+1,$mday,$hour,$min,$sec);<br />
chomp $timestamp;<br />
print &#8220;The time is $timestamp\n&#8221;;</p>
<p>my $server = $ARGV[0];<br />
my $appsport = $ARGV[1];<br />
chomp $server; chomp $appsport;<br />
print &#8220;The server is $server connecting to $appsport \n&#8221;;<br />
my $mail = &#8220;/usr/lib/sendmail -t&#8221;;<br />
my $recipient = &#8220;MY_EMAIL\@DOMAIN.COM&#8221;;<br />
my $from = &#8220;MyEnv_db_monitor\@DOMAIN.COM&#8221;;<br />
my $timeOut = 60; # wait 60 seconds for connection<br />
my $db = &#8220;DBNAME&#8221;;<br />
my ($username, $password) = (&#8216;DB_SCHEMA_NAME&#8217;,'DB_PASSWORD&#8217;);<br />
#my $db_conn_dsn=&#8221;dbi:Oracle:host=DB_SERVER_NAME;port=PORT;sid=$db&#8221;;<br />
my $db_conn_dsn=&#8221;dbi:Oracle:host=DB_SERVER_NAME;port=${appsport};sid=$db&#8221;;<br />
my $flag = &#8220;/tmp/dbdbflag2.txt$server&#8221;;<br />
my $qflag = &#8220;/tmp/dbtaskqueflag2.txt$server&#8221;;<br />
my $rowcount = &#8220;&#8221;;<br />
my $dummyflag = &#8220;/tmp/dbdummyflag2.txt$server&#8221;;</p>
<p>if ( -e $flag ) { # Check for DB status flag file<br />
print &#8220;DB Flag exists.\n&#8221;;<br />
} else { # Create flag file<br />
system &#8220;/bin/touch $flag&#8221;;<br />
}</p>
<p>if ( -e $qflag ) { # Check for task que status flag file<br />
print &#8220;Task que flag exists.\n&#8221;;<br />
} else { # Create flag file<br />
system &#8220;/bin/touch $qflag&#8221;;<br />
}</p>
<p>my $flagstatus = `/bin/cat $flag`;<br />
chomp $flagstatus;<br />
print &#8220;The status of the db flag is $flagstatus\n&#8221;;</p>
<p>my $qflagstatus = `/bin/cat $qflag`;<br />
chomp $qflagstatus;<br />
print &#8220;The status of the task que flag is $qflagstatus\n&#8221;;</p>
<p>if ( -e $dummyflag ) { # Check for Dummy status flag file<br />
print &#8220;Dummy Flag exists.\n&#8221;;<br />
system &#8220;/bin/touch $dummyflag&#8221;;<br />
} else { # Create flag file<br />
system &#8220;/bin/touch $dummyflag&#8221;;<br />
}</p>
<p>my $mtime_qflag = (stat($qflag))[9];<br />
my $mtime_dflag = (stat($dummyflag))[9];</p>
<p>print &#8220;The mtime for qflag is $mtime_qflag secs\n&#8221;;<br />
print &#8220;The mtime for dflag is $mtime_dflag secs\n&#8221;;</p>
<p>my $refresh_interval = ($mtime_dflag-$mtime_qflag)/3600;</p>
<p>print &#8220;The que flag has been refreshed since $refresh_interval hours\n&#8221;;</p>
<p>if (( $refresh_interval &gt; 24 ) &amp;&amp; ( $qflagstatus ne &#8220;LESS&#8221; )) {<br />
system &#8220;echo BLANK &gt; $qflag&#8221;;<br />
} else {<br />
print &#8220;The refresh interval is $refresh_interval hours and the flag status is $qflagstatus\n&#8221;;<br />
}</p>
<p>if ($db) {<br />
print &#8220;checking $db\n&#8221;;<br />
my $dbh=&#8221;;<br />
eval {<br />
#set alarm to timeout current operation<br />
local $SIG{ALRM} = sub {die &#8220;connection timeout\n&#8221;};<br />
alarm $timeOut;<br />
print &#8220;Trying to connect to $db with $username and $password\n&#8221;;<br />
$dbh = DBI-&gt;connect($db_conn_dsn,$username,$password, { RaiseError =&gt; 1 } ) || die &#8220;Database connection not made: $DBI::errstr&#8221;;<br />
};<br />
alarm 0; # reset the alarm<br />
if ($dbh) { # success<br />
print &#8220;Connection succeeded for $db\n&#8221;;</p>
<p>my $sql = &#8220;select count(*) from vap_default.taskqueue&#8221;;<br />
my $sth = $dbh-&gt;prepare($sql) or die &#8220;Cannot prepare sql statement&#8221; . $dbh-&gt;errstr(). &#8220;\n&#8221;;<br />
$sth-&gt;execute() or die &#8220;cannot execute sql query&#8221; . $sth-&gt;errstr() . &#8220;\n&#8221;;<br />
($rowcount) = $sth-&gt;fetchrow_array();<br />
$sth-&gt;finish;<br />
print &#8220;The task queue row count is $rowcount\n&#8221;;</p>
<p>$dbh-&gt;disconnect;</p>
<p>print &#8220;DB is now up.\n&#8221;;<br />
if ( $flagstatus eq &#8220;DOWN&#8221; ) {<br />
system &#8220;echo &#8216;RECOVERED&#8217; &gt; $flag&#8221;;<br />
print &#8220;The DB has just recovered at $timestamp.\n&#8221;;<br />
&amp;upmail;<br />
} else {<br />
print &#8220;Do nothing. DB was anyways up.\n&#8221;;<br />
}</p>
<p>print &#8220;Just outside failure block\n&#8221;;</p>
<p>} else { # failure<br />
print &#8220;Inside failure block\n&#8221;;<br />
if ( $flagstatus eq &#8220;DOWN&#8221; ) {<br />
print &#8220;Do nothing. DB is still down\n&#8221;;<br />
} else {<br />
print &#8220;Error connecting to $db at $timestamp\n&#8221;;<br />
&amp;downmail;<br />
system &#8220;echo &#8216;DOWN&#8217; &gt; $flag&#8221;;<br />
}<br />
}<br />
}</p>
<p>sub downmail {<br />
open(MAIL, &#8220;|$mail&#8221;);<br />
print MAIL &#8220;To: $recipient\n&#8221;;<br />
print MAIL &#8220;From: $from\n&#8221;;<br />
print MAIL &#8220;Subject: MY ENVIRONMENTStage DATABASE_NAME on  Database Connection Failure $server $appsport\n&#8221;;<br />
print MAIL &#8220;$timestamp: FAILED CONNECTION TO MY ENVIRONMENT DATABASE.\n\nTurning Big-IP monitors OFF. $server $appsport&#8221;;<br />
close MAIL;<br />
system(&#8220;/Your/folder/disable_remote_tomcats.sh $server $appsport&#8221;);<br />
}</p>
<p>sub upmail {<br />
open(MAIL, &#8220;|$mail&#8221;);<br />
print MAIL &#8220;To: $recipient\n&#8221;;<br />
print MAIL &#8220;From: $from\n&#8221;;<br />
print MAIL &#8220;Subject: MY ENVIRONMENT DATABASE_NAME on  Database Connection Recovered $server $appsport\n&#8221;;<br />
#print MAIL &#8220;$timestamp: RECOVERED CONNECTION TO MY ENVIRONMENT DATABASE.\n\nTurning Big-IP monitors ON&#8221;;<br />
print MAIL &#8220;$timestamp: RECOVERED CONNECTION TO MY ENVIRONMENTDATABASE.&#8221;;<br />
close MAIL;<br />
system(&#8220;/Your/folder/enable_remote_tomcats.sh $server $appsport&#8221;);<br />
}</p>
<p>sub qmoremail {<br />
open(MAIL, &#8220;|$mail&#8221;);<br />
print MAIL &#8220;To: $recipient\n&#8221;;<br />
print MAIL &#8220;From: $from\n&#8221;;<br />
print MAIL &#8220;Subject: MY ENVIRONMENTDATABASE_NAMEon  Vignette Task Queue Record Count\n&#8221;;<br />
print MAIL &#8220;$timestamp: TASK QUEUE RECORD COUNT = $rowcount\n\n&#8221;;<br />
close MAIL;<br />
}</p>
<p>sub qlessmail {<br />
open(MAIL, &#8220;|$mail&#8221;);<br />
print MAIL &#8220;To: $recipient\n&#8221;;<br />
print MAIL &#8220;From: $from\n&#8221;;<br />
print MAIL &#8220;Subject: MY ENVIRONMENTDATABASE_NAMEon  Vignette Task Queue Record Count\n&#8221;;<br />
print MAIL &#8220;$timestamp: TASK QUEUE RECORD COUNT = $rowcount\n\n&#8221;;<br />
close MAIL;<br />
}</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>Not Mendatary&#8211; but require in my environment thats why I added this.. In order to enable disaster recovery site.</p>
<p>[root@MY_SERVER1 monitor]# cat &#8220;/Your/folder/disable_remote_tomcats.sh&#8221;<br />
#!/bin/bash</p>
<p>tomcat_user=&#8221;tomcat0&#8243;;<br />
tomcat_node=$1;<br />
#for tomcat_node in ${nodes}<br />
#do<br />
for tomcats in `seq 0 1`<br />
do<br />
ssh ${tomcat_user}@${tomcat_node} &#8220;mv /appl/tomcat${tomcats}/webapps/portal/Status/Status.jsp /appl/tomcat${tomcats}/webapps/portal/Status/Status.jsp.old&#8221;<br />
done<br />
#done</p>
<p>echo &#8220;${tomcat_node}  tomcat nodes are disabled in BigiP.&#8221; | mail -s &#8220;${tomcat_node} tomcat nodes are disabled&#8221; MY_EMAIL@DOMAIN.com<br />
#echo &#8220;All tomcat nodes are disabled in BigiP. Enabling DR nodes&#8221; | mail -s &#8220;[DR Enabled] MY ENVIRONMENTApp Status Pages&#8221; YOUR_EMAIL@DOMAIN.COM<br />
#/Your/folder/enable_dr.sh</p>
<p>[root@MY_SERVER1 monitor]#</p>
<p>[root@MY_SERVER1 monitor]# cat /Your/folder/enable_dr.sh<br />
#!/bin/bash<br />
drnodes=&#8221;MY_DR_NODE1 MY_DR_NODE2&#8243;</p>
<p>for dr_node in ${drnodes}<br />
do<br />
/usr/bin/ssh root@${dr_node} &#8220;mv /appl/webdocs/portal/Status/Status.jsp.down /appl/webdocs/portal/Status/Status.jsp&#8221;<br />
done</p>
<p>echo &#8220;enabling DR nodes on `/bin/date`.&#8221; | /bin/mail -s &#8220;enabling DR nodes&#8221; YOUR_EMAIL@DOMAIN.COM MY_EMAIL@DOMAIN.COM</p>
<p>[root@MY_SERVER1 monitor]#</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
[root@MY_SERVER1 monitor]# cat &#8220;/Your/folder/enable_remote_tomcats.sh&#8221;<br />
#!/bin/bash</p>
<p>#nodes=&#8221;MY_SERVER1 MY_SERVER2&#8243;<br />
tomcat_user=&#8221;tomcat0&#8243;;<br />
tomcat_node=$1;</p>
<p>#for tomcat_node in ${nodes}<br />
#do<br />
for tomcats in `seq 0 1`<br />
do<br />
ssh ${tomcat_user}@${tomcat_node} &#8220;mv /appl/tomcat${tomcats}/webapps/portal/Status/Status.jsp.old /appl/tomcat${tomcats}/webapps/portal/Status/Status.jsp&#8221;<br />
done<br />
#done</p>
<p>#echo &#8220;${tomcat_node} All Tomcat Status pages are up. Trying to handle DR nodes&#8230;&#8221; | mail -s &#8220;[Restored] MY ENVIRONMENT App Status Pages&#8221; MY_EMAIL@DOMAIN.com<br />
echo &#8220;${tomcat_node} All Tomcat Status pages are up.&#8221; | mail -s &#8220;[Restored] MY ENVIRONMENT App Status Pages&#8221; MY_EMAIL@DOMAIN.com<br />
#/Your/folder/manage_dr.sh</p>
<p>[root@MY_SERVER1 monitor]#</p>
<p>[root@MY_SERVER1 monitor]# cat /Your/folder/manage_dr.sh<br />
#!/bin/bash<br />
#set -o xtrace<br />
drnodes=&#8221;MY_DR_NODE2 MY_DR_NODE1&#8243;<br />
poolcount1=0;<br />
poolcount2=0;<br />
STATUS_URI=&#8221;portal/Status/Status.jsp&#8221;<br />
pool1=&#8221;URL1<br />
URL2&#8243;<br />
pool2=&#8221;URL3<br />
URL4&#8243;</p>
<p>for MyEnv_node in ${pool1}<br />
do<br />
status=`/usr/bin/lynx &#8211;connect_timeout=3 &#8211;dump http://${MyEnv_node}.corporate.ge.com/${STATUS_URI} | grep &#8220;ITS_UP&#8221; | wc -l`<br />
poolcount228=$((poolcount228+status))<br />
done</p>
<p>for MyEnv_node in ${pool2}<br />
do<br />
status=`/usr/bin/lynx &#8211;connect_timeout=3 &#8211;dump http://${MyEnv_node}/${STATUS_URI} | grep &#8220;ITS_UP&#8221; | wc -l`<br />
pool2count=$((pool2count+status))<br />
done</p>
<p>#if [ $pool1count -ge 2 -a ${pool2count} -ge 2 ]<br />
if [ $pool2count -ge 2 ]<br />
then<br />
for dr_node in ${drnodes}<br />
do<br />
/usr/bin/ssh root@${dr_node} &#8220;mv /appl/webdocs/portal/Status/Status.jsp /appl/webdocs/portal/Status/Status.jsp.down&#8221;<br />
done<br />
echo &#8220;disabling DR nodes on `date`. Will be re-enabled in 20 mins&#8221; | mail -s &#8220;Disabling DR nodes&#8221; YOUR_EMAIL@DOMAIN.COM MY_EMAIL@DOMAIN.COM<br />
/usr/bin/at -f /Your/folder/enable_dr.sh  now + 20 min<br />
else<br />
echo -e &#8220;DR Nodes still kept UP, since dynamic nodes are not up\nWill retry in 5 mins from now&#8221; | mail -s &#8220;DR nodes still UP&#8221; YOUR_EMAIL@DOMAIN.COM MY_EMAIL@DOMAIN.COM<br />
/usr/bin/at -f /Your/folder/manage_dr.sh  now + 5 min<br />
fi</p>
<p>[root@MY_SERVER1 monitor]#</p>
]]></content:encoded>
			<wfw:commentRss>http://sysadminupdates.com/blog/2010/03/03/script-for-oracle-database-monitoring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
