Solved

How to get apache server status variables by shell script

Posted on 2009-07-07
15
2,309 Views
Last Modified: 2013-12-26
HI
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 http://11.22.22.22/server-staus , 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


0
Comment
Question by:fosiul01
15 Comments
 
LVL 40

Expert Comment

by:omarfarid
ID: 24793583
did you try to use

wget http://11.22.22.22/server-staus  > status.txt

cat status.txt | myscript

myscript contains

read line1
var1=$line1
read line2
var1=$line2
read line3
var1=$line3
read line4
var1=$line4
read line5
var1=$line5
0
 
LVL 29

Author Comment

by:fosiul01
ID: 24793661
hmm , i know what you meant, i just realized from this 2 website

http://blog.e-shell.org/categorylist_html?cat_id=15
http://www.commandlinefu.com/commands/view/1018/summarize-apache-extended-server-status-to-show-longest-running-requests

but , without wget http://11.22.22.22/server-staus

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
0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 24793663
To get content only  (no HTML), try 'lynx'
lynx -nolist -dump http://11.22.22.22/server-staus  > output.txt

0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 24793690
OK, now I see your requirement!
Try
apachectl status
or
apachectl fullstatus
wmp
 
0
 
LVL 29

Author Comment

by:fosiul01
ID: 24793700
@woolmilkporc,

 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

http://blog.e-shell.org/categorylist_html?cat_id=15

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 ??



0
 
LVL 29

Author Comment

by:fosiul01
ID: 24793973
Ok apachectl fullstatus + some script example  ( http://www.commandlinefu.com/commands/view/1018/summarize-apache-extended-server-status-to-show-longest-running-requests)

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 ??
0
 
LVL 16

Expert Comment

by:ai_ja_nai
ID: 24794098
Are you talking about these? http://httpd.apache.org/docs/1.3/env.html
0
Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

 
LVL 68

Expert Comment

by:woolmilkporc
ID: 24794169

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.

wmp
0
 
LVL 29

Author Comment

by:fosiul01
ID: 24794210
hmmm

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

right ??

example
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 ...
0
 
LVL 29

Author Comment

by:fosiul01
ID: 24794229
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 ....


0
 
LVL 68

Accepted Solution

by:
woolmilkporc earned 500 total points
ID: 24794639
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 -
#!/bin/ksh
# server to check
server="11.22.22.22"
# 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.
 wmp
 
0
 
LVL 29

Author Comment

by:fosiul01
ID: 24794707
i guess you are taking about this one is not it, perl script

http://forums.cacti.net/post-52815.html&highlight=

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??

0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 24794867
Simple answer - nagios!
Issue a standard http request regularly using check_http and measure response time.
Other http/apache parameters available by check_apache
http://www.matejunkie.com/update-apache-check-plugin-for-nagios/
Good luck!
wmp
0
 
LVL 29

Author Comment

by:fosiul01
ID: 24794977
you know what the last link is really really good!!

thanks again...
0
 
LVL 29

Author Closing Comment

by:fosiul01
ID: 31600554
Thanks
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Suggested Solutions

If you use Adobe Reader X it is possible you can't open OLE PDF documents in the standard. The reason is the 'save box mode' in adobe reader X. Many people think the protected Mode of adobe reader x is only to stop the write access. But this fe…
Join Greg Farro and Ethan Banks from Packet Pushers (http://packetpushers.net/podcast/podcasts/pq-show-93-smart-network-monitoring-paessler-sponsored/) and Greg Ross from Paessler (https://www.paessler.com/prtg) for a discussion about smart network …
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now