Add support for zfs-autosnapshot format

This commit is contained in:
Bill Thiede 2023-08-16 10:09:20 -07:00
parent 6899f331d6
commit b410d1f1ec

View File

@ -44,9 +44,13 @@ var (
// @zfs-auto-snap_hourly-2023-01-14-19h00U // @zfs-auto-snap_hourly-2023-01-14-19h00U
// @zfs-auto-snap_weekly-2022-12-19-08h00U // @zfs-auto-snap_weekly-2022-12-19-08h00U
// @zfs-auto-snap_monthly-2022-12-01-08h00U // @zfs-auto-snap_monthly-2022-12-01-08h00U
linuxSnapshotPattern = regexp.MustCompile(`^[^@]+@zfs-auto-snap_(?:frequent|daily|hourly|weekly|monthly)-(\d{4}-\d{2}-\d{2}-\d{2}h\d{2}U)$`) linuxSnapshotPattern = regexp.MustCompile(`^[^@]+@zfs-auto-snap_(?:frequent|daily|hourly|weekly|monthly)-(\d{4}-\d{2}-\d{2}-\d{2}h\d{2}U)$`)
// @mom-20230812163001
autosnapshotPattern = regexp.MustCompile(`^[^@]+@[^-]+-(\d{14})$`)
freenasSnapshotFormat = "20060102.1504" freenasSnapshotFormat = "20060102.1504"
linuxSnapshotFormat = "2006-01-02-15h04U" linuxSnapshotFormat = "2006-01-02-15h04U"
autosnapshotFormat = "20060102150405"
fetchRequestDurationMetric = prometheus.NewGauge(prometheus.GaugeOpts{ fetchRequestDurationMetric = prometheus.NewGauge(prometheus.GaugeOpts{
Name: "ssh_fetch_duration_seconds", Name: "ssh_fetch_duration_seconds",
@ -186,6 +190,21 @@ func fetchSnapshotStats(host string, c *ssh.Client) (snapshotStats, error) {
stats[name].Timestamp = t stats[name].Timestamp = t
} }
} }
if m := autosnapshotPattern.FindStringSubmatch(l); len(m) == 2 {
foundSnapshot = true
t, err := time.Parse(autosnapshotFormat, m[1])
if err != nil {
glog.Errorf("[%s] Malformed time in autosnapshot %q: %v", host, m[1], err)
continue
}
glog.V(3).Infof("filesystem: %s timestamp %v", l, t)
stats[name].LinuxCounts++
snapshotTime := stats[name].Timestamp
glog.V(3).Infof("snapshotTime.Before(t) = %v snapshotTime: %v t: %v", snapshotTime.Before(t), snapshotTime, t)
if snapshotTime.Before(t) {
stats[name].Timestamp = t
}
}
if !foundSnapshot { if !foundSnapshot {
glog.V(3).Infof("[%s] Skipping snapshot with non-conforming timestamp %q", host, l) glog.V(3).Infof("[%s] Skipping snapshot with non-conforming timestamp %q", host, l)
} }