Last active
September 27, 2017 17:57
-
-
Save bachp/9509e9f55efe1eefa0fec1cfbd3fde4a to your computer and use it in GitHub Desktop.
Export rdiff-backup statistics to prometheus
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env python3 | |
| import glob | |
| import os | |
| import sys | |
| # Select file | |
| base = sys.argv[1] | |
| backup = sys.argv[2] | |
| files = glob.glob(os.path.join(base,"rdiff-backup-data/session_statistics.*.data")) | |
| files.sort(reverse=True) | |
| iname = next(iter(files or []), None) | |
| oname = "/var/lib/prometheus/node-exporter/%s_rdiff.prom" % backup | |
| import re | |
| def prom_name(name, prefix=""): | |
| s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name) | |
| return prefix + re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).lower() | |
| def prom_attrs(attrs): | |
| attr_str = ",".join(["%s=\"%s\"" % (k,v) for (k,v) in attrs.items()]) | |
| return "{%s}" % attr_str if attr_str != "" else "" | |
| bkp_attrs = {"backup":backup} if backup else {} | |
| def metrics(data): | |
| out = [] | |
| for line in data.readlines(): | |
| (name, value, *detail) = line.split() | |
| pname = prom_name(name, prefix="rdiff_") | |
| pattrs = prom_attrs(bkp_attrs) | |
| phelp = "# HELP %s %s" % (pname, name) | |
| out.append("%s\n%s%s %s\n" % (phelp, pname, pattrs, value)) | |
| return out | |
| with open(oname+".$$", "w") as o, open(iname, "r") as i: | |
| o.writelines(metrics(i)) | |
| os.rename(oname+".$$", oname) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment