@Override
    public String toString() {
        return "SourceMetricData{"
                + "metricGroup=" + metricGroup
                + ", labels=" + labels
                + ", numRecordsIn=" + numRecordsIn.getCount()
                + ", numBytesIn=" + numBytesIn.getCount()
                + ", numRecordsInForMeter=" + numRecordsInForMeter.getCount()
                + ", numBytesInForMeter=" + numBytesInForMeter.getCount()
                + ", numRecordsInPerSecond=" + numRecordsInPerSecond.getRate()
                + ", numBytesInPerSecond=" + numBytesInPerSecond.getRate()
                + ", currentFetchEventTimeLag=" + currentFetchEventTimeLag.getValue()
                + ", currentEmitEventTimeLag=" + currentEmitEventTimeLag.getValue()
                + ", deserializeTimeLag=" + deserializeTimeLag.getValue()
                + ", numDeserializeSuccess=" + numDeserializeSuccess.getCount()
                + ", numDeserializeError=" + numDeserializeError.getCount()
                + ", numSnapshotCreate=" + numSnapshotCreate.getCount()
                + ", numSnapshotError=" + numSnapshotError.getCount()
                + ", snapshotToCheckpointTimeLag=" + snapshotToCheckpointTimeLag.getValue()
                + ", numSnapshotComplete=" + numSnapshotComplete.getCount()
                + ", numRecordsInPerSecond=" + numRecordsInPerSecond.getRate()
                + ", numBytesInPerSecond=" + numBytesInPerSecond.getRate()
                + ", auditReporter=" + auditReporter
                + '}';
    }
flush audit data
usually call this method in close method or when checkpointing
inlong-sort/sort-flink/base/src/main/java/org/apache/inlong/sort/base/metric/SourceExactlyMetric.java