config support for init and transform scripts
This commit is contained in:
parent
061d77c76a
commit
800c9b2e3e
70
config.yml
70
config.yml
|
@ -12,11 +12,11 @@ runcharts:
|
||||||
scale: 3
|
scale: 3
|
||||||
items:
|
items:
|
||||||
- label: GOOGLE
|
- label: GOOGLE
|
||||||
value: curl -o /dev/null -s -w '%{time_total}' https://www.google.com
|
sample: curl -o /dev/null -s -w '%{time_total}' https://www.google.com
|
||||||
- label: YAHOO
|
- label: YAHOO
|
||||||
value: curl -o /dev/null -s -w '%{time_total}' https://search.yahoo.com
|
sample: curl -o /dev/null -s -w '%{time_total}' https://search.yahoo.com
|
||||||
- label: BING
|
- label: BING
|
||||||
value: curl -o /dev/null -s -w '%{time_total}' https://www.bing.com
|
sample: curl -o /dev/null -s -w '%{time_total}' https://www.bing.com
|
||||||
- title: MONGO COLLECTIONS COUNT
|
- title: MONGO COLLECTIONS COUNT
|
||||||
position: [[53, 0], [27, 8]]
|
position: [[53, 0], [27, 8]]
|
||||||
legend:
|
legend:
|
||||||
|
@ -25,9 +25,11 @@ runcharts:
|
||||||
scale: 0
|
scale: 0
|
||||||
items:
|
items:
|
||||||
- label: ACTIVE
|
- label: ACTIVE
|
||||||
value: mongo --quiet --host=localhost blog --eval "db.getCollection('posts').find({status:'ACTIVE'}).itcount()"
|
init: mongo --quiet --host=localhost blog
|
||||||
|
sample: mongo --quiet --host=localhost blog --eval "db.getCollection('posts').find({status:'INACTIVE'}).itcount()"
|
||||||
|
transform: $sample | grep cpu
|
||||||
- label: INACTIVE
|
- label: INACTIVE
|
||||||
value: mongo --quiet --host=localhost blog --eval "db.getCollection('posts').find({status:'INACTIVE'}).itcount()"
|
sample: mongo --quiet --host=localhost blog --eval "db.getCollection('posts').find({status:'INACTIVE'}).itcount()"
|
||||||
barcharts:
|
barcharts:
|
||||||
- title: EVENTS BY STATUS
|
- title: EVENTS BY STATUS
|
||||||
refresh-rate-ms: 1000
|
refresh-rate-ms: 1000
|
||||||
|
@ -35,34 +37,40 @@ barcharts:
|
||||||
scale: 0
|
scale: 0
|
||||||
items:
|
items:
|
||||||
- label: NEW
|
- label: NEW
|
||||||
value: mongo --quiet --host=localhost blog --eval "db.getCollection('posts').find({status:'ACTIVE'}).itcount()"
|
sample: mongo --quiet --host=localhost blog --eval "db.getCollection('posts').find({status:'ACTIVE'}).itcount()"
|
||||||
- label: TRIGGERED
|
- label: TRIGGERED
|
||||||
value: mongo --quiet --host=localhost blog --eval "db.getCollection('posts').find({status:'INACTIVE'}).itcount()"
|
sample: mongo --quiet --host=localhost blog --eval "db.getCollection('posts').find({status:'INACTIVE'}).itcount()"
|
||||||
- label: IN_PROCESS
|
- label: IN_PROCESS
|
||||||
value: echo 0
|
sample: echo 0
|
||||||
- label: FAILED
|
- label: FAILED
|
||||||
value: mongo --quiet --host=localhost blog --eval "db.getCollection('posts').find({status:'ACTIVE'}).itcount()"
|
sample: mongo --quiet --host=localhost blog --eval "db.getCollection('posts').find({status:'ACTIVE'}).itcount()"
|
||||||
- label: FINISHED
|
- label: FINISHED
|
||||||
value: mongo --quiet --host=localhost blog --eval "db.getCollection('posts').find({status:'INACTIVE'}).itcount()"
|
sample: mongo --quiet --host=localhost blog --eval "db.getCollection('posts').find({status:'INACTIVE'}).itcount()"
|
||||||
gauges:
|
gauges:
|
||||||
- title: YEAR PROGRESS
|
- title: YEAR PROGRESS
|
||||||
position: [[53, 8], [27, 2]]
|
position: [[53, 8], [27, 2]]
|
||||||
values:
|
cur:
|
||||||
cur: date +%j
|
sample: date +%j
|
||||||
max: echo 365
|
max:
|
||||||
min: echo 0
|
sample: echo 365
|
||||||
|
min:
|
||||||
|
sample: echo 0
|
||||||
- title: DAY PROGRESS
|
- title: DAY PROGRESS
|
||||||
position: [[53, 10], [27, 2]]
|
position: [[53, 10], [27, 2]]
|
||||||
values:
|
cur:
|
||||||
cur: date +%H
|
sample: date +%H
|
||||||
max: echo 24
|
max:
|
||||||
min: echo 0
|
sample: echo 24
|
||||||
|
min:
|
||||||
|
sample: echo 0
|
||||||
- title: HOUR PROGRESS
|
- title: HOUR PROGRESS
|
||||||
position: [[53, 12], [27, 2]]
|
position: [[53, 12], [27, 2]]
|
||||||
values:
|
cur:
|
||||||
cur: date +%M
|
sample: date +%M
|
||||||
max: echo 60
|
max:
|
||||||
min: echo 0
|
sample: echo 60
|
||||||
|
min:
|
||||||
|
sample: echo 0
|
||||||
- title: MINUTE PROGRESS
|
- title: MINUTE PROGRESS
|
||||||
position: [[53, 14], [27, 2]]
|
position: [[53, 14], [27, 2]]
|
||||||
triggers:
|
triggers:
|
||||||
|
@ -71,24 +79,26 @@ gauges:
|
||||||
actions:
|
actions:
|
||||||
sound: true
|
sound: true
|
||||||
script: say -v samantha `date +%I:%M%p`
|
script: say -v samantha `date +%I:%M%p`
|
||||||
values:
|
cur:
|
||||||
cur: date +%S
|
sample: date +%S
|
||||||
max: echo 60
|
max:
|
||||||
min: echo 0
|
sample: echo 60
|
||||||
|
min:
|
||||||
|
sample: echo 0
|
||||||
asciiboxes:
|
asciiboxes:
|
||||||
- title: LOCAL TIME
|
- title: LOCAL TIME
|
||||||
position: [[53, 17], [27, 5]]
|
position: [[53, 17], [27, 5]]
|
||||||
value: date +%r
|
sample: date +%r
|
||||||
- title: UTC TIME
|
- title: UTC TIME
|
||||||
position: [[53, 22], [27, 7]]
|
position: [[53, 22], [27, 7]]
|
||||||
value: env TZ=UTC date +%r
|
sample: env TZ=UTC date +%r
|
||||||
font: 3d
|
font: 3d
|
||||||
sparklines:
|
sparklines:
|
||||||
- title: CPU usage
|
- title: CPU usage
|
||||||
position: [[27, 22], [25, 7]]
|
position: [[27, 22], [25, 7]]
|
||||||
scale: 0
|
scale: 0
|
||||||
value: ps -A -o %cpu | awk '{s+=$1} END {print s}'
|
sample: ps -A -o %cpu | awk '{s+=$1} END {print s}'
|
||||||
- title: Memory pages free
|
- title: Memory pages free
|
||||||
position: [[27, 17], [25, 5]]
|
position: [[27, 17], [25, 5]]
|
||||||
scale: 0
|
scale: 0
|
||||||
value: memory_pressure | grep 'Pages free' | awk '{print $3}'
|
sample: memory_pressure | grep 'Pages free' | awk '{print $3}'
|
||||||
|
|
|
@ -47,10 +47,11 @@ type ActionsConfig struct {
|
||||||
|
|
||||||
type GaugeConfig struct {
|
type GaugeConfig struct {
|
||||||
ComponentConfig `yaml:",inline"`
|
ComponentConfig `yaml:",inline"`
|
||||||
Scale *int `yaml:"scale,omitempty"`
|
Scale *int `yaml:"scale,omitempty"`
|
||||||
Color *ui.Color `yaml:"color,omitempty"`
|
Color *ui.Color `yaml:"color,omitempty"`
|
||||||
Values map[string]string `yaml:"values"`
|
Cur Item `yaml:"cur"`
|
||||||
Items []Item `yaml:",omitempty"`
|
Max Item `yaml:"max"`
|
||||||
|
Min Item `yaml:"min"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type SparkLineConfig struct {
|
type SparkLineConfig struct {
|
||||||
|
@ -85,9 +86,11 @@ type LegendConfig struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type Item struct {
|
type Item struct {
|
||||||
Label *string `yaml:"label,omitempty"`
|
Label *string `yaml:"label,omitempty"`
|
||||||
Script string `yaml:"value"`
|
Color *ui.Color `yaml:"color,omitempty"`
|
||||||
Color *ui.Color `yaml:"color,omitempty"`
|
InitScript *string `yaml:"init,omitempty"`
|
||||||
|
SampleScript *string `yaml:"sample"`
|
||||||
|
TransformScript *string `yaml:"transform,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Location struct {
|
type Location struct {
|
||||||
|
|
|
@ -89,12 +89,15 @@ func (c *Config) setDefaultValues() {
|
||||||
p := defaultScale
|
p := defaultScale
|
||||||
g.Scale = &p
|
g.Scale = &p
|
||||||
}
|
}
|
||||||
var items []Item
|
|
||||||
for label, script := range g.Values {
|
cur := "cur"
|
||||||
l := label
|
max := "max"
|
||||||
items = append(items, Item{Label: &l, Script: script})
|
min := "min"
|
||||||
}
|
|
||||||
g.Items = items
|
g.Cur.Label = &cur
|
||||||
|
g.Max.Label = &max
|
||||||
|
g.Min.Label = &min
|
||||||
|
|
||||||
c.Gauges[i] = g
|
c.Gauges[i] = g
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
17
data/item.go
17
data/item.go
|
@ -9,9 +9,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type Item struct {
|
type Item struct {
|
||||||
Label string
|
Label string
|
||||||
Script string
|
SampleScript string
|
||||||
Color *ui.Color
|
InitScript *string
|
||||||
|
TransformScript *string
|
||||||
|
Color *ui.Color
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewItems(cfgs []config.Item) []Item {
|
func NewItems(cfgs []config.Item) []Item {
|
||||||
|
@ -19,7 +21,12 @@ func NewItems(cfgs []config.Item) []Item {
|
||||||
items := make([]Item, 0)
|
items := make([]Item, 0)
|
||||||
|
|
||||||
for _, i := range cfgs {
|
for _, i := range cfgs {
|
||||||
item := Item{Label: *i.Label, Script: i.Script, Color: i.Color}
|
item := Item{
|
||||||
|
Label: *i.Label,
|
||||||
|
SampleScript: *i.SampleScript,
|
||||||
|
InitScript: i.InitScript,
|
||||||
|
TransformScript: i.TransformScript,
|
||||||
|
Color: i.Color}
|
||||||
items = append(items, item)
|
items = append(items, item)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,7 +35,7 @@ func NewItems(cfgs []config.Item) []Item {
|
||||||
|
|
||||||
func (i *Item) nextValue(variables []string) (value string, err error) {
|
func (i *Item) nextValue(variables []string) (value string, err error) {
|
||||||
|
|
||||||
cmd := exec.Command("sh", "-c", i.Script)
|
cmd := exec.Command("sh", "-c", i.SampleScript)
|
||||||
cmd.Env = os.Environ()
|
cmd.Env = os.Environ()
|
||||||
|
|
||||||
for _, variable := range variables {
|
for _, variable := range variables {
|
||||||
|
|
2
main.go
2
main.go
|
@ -68,7 +68,7 @@ func main() {
|
||||||
|
|
||||||
for _, c := range cfg.Gauges {
|
for _, c := range cfg.Gauges {
|
||||||
cpt := gauge.NewGauge(c, palette)
|
cpt := gauge.NewGauge(c, palette)
|
||||||
starter.start(cpt, cpt.Consumer, c.ComponentConfig, c.Items, c.Triggers)
|
starter.start(cpt, cpt.Consumer, c.ComponentConfig, []config.Item{c.Cur, c.Min, c.Max}, c.Triggers)
|
||||||
}
|
}
|
||||||
|
|
||||||
handler := event.NewHandler(lout, opt)
|
handler := event.NewHandler(lout, opt)
|
||||||
|
|
Loading…
Reference in New Issue