Ответ
Да, интеграция микросервисов с 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) и устойчивость к потере связи.