Я пытаюсь использовать http-модуль metricbeat для мониторинга пулов F5.
Я делаю запрос к API f5 и возвращаю json, который сохраняется в кибане. Но json содержит массив членов пула, и я хочу посчитать число, которое выросло.
Похоже, совет заключается в том, что это можно сделать с помощью скриптового поля. Тем не менее, я не могу получить скрипт для получения массива. например,
doc['http.f5pools.items.monitor'].value.length()
возвращает результаты предварительного просмотра с тем же «Дополнительным полем», добавленным для сравнения:
[
{
"_id": "rT7wdGsBXQSGm_pQoH6Y",
"http": {
"f5pools": {
"items": [
{
"monitor": "default"
},
{
"monitor": "default"
}
]
}
},
"pool.MemberCount": [
7
]
},
Если я попытаюсь
doc['http.f5pools.items']
Или похоже, я просто получаю сообщение об ошибке:
"reason": "No field found for [http.f5pools.items] in mapping with types []"
Google указывает, что конструкция doc не содержит массивов?
- Можно ли создать поле со сценарием, которое будет иметь доступ к набору значений? то есть мой код или то, как я индексирую данные, неверны.
- Если нет, есть ли альтернативный подход в метрических битах? Я не хочу делать совершенно новый API для расчета и добавить отдельное поле
- обновление.
Странно кажется, что числовые значения в массиве возвращают ожидаемые результаты. то есть.
doc['http.f5pools.items.ratio']
возвращается
{
"_id": "BT6WdWsBXQSGm_pQBbCa",
"pool.MemberCount": [
1,
1
]
},
- обновление 2
Хорошо, поэтому, если строки в поле имеют разные значения, вы получите все значения. если они одинаковы, вы просто получаете один. WTF?