diff --git a/config/install/monitoring.sensor_config.user_failed_logins.yml b/config/install/monitoring.sensor_config.user_failed_logins.yml
index 51dc3d3..e28c155 100644
--- a/config/install/monitoring.sensor_config.user_failed_logins.yml
+++ b/config/install/monitoring.sensor_config.user_failed_logins.yml
@@ -16,7 +16,7 @@ settings:
     -
       field: 'message'
       value: 'Login attempt failed for %user.'
-  keys:
+  fields:
     - 'wid'
     - 'message'
     - 'variables'
diff --git a/config/install/monitoring.sensor_config.user_sessions_all.yml b/config/install/monitoring.sensor_config.user_sessions_all.yml
index 840892a..42b11ba 100644
--- a/config/install/monitoring.sensor_config.user_sessions_all.yml
+++ b/config/install/monitoring.sensor_config.user_sessions_all.yml
@@ -15,7 +15,7 @@ settings:
       field: 'uid'
       value: '0'
       operator: '!='
-  keys:
+  fields:
     - 'uid'
     - 'hostname'
     - 'timestamp'
diff --git a/config/install/monitoring.sensor_config.user_sessions_authenticated.yml b/config/install/monitoring.sensor_config.user_sessions_authenticated.yml
index 81e7e76..1112653 100644
--- a/config/install/monitoring.sensor_config.user_sessions_authenticated.yml
+++ b/config/install/monitoring.sensor_config.user_sessions_authenticated.yml
@@ -15,7 +15,7 @@ settings:
       field: 'uid'
       value: '0'
       operator: '!='
-  keys:
+  fields:
     - 'uid'
     - 'hostname'
     - 'timestamp'
diff --git a/config/install/monitoring.sensor_config.user_sessions_logouts.yml b/config/install/monitoring.sensor_config.user_sessions_logouts.yml
index 7141ca3..ba436e2 100644
--- a/config/install/monitoring.sensor_config.user_sessions_logouts.yml
+++ b/config/install/monitoring.sensor_config.user_sessions_logouts.yml
@@ -16,7 +16,7 @@ settings:
     -
       field: 'message'
       value: 'Session closed for %name.'
-  keys:
+  fields:
     - 'message'
     - 'wid'
     - 'variables'
diff --git a/config/install/monitoring.sensor_config.user_successful_logins.yml b/config/install/monitoring.sensor_config.user_successful_logins.yml
index 7fa49b3..2c23458 100644
--- a/config/install/monitoring.sensor_config.user_successful_logins.yml
+++ b/config/install/monitoring.sensor_config.user_successful_logins.yml
@@ -16,7 +16,7 @@ settings:
     -
       field: 'message'
       value: 'Session opened for %name.'
-  keys:
+  fields:
     - 'wid'
     - 'message'
     - 'variables'
diff --git a/config/optional/monitoring.sensor_config.captcha_failed_count.yml b/config/optional/monitoring.sensor_config.captcha_failed_count.yml
index cc42243..9ec55f2 100644
--- a/config/optional/monitoring.sensor_config.captcha_failed_count.yml
+++ b/config/optional/monitoring.sensor_config.captcha_failed_count.yml
@@ -17,7 +17,7 @@ settings:
         field: 'attempts'
         value: '0'
         operator: '>'
-  keys:
+  fields:
     - 'uid'
     - 'form_id'
     - 'attempts'
diff --git a/config/optional/monitoring.sensor_config.dblog_404.yml b/config/optional/monitoring.sensor_config.dblog_404.yml
index ded9ebb..6697467 100644
--- a/config/optional/monitoring.sensor_config.dblog_404.yml
+++ b/config/optional/monitoring.sensor_config.dblog_404.yml
@@ -18,7 +18,7 @@ settings:
     -
       field: type
       value: 'page not found'
-  keys:
+  fields:
     - 'wid'
     - 'location'
     - 'referer'
diff --git a/config/optional/monitoring.sensor_config.dblog_event_severity_alert.yml b/config/optional/monitoring.sensor_config.dblog_event_severity_alert.yml
index b859479..2a8b989 100644
--- a/config/optional/monitoring.sensor_config.dblog_event_severity_alert.yml
+++ b/config/optional/monitoring.sensor_config.dblog_event_severity_alert.yml
@@ -18,7 +18,7 @@ settings:
     -
       field: severity
       value: '1'
-  keys:
+  fields:
     - 'wid'
     - 'message'
     - 'variables'
diff --git a/config/optional/monitoring.sensor_config.dblog_event_severity_critical.yml b/config/optional/monitoring.sensor_config.dblog_event_severity_critical.yml
index e8e7c12..9ab0cd5 100644
--- a/config/optional/monitoring.sensor_config.dblog_event_severity_critical.yml
+++ b/config/optional/monitoring.sensor_config.dblog_event_severity_critical.yml
@@ -18,7 +18,7 @@ settings:
     -
       field: severity
       value: '2'
-  keys:
+  fields:
     - 'wid'
     - 'message'
     - 'variables'
diff --git a/config/optional/monitoring.sensor_config.dblog_event_severity_debug.yml b/config/optional/monitoring.sensor_config.dblog_event_severity_debug.yml
index ddd18a6..5d6da03 100644
--- a/config/optional/monitoring.sensor_config.dblog_event_severity_debug.yml
+++ b/config/optional/monitoring.sensor_config.dblog_event_severity_debug.yml
@@ -18,7 +18,7 @@ settings:
     -
       field: severity
       value: '7'
-  keys:
+  fields:
     - 'wid'
     - 'message'
     - 'variables'
diff --git a/config/optional/monitoring.sensor_config.dblog_event_severity_emergency.yml b/config/optional/monitoring.sensor_config.dblog_event_severity_emergency.yml
index 54e3229..dcce9b0 100644
--- a/config/optional/monitoring.sensor_config.dblog_event_severity_emergency.yml
+++ b/config/optional/monitoring.sensor_config.dblog_event_severity_emergency.yml
@@ -18,7 +18,7 @@ settings:
     -
       field: severity
       value: '0'
-  keys:
+  fields:
     - 'wid'
     - 'message'
     - 'variables'
diff --git a/config/optional/monitoring.sensor_config.dblog_event_severity_error.yml b/config/optional/monitoring.sensor_config.dblog_event_severity_error.yml
index 7a034b7..cafef1e 100644
--- a/config/optional/monitoring.sensor_config.dblog_event_severity_error.yml
+++ b/config/optional/monitoring.sensor_config.dblog_event_severity_error.yml
@@ -18,7 +18,7 @@ settings:
     -
       field: severity
       value: '3'
-  keys:
+  fields:
     - 'wid'
     - 'message'
     - 'variables'
diff --git a/config/optional/monitoring.sensor_config.dblog_event_severity_info.yml b/config/optional/monitoring.sensor_config.dblog_event_severity_info.yml
index eb134c3..2fe3a95 100644
--- a/config/optional/monitoring.sensor_config.dblog_event_severity_info.yml
+++ b/config/optional/monitoring.sensor_config.dblog_event_severity_info.yml
@@ -18,7 +18,7 @@ settings:
     -
       field: severity
       value: '6'
-  keys:
+  fields:
     - 'wid'
     - 'message'
     - 'variables'
diff --git a/config/optional/monitoring.sensor_config.dblog_event_severity_notice.yml b/config/optional/monitoring.sensor_config.dblog_event_severity_notice.yml
index c62e079..f9e7854 100644
--- a/config/optional/monitoring.sensor_config.dblog_event_severity_notice.yml
+++ b/config/optional/monitoring.sensor_config.dblog_event_severity_notice.yml
@@ -18,7 +18,7 @@ settings:
     -
       field: severity
       value: '5'
-  keys:
+  fields:
     - 'wid'
     - 'message'
     - 'variables'
diff --git a/config/optional/monitoring.sensor_config.dblog_event_severity_warning.yml b/config/optional/monitoring.sensor_config.dblog_event_severity_warning.yml
index 21b35df..a346616 100644
--- a/config/optional/monitoring.sensor_config.dblog_event_severity_warning.yml
+++ b/config/optional/monitoring.sensor_config.dblog_event_severity_warning.yml
@@ -18,7 +18,7 @@ settings:
     -
       field: severity
       value: '4'
-  keys:
+  fields:
     - 'wid'
     - 'message'
     - 'variables'
diff --git a/config/optional/monitoring.sensor_config.dblog_image_missing_style.yml b/config/optional/monitoring.sensor_config.dblog_image_missing_style.yml
index 55a9eb3..ed79391 100644
--- a/config/optional/monitoring.sensor_config.dblog_image_missing_style.yml
+++ b/config/optional/monitoring.sensor_config.dblog_image_missing_style.yml
@@ -22,7 +22,7 @@ settings:
     -
       field: message
       value: 'Source image at %source_image_path not found while trying to generate derivative image at %derivative_path.'
-  keys:
+  fields:
     - 'wid'
     - 'message'
     - 'variables'
diff --git a/config/optional/monitoring.sensor_config.maillog_records_count.yml b/config/optional/monitoring.sensor_config.maillog_records_count.yml
index 28a9b92..46f9ff2 100644
--- a/config/optional/monitoring.sensor_config.maillog_records_count.yml
+++ b/config/optional/monitoring.sensor_config.maillog_records_count.yml
@@ -9,7 +9,7 @@ settings:
   table: 'maillog'
   time_interval_field: 'sent_date'
   time_interval_value: '86400'
-  keys:
+  fields:
     - 'idmaillog'
     - 'message_id'
     - 'subject'
diff --git a/config/optional/monitoring.sensor_config.past_form.yml b/config/optional/monitoring.sensor_config.past_form.yml
index e3fd98b..79b5497 100644
--- a/config/optional/monitoring.sensor_config.past_form.yml
+++ b/config/optional/monitoring.sensor_config.past_form.yml
@@ -13,7 +13,7 @@ settings:
     -
       field: 'module'
       value: 'past_form'
-  keys:
+  fields:
     - 'event_id'
     - 'type'
     - 'module'
diff --git a/config/schema/monitoring.schema.yml b/config/schema/monitoring.schema.yml
index 7398eef..c3d2119 100644
--- a/config/schema/monitoring.schema.yml
+++ b/config/schema/monitoring.schema.yml
@@ -101,7 +101,7 @@ monitoring.settings.aggregator_base:
             type: string
           operator:
             type: string
-    keys:
+    fields:
       type: sequence
       label: Keys
       sequence:
diff --git a/src/Plugin/monitoring/SensorPlugin/DatabaseAggregatorSensorPlugin.php b/src/Plugin/monitoring/SensorPlugin/DatabaseAggregatorSensorPlugin.php
index 4b88e21..e645e67 100644
--- a/src/Plugin/monitoring/SensorPlugin/DatabaseAggregatorSensorPlugin.php
+++ b/src/Plugin/monitoring/SensorPlugin/DatabaseAggregatorSensorPlugin.php
@@ -59,11 +59,11 @@ class DatabaseAggregatorSensorPlugin extends DatabaseAggregatorSensorPluginBase
   protected $fetchedObject;
 
   /**
-   * The currently active keys for verbose output.
+   * The currently active fields for verbose output.
    *
    * @var array
    */
-  protected $currentKeys;
+  protected $currentFields;
 
   /**
    * Builds simple aggregate query over one db table.
@@ -127,9 +127,9 @@ class DatabaseAggregatorSensorPlugin extends DatabaseAggregatorSensorPluginBase
     }
 
     // Add key fields.
-    $keys = $this->sensorConfig->getSetting('keys');
+    $keys = $this->sensorConfig->getSetting('fields');
     if (!empty($keys)) {
-      foreach ($this->sensorConfig->getSetting('keys') as $key) {
+      foreach ($this->sensorConfig->getSetting('fields') as $key) {
         $query->addField($this->sensorConfig->getSetting('table'), $key);
       }
     }
@@ -240,7 +240,7 @@ class DatabaseAggregatorSensorPlugin extends DatabaseAggregatorSensorPluginBase
     $settings = $this->sensorConfig->getSettings();
     $form['table'] = array(
       '#type' => 'textfield',
-      '#default_value' => $this->sensorConfig->getSetting('table'),
+      '#default_value' => $settings['table'],
       '#maxlength' => 255,
       '#title' => t('Table'),
       '#required' => TRUE,
@@ -273,24 +273,27 @@ class DatabaseAggregatorSensorPlugin extends DatabaseAggregatorSensorPluginBase
     // Fill the sensors table with form elements for each sensor.
     $form['output_table'] = array(
       '#type' => 'fieldset',
-      '#title' => t('Verbose Output configuration'),
+      '#title' => t('Fields'),
       '#prefix' => '<div id="selected-output">',
       '#suffix' => '</div>',
       '#tree' => FALSE,
     );
     // Fill the keys text field with keys.
-    $form['output_table']['keys'] = array(
-      '#type' => 'textarea',
-      '#tree' => FALSE,
-      '#default_value' => implode("\n", $this->sensorConfig->getSetting('keys')),
-      '#maxlength' => 255,
-      '#title' => t('Keys'),
-      '#required' => TRUE,
+    $form['output_table']['fields'] = array(
+      '#type' => 'table',
+      '#tree' => TRUE,
+      '#header' => array(
+        'field' => t('Configure verbose output'),
+      ),
+      '#title' => t('Fields'),
+      '#empty' => t(
+        'Add fields to filter the verbose output.'
+      ),
     );
 
 
     // Fill the conditions table with keys and values for each condition.
-    $conditions = $this->sensorConfig->getSetting('conditions');
+    $conditions = $settings['conditions'];
     if (empty($conditions)) {
       $conditions = [];
     }
@@ -348,6 +351,38 @@ class DatabaseAggregatorSensorPlugin extends DatabaseAggregatorSensorPluginBase
       '#submit' => array(array($this, 'addConditionSubmit')),
     );
 
+    // Fill the fields table with fields.
+    $fields = $settings['fields'];
+    if (empty($fields)) {
+      $fields = [];
+    }
+
+    if (!$form_state->has('fields_rows')) {
+      $form_state->set('fields_rows', count($fields) + 1);
+    }
+    for ($i = 0; $i < $form_state->get('fields_rows'); $i++) {
+      $form['output_table']['fields'][$i] = array(
+        'field' => array(
+          '#type' => 'textfield',
+          '#default_value' => isset($fields[$i]) ? $fields[$i] : '',
+          '#title' => t('Field'),
+          '#title_display' => 'invisible',
+          '#size' => 20,
+        ),
+      );
+    }
+    // Select element for available fields.
+    $form['output_table']['fields_add_button'] = array(
+      '#type' => 'submit',
+      '#value' => t('Add more fields'),
+      '#ajax' => array(
+        'wrapper' => 'selected-output',
+        'callback' => array($this, 'fieldsReplace'),
+        'method' => 'replace',
+      ),
+      '#submit' => array(array($this, 'addFieldSubmit')),
+    );
+
     return $form;
   }
 
@@ -398,24 +433,8 @@ class DatabaseAggregatorSensorPlugin extends DatabaseAggregatorSensorPluginBase
         $settings['conditions'][] = $condition;
       }
     }
-
-    // Update the verbose output keys.
-    try {
-      $this->currentKeys = $this->sensorConfig->getSetting('keys');
-      $keys = array_filter(explode("\n", $form_state->getValue('keys')));
-      $keys = array_map('trim', $keys);
-      $settings['keys'] = $keys;
-
-      $this->sensorConfig->set('settings', $settings);
-      $this->getQuery()->execute();
-    }
-    catch (DatabaseExceptionWrapper $e) {
-      $settings = $this->sensorConfig->getSettings();
-      $settings['keys'] = $this->currentKeys;
-      $this->sensorConfig->set('settings', $settings);
-      drupal_set_message('Verbose output configuration is invalid, keys were not saved.', 'error');
-      drupal_set_message($e, 'warning');
-    }
+    $settings['fields'] = $form_state->getValue('fields');
+    $this->sensorConfig->set('settings', $settings);
   }
 
   /**
@@ -450,6 +469,36 @@ class DatabaseAggregatorSensorPlugin extends DatabaseAggregatorSensorPluginBase
   }
 
   /**
+   * Returns the updated 'conditions' fieldset for replacement by ajax.
+   *
+   * @param array $form
+   *   The updated form structure array.
+   * @param FormStateInterface $form_state
+   *   The form state structure.
+   *
+   * @return array
+   *   The updated form component for the selected fields.
+   */
+  public function fieldsReplace(array $form, FormStateInterface $form_state) {
+    return $form['plugin_container']['settings']['output_table'];
+  }
+
+  /**
+   * Adds sensor to entity when 'Add field' button is pressed.
+   *
+   * @param array $form
+   *   The form structure array.
+   * @param FormStateInterface $form_state
+   *   The form state structure.
+   */
+  public function addFieldSubmit(array $form, FormStateInterface $form_state) {
+    $form_state->setRebuild();
+
+    $form_state->set('fields_rows', $form_state->get('fields_rows') + 1);
+    drupal_set_message(t('Field added.'), 'status');
+  }
+
+  /**
    * {@inheritdoc}
    */
   public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {
@@ -470,6 +519,30 @@ class DatabaseAggregatorSensorPlugin extends DatabaseAggregatorSensorPluginBase
           t('The specified time interval field %name does not exist.', array('%name' => $field_name)));
       }
     }
+    $fields = $form_state->getValue('fields');
+    foreach ($fields as $key => $field) {
+      $settings = $this->sensorConfig->getSettings();
+      if (!empty($field['field'])) {
+        $settings['fields'] = [$field['field']];
+        $this->sensorConfig->set('settings', $settings);
+        try {
+          $this->getQuery()->range(0, 1)->execute();
+        }
+        catch (\Exception $e) {
+          drupal_set_message('Failed on field: ' . $field['field']);
+          if ($fields[$key] == '') {
+            unset($settings['fields'][$key]);
+          }
+          else {
+            $settings['fields'][$key] = $fields[$key];
+          }
+          unset($fields[$key]);
+          break;
+        }
+        $new_fields[] = (array_pop($fields[$key]));
+      }
+    }
+    $form_state->setValue('fields', $new_fields);
   }
 
 }
