diff --git a/etc/backupninja.conf.in b/etc/backupninja.conf.in
index f2366a32b782c8bf8e00d3dcd4b54209729cd29f..60bd90d0691eeab1003690552fb767fe5e30c852 100644
--- a/etc/backupninja.conf.in
+++ b/etc/backupninja.conf.in
@@ -13,6 +13,10 @@
 # 1 -- Fatal errors           (only)
 loglevel = 4
 
+# Produce prometheus metrics of backup status (default = no).
+# Requires `prometheus-node-exporter` to be installed
+reportprom = false
+
 # send a summary of the backup status to
 # this email address:
 reportemail = root
diff --git a/src/backupninja.in b/src/backupninja.in
index 10a8c6632b453f1cb48b8414b8c21243f09dcaf7..b84e436930131c4af6f3d1d5c41c057eefcc9606 100755
--- a/src/backupninja.in
+++ b/src/backupninja.in
@@ -513,6 +513,8 @@ setfile $conffile
 getconf configdirectory @CFGDIR@/backup.d
 getconf scriptdirectory @datadir@
 getconf reportdirectory
+getconf reportprom
+getconf prom_textfile_dir /var/lib/prometheus/node-exporter
 getconf reportemail
 getconf reporthost
 getconf reportspace
@@ -601,10 +603,10 @@ for file in $files; do
    fi
 done
 
-## mail the messages to the report address
+## reporting
 
 if [ $actions_run == 0 ]; then doit=0
-elif [ "$reportemail" == "" ]; then doit=0
+elif [ "$reportemail" == "" -a "$reportprom" == "" ]; then doit=0
 elif [ $fatals != 0 ]; then doit=1
 elif [ $errors != 0 ]; then doit=1
 elif [ $halts != 0 ]; then doit=1
@@ -614,36 +616,82 @@ else doit=0
 fi
 
 if [ $doit == 1 ]; then
-   if [ -x "$(which mail 2>/dev/null)" ]; then
-      debug "send report to $reportemail"
-      hostname=`hostname`
-      [ $warnings == 0 ] || subject="WARNING"
-      [ $errors == 0 ] || subject="ERROR"
-      [ $fatals == 0 ] || subject="FAILED"
-      [ $halts == 0 ] || subject="HALTED"
-
-      {
-         for ((i=0; i < ${#messages[@]} ; i++)); do
-            echo ${messages[$i]}
-         done
-         echo -e "$errormsg"
-         if [ "$reportspace" == "yes" ]; then
-            previous=""
-            for i in $(ls "$configdirectory"); do
-               backuploc=$(grep ^directory "$configdirectory"/"$i" | @AWK@ '{print $3}')
-               if [ "$backuploc" != "$previous" -a -n "$backuploc" -a -d "$backuploc" ]; then
-                  df -h "$backuploc"
-                  previous="$backuploc"
-               fi
-            done
+   if [ ! -z "$reportprom" ]; then
+      if [ -d "$prom_textfile_dir" ]; then
+         debug "reporting to prometheus"
+         hostname=`hostname`
+
+         # set some defaults, so there aren't empty strings
+         [ ! -z $warnings ] || warnings=0
+         [ ! -z $errors ] || errors=0
+         [ ! -z $fatals ] || fatals=0
+         [ ! -z $halts ] || halts=0
+         [ ! -z $actions_run ] || actions_run=0
+
+         output_file="${prom_textfile_dir}/backupninja.prom"
+         tmp_file="${output_file}.$$"
+         trap "rm -f $tmp_file 2>/dev/null" EXIT INT TERM
+         cat <<EOF > "$tmp_file"
+# HELP backupninja_warnings Number of warnings reported by Backupninja
+# TYPE backupninja_warnings gauge
+# HELP backupninja_errors Number of errors reported by Backupninja
+# TYPE backupninja_errors gauge
+# HELP backupninja_fatals Number of fatals reported by Backupninja
+# TYPE backupninja_fatals gauge
+# HELP backupninja_halts Number of halts reported by Backupninja
+# TYPE backupninja_halts gauge
+# HELP backupninja_actions Number of actions run by Backupninja
+# TYPE backupninja_actions gauge
+backupninja_warnings{host="$hostname"} $warnings
+backupninja_errors{host="$hostname"} $errors
+backupninja_fatals{host="$hostname"} $fatals
+backupninja_halts{host="$hostname"} $halts
+backupninja_actions{host="$hostname"} $actions_run
+EOF
+         if [ $? -gt 0 ]; then
+            rm -f "$tmp_file" 2>/dev/null
+            error "could not write metrics to ${prom_textfile_dir}!"
+            let "errors +-1"
+         else
+            mv -f "$tmp_file" "$output_file"
+            chmod 0644 "$output_file"
          fi
-      } | fold -s -w "$reportwrap" | mail -s "backupninja: $hostname $subject" $reportemail
-   else
-      error "Unable to locate mail executable, email report not sent!"
-      let "errors += 1"
+      else
+         error "$prom_textfile_dir does not exist!"
+         let "errors +-1"
+      fi
+   fi
+   if [ ! -z "$reportemail" ]; then
+      if [ -x "$(which mail 2>/dev/null)" ]; then
+         debug "send report to $reportemail"
+         hostname=`hostname`
+         [ $warnings == 0 ] || subject="WARNING"
+         [ $errors == 0 ] || subject="ERROR"
+         [ $fatals == 0 ] || subject="FAILED"
+         [ $halts == 0 ] || subject="HALTED"
+
+         {
+            for ((i=0; i < ${#messages[@]} ; i++)); do
+               echo ${messages[$i]}
+            done
+            echo -e "$errormsg"
+            if [ "$reportspace" == "yes" ]; then
+               previous=""
+               for i in $(ls "$configdirectory"); do
+                  backuploc=$(grep ^directory "$configdirectory"/"$i" | @AWK@ '{print $3}')
+                  if [ "$backuploc" != "$previous" -a -n "$backuploc" -a -d "$backuploc" ]; then
+                     df -h "$backuploc"
+                     previous="$backuploc"
+                  fi
+               done
+            fi
+         } | fold -s -w "$reportwrap" | mail -s "backupninja: $hostname $subject" $reportemail
+      else
+         error "Unable to locate mail executable, email report not sent!"
+         let "errors += 1"
+      fi
    fi
 fi
-
 if [ $actions_run != 0 ]; then
    info "FINISHED: $actions_run actions run. $fatals fatal. $errors error. $warnings warning."
    if [ "$halts" != "0" ]; then