func (e *Executor) GetNetstats(node *corev1.Pod) (*Netstats, error) {
	out, err := e.run(node, "netstats", []string{})
	if err != nil || out == "" {
		return nil, err
	}
	scanner := bufio.NewScanner(strings.NewReader(out))
	netstat := &Netstats{}
	for scanner.Scan() {
		line := scanner.Text()
		if line == "" {
			continue
		}
		splitLine := strings.Split(line, ":")
		if len(splitLine) == 2 {
			key := splitLine[0]
			value := strings.TrimSpace(splitLine[1])
			if key == "Mode" {
				netstat.Mode = NodeMode(value)
				continue
			}
			if key == "Attempted" {
				attempted, err := strconv.Atoi(value)
				if err != nil {
					return nil, err
				}
				netstat.AttemptedReadRepairOps = attempted
				continue
			}
			if key == "Mismatch (Blocking)" {
				blocking, err := strconv.Atoi(value)
				if err != nil {
					return nil, err
				}
				netstat.MismatchBlockingReadRepairOps = blocking
				continue
			}
			if key == "Mismatch (Background)" {
				bg, err := strconv.Atoi(value)
				if err != nil {
					return nil, err
				}
				netstat.MismatchBgReadRepairOps = bg
				continue
			}
		}
		if strings.Contains(line, "Pool Name") {
			netstat.ThreadPoolNetstats = []ThreadPoolNetstat{}
			for scanner.Scan() {
				stat, err := processThreadPool(scanner.Text())
				if err != nil {
					return nil, err
				}
				netstat.ThreadPoolNetstats = append(netstat.ThreadPoolNetstats, *stat)
			}
		}
	}
	return netstat, nil
}
GetNetstats triggers nodetool netstats which provides information about the host
package nodetool
import (
	"bufio"
	corev1 "k8s.io/api/core/v1"
	"strconv"
	"strings"
	"unicode"
)
const (
	na = "n/a"
)
type Netstats struct {
	Mode NodeMode
	AttemptedReadRepairOps int
	MismatchBlockingReadRepairOps int
	MismatchBgReadRepairOps int
	ThreadPoolNetstats []ThreadPoolNetstat
}
type ThreadPoolNetstat struct {
	Name      string
	Active    int
	Pending   int
	Completed int
	Dropped   int
}