Как получить уникальный счетчик поля с помощью Kibana + Elastic Search
Можно ли запрашивать отдельный/уникальный счетчик поля с помощью Kibana? Я использую эластичный поиск в качестве моего бэкэнда для Кибаны.
Если да, то каков синтаксис запроса? Вот ссылка на интерфейс Kibana. Я хотел бы сделать мой запрос: http://demo.kibana.org/#/dashboard
Я разбираю журналы доступа nginx с помощью logstash и сохраняю данные в режиме поиска. Затем я использую Kibana для запуска запросов и визуализации моих данных в диаграммах. В частности, я хочу узнать количество уникальных IP-адресов для определенного периода времени с помощью Kibana.
Ответы
Ответ 1
Для Kibana 4 перейдите в этот ответ
Это легко сделать с панелью терминов:
![Adding a terms panel to Kibana]()
Если вы хотите выбрать количество отдельных IP-адресов, которые находятся в ваших журналах, вы должны указать в поле clientip
, вы должны поместить достаточно большое число в длину (в противном случае он будет подключаться к другому IP-адресу в той же группе ) и укажите в таблице стилей. После добавления панели вы получите таблицу с IP-адресом и количество IP-адресов:
![Table with IP and count]()
Ответ 2
Теперь Kibana 4 позволяет использовать агрегаты. Помимо создания панели, подобной той, которая была объяснена в этом ответе для Kibana 3, теперь мы можем видеть количество уникальных IP-адресов в разные периоды, то есть (IMO) что ФП хотел в первую очередь.
Чтобы создать такую панель, вы должны перейти в Visualize → Выберите свой индекс → Выберите вертикальную гистограмму, а затем на панели визуализации:
- В оси Y мы хотим получить уникальное количество IP-адресов (выберите поле, в котором вы сохранили IP-адрес), а по оси X мы хотим, чтобы гистограмма даты использовала наше поле времени.
![Building a visualization]()
- После нажатия кнопки "Применить" у нас должен быть график, который показывает уникальное количество IP-адресов, распределенных по времени. Мы можем изменить временной интервал на оси X, чтобы увидеть уникальные IP почасовые/ежедневные...
![Final plot]()
Просто учтите, что уникальные подсчеты approximate. Для получения дополнительной информации проверьте также этот ответ.
Ответ 3
Помните, что с уникальным счетчиком вы используете метрику "мощность", которая не всегда гарантирует точный уникальный счет.: -)
показатель мощности является приближенным алгоритмом. Он основан на Алгоритм HyperLogLog++ (HLL). HLL работает путем хеширования ваших входных данных и используя биты из хэша, чтобы сделать вероятностные оценки на мощность.
В зависимости от количества данных я могу получить разницу в 700+ записей, отсутствующих в наборе данных 300 000 через Unique Count in Elastic, которые в действительности действительно уникальны.
Подробнее здесь: https://www.elastic.co/guide/en/elasticsearch/guide/current/cardinality.html
Ответ 4
Создайте запрос "topN" на "clientip", а затем гистограмму с подсчетом на "clientip" и установите запрос "topN" в качестве источника. Затем вы увидите количество разных ips за время.
Ответ 5
Уникальные значения значений полей достигаются с помощью граней. См. документацию ES для полной истории, но суть в том, что вы создадите запрос, а затем попросите ES подготовить грани к результатам для подсчета значений найденных в полях. Это зависит от вас, чтобы настроить используемые поля и даже описать, как вы хотите вернуть значения. Самый простой из фасетных типов - это просто сгруппировать по срокам, которые будут похожи на IP-адрес выше. Вы можете стать довольно сложным с ними, даже требуя запроса в пределах вашего аспекта!
{
"query": {
"match_all": {}
},
"facets": {
"terms": {
"field": "ip_address"
}
}
}