From duncanl at demon.net Fri Sep 10 03:45:58 1999 From: duncanl at demon.net (Duncan Lawie) Date: Fri, 10 Sep 1999 11:45:58 +0100 Subject: [Orca-users] [Fwd: Re: ks_system_pages.pp_kernel] Message-ID: <37D8E166.26A645ED@demon.net> From: Duncan Lawie Hi, I tried this one on the gurus themselves - known bug. I'm getting the ridiculous output on my database server and also on another system. When I close down the application on the second system the figures all make sense. Cheers, Duncan. -------- Original Message -------- Subject: Re: ks_system_pages.pp_kernel Date: Thu, 9 Sep 1999 10:14:53 -0700 (PDT) From: Rich Pettit Reply-To: Rich Pettit To: se-feedback at chessie.eng.sun.com, duncanl at demon.net > I'm getting values for pp_kernel of over 4G from some of my systems. I > have two Ultra-250s, one of which produces a sensible figure. They each > have the same value for total pages, which is reasonable as each has the > same amount of real memory. > > Am I doing something silly? > > I'm using SE 3.1preFCS. Putting the gigabit ethernet fixes in didn't > make any difference. > > included: /etc/release, memory size, psrinfo, uname -a and script > output for each box, along with my se script. There is a known bug in the computation of pp_kernel on systems using Oracle and shared memory. I think that's the deal. pp_kernel will be reported absurdly high. Rich ---- Richard Pettit richp at foglight.com ---- Chief Performance Architect ---- Foglight Software, Inc. http://www.foglight.com --------------------------- ONElist Sponsor ---------------------------- BETA TEST expertcity.com's new online, real-time, technical support service! Let our live experts help you with your computer now. IT'S FREE! ! ! Click Here ------------------------------------------------------------------------ From bzajac at geostaff.com Mon Sep 13 11:54:06 1999 From: bzajac at geostaff.com (Blair Zajac) Date: Mon, 13 Sep 1999 11:54:06 -0700 Subject: [Orca-users] Re: Archives? References: <19990724004648.76961.qmail@hotmail.com> Message-ID: <37DD484E.E2B71CD7@geostaff.com> Hello, Did I ever respond to your message? If not, the archives are at: http://www.onelist.com/archive/orca-announce http://www.onelist.com/archive/orca-help http://www.onelist.com/archive/orca-discuss http://www.onelist.com/archive/orca-developers Blair Shiva Shankar wrote: > > From: "Shiva Shankar" > > hi > i subscribed to this list recently.i had a few problems with getting orca to > run.i guess i'm missing something basic. > i found from the onelist website that there is no archive for this group > yet.is here some way by which i can access the previous messages? > thanks in advance. > rgds > shiva > > --------------------------- ONElist Sponsor ---------------------------- > > Congrats to GROW TO GIVE winners, ZENtertainment & ROTInews! > http://www.onelist.com > Check out ONElist?s new program, FRIENDS & FAMILY. See homepage. > > ------------------------------------------------------------------------ From bzajac at geostaff.com Mon Sep 13 12:04:21 1999 From: bzajac at geostaff.com (Blair Zajac) Date: Mon, 13 Sep 1999 12:04:21 -0700 Subject: [Orca-users] Re: problem with labels. References: <19990728185727.I13622@sfx.com> Message-ID: <37DD4AB5.11E436C9@geostaff.com> Hello Brian, It doesn't look like I responded to your question here, but the "0 - 800 m" means "0 - 0.8" where m means milli. Hope this helps, Blair foo wrote: > > From: foo > > hi. i've had orca plotting data for about 10 machines for the last > few days, and have run into some curious problems. some of the plots > have strange labels, that dont seem to correspond to the min/max in > the config, and aren't realistic for the data. > > for example, one of my system load graphs has a y axis label of > "0 - 800 m". others have more reasonable things like "0 - 3.0", > but still others have "0 - 500 m". > > any idea what's causing this? i'm thinking it could be orca/rrd > freaking out about some abnormal data point, that skews the range > for the whole data set... but i dont really know where/how to > look for something like this. > > if you'd like to see the plots, to get an idea of what i'm saying, > let me know and i'll send the url in privmail. > > thanks. > > -brian > > --------------------------- ONElist Sponsor ---------------------------- > > ONElist: your connection to people who share your interests. > > ------------------------------------------------------------------------ From amarquis at matrox.com Mon Sep 13 13:05:33 1999 From: amarquis at matrox.com (Alexandre Marquis) Date: Mon, 13 Sep 1999 16:05:33 -0400 Subject: [Orca-users] Problem with start_orcallator ! Message-ID: <003901befe23$56f415e0$1902a8c0@matrox.com> When I try to start orcallator with the "start_orcallator" command, it = gives me this: > Writing data into = /export/local/percol/orca/var/orca/orcallator/picard/ > Using www access log file /opt/apache-1.3.6/logs/access_log > Starting logging > ./start_orcallator: -DWATCH_OS: not found I can't obtain any data in my orcallator-yyyy-mm-dd files. Can you help me please ? Alexandre Marquis amarquis at matrox.com M.I.S. Department Matrox Electonic System Ltd. From bzajac at geostaff.com Mon Sep 13 17:48:14 1999 From: bzajac at geostaff.com (Blair Zajac) Date: Mon, 13 Sep 1999 17:48:14 -0700 Subject: [Orca-users] Re: Problem with start_orcallator ! References: <003901befe23$56f415e0$1902a8c0@matrox.com> Message-ID: <37DD9B4E.90EB3F41@geostaff.com> Hello, This happens when the installed system did not have the se program in the patch when configure was run. Install se and then either edit start_orcallator and modify the SE= line or rerun configure. Blair > Alexandre Marquis wrote: > > When I try to start orcallator with the "start_orcallator" command, it gives > me this: > > > Writing data into /export/local/percol/orca/var/orca/orcallator/picard/ > > Using www access log file /opt/apache-1.3.6/logs/access_log > > Starting logging > > ./start_orcallator: -DWATCH_OS: not found > > I can't obtain any data in my orcallator-yyyy-mm-dd files. > > Can you help me please ? > > Alexandre Marquis > amarquis at matrox.com > M.I.S. Department > Matrox Electonic System Ltd. From chaya at gstworld.net Tue Sep 14 13:03:01 1999 From: chaya at gstworld.net (chaya at gstworld.net) Date: 14 Sep 1999 20:03:01 -0000 Subject: [Orca-users] problem: Too many open files Message-ID: <937339381.5297@onelist.com> From: chaya at gstworld.net I've been running orca v0.23 for over a month now on five servers. It looked like the orca process was getting too large (memory leak?) and the orca process was taking too long to graph. I started and stopped the orca process and now only get graphs for three of the five reporting servers. The log output is as follows: blackwidow% ./bin/orca -v lib/orcallator.cfg Orca version 0.23 using RRDs version 1.000031. Creating orca.gif. Creating rrdtool.gif. Loading state from `/opt/orcalogs/rrd/orca.state'. Finding files and setting up data structures at Tue Sep 14 12:39:48 1999. /opt/orcalogs/orcallator/blackwidow/percol-1999-08-17 /opt/orcalogs/orcallator/blackwidow/percol-1999-08-18 .... /opt/orcalogs/orcallator/gorgon/percol-1999-08-19 /opt/orcalogs/orcallator/gorgon/percol-1999-08-20 ./bin/orca: warning: cannot open `/opt/orcalogs/orcallator/gorgon/percol-1999-08-20' for reading: Too many open files ./bin/orca: warning: cannot process `/opt/orcalogs/orcallator/gorgon/percol-1999-08-20'. /opt/orcalogs/orcallator/gorgon/percol-1999-08-21 ./bin/orca: warning: cannot open `/opt/orcalogs/orcallator/gorgon/percol-1999-08-21' for reading: Too many open files ./bin/orca: warning: cannot process `/opt/orcalogs/orcallator/gorgon/percol-1999-08-21'. /opt/orcalogs/orcallator/gorgon/percol-1999-08-22 ./bin/orca: warning: cannot open `/opt/orcalogs/orcallator/gorgon/percol-1999-08-22' for reading: Too many open files ./bin/orca: warning: cannot process `/opt/orcalogs/orcallator/gorgon/percol-1999-08-22'. etc... Is this an os level issue, ie. "Too many open files", or something else? thanks for any information. -chris --------------------------- ONElist Sponsor ---------------------------- Celebrate the NEW ONElist! Enter to win a trip to Hawaii! Go to: Click Here ------------------------------------------------------------------------ From bzajac at geostaff.com Tue Sep 14 14:12:19 1999 From: bzajac at geostaff.com (Blair Zajac) Date: Tue, 14 Sep 1999 14:12:19 -0700 Subject: [Orca-users] Re: problem: Too many open files References: <937339381.5297@onelist.com> Message-ID: <37DEBA33.84BEE154@geostaff.com> Orca is designed to use 256 file descriptors. Problems of this sort occur when there is a limit on the number of open file descriptors for a single process less than 256. Type limit and see what it says for descriptors. You'll need to increase this number in your shell or cron. Blair chaya at gstworld.net wrote: > > From: chaya at gstworld.net > > I've been running orca v0.23 for over a month now on five servers. It looked > like the orca process was getting too large (memory leak?) and the orca process > was taking too long to graph. > > I started and stopped the orca process and now only get graphs for three of the > five reporting servers. > > The log output is as follows: > > blackwidow% ./bin/orca -v lib/orcallator.cfg > Orca version 0.23 using RRDs version 1.000031. > Creating orca.gif. > Creating rrdtool.gif. > Loading state from `/opt/orcalogs/rrd/orca.state'. > Finding files and setting up data structures at Tue Sep 14 12:39:48 1999. > /opt/orcalogs/orcallator/blackwidow/percol-1999-08-17 > /opt/orcalogs/orcallator/blackwidow/percol-1999-08-18 > .... > /opt/orcalogs/orcallator/gorgon/percol-1999-08-19 > /opt/orcalogs/orcallator/gorgon/percol-1999-08-20 > ./bin/orca: warning: cannot open `/opt/orcalogs/orcallator/gorgon/percol-1999-08-20' for reading: Too many open files > ./bin/orca: warning: cannot process `/opt/orcalogs/orcallator/gorgon/percol-1999-08-20'. > /opt/orcalogs/orcallator/gorgon/percol-1999-08-21 > ./bin/orca: warning: cannot open `/opt/orcalogs/orcallator/gorgon/percol-1999-08-21' for reading: Too many open files > ./bin/orca: warning: cannot process `/opt/orcalogs/orcallator/gorgon/percol-1999-08-21'. > /opt/orcalogs/orcallator/gorgon/percol-1999-08-22 > ./bin/orca: warning: cannot open `/opt/orcalogs/orcallator/gorgon/percol-1999-08-22' for reading: Too many open files > ./bin/orca: warning: cannot process `/opt/orcalogs/orcallator/gorgon/percol-1999-08-22'. > > etc... > > Is this an os level issue, ie. "Too many open files", or something else? > > thanks for any information. > > -chris > > --------------------------- ONElist Sponsor ---------------------------- > > Celebrate the NEW ONElist! > Enter to win a trip to Hawaii! Go to: > Click Here > > ------------------------------------------------------------------------ From duncanl at demon.net Wed Sep 15 01:49:33 1999 From: duncanl at demon.net (Duncan Lawie) Date: Wed, 15 Sep 1999 09:49:33 +0100 Subject: [Orca-users] problem: Too many files References: <937339381.5297@onelist.com> <37DEBA33.84BEE154@geostaff.com> Message-ID: <37DF5D9D.B56FC31E@demon.net> From: Duncan Lawie Hi, I found the file descriptor problem below, and would recommend a brief note being added to the documentation. I'm actually starting orca with an rc2 script, so I've put my ulimit -n 256 in there. My current question is actually whether there are too many files altogether. I have taken to deleting percollator files more than a week old as the information has all gone into the RRDs. However, this means that orca gets unhappy about old files that have gone missing. Is there any need to keep old source text files longer than a week (assuming my RRDs are safely backed up) ? Cheers, Duncan. Blair Zajac wrote: > Orca is designed to use 256 file descriptors. Problems of this sort > occur when there is a limit on the number of open file descriptors > for a single process less than 256. Type > > limit > > and see what it says for descriptors. You'll need to increase this > number in your shell or cron. > > Blair -- Duncan Lawie duncanl at demon.net MIS - Demon Internet "The _bless_ operator simply uses the reference in order to find the thingy." Programming Perl p292. --------------------------- ONElist Sponsor ---------------------------- New!! Free E-mail @mail.com, @usa.com, @engineer.com and more! Mail.com makes it easy to set up a free, personalized e-mail address that you can access anytime and anywhere. http://www.onelist.com/ad/mailcom1 ------------------------------------------------------------------------ From bzajac at geostaff.com Wed Sep 15 11:31:57 1999 From: bzajac at geostaff.com (Blair Zajac) Date: Wed, 15 Sep 1999 11:31:57 -0700 Subject: [Orca-users] Re: problem: Too many files References: <937339381.5297@onelist.com> <37DEBA33.84BEE154@geostaff.com> <37DF5D9D.B56FC31E@demon.net> Message-ID: <37DFE61D.5F15392D@geostaff.com> I have already put documentation for the 256 file descriptor problem into Orca. It would be handy if there was a rlimit module for Perl, but I did not find one on CPAN. I would keep the percollator.se files around, since the next version of Orca will need to reread them. However, if you want to compress them using gzip -9, then go ahead. I can send a version of Orca that handles compressed percol-* files. Blair Duncan Lawie wrote: > > From: Duncan Lawie > > Hi, > > I found the file descriptor problem below, and would recommend a brief note being added to the documentation. I'm actually > starting orca with an rc2 script, so I've put my > ulimit -n 256 > in there. > > My current question is actually whether there are too many files altogether. I have taken to deleting percollator files > more than a week old as the information has all gone into the RRDs. However, this means that orca gets unhappy about old > files that have gone missing. > > Is there any need to keep old source text files longer than a week (assuming my RRDs are safely backed up) ? > > Cheers, > Duncan. > > Blair Zajac wrote: > > > Orca is designed to use 256 file descriptors. Problems of this sort > > occur when there is a limit on the number of open file descriptors > > for a single process less than 256. Type > > > > limit > > > > and see what it says for descriptors. You'll need to increase this > > number in your shell or cron. > > > > Blair > > -- > Duncan Lawie > duncanl at demon.net > MIS - Demon Internet > > "The _bless_ operator simply uses the reference in order to find the thingy." > Programming Perl p292. > > --------------------------- ONElist Sponsor ---------------------------- > > New!! Free E-mail @mail.com, @usa.com, @engineer.com and more! > Mail.com makes it easy to set up a free, personalized e-mail address > that you can access anytime and anywhere. > http://www.onelist.com/ad/mailcom1 > > ------------------------------------------------------------------------ From mark at ripe.net Thu Sep 16 00:44:31 1999 From: mark at ripe.net (Mark Guz) Date: Thu, 16 Sep 1999 09:44:31 +0200 Subject: [Orca-users] NFS call rate Message-ID: <007401bf0017$5005abe0$2d0100c1@ripe.net> From: "Mark Guz" I am trying to fathom out why Orca is recording the NFS Call rate on my E450 at 12G ?? Doing a snoop on the interface shows some NFS activity but not a 12000000000 average. Has anyone else seen this or could it be a bug? Mark S. Guz System/Network Engineer Ripe NCC Amsterdam http://www.ripe.net --------------------------- ONElist Sponsor ---------------------------- Does Windows keep ""bugging"" you? Can't get that PowerPoint slide to fit? Get FREE real-time live expert support over the Internet at expertcity.com. Click Here ------------------------------------------------------------------------ From jennifer.Hayes at det.nsw.edu.au Thu Sep 16 17:35:29 1999 From: jennifer.Hayes at det.nsw.edu.au (Jennifer Hayes) Date: Fri, 17 Sep 1999 10:35:29 +1000 Subject: [Orca-users] Alphaev6-dec-osf4.0f Message-ID: <37E18CD1.D13726A@det.nsw.edu.au> From: Jennifer Hayes Is the above architecture supported in Orca. I have the latest version (0.23) and have checked out the config files which appear to only have ev4 & ev5 support. I am getting the following error when trying to configure Orca. checking host system type... Invalid configuration `alphaev6-dec-osf4.0f': machi ne `alphaev6-dec' not recognized checking target system type... Invalid configuration `alphaev6-dec-osf4.0f': mac hine `alphaev6-dec' not recognized checking build system type... Invalid configuration `alphaev6-dec-osf4.0f': mach ine `alphaev6-dec' not recognized --------------------------- ONElist Sponsor ---------------------------- New!! Free E-mail @mail.com, @usa.com, @engineer.com and more! Mail.com makes it easy to set up a free, personalized e-mail address that you can access anytime and anywhere. http://www.onelist.com/ad/mailcom1 ------------------------------------------------------------------------ From bzajac at geostaff.com Thu Sep 16 18:39:17 1999 From: bzajac at geostaff.com (Blair Zajac) Date: Thu, 16 Sep 1999 18:39:17 -0700 Subject: [Orca-users] Re: NFS call rate References: <007401bf0017$5005abe0$2d0100c1@ripe.net> Message-ID: <37E19BC5.28C91AF2@geostaff.com> This is a bug in SE somewhere. I have noticed the same thing and the numbers are clearly wrong. I sent email about this to the SE developers, but nothing has come back. For now, I would just ignore these huge values. Blair Mark Guz wrote: > > From: "Mark Guz" > > I am trying to fathom out why Orca is recording the NFS Call rate on my E450 > at 12G ?? > Doing a snoop on the interface shows some NFS activity but not a 12000000000 > average. > > Has anyone else seen this or could it be a bug? > > Mark S. Guz > System/Network Engineer > Ripe NCC > Amsterdam > http://www.ripe.net > > --------------------------- ONElist Sponsor ---------------------------- > > Does Windows keep ""bugging"" you? Can't get that PowerPoint slide to fit? > Get FREE real-time live expert support over the Internet at expertcity.com. > Click Here > > ------------------------------------------------------------------------ From bzajac at geostaff.com Thu Sep 16 18:55:55 1999 From: bzajac at geostaff.com (Blair Zajac) Date: Thu, 16 Sep 1999 18:55:55 -0700 Subject: [Orca-users] Re: Alphaev6-dec-osf4.0f References: <37E18CD1.D13726A@det.nsw.edu.au> Message-ID: <37E19FAB.1635C2EE@geostaff.com> Orca is using the latest autoconf and this does not appear to recognize your OS. There should not be a problem configuring Orca, unless configure quits. Orca itself is a Perl script that is OS independent for the most part. The orcallator.se, however, will only run on Solaris. Blair Jennifer Hayes wrote: > > From: Jennifer Hayes > > Is the above architecture supported in Orca. I have the latest version > (0.23) and have checked out the config files which appear to only have > ev4 & ev5 support. > I am getting the following error when trying to configure Orca. > > checking host system type... Invalid configuration > `alphaev6-dec-osf4.0f': machi > ne `alphaev6-dec' not recognized > > checking target system type... Invalid configuration > `alphaev6-dec-osf4.0f': mac > hine `alphaev6-dec' not recognized > > checking build system type... Invalid configuration > `alphaev6-dec-osf4.0f': mach > ine `alphaev6-dec' not recognized > > --------------------------- ONElist Sponsor ---------------------------- > > New!! Free E-mail @mail.com, @usa.com, @engineer.com and more! > Mail.com makes it easy to set up a free, personalized e-mail address > that you can access anytime and anywhere. > http://www.onelist.com/ad/mailcom1 > > ------------------------------------------------------------------------ From bzajac at geostaff.com Thu Sep 23 17:27:57 1999 From: bzajac at geostaff.com (Blair Zajac) Date: Thu, 23 Sep 1999 17:27:57 -0700 Subject: [Orca-users] New orcallator.se data description available online Message-ID: <37EAC58D.507518A8@geostaff.com> Thanks to Duncan Lawie for getting this document going. We now have an online document describing in modest detail some, but not all, of the data values recorded by orcallator.se. This document is available at http://www.geocities.com/~bzking/orcallator-docs/ While I think this is a great start, it definitely could be filled out much, much more. I welcome anybody to help out by emailing the Orca Discussion orca-discuss at onelist.com mailing list additions, suggestions, improvements, and corrections to this document. Enjoy, Blair From bzajac at geostaff.com Fri Sep 24 12:57:00 1999 From: bzajac at geostaff.com (Blair Zajac) Date: Fri, 24 Sep 1999 12:57:00 -0700 Subject: [Orca-users] New orcallator.se Message-ID: <37EBD78C.43E0FDCD@geostaff.com> Hello, I just put together a new orcallator.se release that has many improvements. Here are the comments relating to the changes since orcallator.se was released with Orca 0.23. I'll also start listing these separately from Orca on my web site. Blair // Version 1.13: Sep 24, 1999 Fix a bug in the disk_mean calculation where // it was being divided by the wrong disk_count. // Now it should be much larger and in scale with // disk_peak. When WATCH_DISK is defined, now // print each disk's run percent. Add a new // define WATCH_MOUNTS, which reports each mount // point's disk space and inode capacity, usage, // available for non-root users and percent used. // This comes from Duncan Lawie tyger at hoopoes.com. // Add some smarts so that if the number of // interfaces, physical disk, or mounted // partitions changes, then a new header is // printed. This will prevent column name and // data mixups when the system configuration // changes. // Version 1.12: Sep 14, 1999 Add the page scan rate as scanrate in // measure_cpu. // Version 1.11: Aug 13, 1999 Add the number of CPUs as ncpus. Move // measure_disk and measure_ram sooner in the // list of subsystems to handle. Increase the // number of characters for each network // interface from four to five. Add new disk // reads, writes, Kbytes read, and Kbytes // written per second. Add number of bytes // of free memory in bytes as freememK. // Version 1.10: Jul 28, 1999 Measure the process spawn rate if WATCH_CPU // is defined and the user is root. // Version 1.9: Jun 2, 1999 If WATCH_YAHOO is defined, then process the // access log as a Yahoo! style access log. // Restructure the code to handle different // web server access log formats. // Version 1.8: Jun 1, 1999 If the environmental variable WEB_SERVER is // defined, use its value of the as the name // of the process to count for the number of // web servers on the system. If WEB_SERVER // is not defined, then count number of httpd's. -------------- next part -------------- // // Orcallator.se, a log generating performance monitor. // // This program logs many different system quantities to a log file // for later processing. // // Author: Blair Zajac . // // Portions copied from percollator.se written by Adrian Cockroft. // // Version 1.13: Sep 24, 1999 Fix a bug in the disk_mean calculation where // it was being divided by the wrong disk_count. // Now it should be much larger and in scale with // disk_peak. When WATCH_DISK is defined, now // print each disk's run percent. Add a new // define WATCH_MOUNTS, which reports each mount // point's disk space and inode capacity, usage, // available for non-root users and percent used. // This comes from Duncan Lawie tyger at hoopoes.com. // Add some smarts so that if the number of // interfaces, physical disk, or mounted // partitions changes, then a new header is // printed. This will prevent column name and // data mixups when the system configuration // changes. // Version 1.12: Sep 14, 1999 Add the page scan rate as scanrate in // measure_cpu. // Version 1.11: Aug 13, 1999 Add the number of CPUs as ncpus. Move // measure_disk and measure_ram sooner in the // list of subsystems to handle. Increase the // number of characters for each network // interface from four to five. Add new disk // reads, writes, Kbytes read, and Kbytes // written per second. Add number of bytes // of free memory in bytes as freememK. // Version 1.10: Jul 28, 1999 Measure the process spawn rate if WATCH_CPU // is defined and the user is root. // Version 1.9: Jun 2, 1999 If WATCH_YAHOO is defined, then process the // access log as a Yahoo! style access log. // Restructure the code to handle different // web server access log formats. // Version 1.8: Jun 1, 1999 If the environmental variable WEB_SERVER is // defined, use its value of the as the name // of the process to count for the number of // web servers on the system. If WEB_SERVER // is not defined, then count number of httpd's. // Version 1.7: Mar 25, 1999 Simplify and speed up count_proc by 20%. // Version 1.6: Feb 23, 1999 Print pvm.user_time and system_time correctly. // Version 1.5: Feb 23, 1999 Always write header to a new file. // Version 1.4: Feb 19, 1999 Handle missing HTTP/1.x in access log. // Version 1.3: Feb 18, 1999 On busy machines httpops5 will be enlarged. // Version 1.2: Feb 18, 1999 Output data on integral multiples of interval. // Version 1.1: Feb 18, 1999 Integrate Squid log processing from SE 3.1. // Version 1.0: Sep 9, 1998 Initial version. // // The default sampling interval in seconds. #define SAMPLE_INTERVAL 300 // The maximum number of colums of data. #define MAX_COLUMNS 512 // Define the different parts of the system you want to examine. #ifdef WATCH_OS #define WATCH_CPU 1 #define WATCH_MUTEX 1 #define WATCH_NET 1 #define WATCH_TCP 1 #define WATCH_NFS 1 #define WATCH_MOUNTS 1 #define WATCH_DISK 1 #define WATCH_DNLC 1 #define WATCH_INODE 1 #define WATCH_RAM 1 #define WATCH_PAGES 1 #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef WATCH_MOUNTS #include #include #endif #if WATCH_CPU || WATCH_WEB #include #ifdef WATCH_CPU // This is the maximum pid on Solaris hosts. #define DEFAULT_MAXPID 30000 #include #endif #ifdef WATCH_WEB #include // Define this macro which returns the size index for a file of a // particular size. This saves the overhead of a function call. #define WWW_SIZE_INDEX(size, size_index) \ if (size < 1024) { \ size_index=0; /* under 1KB */ \ } else { \ if (size < 10240) { \ size_index=1; /* under 10K */ \ } else { \ if (size < 102400) { \ size_index=2; /* under 100KB */ \ } else { \ if (size < 1048576) { \ size_index=3; /* under 1MB */ \ } else { \ size_index=4; /* over 1MB */ \ } \ } \ } \ } \ dwnld_size[size_index]++; // Handle the reply code from the server. #define WWW_REPLY_CODE(word) \ if (word != nil) { \ if (word == "304") { \ httpop_condgets++; \ } \ else { \ first_byte = word; \ if (first_byte[0] == '4' || first_byte[0] == '5') { \ httpop_errors++; \ } \ } \ } // Handle the method of the object served. This define only works with // non-proxy servers. #define WWW_METHOD1(word) \ if (word != nil) { \ switch (word) { \ case "get": \ case "GET": \ httpop_gets++; \ break; \ case "post": \ case "POST": \ httpop_posts++; \ break; \ case "head": \ case "HEAD": \ ishead = 1; \ httpop_condgets++; \ break; #ifdef WATCH_SQUID #define WWW_METHOD2 \ case "icp_query": \ case "ICP_QUERY": \ squid_icp_queries++; \ break; #else #define WWW_METHOD2 #endif #define WWW_METHOD_END \ default: \ break; \ } \ } #define WWW_METHOD(word) WWW_METHOD1(word) WWW_METHOD2 WWW_METHOD_END #endif #endif // Put all rules here so they can be accessed by the handle functions. lr_cpu_t lr_cpu$cpu; lr_cpu_t tmp_lrcpu; lr_mutex_t lr_mutex$m; lr_mutex_t tmp_mutex; lr_net_t lr_net$nr; lr_net_t tmp_nr; lr_tcp_t lr_tcp$tcp; lr_tcp_t tmp_lrtcp; #ifdef WATCH_TCP tcp tcp$tcp; tcp tmp_tcp; #endif lr_rpcclient_t lr_rpcclient$r; lr_rpcclient_t tmp_lrpcc; lr_disk_t lr_disk$dr; lr_disk_t tmp_dr; lr_dnlc_t lr_dnlc$dnlc; lr_dnlc_t tmp_lrdnlc; lr_inode_t lr_inode$inode; lr_inode_t tmp_lrinode; lr_ram_t lr_ram$ram; lr_ram_t tmp_lrram; #ifdef WATCH_PAGES ks_system_pages kstat$pages; ks_system_pages tmp_kstat_pages; #endif lr_swapspace_t lr_swapspace$s; lr_swapspace_t tmp_lrswap; lr_kmem_t lr_kmem$kmem; lr_kmem_t tmp_lrkmem; ks_system_misc kstat$misc; ks_system_misc tmp_kstat_misc; // Put application globals here. string nodename; // Name of this machine. string program_name; // Name of this program. int hz; // Clock tick rate. int page_size; // Page size in bytes. long boot_time; // Boot time of the system. long interval = SAMPLE_INTERVAL; // Sampling interval. #ifdef WATCH_CPU int can_read_kernel = 0; // If the kernel can be read. long kvm$mpid; // The last created PID. // These variables store the mpid before and after the standard interval. long mpid_previous; long mpid_current; ulonglong mpid_then; ulonglong mpid_now; // These variables store the mpid before and after 5 second intervals. long mpid5_previous; long mpid5_current; ulonglong mpid5_then; ulonglong mpid5_now; double mpid5_rate; #endif #ifdef WATCH_MOUNTS mnttab_t mnt$mnt; mnttab_t tmp_mnt; #endif // Variables for handling the httpd access log. #ifdef WATCH_WEB string www_server_proc_name = getenv("WEB_SERVER"); string search_url = getenv("SEARCHURL"); string www_log_filename = getenv("WEB_LOG"); string www_gateway = getenv("GATEWAY"); ulong www_fd; uint www_gatelen; stat_t www_stat[1]; ulong www_ino; long www_size; double www_interval; // Hi-res interval time. ulonglong www_then; ulonglong www_now; double www5_interval; // Actual hi-res 5 second interval. ulonglong www5_then; ulonglong www5_now; double httpops; double httpops5; double gateops; double dtmp; long httpop_gets; long httpop_condgets; // HEAD or code = 304 conditional get no data. long httpop_posts; long httpop_cgi_bins; long httpop_searches; long httpop_errors; long dwnld_size[5]; // [0] < 1K, [1] < 10K, [2] < 100K, [3] < 1M, [4] >= 1M long dwnld_totalz; // total size counted from log #if WATCH_PROXY || WATCH_SQUID || WATCH_YAHOO // If we're watching a Yahoo log, then take the transfer time to be the // processing time. double www_dwnld_time_sum; // transfer time double www_dwnld_time_by_size[5]; // mean transfer time by size bin #endif #if WATCH_PROXY || WATCH_SQUID long prxy_squid_indirect; // number of hits that go via PROXY,SOCKS,parent long prxy_squid_cache_hits; // number of hits returned from cache #endif #ifdef WATCH_PROXY long prxy_cache_writes; // number of writes and updates to cache long prxy_uncacheable; // number of explicitly uncacheable httpops // any extra is errors or incomplete ops #endif #ifdef WATCH_SQUID long squid_cache_misses; long squid_icp_requests; long squid_icp_queries; long squid_client_http; #endif #endif // Variables for handling output. ulong ofile; // File pointer to the logging file. string col_comment[MAX_COLUMNS]; // Comments for each column. string col_data[MAX_COLUMNS]; // Data for each column. int current_column = 0; // The current column. int print_header = 1; // Flag to flush header. // Send the stored columns of information to the output. print_columns(string data[]) { int i; for (i=0; i= MAX_COLUMNS) { fprintf(stderr, "%s: too many columns (%d). Increase MAX_COLUMNS.\n", program_name, current_column); exit(1); } col_comment[current_column] = comment; col_data[current_column] = data; ++current_column; } flush_output() { if (print_header != 0) { print_columns(col_comment); print_header = 0; } print_columns(col_data); current_column = 0; } // Sets ofile to the output file pointer. Creates or appends to logfile // if OUTDIR is set, otherwise sets the file pointer to STDOUT. It // start a new logfile each day. checkoutput(tm_t now) { string outdir = getenv("OUTDIR"); string outname; tm_t then; char tm_buf[32]; if (outdir == nil) { /* no output dir so use stdout */ if (ofile == 0) { /* first time, so print header and set ofile */ ofile = stdout; print_header = 1; } return; } /* maintain daily output logfiles in OUTDIR */ if (now.tm_yday != then.tm_yday) { /* first time or day has changed, start new logfile */ if (ofile != 0) { /* close existing output file */ fclose(ofile); } strftime(tm_buf, sizeof(tm_buf), "%Y-%m-%d", now); outname = sprintf("%s/percol-%s", outdir, tm_buf); ofile = fopen(outname, "a"); /* open for append either way */ if (ofile == 0) { perror("can't open output logfile"); exit(1); } // Always write header. print_header = 1; then = now; } } int main(int argc, string argv[]) { utsname_t u[1]; long now; long sleep_till; // Time to sleep to. tm_t tm_now; // Get the nodename of the machine. uname(u); nodename = u[0].nodename; program_name = argv[0]; // Handle the command line arguments. switch (argc) { case 1: break; case 2: interval = atoi(argv[1]); break; default: fprintf(stderr, "usage: se [Defines] %s [interval]\n", program_name); fprintf(stderr, "%s can use the following environmental variables:\n", program_name); fprintf(stderr, " setenv WEB_SERVER netscape\n"); fprintf(stderr, " setenv WEB_LOG /ns-home/httpd-80/logs/access - location of web server log\n"); fprintf(stderr, " setenv GATEWAY some.where.com - special address to monitor\n"); fprintf(stderr, " setenv OUTDIR /ns-home/docs/orcallator/logs - default stdout\n"); fprintf(stderr, " setenv SEARCHURL srch.cgi - match for search scripts, default is search.cgi\n"); fprintf(stderr, "Defines:\n"); fprintf(stderr, " -DWATCH_WEB watch web server access logs\n"); fprintf(stderr, " -DWATCH_PROXY use WEB_LOG as a NCSA style proxy log\n"); fprintf(stderr, " -DWATCH_SQUID use WEB_LOG as a Squid log\n"); fprintf(stderr, " -DWATCH_OS includes all of the below:\n"); fprintf(stderr, " -DWATCH_CPU watch the cpu load, run queue, etc\n"); fprintf(stderr, " -DWATCH_MUTEX watch the number of mutex spins\n"); fprintf(stderr, " -DWATCH_NET watch all Ethernet interfaces\n"); fprintf(stderr, " -DWATCH_TCP watch all the TCP/IP stack\n"); fprintf(stderr, " -DWATCH_NFS watch NFS requests\n"); fprintf(stderr, " -DWATCH_MOUNTS watch usage of mount points\n"); fprintf(stderr, " -DWATCH_DISK watch disk read/write usage\n"); fprintf(stderr, " -DWATCH_DNLC watch the directory name lookup cache\n"); fprintf(stderr, " -DWATCH_INODE watch the inode cache\n"); fprintf(stderr, " -DWATCH_RAM watch memory usage\n"); fprintf(stderr, " -DWATCH_PAGES watch where pages are allocated\n"); exit(1); break; } // Initialize the various structures. initialize(); // Run forever. If WATCH_WEB is defined, then have measure_web() // do the sleeping while it is watching the access log file until the // next update time for the whole operating system. Also, collect the // data from the access log file before printing any output. for (;;) { // Calculate the next time to sleep to that is an integer multiple of // the interval time. Make sure that at least half of the interval // passes before waking up. now = time(0); sleep_till = (now/interval)*interval; while (sleep_till < now + interval*0.5) { sleep_till += interval; } #ifdef WATCH_WEB measure_web(sleep_till); #else sleep_till_and_count_new_proceses(sleep_till); #endif // Get the current time. now = time(0); tm_now = localtime(&now); measure_os(now, tm_now); #ifdef WATCH_WEB put_httpd(); #endif // Get a file descriptor to write to. Maintains daily output files. checkoutput(tm_now); // Print the output. flush_output(); } return 0; } initialize() { #ifdef WATCH_CPU int i; #endif #ifdef WATCH_CPU // Initialize the process spawning rate measurement variables. // Determine if the kernel can be read to measure the last pid. i = open("/dev/kmem", O_RDONLY); if (i != -1) { close(i); can_read_kernel = 1; mpid_previous = kvm$mpid; mpid_then = gethrtime(); mpid_current = mpid_previous; mpid5_then = mpid_then; mpid5_previous = mpid_previous; mpid5_current = mpid_previous; mpid5_rate = 0; } #endif #ifdef WATCH_WEB // Initialize those variables that were not set with environmental // variables. if (search_url == nil || search_url == "") { search_url = "search.cgi"; } if (www_server_proc_name == nil || www_server_proc_name == "") { www_server_proc_name = "httpd"; } if (www_gateway == nil || www_gateway == "" ) { www_gateway = "NoGatway"; www_gatelen = 0; } else { www_gatelen = strlen(www_gateway); } // Initialize the web server watching variables. Move the file pointer // to the end of the web access log and note the current time. if (www_log_filename != nil) { www_fd = fopen(www_log_filename, "r"); if (www_fd != 0) { stat(www_log_filename, www_stat); www_ino = www_stat[0].st_ino; www_size = www_stat[0].st_size; // Move to the end of the file. fseek(www_fd, 0, 2); } } www_then = gethrtime(); www5_then = www_then; #endif // Sleep to give the disks a chance to update. sleep(DISK_UPDATE_RATE); // Get the clock tick rate. hz = sysconf(_SC_CLK_TCK); // Get the page size. page_size = sysconf(_SC_PAGESIZE); // Calculate the system boot time. boot_time = time(0) - (kstat$misc.clk_intr / hz); // Perform the first measurement of the system. _measure_os(); } // Measure the system statistics all at once. _measure_os() { tmp_lrcpu = lr_cpu$cpu; tmp_mutex = lr_mutex$m; tmp_nr = lr_net$nr; tmp_lrtcp = lr_tcp$tcp; #ifdef WATCH_TCP tmp_tcp = tcp$tcp; #endif tmp_lrpcc = lr_rpcclient$r; tmp_dr = lr_disk$dr; tmp_lrdnlc = lr_dnlc$dnlc; tmp_lrinode = lr_inode$inode; tmp_lrram = lr_ram$ram; #ifdef WATCH_PAGES tmp_kstat_pages = kstat$pages; #endif tmp_lrswap = lr_swapspace$s; tmp_lrkmem = lr_kmem$kmem; tmp_kstat_misc = kstat$misc; } measure_os(long now, tm_t tm_now) { // Measure the system now. _measure_os(); // Take care of miscellaneous measurements. measure_misc(now, tm_now); // Take care of cpu. #ifdef WATCH_CPU measure_cpu(); #endif // Take care of mutexes. #ifdef WATCH_MUTEX measure_mutex(); #endif // Take care of mount pointes. #ifdef WATCH_MOUNTS measure_mounts(); #endif // Take care of the disks. #ifdef WATCH_DISK measure_disk(); #endif // Take care of ram. #ifdef WATCH_RAM measure_ram(); #endif // Take care of the network. #ifdef WATCH_NET measure_net(); #endif // Take care of TCP/IP. #ifdef WATCH_TCP measure_tcp(); #endif // Take care of NFS. #ifdef WATCH_NFS measure_nfs(); #endif // Take care of DNLC. #ifdef WATCH_DNLC measure_dnlc(); #endif // Take care of the inode cache. #ifdef WATCH_INODE measure_inode(); #endif // Take care of page allocations. #ifdef WATCH_PAGES measure_pages(); #endif } /* state as a character */ char state_char(int state) { switch(state) { case ST_WHITE: return 'w'; /* OK states are lower case */ case ST_BLUE: return 'b'; case ST_GREEN: return 'g'; case ST_AMBER: return 'A'; /* bad states are upper case to stand out */ case ST_RED: return 'R'; case ST_BLACK: return 'B'; default: return 'I'; /* invalid state */ } } measure_misc(long now, tm_t tm_now) { long uptime; char states[12]; char tm_buf[16]; uptime = now - boot_time; states = "wwwwwwwwwww"; strftime(tm_buf, sizeof(tm_buf), "%T", tm_now); states[0] = state_char(lr_disk$dr.state); states[1] = state_char(lr_net$nr.state); states[2] = state_char(lr_rpcclient$r.state); states[3] = state_char(lr_swapspace$s.state); states[4] = state_char(lr_ram$ram.state); states[5] = state_char(lr_kmem$kmem.state); states[6] = state_char(lr_cpu$cpu.state); states[7] = state_char(lr_mutex$m.state); states[8] = state_char(lr_dnlc$dnlc.state); states[9] = state_char(lr_inode$inode.state); states[10]= state_char(lr_tcp$tcp.state); put_output(" timestamp", sprintf("%10d", now)); put_output("locltime", tm_buf); put_output("DNnsrkcmdit", states); put_output(" uptime", sprintf("%8d", uptime)); } sleep_till_and_count_new_proceses(long sleep_till) { long now; #ifdef WATCH_CPU long sleep_till1; long mpid5_diff; double mpid5_interval; double rate; #endif now = time(0); while (now < sleep_till) { #ifdef WATCH_CPU if (can_read_kernel != 0) { // Sleep at least 5 seconds to make a measurement. sleep_till1 = now + 5; while (now < sleep_till1) { sleep(sleep_till1 - now); now = time(0); } // Measure the 5 second process creation rate. mpid5_current = kvm$mpid; mpid5_now = gethrtime(); mpid5_interval = (mpid5_now - mpid5_then) * 0.000000001; mpid5_then = mpid5_now; if (mpid5_current >= mpid5_previous) { mpid5_diff = mpid5_current - mpid5_previous; } else { mpid5_diff = mpid5_current + DEFAULT_MAXPID - mpid5_previous; } rate = mpid5_diff/mpid5_interval; if (rate > mpid5_rate) { mpid5_rate = rate; } mpid5_previous = mpid5_current; // Now take these results to measure the long interval rate. // Because the mpid may flip over DEFAULT_MAXPID more than once // in the long interval time span, use the difference between // the previous and current mpid over a 5 second interval to // calculate the long interval difference. mpid_current += mpid5_diff; mpid_now = mpid5_now; } else { sleep(sleep_till - now); } #else sleep(sleep_till - now); #endif now = time(0); } } #ifdef WATCH_CPU measure_cpu() { p_vmstat pvm; double mpid_interval; double mpid_rate; pvm = vmglobal_total(); // In SE 3.0 user_time and system_time are int and in SE 3.1 they are // double, so cast everything to double using + 0.0. put_output(" usr%", sprintf("%5.1f", pvm.user_time + 0.0)); put_output(" sys%", sprintf("%5.1f", pvm.system_time + 0.0)); put_output(" 1runq", sprintf("%6.2f", tmp_kstat_misc.avenrun_1min/256.0)); put_output(" 5runq", sprintf("%6.2f", tmp_kstat_misc.avenrun_5min/256.0)); put_output("15runq", sprintf("%6.2f", tmp_kstat_misc.avenrun_15min/256.0)); put_output("#proc", sprintf("%5lu", tmp_kstat_misc.nproc)); put_output("scanrate", sprintf("%8.3f", pvm.scan)); // Calculate the rate of new process spawning. if (can_read_kernel != 0) { mpid_interval = (mpid_now - mpid_then) * 0.000000001; mpid_rate = (mpid_current - mpid_previous) / mpid_interval; put_output("#proc/s", sprintf("%7.3f", mpid_rate)); put_output("#proc/p5s", sprintf("%9.4f", mpid5_rate)); // Reset counters. mpid_then = mpid_now; mpid_previous = mpid_current; mpid5_rate = 0; } } #endif #ifdef WATCH_MUTEX measure_mutex() { put_output(" smtx", sprintf("%5d", tmp_mutex.smtx)); put_output("smtx/cpu", sprintf("%8d", tmp_mutex.smtx/tmp_mutex.ncpus)); put_output("ncpus", sprintf("%5d", tmp_mutex.ncpus)); } #endif #ifdef WATCH_NET measure_net() { int previous_count = -1; int current_count; int i; current_count = 0; for (i=0; i peak_disk_busy) { peak_disk_busy = GLOBAL_disk[i].run_percent; } } mean_disk_busy = mean_disk_busy/GLOBAL_disk_count; put_output("disk_peak", sprintf("%9.3f", peak_disk_busy)); put_output("disk_mean", sprintf("%9.3f", mean_disk_busy)); put_output("disk_rd/s", sprintf("%9.1f", total_reads)); put_output("disk_wr/s", sprintf("%9.1f", total_writes)); put_output("disk_rK/s", sprintf("%9.1f", total_readk)); put_output("disk_wK/s", sprintf("%9.1f", total_writek)); // If the number of disks has changed, say due to a add_drv, then print // new headers. if (previous_count != GLOBAL_disk_count) { print_header = 1; previous_count = GLOBAL_disk_count; } } #endif #ifdef WATCH_DNLC measure_dnlc() { put_output("dnlc_ref/s", sprintf("%10.3f", tmp_lrdnlc.refrate)); put_output("dnlc_hit%", sprintf("%9.3f", tmp_lrdnlc.hitrate)); } #endif #ifdef WATCH_INODE measure_inode() { put_output("inod_ref/s", sprintf("%10.3f", tmp_lrinode.refrate)); put_output("inod_hit%", sprintf("%9.3f", tmp_lrinode.hitrate)); put_output("inod_stl/s", sprintf("%10.3f", tmp_lrinode.iprate)); } #endif #ifdef WATCH_RAM measure_ram() { put_output("swap_avail", sprintf("%10ld", GLOBAL_pvm[0].swap_avail)); put_output("page_rstim", sprintf("%10d", tmp_lrram.restime)); put_output(" freememK", sprintf("%10d", GLOBAL_pvm[0].freemem)); put_output("free_pages", sprintf("%10d", (GLOBAL_pvm[0].freemem*1024)/page_size)); } #endif #ifdef WATCH_PAGES measure_pages() { put_output("pp_kernel", sprintf("%9lu", tmp_kstat_pages.pp_kernel)); put_output("pagesfree", sprintf("%9lu", tmp_kstat_pages.pagesfree)); put_output("pageslock", sprintf("%9lu", tmp_kstat_pages.pageslocked)); put_output("pagesio", sprintf("%7lu", tmp_kstat_pages.pagesio)); put_output("pagestotl", sprintf("%9lu", tmp_kstat_pages.pagestotal)); } #endif #ifdef WATCH_WEB // Breakdown access log format. accesslog(string buf) { int z; int size_index; int ishead; string word; char first_byte[1]; #if WATCH_PROXY || WATCH_SQUID || WATCH_YAHOO double xf; #ifdef WATCH_SQUID string logtag; string request; #endif #ifdef WATCH_YAHOO string arg; ulong ptr; ulong tmp; ulong ulong_xf; #endif #endif ishead = 0; #ifdef WATCH_YAHOO // Make sure that the input line has at least 32 bytes of data plus a new // line, for a total length of 33. if (strlen(buf) < 33) { return; } word = strtok(buf,"\05"); #else word = strtok(buf," "); #endif if (word == nil) { return; } #ifdef WATCH_SQUID // Word contains unix time in seconds.milliseconds. word = strtok(nil, " "); // Elapsed request time in ms xf = atof(word)/1000.0; www_dwnld_time_sum += xf; #ifdef DINKY printf("time: %s %f total %f\n", word, xf, xfer_sum); #endif word = strtok(nil, " "); // Client IP address logtag = strtok(nil, "/"); // Log tag word = strtok(nil, " "); // Reply code WWW_REPLY_CODE(word) word = strtok(nil, " "); // Size sent to client z = atoi(word); request = strtok(nil, " "); // Request method word = strtok(nil, " "); // URL if (word != nil) { if (word =~ "cgi-bin") { httpop_cgi_bins++; } if (word =~ search_url) { httpop_searches++; } } word = strtok(nil, " "); // Optional user ident word = strtok(nil, "/"); // Hierarchy if (word != nil) { if (word =~ "DIRECT") { prxy_squid_indirect++; } } word = strtok(nil, " "); // Hostname word = strtok(nil, " "); // Content-type // Process the collected data. if (logtag =~ "TCP") { squid_client_http++; } if (logtag =~ "UDP") { squid_icp_requests++; } if (logtag =~ "HIT") { prxy_squid_cache_hits++; } if (logtag =~ "MISS") { squid_cache_misses++; } WWW_METHOD(request) // Do not add size if its a HEAD. if (ishead == 0) { dwnld_totalz += z; } WWW_SIZE_INDEX(z, size_index) www_dwnld_time_by_size[size_index] += xf; #elif WATCH_YAHOO // Yahoo log format. Fields in square brackets will only appear in the // log file if the data actually exists (ie. you will never see a null // Referrer field). Further, fields labelled here with "(CONFIG)" will // only appear if they are enabled via the YahooLogOptions configuration // directive. // // IP Address (8 hex digits) // Timestamp (time_t as 8 hex digits) // Processing Time (in microseconds, as 8 hex digits) // Bytes Sent (8 hex digits) // URL // [^Er referrer] (CONFIG) // [^Em method] (CONFIG) // [^Es status_code] // ^Ed signature // \n // Ignore the IP address and timestamp. Get the processing time, the // number of bytes sent and the URL. For each portion of the line, split // it up into separate pieces. if (sscanf(word, "%8lx%8lx%8x%8x", &tmp, &tmp, &ulong_xf, &z) != 4) { return; } xf = ulong_xf/1000000.0; WWW_SIZE_INDEX(z, size_index) www_dwnld_time_sum += xf; www_dwnld_time_by_size[size_index] += xf; if (word =~ "cgi-bin") { httpop_cgi_bins++; } if (word =~ search_url) { httpop_searches++; } for (;;) { word = strtok(nil, "\05"); if (word == nil) { break; } first_byte = word; ptr = &word + 1; arg = ((string) ptr); ptr = 0; switch (first_byte[0]) { case 'm': WWW_METHOD(arg) ptr = 1; break; case 's': WWW_REPLY_CODE(arg) break; default: break; } } // If no method was seen, then assume it was a GET. if (ptr == 0) { httpop_gets++; } // Do not add size if its a HEAD. if (ishead == 0) { dwnld_totalz += z; } #else /* common or netscape proxy formats */ strtok(nil, " "); // - strtok(nil, " "); // - strtok(nil, " ["); // date strtok(nil, " "); // zone] word = strtok(nil, " \""); // GET or POST WWW_METHOD(word) word = strtok(nil, " "); // URL if (word != nil) { if (word =~ "cgi-bin") { httpop_cgi_bins++; } if (word =~ search_url) { httpop_searches++; } } // Sometimes HTTP/1.x is not listed in the access log. Skip it // if it does exist. Load the error/success code. word = strtok(nil, " "); if (word != nil && (word =~ "HTTP" || word =~ "http")) { word = strtok(nil, " "); } WWW_REPLY_CODE(word) word = strtok(nil, " "); // Bytes transferred. if (word != nil) { z = atoi(word); if (ishead == 0) { // Do not add size if its a HEAD. dwnld_totalz += z; } WWW_SIZE_INDEX(z, size_index) } #ifdef WATCH_PROXY word = strtok(nil, " "); // status from server word = strtok(nil, " "); // length from server word = strtok(nil, " "); // length from client POST word = strtok(nil, " "); // length POSTed to remote word = strtok(nil, " "); // client header req word = strtok(nil, " "); // proxy header resp word = strtok(nil, " "); // proxy header req word = strtok(nil, " "); // server header resp word = strtok(nil, " "); // transfer total secs word = strtok(nil, " "); // route // - DIRECT PROXY(host.domain:port) SOCKS if (word != nil) { if (strncmp(word, "PROXY", 5) == 0 || strncmp(word, "SOCKS", 5) == 0) { prxy_squid_indirect++; } } word = strtok(nil, " "); // client finish status word = strtok(nil, " "); // server finish status word = strtok(nil, " "); // cache finish status // ERROR HOST-NOT-AVAILABLE = error or incomplete op // WRITTEN REFRESHED CL-MISMATCH(content length mismatch) = cache_writes // NO-CHECK UP-TO-DATE = cache_hits // DO-NOT-CACHE NON-CACHEABLE = uncacheable if (word != nil) { switch(word) { case "WRITTEN": case "REFRESHED": case "CL-MISMATCH": prxy_cache_writes++; break; case "NO-CHECK": case "UP-TO-DATE": prxy_squid_cache_hits++; break; case "DO-NOT-CACHE": case "NON-CACHEABLE": prxy_uncacheable++; break; default: break; } } word = strtok(nil, " ["); // [transfer total time x.xxx if (word != nil) { xf = atof(word); www_dwnld_time_sum += xf; www_dwnld_time_by_size[size_index] += xf; } #endif #endif } measure_web(long sleep_till) { double lastops = 0.0; char buf[BUFSIZ]; int i; long now; httpops = 0.0; httpops5 = 0.0; gateops = 0.0; httpop_gets = 0; httpop_condgets = 0; httpop_posts = 0; httpop_cgi_bins = 0; httpop_errors = 0; httpop_searches = 0; for (i=0; i<5; i++) { dwnld_size[i] = 0; #if WATCH_PROXY || WATCH_SQUID || WATCH_YAHOO www_dwnld_time_by_size[i] = 0.0; #endif } dwnld_totalz = 0; #if WATCH_PROXY || WATCH_SQUID || WATCH_YAHOO www_dwnld_time_sum = 0.0; #endif #if WATCH_PROXY || WATCH_SQUID prxy_squid_indirect = 0; prxy_squid_cache_hits = 0; #ifdef WATCH_PROXY prxy_cache_writes = 0; prxy_uncacheable = 0; #else squid_cache_misses = 0; squid_icp_requests = 0; squid_icp_queries = 0; squid_client_http = 0; #endif #endif if (www_log_filename != nil) { now = time(0); while (now < sleep_till) { #ifdef WATCH_CPU sleep_till_and_count_new_proceses(now + 5); #else sleep(5); #endif now = time(0); if (www_fd != 0) { while (fgets(buf, BUFSIZ, www_fd) != nil) { httpops += 1.0; if (www_gatelen > 0) { if (strncmp(buf, www_gateway, www_gatelen) == 0) { gateops += 1.0; } } accesslog(buf); } } /* see if the file has been switched or truncated */ stat(www_log_filename, www_stat); if (www_ino != www_stat[0].st_ino || www_size > www_stat[0].st_size) { if (www_fd != 0) { fclose(www_fd); /* close the old log */ } /* log file has changed, open the new one */ www_fd = fopen(www_log_filename, "r"); if (www_fd != 0) { www_ino = www_stat[0].st_ino; while(fgets(buf, BUFSIZ, www_fd) != nil) { httpops += 1.0; if (www_gatelen > 0) { if (strncmp(buf, www_gateway, www_gatelen) == 0) { gateops += 1.0; } } accesslog(buf); } } } www5_now = gethrtime(); www5_interval = (www5_now - www5_then) * 0.000000001; www5_then = www5_now; dtmp = (httpops - lastops)/www5_interval; if (dtmp > httpops5) { httpops5 = dtmp; } lastops = httpops; // Remember size for next time. www_size = www_stat[0].st_size; } } else { sleep_till_and_count_new_proceses(sleep_till); www5_now = gethrtime(); } www_now = www5_now; www_interval = (www_now - www_then) * 0.000000001; www_then = www_now; // Use dtmp to get percentages. if (httpops == 0.0) { dtmp = 0.0; } else { dtmp = 100.0 / httpops; } #if WATCH_PROXY || WATCH_SQUID || WATCH_YAHOO for (i=0; i<5; i++) { if (dwnld_size[i] == 0) { www_dwnld_time_by_size[i] = 0.0; } else { www_dwnld_time_by_size[i] = www_dwnld_time_by_size[i]/dwnld_size[i]; } } #endif } int count_proc(string name) { int count; prpsinfo_t p; count = 0; for (p=first_proc(); p.pr_pid != -1; p=next_proc()) { if (p.pr_fname =~ name) { count++; } } return count; } put_httpd() { put_output("#httpds", sprintf("%7d", count_proc(www_server_proc_name))); put_output("httpop/s", sprintf("%8.2f", httpops/www_interval)); put_output("http/p5s", sprintf("%8.2f", httpops5)); put_output("cndget/s", sprintf("%8.2f", httpop_condgets/www_interval)); put_output("search/s", sprintf("%8.3f", httpop_searches/www_interval)); put_output(" cgi/s", sprintf("%8.3f", httpop_cgi_bins/www_interval)); put_output(" htErr/s", sprintf("%8.3f", httpop_errors/www_interval)); put_output(" httpb/s", sprintf("%8.0f", dwnld_totalz/www_interval)); put_output(" %to1KB", sprintf("%8.2f", dtmp*dwnld_size[0])); put_output(" %to10KB", sprintf("%8.2f", dtmp*dwnld_size[1])); put_output("%to100KB", sprintf("%8.2f", dtmp*dwnld_size[2])); put_output(" %to1MB", sprintf("%8.2f", dtmp*dwnld_size[3])); put_output("%over1MB", sprintf("%8.2f", dtmp*dwnld_size[4])); put_output(www_gateway, sprintf("%8.2f", gateops/www_interval)); #if WATCH_PROXY || WATCH_SQUID put_output(" %indir", sprintf("%8.2f", dtmp * prxy_squid_indirect)); put_output("%cch_hit", sprintf("%8.2f", dtmp * prxy_squid_cache_hits)); #ifdef WATCH_PROXY put_output("%cch_wrt", sprintf("%8.2f", dtmp * prxy_cache_writes)); put_output("%cch_unc", sprintf("%8.2f", dtmp * prxy_uncacheable)); #else put_output("%cch_mis", sprintf("%8.2f", dtmp * squid_cache_misses)); put_output("%cch_req", sprintf("%8.2f", dtmp * squid_icp_requests)); put_output("%cch_qry", sprintf("%8.2f", dtmp * squid_icp_queries)); #endif put_output(" xfr_t", sprintf("%8.2f", 0.01 * dtmp * www_dwnld_time_sum)); put_output(" xfr1_t", sprintf("%8.2f", www_dwnld_time_by_size[0])); put_output(" xfr10_t", sprintf("%8.2f", www_dwnld_time_by_size[1])); put_output("xfr100_t", sprintf("%8.2f", www_dwnld_time_by_size[2])); put_output(" xfr1M_t", sprintf("%8.2f", www_dwnld_time_by_size[3])); put_output("xfro1M_t", sprintf("%8.2f", www_dwnld_time_by_size[4])); #elif WATCH_YAHOO put_output(" wprc_t", sprintf("%9.5f", 0.01 * dtmp * www_dwnld_time_sum)); put_output(" wprc1_t", sprintf("%9.5f", www_dwnld_time_by_size[0])); put_output(" wprc10_t", sprintf("%9.5f", www_dwnld_time_by_size[1])); put_output("wprc100_t", sprintf("%9.5f", www_dwnld_time_by_size[2])); put_output(" wprc1M_t", sprintf("%9.5f", www_dwnld_time_by_size[3])); put_output("wprco1M_t", sprintf("%9.5f", www_dwnld_time_by_size[4])); #endif } #endif From rodney at telstra.com.au Mon Sep 27 00:14:23 1999 From: rodney at telstra.com.au (Rodney Campbell) Date: Mon, 27 Sep 1999 17:14:23 +1000 (EST) Subject: [Orca-users] New orcallator.se-1.13 - but no new orcallator.cfg... Message-ID: I noticed a new orcallator.se on the web site but if I try to use this with Orca it just bombs out with numerous messages like: /httpd/support/orca/bin/orca: warning: no substitutions performed for `data 1load' in plot #2 in `/httpd/support/orca/var/orca/orcallator/mgt/percol-1999-09-27'. /httpd/support/orca/bin/orca: warning: no substitutions performed for `data 5load' in plot #2 in `/httpd/support/orca/var/orca/orcallator/mgt/percol-1999-09-27'. /httpd/support/orca/bin/orca: warning: no substitutions performed for `data 15load' in plot #2 in `/httpd/support/orca/var/orca/orcallator/mgt/percol-1999-09-27'. /httpd/support/orca/bin/orca: warning: bad evaluation of commands for plot #2 `data 1load': sub { return 1load; } Output: Bareword found where operator expected at (eval 6) line 2, near "1load" /httpd/support/orca/bin/orca: warning: bad evaluation of commands for plot #2 `data 5load': sub { return 5load; } ..... I assume this is because Orca doesn't understand the new format of the percol files. Is all that is required is a new orcallator.cfg or is it more than that? and if so where can I get an updated orcallator.cfg or whatever is needed to cope with the new format from orcallator.se-1.13? Thanks, Rodney... Rodney Campbell |Email : Rodney.Campbell at Telstra.com.au Telstra Corp. Ltd |Snail : Locked Bag 6560, Sydney 1100, Australia. IT Services | : Level 25, 201 Elizabeth St, Sydney NSW 2000. Network Platforms |Phone : +61 2 9396 8512 Fax: +61 2 9396 8527 www.rc.au.net |PGP : 6C 3A 76 83 75 71 24 9D 38 08 52 05 A7 6C 66 76 From bzajac at geostaff.com Wed Sep 29 10:13:17 1999 From: bzajac at geostaff.com (Blair Zajac) Date: Wed, 29 Sep 1999 10:13:17 -0700 Subject: [Orca-users] Re: New orcallator.se-1.13 - but no new orcallator.cfg... References: Message-ID: <37F248AD.92183433@geostaff.com> I am working on a new orcallator.cfg that will parse the new orcallator.se output. When it's done I'll email the Orca mailing lists. Blair Rodney Campbell wrote: > > I noticed a new orcallator.se on the web site but if I try to use this > with Orca it just bombs out with numerous messages like: > /httpd/support/orca/bin/orca: warning: no substitutions performed for > `data 1load' in plot #2 in > `/httpd/support/orca/var/orca/orcallator/mgt/percol-1999-09-27'. > /httpd/support/orca/bin/orca: warning: no substitutions performed for > `data 5load' in plot #2 in > `/httpd/support/orca/var/orca/orcallator/mgt/percol-1999-09-27'. > /httpd/support/orca/bin/orca: warning: no substitutions performed for > `data 15load' in plot #2 in > `/httpd/support/orca/var/orca/orcallator/mgt/percol-1999-09-27'. > /httpd/support/orca/bin/orca: warning: bad evaluation of commands for plot > #2 `data 1load': > sub { > return 1load; > } > > Output: Bareword found where operator expected at (eval 6) line 2, near > "1load" > > /httpd/support/orca/bin/orca: warning: bad evaluation of commands for plot > #2 `data 5load': > sub { > return 5load; > } > ..... > > I assume this is because Orca doesn't understand the new format of the > percol files. > > Is all that is required is a new orcallator.cfg or is it more than that? > and if so where can I get an updated orcallator.cfg or whatever is needed > to cope with the new format from orcallator.se-1.13? > > Thanks, > > Rodney... > > Rodney Campbell |Email : Rodney.Campbell at Telstra.com.au > Telstra Corp. Ltd |Snail : Locked Bag 6560, Sydney 1100, Australia. > IT Services | : Level 25, 201 Elizabeth St, Sydney NSW 2000. > Network Platforms |Phone : +61 2 9396 8512 Fax: +61 2 9396 8527 > www.rc.au.net |PGP : 6C 3A 76 83 75 71 24 9D 38 08 52 05 A7 6C 66 76 From rlongoria at axtel.com.mx Wed Sep 29 12:00:01 1999 From: rlongoria at axtel.com.mx (rlongoria at axtel.com.mx) Date: 29 Sep 1999 19:00:01 -0000 Subject: [Orca-users] Problem when execute ./bin/orca -v lib/orcallator.cfg Message-ID: <938631601.10207@onelist.com> From: rlongoria at axtel.com.mx He everyone, Im installing the Orca software in an Ultra 60 Solaris 2.6 Workstation, and Im having some problems, I already scan all the onelist digest's and correct some problems, but now I don't know what to do next. this is the error message when I execute the command: # ./bin/orca -v lib/orcallator.cfg Orca version 0.23 using RRDs version 0.99031. Creating orca.gif. Creating rrdtool.gif. Loading state from `/usr/local/orca/orca.state'. Finding files and setting up data structures at Wed Sep 29 13:48:16 1999. /usr/local/orca/var/orca/orcallator/DSNM1S01/percol-1999-09-29 ./bin/orca: making directory `/usr/local/orca/var/orca/rrd/orcallator/./DSNM1S01'. ./bin/orca: warning: no substitutions performed for `data #httpds' in plot #3 in `/usr/local/orca/var/orca/orcallator/DSNM1S01/percol-1999-09-29'. ./bin/orca: warning: no substitutions performed for `data %to1KB' in plot #6 in `/usr/local/orca/var/orca/orcallator/DSNM1S01/percol-1999-09-29'. ./bin/orca: warning: no substitutions performed for `data %to10KB' in plot #6 in `/usr/local/orca/var/orca/orcallator/DSNM1S01/percol-1999-09-29'. ./bin/orca: warning: no substitutions performed for `data %to100KB' in plot #6 in `/usr/local/orca/var/orca/orcallator/DSNM1S01/percol-1999-09-29'. ./bin/orca: warning: no substitutions performed for `data %to1MB' in plot #6 in `/usr/local/orca/var/orca/orcallator/DSNM1S01/percol-1999-09-29'. ./bin/orca: warning: no substitutions performed for `data %over1MB' in plot #6 in `/usr/local/orca/var/orca/orcallator/DSNM1S01/percol-1999-09-29'. ./bin/orca: warning: bad evaluation of commands for plot #6 `data %to1KB': sub { return %to1KB; } Output: Global symbol "%to1KB" requires explicit package name at (eval 14) line 2, chunk 1. ./bin/orca: warning: bad evaluation of commands for plot #6 `data %to10KB': sub { return %to10KB; } Output: Global symbol "%to10KB" requires explicit package name at (eval 15) line 2, chunk 1. ./bin/orca: warning: bad evaluation of commands for plot #6 `data %to100KB': sub { return %to100KB; } Output: Global symbol "%to100KB" requires explicit package name at (eval 16) line 2, chunk 1. ./bin/orca: warning: bad evaluation of commands for plot #6 `data %to1MB': sub { return %to1MB; } Output: Global symbol "%to1MB" requires explicit package name at (eval 17) line 2, chunk 1. ./bin/orca: warning: bad evaluation of commands for plot #6 `data %over1MB': sub { return %over1MB; } Output: Global symbol "%over1MB" requires explicit package name at (eval 18) line 2, chunk 1. ./bin/orca: Orca::GIFFile::new passed empty @rrds_ref reference. Orca::GIFFile::new('Orca::GIFFile', 'HASH(0x1fd25c)', 'HASH(0x1fd274)', 'ARRAY(0x1fd28c)', 'orcallator', 'DSNM1S01', '', 'orcallator_%to1KB,orcallator_%to10KB,orcallator_%to100KB,orcalla...', ...) called at ./bin/orca line 1493 Orca::SourceDataFile::add_plots('Orca::SourceDataFile=HASH(0x205ec0)', 'HASH(0x1fd25c)', 'HASH(0x1fd274)', 'ARRAY(0x1fd28c)', 'orcallator', 'DSNM1S01', 'HASH(0x210d10)', 'HASH(0x214abc)') called at ./bin/orca line 2598 main::find_files('lib/orcallator.cfg', 'HASH(0x1fd25c)', 'HASH(0x1fd274)', 'ARRAY(0x1fd28c)', 'HASH(0x1d49b4)', 'HASH(0x210d34)', 'HASH(0x210d10)', 'HASH(0x214abc)') called at ./bin/orca line 1836 main::watch_data_sources('lib/orcallator.cfg', 'HASH(0x1fd25c)', 'HASH(0x1fd274)', 'ARRAY(0x1fd28c)') called at ./bin/orca line 1739 main::main('lib/orcallator.cfg') called at ./bin/orca line 1718 # -------------- I do not have a orca.state file on my system, do I need to create it? and what information is on it?. Any help is highly appreciated. Thanks Ruben --------------------------- ONElist Sponsor ---------------------------- GET 2 FREE MUSIC CDS AND LOWER YOUR PHONE BILL! ACT NOW! Sign up for Qwest long distance at Shopnow.com and receive 2 free music CDs, huge savings on long distance, plus special deals! Expires 9/30! Click Here ------------------------------------------------------------------------ From bzajac at geostaff.com Wed Sep 29 12:22:08 1999 From: bzajac at geostaff.com (Blair Zajac) Date: Wed, 29 Sep 1999 12:22:08 -0700 Subject: [Orca-users] Re: Problem when execute ./bin/orca -v lib/orcallator.cfg References: <938631601.10207@onelist.com> Message-ID: <37F266E0.9F6A417A@geostaff.com> Hello, Ignore the missing state file warning. This file gets generated after the first sucessfull run of Orca. As for the other problems, it looks like you did not enable web log processing in orcallator.se. There are two solutions to this problem: 1) Comment out the lines in orcallator.cfg that enable plots of web access statistics. 2) Turn on web log processing in orcallator.se. You will probably need to rerun configure to do this or edit start_orcallator.se. Blair rlongoria at axtel.com.mx wrote: > > From: rlongoria at axtel.com.mx > > He everyone, > Im installing the Orca software in an Ultra 60 Solaris 2.6 Workstation, and Im having some problems, I already scan all the onelist digest's and correct some problems, but now I don't know what to do next. > > this is the error message when I execute the command: > > # ./bin/orca -v lib/orcallator.cfg > Orca version 0.23 using RRDs version 0.99031. > Creating orca.gif. > Creating rrdtool.gif. > Loading state from `/usr/local/orca/orca.state'. > Finding files and setting up data structures at Wed Sep 29 13:48:16 1999. > /usr/local/orca/var/orca/orcallator/DSNM1S01/percol-1999-09-29 > ./bin/orca: making directory `/usr/local/orca/var/orca/rrd/orcallator/./DSNM1S01'. > ./bin/orca: warning: no substitutions performed for `data #httpds' in plot #3 in `/usr/local/orca/var/orca/orcallator/DSNM1S01/percol-1999-09-29'. > ./bin/orca: warning: no substitutions performed for `data %to1KB' in plot #6 in `/usr/local/orca/var/orca/orcallator/DSNM1S01/percol-1999-09-29'. > ./bin/orca: warning: no substitutions performed for `data %to10KB' in plot #6 in `/usr/local/orca/var/orca/orcallator/DSNM1S01/percol-1999-09-29'. > ./bin/orca: warning: no substitutions performed for `data %to100KB' in plot #6 in `/usr/local/orca/var/orca/orcallator/DSNM1S01/percol-1999-09-29'. > ./bin/orca: warning: no substitutions performed for `data %to1MB' in plot #6 in `/usr/local/orca/var/orca/orcallator/DSNM1S01/percol-1999-09-29'. > ./bin/orca: warning: no substitutions performed for `data %over1MB' in plot #6 in `/usr/local/orca/var/orca/orcallator/DSNM1S01/percol-1999-09-29'. > ./bin/orca: warning: bad evaluation of commands for plot #6 `data %to1KB': > sub { > return %to1KB; > } > > Output: Global symbol "%to1KB" requires explicit package name at (eval 14) line 2, chunk 1. > > ./bin/orca: warning: bad evaluation of commands for plot #6 `data %to10KB': > sub { > return %to10KB; > } > > Output: Global symbol "%to10KB" requires explicit package name at (eval 15) line 2, chunk 1. > > ./bin/orca: warning: bad evaluation of commands for plot #6 `data %to100KB': > sub { > return %to100KB; > } > > Output: Global symbol "%to100KB" requires explicit package name at (eval 16) line 2, chunk 1. > > ./bin/orca: warning: bad evaluation of commands for plot #6 `data %to1MB': > sub { > return %to1MB; > } > > Output: Global symbol "%to1MB" requires explicit package name at (eval 17) line 2, chunk 1. > > ./bin/orca: warning: bad evaluation of commands for plot #6 `data %over1MB': > sub { > return %over1MB; > } > > Output: Global symbol "%over1MB" requires explicit package name at (eval 18) line 2, chunk 1. > > ./bin/orca: Orca::GIFFile::new passed empty @rrds_ref reference. > Orca::GIFFile::new('Orca::GIFFile', 'HASH(0x1fd25c)', 'HASH(0x1fd274)', 'ARRAY(0x1fd28c)', 'orcallator', 'DSNM1S01', '', 'orcallator_%to1KB,orcallator_%to10KB,orcallator_%to100KB,orcalla...', ...) called at ./bin/orca line 1493 > Orca::SourceDataFile::add_plots('Orca::SourceDataFile=HASH(0x205ec0)', 'HASH(0x1fd25c)', 'HASH(0x1fd274)', 'ARRAY(0x1fd28c)', 'orcallator', 'DSNM1S01', 'HASH(0x210d10)', 'HASH(0x214abc)') called at ./bin/orca line 2598 > main::find_files('lib/orcallator.cfg', 'HASH(0x1fd25c)', 'HASH(0x1fd274)', 'ARRAY(0x1fd28c)', 'HASH(0x1d49b4)', 'HASH(0x210d34)', 'HASH(0x210d10)', 'HASH(0x214abc)') called at ./bin/orca line 1836 > main::watch_data_sources('lib/orcallator.cfg', 'HASH(0x1fd25c)', 'HASH(0x1fd274)', 'ARRAY(0x1fd28c)') called at ./bin/orca line 1739 > main::main('lib/orcallator.cfg') called at ./bin/orca line 1718 > # > > -------------- > > I do not have a orca.state file on my system, do I need to create it? and what information is on it?. > > Any help is highly appreciated. Thanks > > Ruben > > --------------------------- ONElist Sponsor ---------------------------- > > GET 2 FREE MUSIC CDS AND LOWER YOUR PHONE BILL! ACT NOW! > Sign up for Qwest long distance at Shopnow.com and receive 2 free music > CDs, huge savings on long distance, plus special deals! Expires 9/30! > Click Here > > ------------------------------------------------------------------------ From bzajac at geostaff.com Wed Sep 29 17:33:07 1999 From: bzajac at geostaff.com (Blair Zajac) Date: Wed, 29 Sep 1999 17:33:07 -0700 Subject: [Orca-users] Re: Orca stopped logging.... References: <37F2AE2D.2F88C662@raytheon.com> Message-ID: <37F2AFC3.696B1BAE@geostaff.com> Are the orcallator.se processes running? Look for se.sparc or se.i386 processes. Blair Michael DuFresne wrote: > > From: Michael DuFresne > > Hello list... > > For whatever reason Orca has stopped all logging. I have restarted the > Orca process a number of times. I have even tar'ed up the current www > directory, deleted the existing files, and started over with everything > except recompiling and installing from sources. Orca seems to stuck in a > time warp. > > Any clues? > > -- > Mike/TeamNOC > > We defeated the enemy with teamwork, and the hammer of not bickering. > The Shoveller > > --------------------------- ONElist Sponsor ---------------------------- > > ?? BETA TEST our free, real-time technical support service with live experts !! > go to EXPERTCITY.COM > Click Here > > ------------------------------------------------------------------------ From bzajac at geostaff.com Thu Sep 30 09:22:55 1999 From: bzajac at geostaff.com (Blair Zajac) Date: Thu, 30 Sep 1999 09:22:55 -0700 Subject: [Orca-users] Re: Orca stopped logging.... References: <37F2AE2D.2F88C662@raytheon.com> <37F2AFC3.696B1BAE@geostaff.com> <37F2BBC8.D40AA70F@raytheon.com> Message-ID: <37F38E5F.FCC56B6F@geostaff.com> How long did you wait before checking for orcallator.se output? It can take up to 7.5 minutes before it will send the first output to the data file. Blair Michael DuFresne wrote: > > From: Michael DuFresne > > Blair Zajac wrote: > > > > Are the orcallator.se processes running? Look for se.sparc or se.i386 > > processes. > > > > Blair > > > > Just to make sure I wasn't being completely silly, I killed all of the > existing Orca and SE processes and restarted them from scratch. When I > restarted SE I recieve no error messages. orcallator.se appeared to > start as advertised also. Once I set 'file descriptors 256' orca started > fine also. > > Alas, there appears to be no logging for after the 5th of September on > this one server. > > -- > Mike/TeamNOC > > We defeated the enemy with teamwork, and the hammer of not bickering. > The Shoveller > > --------------------------- ONElist Sponsor ---------------------------- > > 150 SONGS FREE! The Riffage CD features 150 songs from our > favorite artists at Riffage.com Sign-up for a "My Riffage" account > to get your Free CD. http://www.riffage.com/ol/cd2 > > ------------------------------------------------------------------------ From bzajac at geostaff.com Thu Sep 30 09:32:56 1999 From: bzajac at geostaff.com (Blair Zajac) Date: Thu, 30 Sep 1999 09:32:56 -0700 Subject: [Orca-users] Re: Perl Script to alter Files with long file names - Orca References: <043083ACDBE5D211BFB70004ACEBA5501B9841@TOPAZ> Message-ID: <37F390B8.AC47AE07@geostaff.com> Here you go. Blair Mark Parker wrote: > > Hi Blair, > > I have scanned the orca-help mailing list archives and found the solution to > the problem we are having, however you made mention of a perl script which > will alter the files which already exist in the system. This file was not > contained within the archives. > > Would it be possible for you to please email me a copy of this perl script > > Many thanks > > Mark Parker > > PS The orca tool has provided us with allot of very useful information - > many thanks for this as well. -------------- next part -------------- A non-text attachment was scrubbed... Name: upgrade_installation.pl Type: application/x-perl Size: 1656 bytes Desc: not available URL: From bzajac at geostaff.com Thu Sep 30 09:43:43 1999 From: bzajac at geostaff.com (Blair Zajac) Date: Thu, 30 Sep 1999 09:43:43 -0700 Subject: [Orca-users] Re: Orca stopped logging.... References: <37F2AE2D.2F88C662@raytheon.com> <37F2AFC3.696B1BAE@geostaff.com> <37F2BBC8.D40AA70F@raytheon.com> <37F31E1B.F393D45D@demon.net> <37F32B27.58FDBAF@raytheon.com> Message-ID: <37F3933F.37C96D2C@geostaff.com> I'm curious as to the undefined value warning at line 533 in orca. Can you email us the couple of lines before and after this? If there are no files dated after September 5, then it looks like an orcallator.se problem. Can you also send the output of restart_orcallator Thanks, Blair Michael DuFresne wrote: > > From: Michael DuFresne > > Thanks for the reply DC... > > "D.C.Lawie" wrote: > > > > From: "D.C.Lawie" > > > > First, a little clarification of where the problem lies. I apologise if I'm > > saying obvious things. > > > > 1. Check that your /var/orca filesystem isn't full. > > I just checked to be sure, but none of the filesystems are full. > > > 2. Check that you have files in /var/orca/orcallator/* which cover dates since > > 5 September. If so, then orcallator.se is still collecting data OK. > > No dates after 5 September. But I noticed something odd. There is a file > for orcallator.pid dated 6 September. If I delete that file and restart > orcallator, orcallator.pid gets re-written as 6 September. > > > 3. Try running ./bin/orca -o -v ../lib/orcallator.cfg and checking what it > > says. You may need to run ulimit -n 256 (or up to 1024) first if you get the > > too many open files error. > > I have been setting descriptors at 256 on the command line thus far. > Here is what i get on the scrren for '-o -v': > > Orca version 0.23 using RRDs version 0.99031. > Creating orca.gif. > Creating rrdtool.gif. > Loading state from `/usr/local/var/orca/rrd/orcallator/orca.state'. > Finding files and setting up data structures at Thu Sep 30 04:17:45 > 1999. > /usr/local/var/orca/orcallator/dlea9/percol-1999-07-28 > ~all dates inclusive through > /usr/local/var/orca/orcallator/dlea9/percol-1999-09-05 > Use of uninitialized value at /usr/local/bin/orca line 533. > Use of uninitialized value at /usr/local/bin/orca line 533. > Use of uninitialized value at /usr/local/bin/orca line 533. > Loading new data from dlea9. > Saving state into `/usr/local/var/orca/rrd/orcallator/orca.state'. > Updating GIFs. > Creating HTML files in `/www/'. > Running time is 0:06 minutes. > > > > > If that works .... > > > > I have a /etc/init.d/orca which has a ulimit -n 256 line before starting > > orca. This makes sure of my file descriptors every time. > > > > Cheers, > > Duncan. > > -- > Mike/TeamNOC > > We defeated the enemy with teamwork, and the hammer of not bickering. > The Shoveller > > --------------------------- ONElist Sponsor ---------------------------- > > GET 2 FREE MUSIC CDS AND LOWER YOUR PHONE BILL! ACT NOW! > Sign up for Qwest long distance at Shopnow.com and receive 2 free music > CDs, huge savings on long distance, plus special deals! Expires 9/30! > Click Here > > ------------------------------------------------------------------------ From bzajac at geostaff.com Thu Sep 30 09:45:42 1999 From: bzajac at geostaff.com (Blair Zajac) Date: Thu, 30 Sep 1999 09:45:42 -0700 Subject: [Orca-users] Re: Orca stopped logging.... References: <37F2AE2D.2F88C662@raytheon.com> <37F2AFC3.696B1BAE@geostaff.com> <37F2BBC8.D40AA70F@raytheon.com> <37F31E1B.F393D45D@demon.net> <37F32B27.58FDBAF@raytheon.com> <37F3372B.A9846022@demon.net> Message-ID: <37F393B6.F91D34CC@geostaff.com> Actually, you can pass a number as an argument to orcallator.se and it will use this as the number of seconds between intervals: /opt/RICHPse/bin/se -DWATCH_OS lib/orcallator.se 5 Blair "D.C.Lawie" wrote: > > From: "D.C.Lawie" > > Michael DuFresne wrote: > > > > 2. Check that you have files in /var/orca/orcallator/* which cover dates since > > > 5 September. If so, then orcallator.se is still collecting data OK. > > > > No dates after 5 September. But I noticed something odd. There is a file > > for orcallator.pid dated 6 September. If I delete that file and restart > > orcallator, orcallator.pid gets re-written as 6 September. > > Freaky. I don't understand why this is happening, but this shows the problem is with > orcallator.se not orca. On my systems, the date stamp on the pid file indicates when > orcallator was started. I assume that the date on the system is correct :-). > > Try running orcallator from the command line as follows: > > /opt/RICHPse/bin/se -DWATCH_OS lib/orcallator.se > > It should eventually start spitting out data to stdout. ( You could hack > orcallator.se and change > #define SAMPLE_INTERVAL 300 > to a smaller number (like 30 seconds) to get data sooner, but don't forget to set it > back. ) > > If that's OK, I'm starting to grasp at straws. > > ? Check permissions on /var/orca/orcallator directory tree. > > > > > > > > 3. Try running ./bin/orca -o -v ../lib/orcallator.cfg and checking what it > > > says. You may need to run ulimit -n 256 (or up to 1024) first if you get the > > > too many open files error. > > > > I have been setting descriptors at 256 on the command line thus far. > > Here is what i get on the scrren for '-o -v': > > > > Orca version 0.23 using RRDs version 0.99031. > > Creating orca.gif. > > Creating rrdtool.gif. > > Loading state from `/usr/local/var/orca/rrd/orcallator/orca.state'. > > Finding files and setting up data structures at Thu Sep 30 04:17:45 > > 1999. > > /usr/local/var/orca/orcallator/dlea9/percol-1999-07-28 > > ~all dates inclusive through > > /usr/local/var/orca/orcallator/dlea9/percol-1999-09-05 > > Use of uninitialized value at /usr/local/bin/orca line 533. > > Use of uninitialized value at /usr/local/bin/orca line 533. > > Use of uninitialized value at /usr/local/bin/orca line 533. > > Loading new data from dlea9. > > Saving state into `/usr/local/var/orca/rrd/orcallator/orca.state'. > > Updating GIFs. > > Creating HTML files in `/www/'. > > Running time is 0:06 minutes. > > This looks fine, given the above. It is looking for new data, not finding any and > tidying up happily. > > Good luck, > Duncan. > > -- > D.C. Lawie > duncanl at demon.net > MIS - Demon Internet > > "The _bless_ operator simply uses the reference in order to find the thingy." > Programming Perl p292. > > --------------------------- ONElist Sponsor ---------------------------- > > GET 2 FREE MUSIC CDS AND LOWER YOUR PHONE BILL! ACT NOW! > Sign up for Qwest long distance at Shopnow.com and receive 2 free music > CDs, huge savings on long distance, plus special deals! Expires 9/30! > Click Here > > ------------------------------------------------------------------------ From rlongoria at axtel.com.mx Thu Sep 30 16:49:40 1999 From: rlongoria at axtel.com.mx (rlongoria at axtel.com.mx) Date: Thu, 30 Sep 1999 18:49:40 -0500 Subject: [Orca-users] Re: Problem when execute ./bin/orca -v lib/orcallator .cfg Message-ID: <862567FC.00832F44.00@gwoamycont01.axtel.com.mx> From: rlongoria at axtel.com.mx Hi everyone. Now I have my orca up and running, and it's a very nice tool, now, Im trying to plot some statistics generated by a PSTN network, and orca is doing well, My question or my problem is explained here: Id like to add a legend in the plot, but this value must be read it from the first line in the data file (column description) or from the data itself (a specific column) , is this posible? or only the file name can be post in the plot legend? Thanks in advance. Rub?n. --------------------------- ONElist Sponsor ---------------------------- GET 2 FREE MUSIC CDS AND LOWER YOUR PHONE BILL! ACT NOW! Sign up for Qwest long distance at Shopnow.com and receive 2 free music CDs, huge savings on long distance, plus special deals! Expires 9/30! Click Here ------------------------------------------------------------------------ From bzajac at geostaff.com Thu Sep 30 17:53:47 1999 From: bzajac at geostaff.com (Blair Zajac) Date: Thu, 30 Sep 1999 17:53:47 -0700 Subject: [Orca-users] Re: Orca stopped logging.... References: <37F2AE2D.2F88C662@raytheon.com> <37F2AFC3.696B1BAE@geostaff.com> <37F2BBC8.D40AA70F@raytheon.com> <37F31E1B.F393D45D@demon.net> <37F32B27.58FDBAF@raytheon.com> <37F3933F.37C96D2C@geostaff.com> <37F3FB1B.7A4C3A99@raytheon.com> Message-ID: <37F4061B.C67F7EBA@geostaff.com> Oops, you sent me the lines around 533 in orcallator.se instead of orca. Blair Michael DuFresne wrote: > > From: Michael DuFresne > > Blair Zajac wrote: > > > > I'm curious as to the undefined value warning at line 533 in orca. Can > > you email us the couple of lines before and after this? > > > > If there are no files dated after September 5, then it looks like an > > orcallator.se problem. Can you also send the output of restart_orcallator > > > > > Use of uninitialized value at /usr/local/bin/orca line 533. > > // Initialize the web server watching variables. Move the file pointer > // to the end of the web access log and note the current time. > if (www_log_filename != nil) { > www_fd = fopen(www_log_filename, "r"); > if (www_fd != 0) { > stat(www_log_filename, www_stat); > www_ino = www_stat[0].st_ino; > www_size = www_stat[0].st_size; > // Move to the end of the file. > fseek(www_fd, 0, 2); > } > > 'www_ino' is line 533. > > In response to an earlier e-mail, I don't recall the exact timing, but > it was close to an hour or so before I checked to see if there had been > updates to the info. > > -- > Mike/TeamNOC > > We defeated the enemy with teamwork, and the hammer of not bickering. > The Shoveller > > --------------------------- ONElist Sponsor ---------------------------- > > Does Windows keep ""bugging"" you? Can't get that PowerPoint slide to fit? > Get FREE real-time live expert support over the Internet at expertcity.com. > Click Here > > ------------------------------------------------------------------------ From xdufresn at raytheon.com Thu Sep 30 18:34:55 1999 From: xdufresn at raytheon.com (Michael DuFresne) Date: Thu, 30 Sep 1999 20:34:55 -0500 Subject: [Orca-users] Re: Orca stopped logging.... References: <37F2AE2D.2F88C662@raytheon.com> <37F2AFC3.696B1BAE@geostaff.com> <37F2BBC8.D40AA70F@raytheon.com> <37F31E1B.F393D45D@demon.net> <37F32B27.58FDBAF@raytheon.com> <37F3933F.37C96D2C@geostaff.com> <37F3FB1B.7A4C3A99@raytheon.com> <37F4061B.C67F7EBA@geostaff.com> Message-ID: <37F40FBF.E36877B3@raytheon.com> From: Michael DuFresne Blair Zajac wrote: > > Oops, you sent me the lines around 533 in orcallator.se instead of > orca. One of these days I'll learn how to read ;-} } my @legends; my $max_legend_length = 0; for (my $i=0; $i<$data_sources; ++$i) { my $legend = ::replace_group_name($plot_ref->{legend}[$i], $group); my $line_type = $plot_ref->{line_type}[$i]; my $color = $plot_ref->{color}[$i]; push(@options, "$line_type:average$i#$color:$legend"); $legend =~ s:%:\200:g; $legend =~ s:\200:%%:g; my $legend_length = length($legend); $max_legend_length = $legend_length if $legend_length > $max_legend_length; push(@legends, $legend); } $legend =~ s:%:\200:g; is line 533 of orca. -- Mike/TeamNOC We defeated the enemy with teamwork, and the hammer of not bickering. The Shoveller --------------------------- ONElist Sponsor ---------------------------- ?? BETA TEST our free, real-time technical support service with live experts !! go to EXPERTCITY.COM Click Here ------------------------------------------------------------------------