Как микросервисы интегрируются с Logstash?

«Как микросервисы интегрируются с Logstash?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, интеграция микросервисов с Logstash — стандартная практика для централизованного сбора и обработки логов. Основные подходы:

Способ Описание Когда использовать
Прямая отправка Сервис отправляет логи напрямую в Logstash по TCP, UDP или HTTP. Для простых стендов, не в Kubernetes.
Через Filebeat (рекомендуется) Сервис пишет логи в файл/stdout. Легковесный агент Filebeat собирает и отправляет их в Logstash. Стандартный подход, особенно для контейнеризованных сред (Kubernetes).
В Elasticsearch Filebeat или сервис отправляют логи напрямую в Elasticsearch, минуя Logstash. Когда не нужна сложная обработка в Logstash.

Пример конфигурации Logstash для приёма JSON по TCP:

input {
  tcp {
    port => 5000
    codec => json_lines
  }
}

Пример настройки Logback в Spring Boot для прямой отправки:

<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
  <destination>logstash-host:5000</destination>
  <encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
  <connectionStrategy>
    <roundRobin>
      <connectionTTL>5 minutes</connectionTTL>
    </roundRobin>
  </connectionStrategy>
</appender>

Важно: Для production-среды обязательно настраивать буферизацию, повторные попытки (retry) и устойчивость к потере связи.