code: private void pushEvent(GobblinTrackingEvent event) throws IOException {
  
      Map<String, String> metadata = event.getMetadata();
      String name = getMetricName(metadata, event.getName());
      long timestamp = event.getTimestamp() / 1000l;
      MultiPartEvent multipartEvent = MultiPartEvent.getEvent(metadata.get(EventSubmitter.EVENT_TYPE));
      if (multipartEvent == null) {
        graphitePusher.push(JOINER.join(prefix, name), EMTPY_VALUE, timestamp);
      }
      else {
        for (String field : multipartEvent.getMetadataFields()) {
          String value = metadata.get(field);
          if (value == null) {
            graphitePusher.push(JOINER.join(prefix, name, field), EMTPY_VALUE, timestamp);
          } else {
            if (emitAsKey(field)) {
              // metric value is emitted as part of the keys
              graphitePusher.push(JOINER.join(prefix, name, field, value), EMTPY_VALUE, timestamp);
            } else {
              graphitePusher.push(JOINER.join(prefix, name, field), convertValue(field, value), timestamp);
            }
          }
        }
      }
    }
docs: Extracts the event and its metadata from {@link GobblinTrackingEvent} and creates
  timestamped name value pairs
  
  @param event {@link GobblinTrackingEvent} to be reported
  @throws IOException