Elastic Stack - протоколирование REST API с полным JSON-запросом и ответом - PullRequest
0 голосов
/ 11 июня 2019

Фон

У нас есть веб-сервер, написанный на Java, который взаимодействует с тысячами мобильных приложений через API-интерфейсы REST HTTPS.

В целях расследования мы должны регистрировать все вызовы API - в настоящее время это реализовано как программирование @Aspect, и для каждого вызова API мы сохраняем объект api_call_log в таблицу MySQL со следующими атрибутами:

  • tenant_id
  • username
  • device_uuid
  • api_method
  • api_version
  • api_start_time
  • api_processing_duration
  • request_parameters
  • full_request (JSON)
  • full_response (JSON)
  • response_code

Проблема

Как вы можете себе представить, достигнув определенной пропускной способности, это решение плохо масштабируется, а также запросы к этой таблице очень медленны даже прииспользование правильных индексов MySQL.

Подход

Именно поэтому мы хотим использовать Elastic Stack для повторной реализации этого решения, однако я немного застрял вмомент

Вопрос

Я не смог найти ни одного плагина Logstash, который бы соответствовал моим потребностям - я должен вместо этого вывести этот объект api_call_log в файл журнала и использовать Logstash для анализа, фильтрации и преобразованияэтот файл?

1 Ответ

1 голос
/ 12 июня 2019

Именно это я и сделал бы в этом случае. Запишите ваш журнал в файл, используя такую ​​среду, как logback, поверните ее. Если вы хотите простой анализ, используйте json в качестве формата регистрации (также доступен в logback). Затем используйте Filebeat, чтобы получить файл журнала по мере его записи. Если вам нужно преобразовать / проанализировать сообщения в узлах захвата эластичного поиска, используя конвейеры.

Подумайте о том, чтобы пометить / обогатить файлы журналов, считанные с помощью filebeat, специальной информацией о машине или среде, чтобы запросить их в вашей визуализации или отчете и т. Д.

Подход "файл-удар-упругость" является самым простым. Попробуйте это в первую очередь. Если вы не можете выполнить разбор в конвейерах эластичного поиска, поместите logstash между ними.

Используя filebeat, вы получаете много бесплатных вещей, таких как обработка противодавления, и ежедневно показывает, что очень удобно в сценарии регистрации, который мы обсуждаем здесь.

Если вам нужна визуализация или поиск по интерфейсу, взгляните на кибану или графану.

А если у вас есть еще вопросы, задайте новый вопрос здесь.

Веселись!

https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-installation.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html

...