Skip to content

Commit

Permalink
Add httpjson readme
Browse files Browse the repository at this point in the history
closes #275
  • Loading branch information
palkan authored and sparrc committed Oct 24, 2015
1 parent d35c78e commit cb951eb
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 6 deletions.
69 changes: 69 additions & 0 deletions plugins/httpjson/README.md
Original file line number Diff line number Diff line change
@@ -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]]
...
tag_keys = [
"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
```
10 changes: 5 additions & 5 deletions plugins/httpjson/httpjson.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ type Service struct {
Name string
Servers []string
Method string
TagKeys []string
TagKeys []string
Parameters map[string]string
}

Expand Down Expand Up @@ -62,8 +62,8 @@ var sampleConfig = `
# HTTP method to use (case-sensitive)
method = "GET"
# List of tag names to extract from server response
# tagKeys = [
# List of tag names to extract from top-level of JSON server response
# tag_keys = [
# "my_tag_1",
# "my_tag_2"
# ]
Expand Down Expand Up @@ -144,8 +144,8 @@ func (h *HttpJson) gatherServer(acc plugins.Accumulator, service Service, server

for _, tag := range service.TagKeys {
switch v := jsonOut[tag].(type) {
case string:
tags[tag] = v
case string:
tags[tag] = v
}
delete(jsonOut, tag)
}
Expand Down
1 change: 0 additions & 1 deletion plugins/httpjson/httpjson_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ const validJSONTags = `
"build": "123"
}`


const invalidJSON = "I don't think this is JSON"

const empty = ""
Expand Down

0 comments on commit cb951eb

Please sign in to comment.