Don't add unserializable fields to jolokia2 input (#4930)
This commit is contained in:
parent
d0e6da5eba
commit
0003c8fba7
|
@ -2,17 +2,17 @@
|
|||
urls = ["http://localhost:8080/jolokia"]
|
||||
name_prefix = "zk_"
|
||||
|
||||
[[inputs.jolokia2_agent.metrics]]
|
||||
[[inputs.jolokia2_agent.metric]]
|
||||
name = "quorum"
|
||||
mbean = "org.apache.ZooKeeperService:name0=*"
|
||||
tag_keys = ["name0"]
|
||||
|
||||
[[inputs.jolokia2_agent.metrics]]
|
||||
[[inputs.jolokia2_agent.metric]]
|
||||
name = "leader"
|
||||
mbean = "org.apache.ZooKeeperService:name0=*,name1=*,name2=Leader"
|
||||
tag_keys = ["name1"]
|
||||
|
||||
[[inputs.jolokia2_agent.metrics]]
|
||||
[[inputs.jolokia2_agent.metric]]
|
||||
name = "follower"
|
||||
mbean = "org.apache.ZooKeeperService:name0=*,name1=*,name2=Follower"
|
||||
tag_keys = ["name1"]
|
||||
|
|
|
@ -143,7 +143,12 @@ func TestJolokia2_ObjectValues(t *testing.T) {
|
|||
[[jolokia2_agent.metric]]
|
||||
name = "object_with_key_pattern"
|
||||
mbean = "object_with_key_pattern:test=*"
|
||||
tag_keys = ["test"]`
|
||||
tag_keys = ["test"]
|
||||
|
||||
[[jolokia2_agent.metric]]
|
||||
name = "ColumnFamily"
|
||||
mbean = "org.apache.cassandra.metrics:keyspace=*,name=EstimatedRowSizeHistogram,scope=schema_columns,type=ColumnFamily"
|
||||
tag_keys = ["keyspace", "name", "scope"]`
|
||||
|
||||
response := `[{
|
||||
"request": {
|
||||
|
@ -214,7 +219,20 @@ func TestJolokia2_ObjectValues(t *testing.T) {
|
|||
}
|
||||
},
|
||||
"status": 200
|
||||
}]`
|
||||
}, {
|
||||
"request": {
|
||||
"mbean": "org.apache.cassandra.metrics:keyspace=*,name=EstimatedRowSizeHistogram,scope=schema_columns,type=ColumnFamily",
|
||||
"type": "read"
|
||||
},
|
||||
"value": {
|
||||
"org.apache.cassandra.metrics:keyspace=system,name=EstimatedRowSizeHistogram,scope=schema_columns,type=ColumnFamily": {
|
||||
"Value": [
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
]
|
||||
}
|
||||
},
|
||||
"status": 200
|
||||
}]`
|
||||
|
||||
server := setupServer(http.StatusOK, response)
|
||||
defer server.Close()
|
||||
|
@ -730,6 +748,20 @@ func TestJolokia2_ProxyTargets(t *testing.T) {
|
|||
})
|
||||
}
|
||||
|
||||
func TestFillFields(t *testing.T) {
|
||||
complex := map[string]interface{}{"Value": []interface{}{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}
|
||||
var scalar interface{}
|
||||
scalar = []interface{}{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
|
||||
|
||||
results := map[string]interface{}{}
|
||||
newPointBuilder(Metric{Name: "test", Mbean: "complex"}, []string{"this", "that"}, "/").fillFields("", complex, results)
|
||||
assert.Equal(t, map[string]interface{}{}, results)
|
||||
|
||||
results = map[string]interface{}{}
|
||||
newPointBuilder(Metric{Name: "test", Mbean: "scalar"}, []string{"this", "that"}, "/").fillFields("", scalar, results)
|
||||
assert.Equal(t, map[string]interface{}{}, results)
|
||||
}
|
||||
|
||||
func setupServer(status int, resp string) *httptest.Server {
|
||||
return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
w.WriteHeader(http.StatusOK)
|
||||
|
|
|
@ -158,8 +158,11 @@ func (pb *pointBuilder) fillFields(name string, value interface{}, fieldMap map[
|
|||
if valueMap, ok := value.(map[string]interface{}); ok {
|
||||
// keep going until we get to something that is not a map
|
||||
for key, innerValue := range valueMap {
|
||||
var innerName string
|
||||
if _, ok := innerValue.([]interface{}); ok {
|
||||
continue
|
||||
}
|
||||
|
||||
var innerName string
|
||||
if name == "" {
|
||||
innerName = pb.metric.FieldPrefix + key
|
||||
} else {
|
||||
|
@ -172,6 +175,10 @@ func (pb *pointBuilder) fillFields(name string, value interface{}, fieldMap map[
|
|||
return
|
||||
}
|
||||
|
||||
if _, ok := value.([]interface{}); ok {
|
||||
return
|
||||
}
|
||||
|
||||
if pb.metric.FieldName != "" {
|
||||
name = pb.metric.FieldName
|
||||
if prefix := pb.metric.FieldPrefix; prefix != "" {
|
||||
|
|
Loading…
Reference in New Issue