키바나에서 제공하는 모니터링 그래프가 간혹 끊기는 현상 발생했다. (Indexing과 Search 모두)
실제 ES에 문제가 있었는지 혹은 키바나 그래프만 문제가 있는지 확인해보았다.
키바나 모니터링 그래프는 Index STAT API 를 통해 받은 결과값을 표시한다.
하단의 쿼리로 그래프가 끊긴 시간대의 Index Stat 값을 확인해보니 metric_deriv 의 value가 음수로 나오고 있다.
POST .monitoring-es-*/_search
{
"query": {
"bool": {
"filter": [
{
"term": {
"cluster_uuid": <클러스터 아이디>
}
},
{
"range": {
"timestamp": {
"gte": "2021-07-18T00:51:07.080Z",
"lte": "2021-07-19T12:11:07.080Z"
}
}
}
]
}
},
"size": 0,
"aggs": {
"check": {
"date_histogram": {
"field": "timestamp",
"fixed_interval": "30s"
},
"aggs": {
"metric": {
"max": {
"field": "indices_stats._all.total.search.query_total"
}
},
"metric_deriv": {
"derivative": {
"buckets_path": "metric",
"gap_policy": "skip",
"unit": "1s"
}
}
}
}
}
}
위 쿼리의 derivative 는 상위 히스토그램 집계에서 지정된 메트릭의 미분을 계산하는 파이프 라인 집계이다.
결과
{
"key_as_string" : "2021-07-18T01:00:00.000Z",
"key" : 1626570000000,
"doc_count" : 8799,
"metric" : {
"value" : 2535173.0
},
"metric_deriv" : {
"value" : -193873.0,
"normalized_value" : -6462.433333333333
}
}
metric_deriv의 vlaue가 음수값으로 나오게 되었다.
키바나의 모니터링 코드는 내부적으로 음수값을 null로 변환시킨다고 한다.
그 null값으로 인해 그래프에서 끊김 현상이 있었다.
다만 왜 음수값으로 나왔는지 (급격하게 리소스 사용이 증가한 것 때문에 미분하는 과정에서? 다른 시간대는 왜 끊기지 않았는지?) 추가적으로 확인이 필요해 보인다.
https://github.com/elastic/kibana/issues/58577
https://discuss.elastic.co/t/kibana-monitoring-gaps-when-data-node-is-replaced/211432/5
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline-derivative-aggregation.html
좋은 정보 감사합니다