Autopsy
4.7.0
Graphical digital forensics platform for The Sleuth Kit and other tools.
|
Inherits PropertyChangeListener.
Classes | |
class | DatabaseTimingResult |
class | PeriodicHealthMonitorTask |
class | TimingInfo |
class | UserData |
enum | UserEvent |
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, 1) |
Private Member Functions | |
EnterpriseHealthMonitor () throws HealthMonitorException | |
synchronized void | activateMonitorLocally () throws HealthMonitorException |
void | addTimingMetric (TimingMetric metric) throws HealthMonitorException |
void | addUserEvent (UserEvent eventType) |
Connection | connect () throws HealthMonitorException |
void | createDatabase () throws HealthMonitorException |
boolean | databaseExists () throws HealthMonitorException |
boolean | databaseIsInitialized () throws HealthMonitorException |
synchronized void | deactivateMonitorLocally () throws HealthMonitorException |
void | gatherTimerBasedMetrics () throws HealthMonitorException |
CoordinationService.Lock | getExclusiveDbLock () throws HealthMonitorException |
boolean | getGlobalEnabledStatusFromDB () throws HealthMonitorException |
CoordinationService.Lock | getSharedDbLock () throws HealthMonitorException |
CaseDbSchemaVersionNumber | getVersion () throws HealthMonitorException |
void | initializeDatabaseSchema () throws HealthMonitorException |
void | performDatabaseQuery () throws HealthMonitorException |
void | setGlobalEnabledStatusInDB (boolean status) throws HealthMonitorException |
void | setupConnectionPool () throws HealthMonitorException |
void | shutdownConnections () throws HealthMonitorException |
synchronized void | startTimer () |
synchronized void | stopTimer () |
void | upgradeDatabaseSchema () throws HealthMonitorException |
void | writeCurrentStateToDatabase () throws HealthMonitorException |
Static Private Member Functions | |
static void | recordMetrics () |
Private Attributes | |
BasicDataSource | connectionPool = null |
CaseDbConnectionInfo | connectionSettingsInUse = null |
ScheduledThreadPoolExecutor | healthMonitorOutputTimer |
String | hostName |
final Map< String, TimingInfo > | timingInfoMap |
final List< UserData > | userInfoList |
Static Private Attributes | |
static final int | CONN_POOL_SIZE = 10 |
static final String | DATABASE_NAME = "EnterpriseHealthMonitor" |
static final long | DATABASE_WRITE_INTERVAL = 60 |
static EnterpriseHealthMonitor | instance |
static final AtomicBoolean | isEnabled = new AtomicBoolean(false) |
static final Logger | logger = Logger.getLogger(EnterpriseHealthMonitor.class.getName()) |
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 64 of file EnterpriseHealthMonitor.java.
|
private |
Definition at line 83 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.startTimer().
|
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 128 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.createDatabase(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.CURRENT_DB_SCHEMA_VERSION, 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.getVersion(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.initializeDatabaseSchema(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.shutdownConnections(), and org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.upgradeDatabaseSchema().
|
private |
Add the timing metric data to the map.
metric | The metric to add. stopTiming() should already have been called. |
Definition at line 367 of file EnterpriseHealthMonitor.java.
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.submitNormalizedTimingMetric(), and org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.submitTimingMetric().
|
private |
Add a user event to the list.
eventType |
Definition at line 390 of file EnterpriseHealthMonitor.java.
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.propertyChange().
|
private |
Get a database connection. Sets up the connection pool if needed.
HealthMonitorException |
Definition at line 633 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.setupConnectionPool().
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.databaseIsInitialized(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.getGlobalEnabledStatusFromDB(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.getVersion(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.initializeDatabaseSchema(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.setGlobalEnabledStatusInDB(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.upgradeDatabaseSchema(), and org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.writeCurrentStateToDatabase().
|
private |
Create a new health monitor database.
HealthMonitorException |
Definition at line 561 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.core.UserPreferences.getDatabaseConnectionInfo().
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.activateMonitorLocally().
|
private |
Check whether the health monitor database exists. Does not check the schema.
HealthMonitorException |
Definition at line 533 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.core.UserPreferences.getDatabaseConnectionInfo().
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.activateMonitorLocally().
|
private |
Test whether the database schema has been initialized. We do this by looking for the version number.
HealthMonitorException |
Definition at line 653 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.connect().
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.activateMonitorLocally().
|
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 229 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.shutdownConnections().
|
private |
Collect metrics at a scheduled time.
HealthMonitorException |
Definition at line 437 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.performDatabaseQuery().
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.recordMetrics().
|
private |
Get an exclusive lock for the health monitor database. Acquire this before creating, initializing, or updating the database schema.
HealthMonitorException |
Definition at line 1204 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.activateMonitorLocally().
|
private |
Read the enabled status from the database. Check that the health monitor database exists before calling this.
HealthMonitorException |
Definition at line 755 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.connect().
|
private |
Get an shared lock for the health monitor database. Acquire this before database reads or writes.
HealthMonitorException |
Definition at line 1223 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 315 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 789 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.connect().
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.activateMonitorLocally(), and org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.upgradeDatabaseSchema().
|
private |
Initialize the database.
HealthMonitorException |
Definition at line 842 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.activateMonitorLocally().
|
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 406 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.casemodule.Case.getCurrentCaseThrows(), 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 931 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.addUserEvent().
|
staticprivate |
Perform all periodic tasks:
Definition at line 918 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.gatherTimerBasedMetrics(), and org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.writeCurrentStateToDatabase().
|
private |
Set the global enabled status in the database.
HealthMonitorException |
Definition at line 774 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.connect().
|
private |
Setup a connection pool for db connections.
HealthMonitorException |
Definition at line 581 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 614 of file EnterpriseHealthMonitor.java.
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.activateMonitorLocally(), and org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.deactivateMonitorLocally().
|
private |
Start the ScheduledThreadPoolExecutor that will handle the database writes.
Definition at line 243 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.stopTimer().
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.EnterpriseHealthMonitor().
|
private |
Stop the ScheduledThreadPoolExecutor to prevent further database writes.
Definition at line 254 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.coreutils.ThreadUtils.shutDownTaskExecutor().
Referenced by 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 350 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 329 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 |
Upgrade an older database
Definition at line 172 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.connect(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.CURRENT_DB_SCHEMA_VERSION, and org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.getVersion().
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.activateMonitorLocally().
|
private |
Write the collected metrics to the database.
HealthMonitorException |
Definition at line 445 of file EnterpriseHealthMonitor.java.
References org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.connect(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.getSharedDbLock(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.timingInfoMap, and org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.userInfoList.
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.recordMetrics().
|
staticprivate |
Definition at line 78 of file EnterpriseHealthMonitor.java.
|
private |
Definition at line 79 of file EnterpriseHealthMonitor.java.
|
private |
Definition at line 80 of file EnterpriseHealthMonitor.java.
|
static |
Definition at line 70 of file EnterpriseHealthMonitor.java.
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.activateMonitorLocally(), org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.initializeDatabaseSchema(), and org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.upgradeDatabaseSchema().
|
staticprivate |
Definition at line 67 of file EnterpriseHealthMonitor.java.
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.getSharedDbLock().
|
staticprivate |
Definition at line 68 of file EnterpriseHealthMonitor.java.
|
private |
Definition at line 75 of file EnterpriseHealthMonitor.java.
|
private |
Definition at line 81 of file EnterpriseHealthMonitor.java.
|
staticprivate |
Definition at line 73 of file EnterpriseHealthMonitor.java.
|
staticprivate |
Definition at line 72 of file EnterpriseHealthMonitor.java.
|
staticprivate |
Definition at line 66 of file EnterpriseHealthMonitor.java.
|
private |
Definition at line 76 of file EnterpriseHealthMonitor.java.
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.writeCurrentStateToDatabase().
|
private |
Definition at line 77 of file EnterpriseHealthMonitor.java.
Referenced by org.sleuthkit.autopsy.healthmonitor.EnterpriseHealthMonitor.writeCurrentStateToDatabase().
Copyright © 2012-2016 Basis Technology. Generated on: Mon Jun 18 2018
This work is licensed under a
Creative Commons Attribution-Share Alike 3.0 United States License.