Запросы Elastisearch, используемые для пользовательского интерфейса APM, медленные - PullRequest
1 голос
/ 13 июля 2020

Я заметил проблемы с запросами, возвращающими 500 ответов при нажатии на пользовательский интерфейс APM на нашем Kibana GUI. Сервер делает запрос

GET /api/apm/ui_filters/local_filters/services?uiFilters=%7B%7D&start=2020-07-07T07%3A08%3A42.818Z&end=2020-07-08T07%3A08%3A42.818Z&filterNames=%5B%22host%22%2C%22agentName%22%5D

Я выполнил запрос в режиме отладки, чтобы получить запрос и запустить его в профилировщике поиска в Kibana. Я запустил это>

{
"size": 0,
"query": {
    "bool": {
        "filter": [
            {
                "terms": {
                    "processor.event": [
                        "transaction",
                        "error",
                        "metric"
                    ]
                }
            },
            {
                "range": {
                    "@timestamp": {
                        "gte": 1594105722818,
                        "lte": 1594192122818,
                        "format": "epoch_millis"
                    }
                }
            },
            {
                "range": {
                    "observer.version_major": {
                        "gte": 7
                    }
                }
            }
        ]
    }
},
"aggs": {
    "host": {
        "filter": {
            "bool": {
                "filter": []
            }
        },
        "aggs": {
            "by_terms": {
                "terms": {
                    "field": "host.hostname",
                    "order": {
                        "_count": "desc"
                    }
                },
                "aggs": {
                    "bucket_count": {
                        "cardinality": {
                            "field": "service.name"
                        }
                    }
                }
            }
        }
    },
    "agentName": {
        "filter": {
            "bool": {
                "filter": []
            }
        },
        "aggs": {
            "by_terms": {
                "terms": {
                    "field": "agent.name",
                    "order": {
                        "_count": "desc"
                    }
                },
                "aggs": {
                    "bucket_count": {
                        "cardinality": {
                            "field": "service.name"
                        }
                    }
                }
            }
        }
    }
}

}

Когда я запустил его, я снова получил тайм-аут, и мне нужно было сократить временной интервал запроса, но когда «aggs» удалены Я вижу, что запрос действительно быстрый. Основная проблема заключается в индексе транзакций для APM, и в течение 4 часов я получаю время отклика 3 секунды, в то время как без "aggs" у меня время отклика 50 мс для этого индекса. Основная задержка - это «next_do c» и «build_scorer».

Может быть, кто-нибудь даст мне знать, как я могу go включить и устранить эту неполадку, поскольку запрос не может быть изменен, возможно, что-то есть индекс APM или на самих узлах ES.

Кластер ELK работает в docker, и у нас есть 5 узлов (6 ЦП, 30 ГБ ОЗУ - 10 ГБ JVM, 1 ТБ SSD) с узлом координатора, где мы работаем как ну Кибана и сервер APM. Все это развернуто в GCP в той же зоне. Я измерил сетевую задержку, использование ресурсов и скорость ввода-вывода и не смог найти ничего, что могло бы блокировать скорость кластера.

APM загружает данные в течение 24 часов, если я изменяю временной диапазон на первой странице на 1h, а затем выберите услугу и переместитесь туда.

...