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"]
|
urls = ["http://localhost:8080/jolokia"]
|
||||||
name_prefix = "zk_"
|
name_prefix = "zk_"
|
||||||
|
|
||||||
[[inputs.jolokia2_agent.metrics]]
|
[[inputs.jolokia2_agent.metric]]
|
||||||
name = "quorum"
|
name = "quorum"
|
||||||
mbean = "org.apache.ZooKeeperService:name0=*"
|
mbean = "org.apache.ZooKeeperService:name0=*"
|
||||||
tag_keys = ["name0"]
|
tag_keys = ["name0"]
|
||||||
|
|
||||||
[[inputs.jolokia2_agent.metrics]]
|
[[inputs.jolokia2_agent.metric]]
|
||||||
name = "leader"
|
name = "leader"
|
||||||
mbean = "org.apache.ZooKeeperService:name0=*,name1=*,name2=Leader"
|
mbean = "org.apache.ZooKeeperService:name0=*,name1=*,name2=Leader"
|
||||||
tag_keys = ["name1"]
|
tag_keys = ["name1"]
|
||||||
|
|
||||||
[[inputs.jolokia2_agent.metrics]]
|
[[inputs.jolokia2_agent.metric]]
|
||||||
name = "follower"
|
name = "follower"
|
||||||
mbean = "org.apache.ZooKeeperService:name0=*,name1=*,name2=Follower"
|
mbean = "org.apache.ZooKeeperService:name0=*,name1=*,name2=Follower"
|
||||||
tag_keys = ["name1"]
|
tag_keys = ["name1"]
|
||||||
|
|
|
@ -143,7 +143,12 @@ func TestJolokia2_ObjectValues(t *testing.T) {
|
||||||
[[jolokia2_agent.metric]]
|
[[jolokia2_agent.metric]]
|
||||||
name = "object_with_key_pattern"
|
name = "object_with_key_pattern"
|
||||||
mbean = "object_with_key_pattern:test=*"
|
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 := `[{
|
response := `[{
|
||||||
"request": {
|
"request": {
|
||||||
|
@ -214,6 +219,19 @@ func TestJolokia2_ObjectValues(t *testing.T) {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"status": 200
|
"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)
|
server := setupServer(http.StatusOK, response)
|
||||||
|
@ -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 {
|
func setupServer(status int, resp string) *httptest.Server {
|
||||||
return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
w.WriteHeader(http.StatusOK)
|
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 {
|
if valueMap, ok := value.(map[string]interface{}); ok {
|
||||||
// keep going until we get to something that is not a map
|
// keep going until we get to something that is not a map
|
||||||
for key, innerValue := range valueMap {
|
for key, innerValue := range valueMap {
|
||||||
var innerName string
|
if _, ok := innerValue.([]interface{}); ok {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
var innerName string
|
||||||
if name == "" {
|
if name == "" {
|
||||||
innerName = pb.metric.FieldPrefix + key
|
innerName = pb.metric.FieldPrefix + key
|
||||||
} else {
|
} else {
|
||||||
|
@ -172,6 +175,10 @@ func (pb *pointBuilder) fillFields(name string, value interface{}, fieldMap map[
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if _, ok := value.([]interface{}); ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if pb.metric.FieldName != "" {
|
if pb.metric.FieldName != "" {
|
||||||
name = pb.metric.FieldName
|
name = pb.metric.FieldName
|
||||||
if prefix := pb.metric.FieldPrefix; prefix != "" {
|
if prefix := pb.metric.FieldPrefix; prefix != "" {
|
||||||
|
|
Loading…
Reference in New Issue