-
Notifications
You must be signed in to change notification settings - Fork 0
/
metrics.go
56 lines (47 loc) · 1.64 KB
/
metrics.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package application
import (
"time"
"github.com/Sirupsen/logrus"
"github.com/timshannon/bolthold"
)
type MetricData struct {
CollectionTime time.Time
CollectionDuration string
Submitted bool
SubmittedOn time.Time
SubmittedTransactionCode string
About *MetricAbout
Info *[]MetricInfo
Savings *MetricSavings
Platform *MetricPlatform
Datastores *MetricDatastores
Nodes *MetricNodes
VM *MetricVirtualMachines
Summary *MetricSummary
}
func (a *Application) gatherAndRecordMetrics() {
var metrics MetricData
metrics.Submitted = false
metrics.CollectionTime = time.Now()
if a.metricGetToken() {
metrics.About = a.metricGetAbout()
metrics.Info = a.metricGetClusterInfo()
metrics.Savings, metrics.Nodes = a.metricGetSavings()
metrics.Platform = a.metricGetPlatform()
metrics.VM = a.metricGetVirtualMachines()
metrics.Datastores = a.metricGetDatastores()
metrics.Summary = a.metricGetSummary()
metrics.Nodes = a.metricGetFurtherNodeInfo(metrics.Nodes)
}
metrics.CollectionDuration = time.Since(metrics.CollectionTime).String()
a.saveMetricsToLocalDB(metrics)
a.Logger.Debug("Metrics gathered successfully.")
}
func (a *Application) saveMetricsToLocalDB(m MetricData) {
err := a.db.data.Insert(bolthold.NextSequence(), m)
if err == nil {
a.Logger.WithFields(logrus.Fields{"Saved": "MetricData"}).Debug("Saved information to DB successfully.")
} else {
a.Logger.WithFields(logrus.Fields{"Error": err}).Debug("Failed to save information to DB.")
}
}