meh add some stat shit not even close yet

This commit is contained in:
Reed Allman
2017-05-17 00:53:14 -07:00
parent e5f10f5c3c
commit b25e1e20ae
2 changed files with 98 additions and 2 deletions

71
lb/dash.js Normal file
View File

@@ -0,0 +1,71 @@
Highcharts.setOptions({
global: {
useUTC: false
}
});
// Create the chart
Highcharts.stockChart('container', {
chart: {
events: {
load: function () {
// set up the updating of the chart each second
var series = this.series[0];
setInterval(function () {
//var x = (new Date()).getTime(), // current time
//y = Math.round(Math.random() * 100);
//series.addPoint([x, y], true, true);
series.addPoint([x, y], true, true);
}, 1000);
}
}
},
rangeSelector: {
buttons: [{
count: 1,
type: 'minute',
text: '1M'
}, {
count: 5,
type: 'minute',
text: '5M'
}, {
type: 'all',
text: 'All'
}],
inputEnabled: false,
selected: 0
},
title: {
text: 'Live random data'
},
exporting: {
enabled: false
},
series: [{
name: 'Random data',
data: (function () {
// generate an array of random data
var data = [],
time = (new Date()).getTime(),
i;
for (i = -999; i <= 0; i += 1) {
data.push([
time + i * 1000,
Math.round(Math.random() * 100)
]);
}
return data;
}())
}]
});

View File

@@ -80,8 +80,9 @@ type chProxy struct {
hcUnhealthy int64
hcTimeout time.Duration
statMu sync.Mutex
stats []*stat
// XXX (reed): right now this only supports one client basically ;) use some real stat backend
statsMu sync.Mutex
stats []*stat
proxy *httputil.ReverseProxy
httpClient *http.Client
@@ -95,6 +96,21 @@ type stat struct {
code uint64
}
func (ch *chProxy) addStat(s *stat) {
ch.statsMu.Lock()
ch.stats = append(ch.stats, s)
ch.statsMu.Unlock()
}
func (ch *chProxy) getStats() []*stat {
ch.statsMu.Lock()
stats := ch.stats
ch.stats = ch.stats[:0]
ch.statsMu.Unlock()
// XXX (reed): down sample to per second
}
func newProxy(conf config) *chProxy {
tranny := &http.Transport{
Proxy: http.ProxyFromEnvironment,
@@ -319,6 +335,15 @@ func (ch *chProxy) listNodes(w http.ResponseWriter, r *http.Request) {
})
}
func (ch *chProxy) dash(w http.ResponseWriter, r *http.Request) {
_ = `
<script src="https://code.highcharts.com/stock/highstock.js"></script>
<script src="https://code.highcharts.com/stock/modules/exporting.js"></script>
<div id="container" style="height: 400px; min-width: 310px"></div>
`
}
func (ch *chProxy) isDead(node string) bool {
ch.RLock()
val, ok := ch.ded[node]