How to get apache server status variables by shell script

i am woundering, if any one can help me or give some good article about:

how to get apache server status variable by shell scripting ..

what i meant is : if you  open your , it will give you this kind of info

Current Time: Tuesday, 07-Jul-2009 13:03:16 BST
Restart Time: Sunday, 05-Jul-2009 04:02:03 BST
Parent Server Generation: 1
Server uptime: 2 days 9 hours 1 minute 13 seconds
Total accesses: 1578 - Total Traffic: 5.3 MB
CPU Usage: u13.52 s2.25 cu11.38 cs0 - .0132% CPU load
.00769 requests/sec - 26 B/second - 3504 B/request
1 requests currently being processed, 13 idle workers

Where apache is storing those information, how you can get those value in to a varibles ?? is there any command to get those value ?? example, uptime [ will show you how many days linux server is runing.. load averages .. etc ]  ,
mainly these :
Server uptime: 2 days 9 hours 1 minute 13 seconds
Total accesses: 1578 - Total Traffic: 5.3 MB
.00769 requests/sec - 26 B/second - 3504 B/request
1 requests currently being processed, 13 idle workers

LVL 29
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

did you try to use

wget  > status.txt

cat status.txt | myscript

myscript contains

read line1
read line2
read line3
read line4
read line5
fosiul01Author Commented:
hmm , i know what you meant, i just realized from this 2 website

but , without wget

is not there any other way to use ???

i understand, mod_status, will provide those information ...

but can you not get those value directory to script without accessing to server_status
To get content only  (no HTML), try 'lynx'
lynx -nolist -dump  > output.txt

Determine the Perfect Price for Your IT Services

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden with our free interactive tool and use it to determine the right price for your IT services. Download your free eBook now!

OK, now I see your requirement!
apachectl status
apachectl fullstatus
fosiul01Author Commented:

 thanks lynx is better then wget or links command ... its gettign the exact valuE!

but still, my question is, withotu accessing server-status, can you not get those value ??

becaues if i try to get those value form server-status, i need to extract line by line ...

if you guys look to this link

there is a picture, its a python programm, but can you create same output via shell script ?? or you need something liek C or pyton ??

fosiul01Author Commented:
Ok apachectl fullstatus + some script example  (

might do the job

so, if you guys think that,

server-status or apachectl fullstatus + script  is the only solution to get those values then i will happy to close this question..

is that the only way ??
Are you talking about these?

Of course you can run 'uptime' to get some info, but the other values need to be calculated by apache
(to avoid e.g. excessive logfile analyzing by means of a homemade script),
and afaik they're not stored anywhere in the filesystem.
What exactly are you trying to do with those values?
If it's only for displaying, just use apachectl or lynx without the '-dump' option.
If, however, you're going to work with the values (calculating/storing etc.) you will need to extract them from
the output of a tool like the above - I'm not aware of a better solution.

fosiul01Author Commented:

ok suppose if you want to take a mysql status report , you can get those from variables,

right ??

suppose in mysql, if you want to get if you want to get how many thread is runing  you can get the variables like this

Slave_IO_Running=`mysql -Bse "show status\G" | grep Threads_running  | awk '{ print $2 }'`

is not it ???

so what i am asking is,
is there any way to get each data from a apache variable ??

suppose this line

1 requests currently being processed, 7 idle workers

so i want to know, how many request is there,  
its currently 1

now can i get this 1 from any sort of apache variable ??

[ i know if you  use scripting with awk you would be able to get that variable by , may be hard way but you would be ]

my question is, can you get those data from apache variable or not ...
fosiul01Author Commented:
also add to my previous  post:

"1 requests currently being processed, 7 idle workers"

suppose if idle worker is low, server will be hang is not it ??

so if i want a script when idle worker will low it will sent me an email ....

There is a "machine-readable" version of the status page in ...../server-status?auto ,
and there is a perl script in apache's ...src/support subdirectory called "log_server_status" which will reformat the above data into one single line.
You probably don't need to go the "hard way" to parse this line (sorry, I can't test at the moment), but not without things like 'awk' or the like.
As for apache variables (quoting apache docs) -
Although these variables are referred to as environment variables, they are not the same as the environment variables controlled by the underlying operating system. Instead, these variables are stored and manipulated in an internal Apache structure. They only become actual operating system environment variables when they are provided to CGI scripts and Server Side Include scripts.
Again, I'm not aware of  a better way to let you achieve what you want.
Although you don't want to use 'awk', here is a tiny example using normal lynx output -
# server to check
# idle workers low theshold
iw_low=5 # or whatever
iw=$(lynx -nolist -dump http://${server}/server-status | grep "idle workers" |awk '{print $6}')
[ $iw -lt $iw_low ] && echo "Idle workers $iw is below threshold of $iw_low on $server" | mailx -s "Apache Alert" fosiul01@hisdomain.tld  
In case you plan to have this run by cron you will need sort of a "locking" mechanism to avoid receiving tons of mails once the value gets below threshold.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
fosiul01Author Commented:
i guess you are taking about this one is not it, perl script

ok thanks for your help , i will take it further from here
i just wanted to get some idea..

just one question i will ask you, you do not have to explain to me to much ...

how do you monitor apache performace ??

any software ?? paid or free??

Simple answer - nagios!
Issue a standard http request regularly using check_http and measure response time.
Other http/apache parameters available by check_apache 
Good luck!
fosiul01Author Commented:
you know what the last link is really really good!!

thanks again...
fosiul01Author Commented:
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
System Programming

From novice to tech pro — start learning today.