Formatting

This commit is contained in:
Thomas Roehl
2021-11-25 15:11:39 +01:00
parent a88ea4fd43
commit 9232dd9732
15 changed files with 577 additions and 566 deletions

View File

@@ -3,37 +3,36 @@ package collectors
import (
lp "github.com/influxdata/line-protocol"
"io/ioutil"
// "log"
// "log"
"encoding/json"
"errors"
"strconv"
"strings"
"time"
"encoding/json"
"errors"
)
const DISKSTATFILE = `/proc/diskstats`
const DISKSTAT_SYSFSPATH = `/sys/block`
type DiskstatCollectorConfig struct {
ExcludeMetrics []string `json:"exclude_metrics, omitempty"`
ExcludeMetrics []string `json:"exclude_metrics, omitempty"`
}
type DiskstatCollector struct {
MetricCollector
matches map[int]string
config DiskstatCollectorConfig
config DiskstatCollectorConfig
}
func (m *DiskstatCollector) Init(config []byte) error {
var err error
var err error
m.name = "DiskstatCollector"
m.setup()
if len(config) > 0 {
err = json.Unmarshal(config, &m.config)
if err != nil {
return err
}
err = json.Unmarshal(config, &m.config)
if err != nil {
return err
}
}
// https://www.kernel.org/doc/html/latest/admin-guide/iostats.html
matches := map[int]string{
@@ -57,58 +56,57 @@ func (m *DiskstatCollector) Init(config []byte) error {
}
m.matches = make(map[int]string)
for k, v := range matches {
_, skip := stringArrayContains(m.config.ExcludeMetrics, v)
if (!skip) {
m.matches[k] = v
}
_, skip := stringArrayContains(m.config.ExcludeMetrics, v)
if !skip {
m.matches[k] = v
}
}
if len(m.matches) == 0 {
return errors.New("No metrics to collect")
return errors.New("No metrics to collect")
}
_, err = ioutil.ReadFile(string(DISKSTATFILE))
if err == nil {
m.init = true
}
if err == nil {
m.init = true
}
return err
}
func (m *DiskstatCollector) Read(interval time.Duration, out *[]lp.MutableMetric) {
var lines []string
if !m.init {
return
}
var lines []string
if !m.init {
return
}
buffer, err := ioutil.ReadFile(string(DISKSTATFILE))
if err != nil {
return
}
lines = strings.Split(string(buffer), "\n")
buffer, err := ioutil.ReadFile(string(DISKSTATFILE))
if err != nil {
return
}
lines = strings.Split(string(buffer), "\n")
for _, line := range lines {
if len(line) == 0 {
continue
}
f := strings.Fields(line)
if strings.Contains(f[2], "loop") {
continue
}
tags := map[string]string{
"device": f[2],
"type": "node",
}
for idx, name := range m.matches {
if idx < len(f) {
x, err := strconv.ParseInt(f[idx], 0, 64)
if err == nil {
y, err := lp.New(name, tags, map[string]interface{}{"value": int(x)}, time.Now())
if err == nil {
*out = append(*out, y)
}
}
}
}
}
for _, line := range lines {
if len(line) == 0 {
continue
}
f := strings.Fields(line)
if strings.Contains(f[2], "loop") {
continue
}
tags := map[string]string{
"device": f[2],
"type": "node",
}
for idx, name := range m.matches {
if idx < len(f) {
x, err := strconv.ParseInt(f[idx], 0, 64)
if err == nil {
y, err := lp.New(name, tags, map[string]interface{}{"value": int(x)}, time.Now())
if err == nil {
*out = append(*out, y)
}
}
}
}
}
return
}