fix incredibly stupid bugs

This commit is contained in:
ncohensm
2016-06-22 15:12:29 -07:00
parent 933bdaa067
commit c4e0452436
3 changed files with 21 additions and 16 deletions

View File

@@ -21,6 +21,7 @@ import (
_ "github.com/influxdata/telegraf/plugins/inputs/filestat"
_ "github.com/influxdata/telegraf/plugins/inputs/graylog"
_ "github.com/influxdata/telegraf/plugins/inputs/haproxy"
_ "github.com/influxdata/telegraf/plugins/inputs/http_listener"
_ "github.com/influxdata/telegraf/plugins/inputs/http_response"
_ "github.com/influxdata/telegraf/plugins/inputs/httpjson"
_ "github.com/influxdata/telegraf/plugins/inputs/influxdb"

View File

@@ -13,12 +13,13 @@ import (
"io/ioutil"
"github.com/hydrogen18/stoppableListener"
"strconv"
)
type HttpListener struct {
ServiceAddress string
readTimeout int
writeTimeout int
ReadTimeout string
WriteTimeout string
sync.Mutex
@@ -84,44 +85,47 @@ func (t *HttpListener) Stop() {
// httpListen listens for HTTP requests.
func (t *HttpListener) httpListen() error {
readTimeout, err := strconv.ParseInt(t.ReadTimeout, 10, 32)
writeTimeout, err := strconv.ParseInt(t.WriteTimeout, 10, 32)
var server = http.Server{
Handler: t.writeHandler,
ReadTimeout: t.readTimeout * time.Second,
WriteTimeout: t.writeTimeout * time.Second,
Handler: t,
ReadTimeout: time.Duration(readTimeout) * time.Second,
WriteTimeout: time.Duration(writeTimeout) * time.Second,
}
var err = server.Serve(t.listener)
err = server.Serve(t.listener)
return err
}
func (t *HttpListener) writeHandler(res http.ResponseWriter, req *http.Request) error {
func (t *HttpListener) ServeHTTP(res http.ResponseWriter, req *http.Request) {
body, err := ioutil.ReadAll(req.Body)
if err == nil {
log.Printf("Received request: [%s]\n", string(body))
var metrics []telegraf.Metric
for {
if len(body) == 0 {
continue
}
if len(body) == 0 {
log.Printf("No metrics to parse\n")
} else {
metrics, err = t.parser.Parse(body)
if err == nil {
t.storeMetrics(metrics)
log.Printf("Persisted %d metrics\n", len(metrics))
} else {
log.Printf("Problem parsing body: [%s], Error: %s\n", string(body), err)
res.WriteHeader(500)
res.Write([]byte("ERROR parsing metrics"))
}
res.WriteHeader(204)
res.Write([]byte(""))
}
res.WriteHeader(204)
res.Write([]byte(""))
} else {
log.Printf("Problem reading request: [%s], Error: %s\n", string(body), err)
res.WriteHeader(500)
res.Write([]byte("ERROR reading request"))
}
return err
}
func (t *HttpListener) storeMetrics(metrics []telegraf.Metric) error {