Bug 875203 - [iis] ResponseTime data fails to be collected due to incorrect and hard-coded log file prefix validation
Summary: [iis] ResponseTime data fails to be collected due to incorrect and hard-coded...
Keywords:
Status: NEW
Alias: None
Product: RHQ Project
Classification: Other
Component: Plugins
Version: 4.4
Hardware: All
OS: Windows
unspecified
high
Target Milestone: ---
: ---
Assignee: Nobody
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks: 875202
TreeView+ depends on / blocked
 
Reported: 2012-11-09 19:42 UTC by Larry O'Leary
Modified: 2022-03-31 04:28 UTC (History)
2 users (show)

Fixed In Version:
Clone Of: 875202
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Bugzilla 873495 0 unspecified NEW [iis] Discovery of IIS VHost fails due to Win32Exception: MetaBaseInit: Can't CoCreateInstance from Sigar 2022-03-31 04:28:02 UTC
Red Hat Bugzilla 875207 0 unspecified NEW [iis] ResponseTime data fails to be collected due to file offset calculation issue 2022-03-31 04:28:41 UTC

Internal Links: 873495 875207

Description Larry O'Leary 2012-11-09 19:42:22 UTC
+++ This bug was initially created as a clone of JBoss ON Bug #875202 +++

Description of problem:
Response Time (CallTime) metrics for an IIS VHost are not being collected and the following message is logged in the agent:

DEBUG [ResourceContainer.invoker.daemon-2] (org.rhq.plugins.iis.IISResponseTimeDelegate)- No log files exist yet


This failure is due to the plug-in looking for the wrong file name prefix. It appears that in IIS 7+ the default log file name begins with "u_ex" however, in IIS 6 (and the existing plug-in) "ex" was the prefix.

Version-Release number of selected component (if applicable):
4.4.0.JON311GA

How reproducible:
Always

Additional info:
From the support engineer who did some preliminary investigating:

After performing some tests locally, I have identified that the root cause should be related to the logging file name. As described in this page [2], "By Default IIS 7 log file format is stored using the u_ex prefix rather than ex prefix as seen in IIS 6." and there is a validation to check the logging file name, as follows:

**CLASS: IISResponseTimeDelegate

 -> This is a snippet of the class that contains the method responsible for validating the file name:

        private class IISResponseTimeLogFileFilter implements FileFilter {
            public boolean accept(File f) {
                String fileName = f.getName().toLowerCase();
                return fileName.startsWith("ex") && fileName.endsWith(".log");
            }
        }

Comment 1 Amana 2012-11-12 16:30:41 UTC
** Steps to reproduce **

After installing the "IIS 6 Metabase Compatibility" Role to monitor the VHosts for IIS on JBoss ON (as described in https://bugzilla.redhat.com/show_bug.cgi?id=873494), the walkthrough below was performed to reproduce the issue:

1) Enabling Response Time data in JBoss ON for the VHost discovered.

   a. Go to JBoss ON and Click on the VHost discovered -> Monitoring -> Schedules and enable the HTTP Response Time.
   b. For the same VHost, click on Inventory -> Connection Settings and check the values defined in "Log Format" (i.e. date time cs-uri-stem c-ip sc-status time-taken). You will have to set those same values for IIS when enabling the log file.


2) Configuring IIS for response time collection:

   a. Open IIS7+ Manager on Windows and navigate to the level you want to manage (i.e. Sites -> Default Web Site)
   b. In Features View, double-click Logging.
   c. On the Logging page, in the Actions pane on the right side, click "Enable" to enable logging and after that, "Apply".
   d. "Directory" field displays the path of the log file (Note: I have changed this value in IIS but apparently in JBoss ON this is not changed automatically, so I had to change that manually there). Check if the path is the same in JBoss ON and IIS.
   e. In the log file, click on "Select Fields" button, it will open a new panel. There you have to check-in the same options defined in "Log Format" field in JBoss ON for that Vhost (i.e. date time cs-uri-stem c-ip sc-status time-taken).
   f. Restart the VHost.
   g. After that, you can access that VHost a couple of times, so the log file will be generated in that path defined in "Directory" field. There you will see that this file is named as "u_ex...".
   
After performing these steps, the following message should be thrown in agent.log file when enabling debug messages:

   2012-11-06 16:34:47,825 DEBUG [ResourceContainer.invoker.daemon-2] (org.rhq.plugins.iis.IISResponseTimeDelegate)- No log files exist yet

To test that, I just renamed manually the generated log file from "u_ex121108" to "ex121108". After a while trying to monitor that, I could see that the file was found but the calltime was not being collected yet.

Comment 2 Larry O'Leary 2012-11-16 23:54:02 UTC
I wasn't able to find reference of this in the IIS documentation but the prefix "ex" vs. "u_ex" seems to be dependent on the log file format/character encoding.


Note You need to log in before you can comment on or make changes to this bug.