diff --git a/cmd/kured/main.go b/cmd/kured/main.go
index 387e60961a20..eeea9fc1cb22 100644
--- a/cmd/kured/main.go
+++ b/cmd/kured/main.go
@@ -9,7 +9,7 @@ import (
 	"regexp"
 	"time"
 
-	log "github.com/sirupsen/logrus"
+	"github.com/sirupsen/logrus"
 	"github.com/spf13/cobra"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/client-go/kubernetes"
@@ -21,6 +21,7 @@ import (
 	"github.com/weaveworks/kured/pkg/daemonsetlock"
 	"github.com/weaveworks/kured/pkg/delaytick"
 	"github.com/weaveworks/kured/pkg/notifications/slack"
+	"github.com/weaveworks/kured/pkg/notifications/telemetrics"
 	"github.com/weaveworks/kured/pkg/timewindow"
 )
 
@@ -28,17 +29,19 @@ var (
 	version = "unreleased"
 
 	// Command line flags
-	period         time.Duration
-	dsNamespace    string
-	dsName         string
-	lockAnnotation string
-	prometheusURL  string
-	alertFilter    *regexp.Regexp
-	rebootSentinel string
-	slackHookURL   string
-	slackUsername  string
-	slackChannel   string
-	podSelectors   []string
+	period             time.Duration
+	dsNamespace        string
+	dsName             string
+	lockAnnotation     string
+	prometheusURL      string
+	alertFilter        *regexp.Regexp
+	rebootSentinel     string
+	slackHookURL       string
+	slackUsername      string
+	slackChannel       string
+	podSelectors       []string
+	telemetricsEnabled bool
+	telemetricsLevel   int
 
 	rebootDays  []string
 	rebootStart string
@@ -51,6 +54,8 @@ var (
 		Name:      "reboot_required",
 		Help:      "OS requires reboot due to software updates.",
 	}, []string{"node"})
+
+	log = logrus.New()
 )
 
 func init() {
@@ -97,6 +102,11 @@ func main() {
 	rootCmd.PersistentFlags().StringVar(&timezone, "time-zone", "UTC",
 		"use this timezone for schedule inputs")
 
+	rootCmd.PersistentFlags().BoolVarP(&telemetricsEnabled, "telemetrics", "", false,
+		"Enable telemetrics messages")
+	rootCmd.PersistentFlags().IntVarP(&telemetricsLevel, "telemetrics-level", "", 2,
+		"Only telemetrics messages with this or a higher severity level are submitted")
+
 	if err := rootCmd.Execute(); err != nil {
 		log.Fatal(err)
 	}
@@ -106,15 +116,15 @@ func main() {
 func newCommand(name string, arg ...string) *exec.Cmd {
 	cmd := exec.Command(name, arg...)
 
-	cmd.Stdout = log.NewEntry(log.StandardLogger()).
+	cmd.Stdout = logrus.NewEntry(logrus.StandardLogger()).
 		WithField("cmd", cmd.Args[0]).
 		WithField("std", "out").
-		WriterLevel(log.InfoLevel)
+		WriterLevel(logrus.InfoLevel)
 
-	cmd.Stderr = log.NewEntry(log.StandardLogger()).
+	cmd.Stderr = logrus.NewEntry(logrus.StandardLogger()).
 		WithField("cmd", cmd.Args[0]).
 		WithField("std", "err").
-		WriterLevel(log.WarnLevel)
+		WriterLevel(logrus.WarnLevel)
 
 	return cmd
 }
@@ -234,6 +244,9 @@ func drain(nodeID string) {
 			log.Warnf("Error notifying slack: %v", err)
 		}
 	}
+	if telemetricsEnabled {
+		telemetrics.NotifyDrain(nodeID)
+	}
 
 	drainCmd := newCommand("/usr/bin/kubectl", "drain",
 		"--ignore-daemonsets", "--delete-local-data", "--force", nodeID)
@@ -259,6 +272,9 @@ func commandReboot(nodeID string) {
 			log.Warnf("Error notifying slack: %v", err)
 		}
 	}
+	if telemetricsEnabled {
+		telemetrics.NotifyReboot(nodeID)
+	}
 
 	// Relies on hostPID:true and privileged:true to enter host mount space
 	rebootCmd := newCommand("/usr/bin/nsenter", "-m/proc/1/ns/mnt", "/bin/systemctl", "reboot")
@@ -347,6 +363,13 @@ func root(cmd *cobra.Command, args []string) {
 	log.Infof("Blocking Pod Selectors: %v", podSelectors)
 	log.Infof("Reboot on: %v", window)
 
+	if telemetricsEnabled {
+		hook, err := telemetrics.NewTelemetricsHook(telemetricsEnabled, telemetricsLevel)
+		if err == nil {
+			log.Hooks.Add(hook)
+		}
+	}
+
 	go rebootAsRequired(nodeID, window)
 	go maintainRebootRequiredMetric(nodeID)
 
diff --git a/kured-ds.yaml b/kured-ds.yaml
index b2df4db42f05..ee732c46dd2b 100644
--- a/kured-ds.yaml
+++ b/kured-ds.yaml
@@ -61,3 +61,5 @@ spec:
 #            - --slack-channel=alerting
 #            - --start-time=0:00
 #            - --time-zone=UTC
+#            - --telemetrics
+#            - --telemetrics-level=2
diff --git a/pkg/notifications/telemetrics/telemetrics.go b/pkg/notifications/telemetrics/telemetrics.go
new file mode 100644
index 000000000000..d72b7f363650
--- /dev/null
+++ b/pkg/notifications/telemetrics/telemetrics.go
@@ -0,0 +1,70 @@
+package telemetrics
+
+import (
+        "os"
+        "os/exec"
+	"fmt"
+	"github.com/sirupsen/logrus"
+	"strconv"
+)
+
+func notify(severity int, message string) error {
+        // Relies on hostPID:true and privileged:true to enter host mount space
+        telemCmd := exec.Command("/usr/bin/nsenter", "-m/proc/1/ns/mnt",
+        "--", "/usr/bin/telem-record-gen", "-s", strconv.Itoa(severity), "-c",
+        "works.weave/kured/reboot", "--payload", message)
+        if err := telemCmd.Run(); err != nil {
+		fmt.Fprintf(os.Stderr, "Error invoking telm-record-gen command: %v", err)
+		return err
+        }
+	return nil
+}
+
+func NotifyDrain(nodeID string) error {
+	return notify(1, fmt.Sprintf("Draining node %s", nodeID))
+}
+
+func NotifyReboot(nodeID string) error {
+	return notify(1, fmt.Sprintf("Rebooting node %s", nodeID))
+}
+
+type TelemetricsHook struct {
+        enabled bool
+	min_level int
+}
+
+func NewTelemetricsHook(enabled bool, min_level int) (*TelemetricsHook, error) {
+	return &TelemetricsHook{enabled, min_level}, nil
+}
+
+func (hook *TelemetricsHook) Fire(entry *logrus.Entry) error {
+	switch entry.Level {
+	case logrus.PanicLevel, logrus.FatalLevel:
+		if hook.min_level <= 4 {
+			return notify (4, entry.Message)
+		}
+	case logrus.ErrorLevel:
+		if hook.min_level <= 3 {
+			return notify (3, entry.Message)
+		}
+	case logrus.WarnLevel:
+		if hook.min_level <= 2 {
+			return notify (2, entry.Message)
+		}
+	case logrus.InfoLevel:
+		if hook.min_level <= 1 {
+			return notify (1, entry.Message)
+		}
+	case logrus.DebugLevel, logrus.TraceLevel:
+		if hook.min_level == 0 {
+			return notify (1, entry.Message)
+		}
+	default:
+		return nil
+	}
+	return nil
+}
+
+func (hook *TelemetricsHook) Levels() []logrus.Level {
+	return logrus.AllLevels
+}
