mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
meh add some stat shit not even close yet
This commit is contained in:
71
lb/dash.js
Normal file
71
lb/dash.js
Normal 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;
|
||||
}())
|
||||
}]
|
||||
});
|
||||
29
lb/lb.go
29
lb/lb.go
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user