#include <sys/statfs.h>
#include <memory>
+#include "metrics.h"
#include "timebase.h"
DiskSpaceEstimator::DiskSpaceEstimator(DiskSpaceEstimator::callback_t callback)
: callback(callback)
{
+ global_metrics.add("disk_free_bytes", &metric_disk_free_bytes, Metrics::TYPE_GAUGE);
}
void DiskSpaceEstimator::report_write(const std::string &filename, uint64_t pts)
return;
}
+ off_t free_bytes = off_t(fst.f_bavail) * fst.f_frsize;
+ metric_disk_free_bytes = free_bytes;
+
if (!measure_points.empty()) {
- off_t free_bytes = off_t(fst.f_bavail) * fst.f_frsize;
double bytes_per_second = double(st.st_size - measure_points.front().size) /
(pts - measure_points.front().pts) * TIMEBASE;
double seconds_left = free_bytes / bytes_per_second;
#include <stdint.h>
#include <sys/types.h>
+#include <atomic>
#include <deque>
#include <functional>
#include <string>
off_t size;
};
std::deque<MeasurePoint> measure_points;
+
+ // Metrics.
+ std::atomic<int64_t> metric_disk_free_bytes{-1};
};
extern DiskSpaceEstimator *global_disk_space_estimator;