Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds support for YAML configuration files #67

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 17 additions & 5 deletions cmd/grafterm/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"fmt"
"os"
"os/signal"
"path/filepath"
"syscall"
"time"

Expand Down Expand Up @@ -168,12 +169,23 @@ func loadConfiguration(cfgPath string) (configuration.Configuration, error) {
}
defer f.Close()

cfg, err := configuration.JSONLoader{}.Load(f)
if err != nil {
return nil, err
}
switch filepath.Ext(cfgPath) {
case ".yaml", ".yml":
cfg, err := configuration.YAMLLoader{}.Load(f)
if err != nil {
return nil, err
}
return cfg, nil

return cfg, nil
case ".json":
fallthrough
default:
cfg, err := configuration.JSONLoader{}.Load(f)
if err != nil {
return nil, err
}
return cfg, nil
}
}

func (m *Main) loadUserDatasources() ([]model.Datasource, error) {
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
180 changes: 180 additions & 0 deletions dashboard-examples/yaml/gitlab.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
version: v1
datasources:
gitlab:
prometheus:
address: https://dashboards.gitlab.com/api/datasources/proxy/1/
dashboard:
variables:
env:
constant:
value: gprd
monitor:
constant:
value: default
interval:
interval:
steps: 50
widgets:
- title: GitLab.com
gridPos:
w: 10
singlestat:
query:
datasourceID: gitlab
expr: avg_over_time(probe_success{env="{{.env}}",monitor="default",instance="https://gitlab.com",
job="blackbox-tls-redirect"}[{{.interval}}])
valueText: '{{ if (lt .value 1.0) }}DOWN{{else}}UP{{end}}'
thresholds:
- color: '#d44a3a'
- color: '#2dc937'
startValue: 1
- title: Infrastructure alerts
gridPos:
w: 10
singlestat:
query:
datasourceID: gitlab
expr: sum(max_over_time(ALERTS{env="{{.env}}",monitor="{{.monitor}}",alertstate="firing"}[{{.interval}}]))
OR vector(0)
valueText: '{{ printf "%.0f" .value }}'
thresholds:
- color: '#2dc937'
- color: '#e7b416'
startValue: 1
- color: '#d44a3a'
startValue: 10
- title: GitLab registry
gridPos:
w: 10
singlestat:
query:
datasourceID: gitlab
expr: avg_over_time(probe_success{env="{{.env}}",monitor="default",instance="https://registry.gitlab.com",
job="blackbox"}[{{.interval}}])
valueText: '{{ if (lt .value 1.0) }}DOWN{{else}}UP{{end}}'
thresholds:
- color: '#d44a3a'
- color: '#2dc937'
startValue: 1
- title: Application alerts
gridPos:
w: 10
singlestat:
query:
datasourceID: gitlab
expr: sum(max_over_time(ALERTS{env="{{.env}}",monitor="app",alertstate="firing"}[{{.interval}}]))
or vector(0)
valueText: '{{ printf "%.0f" .value }}'
thresholds:
- color: '#2dc937'
- color: '#e7b416'
startValue: 1
- color: '#d44a3a'
startValue: 10
- title: Reboots (last 48h)
gridPos:
w: 10
singlestat:
query:
datasourceID: gitlab
expr: sum(count((time() - node_boot_time_seconds{env="{{.env}}",monitor="default"})
/ 3600 < 48) by (fqdn))
valueText: '{{ printf "%.0f" .value }}'
- title: GitLab Pages
gridPos:
w: 10
singlestat:
query:
datasourceID: gitlab
expr: avg_over_time(probe_success{env="{{.env}}",instance="https://gitlab-examples.gitlab.io",job="blackbox"}[{{.interval}}])
valueText: '{{ if (lt .value 1.0) }}DOWN{{else}}UP{{end}}'
thresholds:
- color: '#d44a3a'
- color: '#2dc937'
startValue: 1
- title: GitLab Sign-in
gridPos:
w: 10
singlestat:
query:
datasourceID: gitlab
expr: avg_over_time(probe_success{env="{{.env}}",instance="https://gitlab.com/users/sign_in",job="blackbox"}[{{.interval}}])
valueText: '{{ if (lt .value 1.0) }}DOWN{{else}}UP{{end}}'
thresholds:
- color: '#d44a3a'
- color: '#2dc937'
startValue: 1
- title: internal LB
gridPos:
w: 10
singlestat:
query:
datasourceID: gitlab
expr: avg_over_time(probe_success{env="{{.env}}",instance="https://int.{{.env}}.gitlab.net/-/liveness",job="blackbox-internal"}[{{.interval}}])
valueText: '{{ if (lt .value 1.0) }}DOWN{{else}}UP{{end}}'
thresholds:
- color: '#d44a3a'
- color: '#2dc937'
startValue: 1
- title: Chef errors
gridPos:
w: 20
singlestat:
query:
datasourceID: gitlab
expr: sum(round(avg_over_time(chef_client_error{env="{{.env}}"}[{{.interval}}])))
valueText: '{{ printf "%.0f" .value }} NODES'
- title: Gitlab HAProxy backend responses
gridPos:
w: 100
graph:
visualization:
legend:
disable: false
rightSide: false
yAxis:
unit: reqps
decimals: 2
queries:
- datasourceID: gitlab
legend: '{{ .backend }}'
expr: sum(avg_over_time(backend_code:haproxy_server_http_responses_total:irate1m{env="{{.env}}",monitor="{{.monitor}}"}[{{.interval}}]))
by (backend)
- title: Gitlab HAProxy frontend responses
gridPos:
w: 100
graph:
visualization:
legend:
disable: false
rightSide: false
yAxis:
unit: reqps
decimals: 2
queries:
- datasourceID: gitlab
legend: '{{ .frontend }}'
expr: sum(avg_over_time(frontend_code:haproxy_frontend_http_responses_total:irate1m{env="{{.env}}",monitor="{{.monitor}}"}[{{.interval}}]))
by (frontend)
- title: Gitlab 5XX responses
gridPos:
w: 100
graph:
visualization:
legend:
disable: false
rightSide: false
yAxis:
unit: reqps
decimals: 2
queries:
- legend: haproxy 5xx {{ .backend }}
datasourceID: gitlab
expr: sum(avg_over_time(backend_code:haproxy_server_http_responses_total:irate1m{env="{{.env}}",monitor="{{.monitor}}",code="5xx"}[{{.interval}}]))
by (backend)
- legend: SD haproxy {{ .code }}
datasourceID: gitlab
expr: sum without (zone) (avg_over_time(zone:stackdriver_haproxy_errors:rate1m{env="{{.env}}",monitor="{{.monitor}}"}[{{.interval}}]))
- legend: SD haproxy timeout
datasourceID: gitlab
expr: sum without (zone) (zone:stackdriver_haproxy_deadline_exceeded:rate1m{env="{{.env}}",monitor="{{.monitor}}"})
128 changes: 128 additions & 0 deletions dashboard-examples/yaml/go.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
version: v1
datasources:
prometheus:
prometheus:
address: http://127.0.0.1:9090
dashboard:
variables:
job:
constant:
value: prometheus
interval:
interval:
steps: 50
widgets:
- title: Goroutines
gridPos:
w: 20
singlestat:
thresholds:
- color: '#47D038'
query:
datasourceID: prometheus
expr: sum(go_goroutines{job="{{.job}}"})
- title: GC duration
gridPos:
w: 20
singlestat:
unit: second
query:
datasourceID: prometheus
expr: max(go_gc_duration_seconds{job="{{.job}}"})
- title: Stack
gridPos:
w: 20
singlestat:
unit: bytes
thresholds:
- color: '#22F1F1'
query:
datasourceID: prometheus
expr: sum(go_memstats_stack_inuse_bytes{job="{{.job}}"})
- title: Heap
gridPos:
w: 20
singlestat:
unit: bytes
thresholds:
- color: '#22F1F1'
query:
datasourceID: prometheus
expr: sum(go_memstats_heap_inuse_bytes{job="{{.job}}"})
- title: Alloc
gridPos:
w: 20
singlestat:
unit: bytes
thresholds:
- color: '#22F1F1'
query:
datasourceID: prometheus
expr: sum(go_memstats_alloc_bytes{job="{{.job}}"})
- title: Goroutines
gridPos:
w: 50
graph:
visualization:
legend:
disable: true
yAxis:
unit: ''
decimals: 2
queries:
- datasourceID: prometheus
expr: sum(go_goroutines{job="{{.job}}"})
- title: GC duration
gridPos:
w: 50
graph:
queries:
- datasourceID: prometheus
expr: max(go_gc_duration_seconds{job="{{.job}}"}) by (quantile)
legend: Q{{.quantile}}
visualization:
yAxis:
unit: second
seriesOverride:
- regex: ^Q0$
color: '#F9E2D2'
- regex: ^Q0.25$
color: '#F2C96D'
- regex: ^Q0.5(0)?$
color: '#EAB839'
- regex: ^Q0.75$
color: '#EF843C'
- regex: ^Q1(.0)?$
color: '#E24D42'
- title: Memory
gridPos:
w: 50
graph:
visualization:
yAxis:
unit: byte
decimals: 0
queries:
- datasourceID: prometheus
expr: sum(go_memstats_stack_inuse_bytes{job="{{.job}}"})
legend: stack inuse
- datasourceID: prometheus
expr: sum(go_memstats_heap_inuse_bytes{job="{{.job}}"})
legend: heap inuse
- datasourceID: prometheus
expr: sum(go_memstats_alloc_bytes{job="{{.job}}"})
legend: alloc
- title: Memory ops rate
gridPos:
w: 50
graph:
queries:
- datasourceID: prometheus
expr: sum(rate(go_memstats_frees_total{job="{{.job}}"}[{{.interval}}]))
legend: frees/s
- datasourceID: prometheus
expr: sum(rate(go_memstats_mallocs_total{job="{{.job}}"}[{{.interval}}]))
legend: mallocs/s
- datasourceID: prometheus
expr: sum(rate(go_memstats_lookups_total{job="{{.job}}"}[{{.interval}}]))
legend: lookups/s
Loading