Add httpjson readme

This commit is contained in:
palkan 2015-10-17 14:38:50 +03:00
parent 1e822952b8
commit 529a894c55
3 changed files with 72 additions and 4 deletions

View File

@ -0,0 +1,69 @@
# HTTP JSON Plugin
The httpjson plugin can collect data from remote URLs which respond with JSON. Then it flattens JSON and finds all numeric values, treating them as floats.
For example, if you have a service called _mycollector_, which has HTTP endpoint for gathering stats http://my.service.com/_stats:
```
[[httpjson.services]]
name = "mycollector"
servers = [
"http://my.service.com/_stats"
]
# HTTP method to use (case-sensitive)
method = "GET"
```
The name is used as a prefix for the measurements.
The `method` specifies HTTP method to use for requests.
You can specify which keys from server response should be considered as tags:
```
[[httpjson.services]]
...
tagKeys = [
"role",
"version"
]
```
**NOTE**: tag values should be strings.
You can also specify additional request parameters for the service:
```
[[httpjson.services]]
...
[httpjson.services.parameters]
event_type = "cpu_spike"
threshold = "0.75"
```
# Sample
Let's say that we have a service named "mycollector", which responds with:
```json
{
"a": 0.5,
"b": {
"c": "some text",
"d": 0.1,
"e": 5
}
}
```
The collected metrics will be:
```
httpjson_mycollector_a value=0.5
httpjson_mycollector_b_d value=0.1
httpjson_mycollector_b_e value=5
```

View File

@ -22,7 +22,7 @@ type Service struct {
Name string Name string
Servers []string Servers []string
Method string Method string
TagKeys []string TagKeys []string
Parameters map[string]string Parameters map[string]string
} }
@ -144,8 +144,8 @@ func (h *HttpJson) gatherServer(acc plugins.Accumulator, service Service, server
for _, tag := range service.TagKeys { for _, tag := range service.TagKeys {
switch v := jsonOut[tag].(type) { switch v := jsonOut[tag].(type) {
case string: case string:
tags[tag] = v tags[tag] = v
} }
delete(jsonOut, tag) delete(jsonOut, tag)
} }

View File

@ -35,7 +35,6 @@ const validJSONTags = `
"build": "123" "build": "123"
}` }`
const invalidJSON = "I don't think this is JSON" const invalidJSON = "I don't think this is JSON"
const empty = "" const empty = ""