COSMOS CBE RDB
- database mapping:
- There are fields in the TPTP database model that not part of the CBE spec, but required for the TPTP log analyzer to work. If we ignore these fields, the DB populated by this usecase can't be used by TPTP.
- Timestamp is String in data object but is double in database
- ID generation: TPTP DB schema does not use auto ID generation function of derby. The ID field is not part of the data model. iBatis requires a one-to-one mapping between object member variable with database column. I have now changed the TPTP schema to use auto key generation function. Another solution is to wrap the objects with a subclasses that contains the id field, but it's a more heavy weight solution.
Ideally, we want:
- The datasource to be able to monitor live data and reading in static log files.
- The data collected using the COSMOS datacollection to be able to be used by COSMOS web front end via the query interface and by TPTP workbench.
Running the CBE data collection and query sample
- Follow the instructions at COSMOSDataCollectorEnvironment to set up development environment.
- Check out a sample database from http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cosmos/examples/end2end/org.eclipse.cosmos.examples.e2e.dc.repository/database/?root=Technology_Project. This database already has the tables required to run the COSMOS end-to-end example and some sample data populated in the database.
- Two assemblies are provided in the end-to-end example to collect Apache/Tomcat access log and Window Application Log data respectively. Before running the sample, we need to update the assembly XML files with values suitable for the runtime environment.
- Apache/Tomcat access log: Update CBEPersistor.xml to point to a apache log.
<pu:Property propertyName="directory" propertyValue="C:\demo\cosmos\logs"/> <pu:Property propertyName="fileName" propertyValue="net_access_log.log"/>
- Windows Application Log: In WindowsAppLog.xml, update the Sensor section. Change the values of directory and converter to point to the EventLogReader.exe program, which is packaged in the org.eclipse.cosmos.tptp.dependencies module. Replace <path> with the path to the org.eclipse.cosmos.tptp.dependencies module.
<cc:Sensor ...> <pu:Property propertyName="directory" propertyValue="<path>\org.eclipse.cosmos.tptp.dependencies"/> <pu:Property propertyName="fileName" propertyValue="error.log"/> <pu:Property propertyName="converter" propertyValue=""<path>\org.eclipse.cosmos.tptp.dependencies\EventLogReader.exe" application <path>\org.eclipse.cosmos.tptp.dependencies\error.log"/> </cc:Sensor>
- At osgi prompt, load CBE assembly and query configurations:
dc load CBEPersistor.xml dc load WindowsAppLog.xml dc load CBEQuery.xml dc load CBECount.xml
- Activate data collection for Apache/Tomcat access log.
dc activate CBEPersistor
- Activate data collection for Windows Application Log.
dc activate WindowsAppLog
- Query for all datasets in the database:
dc list datasets
- List all CBE in database. Replace <dataset> with a dataset ID.
spec query cbe <dataset>
- List CBE count by severity, grouped by component. Replace <dataset> with a dataset ID.
spec query cbeCount <dataset>
Enabling access log in Tomcat
By default, access log is disabled in Tomcat. To generate access logs, edit server.xml in the conf directory of the Tomcat server, and uncomment the following section.
<!-- <Valve className="org.apache.catalina.valves.FastCommonAccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/> -->