Autopsy
4.6.0
Graphical digital forensics platform for The Sleuth Kit and other tools.
|
Inherits PropertyChangeListener.
Classes | |
class | DatabaseWriteTask |
class | TimingInfo |
Public Member Functions | |
void | propertyChange (PropertyChangeEvent evt) |
Static Public Member Functions | |
static TimingMetric | getTimingMetric (String name) |
static void | submitNormalizedTimingMetric (TimingMetric metric, long normalization) |
static void | submitTimingMetric (TimingMetric metric) |
Static Public Attributes | |
static final CaseDbSchemaVersionNumber | CURRENT_DB_SCHEMA_VERSION = new CaseDbSchemaVersionNumber(1, 0) |
Private Member Functions | |
EnterpriseHealthMonitor () throws HealthMonitorException | |
synchronized void | activateMonitor () throws HealthMonitorException |
void | addTimingMetric (TimingMetric metric) throws HealthMonitorException |
Connection | connect () throws HealthMonitorException |
void | createDatabase () throws HealthMonitorException |
boolean | databaseExists () throws HealthMonitorException |
boolean | databaseIsInitialized () throws HealthMonitorException |
synchronized void | deactivateMonitor () throws HealthMonitorException |
void | gatherTimerBasedMetrics () throws HealthMonitorException |
CoordinationService.Lock | getExclusiveDbLock () throws HealthMonitorException |
CoordinationService.Lock | getSharedDbLock () throws HealthMonitorException |
CaseDbSchemaVersionNumber | getVersion () throws HealthMonitorException |
void | initializeDatabaseSchema () throws HealthMonitorException |
void | performDatabaseQuery () throws HealthMonitorException |
void | setupConnectionPool () throws HealthMonitorException |
void | shutdownConnections () throws HealthMonitorException |
synchronized void | startTimer () |
synchronized void | stopTimer () |
void | writeCurrentStateToDatabase () throws HealthMonitorException |
Private Attributes | |
BasicDataSource | connectionPool = null |
final ExecutorService | healthMonitorExecutor |
ScheduledThreadPoolExecutor | healthMonitorOutputTimer |
String | hostName |
final Map< String, TimingInfo > | timingInfoMap |
Static Private Attributes | |
static final int | CONN_POOL_SIZE = 10 |
static final String | DATABASE_NAME = "EnterpriseHealthMonitor" |
static final long | DATABASE_WRITE_INTERVAL = 60 |
static final String | HEALTH_MONITOR_EVENT_THREAD_NAME = "Health-Monitor-Event-Listener-%d" |
static EnterpriseHealthMonitor | instance |
static final String | IS_ENABLED_KEY = "is_enabled" |
static final AtomicBoolean | isEnabled = new AtomicBoolean(false) |
static final Logger | logger = Logger.getLogger(EnterpriseHealthMonitor.class.getName()) |
static final String | MODULE_NAME = "EnterpriseHealthMonitor" |
Class for recording data on the health of the system.
For timing data: Modules will call getTimingMetric() before the code to be timed to get a TimingMetric object Modules will call submitTimingMetric() with the obtained TimingMetric object to log it
Definition at line 63 of file EnterpriseHealthMonitor.java.
|
private |
|
private |
Activate the health monitor. Creates/initialized the database (if needed), clears any existing metrics out of the maps, and sets up the timer for writing to the database.
HealthMonitorException |
Definition at line 140 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.createDatabase(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.databaseExists(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.databaseIsInitialized(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.getExclusiveDbLock(), org.sleuthkit.autopsy.core.UserPreferences.getIsMultiUserModeEnabled(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.initializeDatabaseSchema(), and org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.startTimer().
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.EnterpriseHealthMonitor().
|
private |
Add the timing metric data to the map.
metric | The metric to add. stopTiming() should already have been called. |
Definition at line 311 of file EnterpriseHealthMonitor.java.
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.submitNormalizedTimingMetric(), and org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.submitTimingMetric().
|
private |
Get a database connection. Sets up the connection pool if needed.
HealthMonitorException |
Definition at line 552 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.setupConnectionPool().
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.databaseIsInitialized(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.getVersion(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.initializeDatabaseSchema(), and org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.writeCurrentStateToDatabase().
|
private |
Create a new health monitor database.
HealthMonitorException |
Definition at line 481 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.core.UserPreferences.getDatabaseConnectionInfo().
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.activateMonitor().
|
private |
Check whether the health monitor database exists. Does not check the schema.
HealthMonitorException |
Definition at line 452 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.core.UserPreferences.getDatabaseConnectionInfo().
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.activateMonitor().
|
private |
Test whether the database schema has been initialized. We do this by looking for the version number.
HealthMonitorException |
Definition at line 572 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.connect().
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.activateMonitor().
|
private |
Deactivate the health monitor. This should only be used when disabling the monitor, not when Autopsy is closing. Clears out any metrics that haven't been written, stops the database write timer, and shuts down the connection pool.
HealthMonitorException |
Definition at line 183 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.shutdownConnections(), and org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.stopTimer().
|
private |
Collect metrics at a scheduled time.
HealthMonitorException |
Definition at line 370 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.performDatabaseQuery().
|
private |
Get an exclusive lock for the health monitor database. Acquire this before creating, initializing, or updating the database schema.
HealthMonitorException |
Definition at line 749 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.coordinationservice.CoordinationService.getInstance(), org.sleuthkit.autopsy.coordinationservice.CoordinationService.CategoryNode.HEALTH_MONITOR, and org.sleuthkit.autopsy.coordinationservice.CoordinationService.tryGetExclusiveLock().
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.activateMonitor().
|
private |
Get an shared lock for the health monitor database. Acquire this before database reads or writes.
HealthMonitorException |
Definition at line 768 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.DATABASE_NAME, org.sleuthkit.autopsy.coordinationservice.CoordinationService.getInstance(), org.sleuthkit.autopsy.coordinationservice.CoordinationService.CategoryNode.HEALTH_MONITOR, and org.sleuthkit.autopsy.coordinationservice.CoordinationService.tryGetSharedLock().
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.writeCurrentStateToDatabase().
|
static |
Get a metric that will measure the time to execute a section of code. Call this before the section of code to be timed and then submit it afterward using submitTimingMetric(). This method is safe to call regardless of whether the Enterprise Health Monitor is enabled.
name | A short but descriptive name describing the code being timed. This name will appear in the UI. |
Definition at line 259 of file EnterpriseHealthMonitor.java.
Referenced by org.sleuthkit.autopsy.keywordsearch.Server.openCore(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.performDatabaseQuery(), and org.sleuthkit.autopsy.modules.hashdatabase.HashDbIngestModule.process().
|
private |
Get the current schema version
HealthMonitorException |
Definition at line 606 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.connect().
|
private |
Initialize the database.
HealthMonitorException |
Definition at line 659 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.connect(), and org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.CURRENT_DB_SCHEMA_VERSION.
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.activateMonitor().
|
private |
Time a database query. Database queries are hard to test in normal processing because the time is so dependent on the size of the tables being queried. We use getImages here because every table it queries is the same size (one entry for each image) so we a) know the size of the tables and b) can use that table size to do normalization.
HealthMonitorException |
Definition at line 339 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.casemodule.Case.getOpenCase(), org.sleuthkit.autopsy.casemodule.Case.getSleuthkitCase(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.getTimingMetric(), and org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.submitNormalizedTimingMetric().
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.gatherTimerBasedMetrics().
void org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.propertyChange | ( | PropertyChangeEvent | evt | ) |
Definition at line 730 of file EnterpriseHealthMonitor.java.
|
private |
Setup a connection pool for db connections.
HealthMonitorException |
Definition at line 501 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.core.UserPreferences.getDatabaseConnectionInfo().
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.connect().
|
private |
Shut down the connection pool
HealthMonitorException |
Definition at line 533 of file EnterpriseHealthMonitor.java.
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.deactivateMonitor().
|
private |
Start the ScheduledThreadPoolExecutor that will handle the database writes.
Definition at line 200 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.stopTimer().
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.activateMonitor().
|
private |
Stop the ScheduledThreadPoolExecutor to prevent further database writes.
Definition at line 211 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.coreutils.ThreadUtils.shutDownTaskExecutor().
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.deactivateMonitor(), and org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.startTimer().
|
static |
Submit the metric that was previously obtained through getTimingMetric(), incorporating a count that the time should be divided by. Call this immediately after the section of code being timed. This method is safe to call regardless of whether the Enterprise Health Monitor is enabled.
metric | The TimingMetric object obtained from getTimingMetric() |
normalization | The number to divide the time by (a zero here will be treated as a one) |
Definition at line 294 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.addTimingMetric().
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.performDatabaseQuery(), and org.sleuthkit.autopsy.modules.hashdatabase.HashDbIngestModule.process().
|
static |
Submit the metric that was previously obtained through getTimingMetric(). Call this immediately after the section of code being timed. This method is safe to call regardless of whether the Enterprise Health Monitor is enabled.
metric | The TimingMetric object obtained from getTimingMetric() |
Definition at line 273 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.addTimingMetric().
Referenced by org.sleuthkit.autopsy.keywordsearch.Server.openCore(), and org.sleuthkit.autopsy.modules.hashdatabase.HashDbIngestModule.process().
|
private |
Write the collected metrics to the database.
HealthMonitorException |
Definition at line 379 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.connect(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.getSharedDbLock(), and org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.timingInfoMap.
|
staticprivate |
Definition at line 81 of file EnterpriseHealthMonitor.java.
|
private |
Definition at line 82 of file EnterpriseHealthMonitor.java.
|
static |
Definition at line 71 of file EnterpriseHealthMonitor.java.
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.initializeDatabaseSchema().
|
staticprivate |
Definition at line 66 of file EnterpriseHealthMonitor.java.
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.getSharedDbLock().
|
staticprivate |
Definition at line 69 of file EnterpriseHealthMonitor.java.
|
staticprivate |
Definition at line 77 of file EnterpriseHealthMonitor.java.
|
private |
Definition at line 76 of file EnterpriseHealthMonitor.java.
|
private |
Definition at line 79 of file EnterpriseHealthMonitor.java.
|
private |
Definition at line 83 of file EnterpriseHealthMonitor.java.
|
staticprivate |
Definition at line 74 of file EnterpriseHealthMonitor.java.
|
staticprivate |
Definition at line 68 of file EnterpriseHealthMonitor.java.
|
staticprivate |
Definition at line 73 of file EnterpriseHealthMonitor.java.
|
staticprivate |
Definition at line 65 of file EnterpriseHealthMonitor.java.
|
staticprivate |
Definition at line 67 of file EnterpriseHealthMonitor.java.
|
private |
Definition at line 80 of file EnterpriseHealthMonitor.java.
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.writeCurrentStateToDatabase().
Copyright © 2012-2016 Basis Technology. Generated on: Mon May 7 2018
This work is licensed under a
Creative Commons Attribution-Share Alike 3.0 United States License.