Назад | Перейти на главную страницу

Пересылка журналов linux в fluentd на linux

На одной виртуальной машине у меня это есть /etc/rsyslog.d/50-default.conf

*.* @192.168.29.1:42185

#  Default rules for rsyslog.

На vm с fluentd у меня есть это:

У меня это в /etc/td-agent/td-agent.conf

<source>
  type syslog
  port 42185
  tag  rsyslog
</source>

<match rsyslog.**>
  type copy
  <store>
    # for debug (see /var/log/td-agent.log)
    type stdout
  </store>
  <store>
    type elasticsearch
    logstash_format true
    flush_interval 10s # for testing.
  </store>
</match>

Но похоже, что на удаленный компьютер ничего не отправляется, поскольку я смотрю в /var/log/td-agent.log и вижу

2014-08-08 10:51:10 -0700 [info]: adding source type="syslog"
2014-08-08 10:51:10 -0700 [info]: adding source type="forward"
2014-08-08 10:51:10 -0700 [info]: adding source type="http"
2014-08-08 10:51:10 -0700 [info]: adding source type="debug_agent"
2014-08-08 10:51:10 -0700 [info]: adding match pattern="td.*.*" type="tdlog"
2014-08-08 10:51:10 -0700 [info]: adding match pattern="debug.**" type="stdout"
2014-08-08 10:51:10 -0700 [info]: adding match pattern="rsyslog.**" type="copy"
2014-08-08 10:51:10 -0700 [info]: listening fluent socket on 0.0.0.0:24224
2014-08-08 10:51:10 -0700 [info]: listening dRuby uri="druby://127.0.0.1:24230" object="Engine"
2

Я не знаю, почему журналы не отправляются, и я не понимаю, как определить, что что-то не так с rsyslog и он просто не отправляет файлы.

Если я не ошибаюсь, rsyslog пересылает журналы по TCP (в конфигурационном файле это указано как «для надежности»), но прослушиватель fluentD по умолчанию прослушивает UDP. Это изменение в вашей конфигурации fluentD должно позволить вам получать логи по TCP:

<source>
  type syslog
  port 42185
  protocol_type tcp
  tag  rsyslog
</source>

Я бы проверил с помощью дампа TCP, получает ли трафик агент, если вы все еще не получаете журналы после внесения этого изменения:

tcpdump -i any port 42185

Это также должно указывать, принимается ли TCP или UDP (только указав port, и нет tcp или udp также)

РЕДАКТИРОВАТЬ: в дополнение к этому убедитесь, что ваша конфигурация rsyslog верна: все примеры, которые я видел и использовал, имеют двойной @@ в прямом правиле:

*.* @@192.168.29.1:42185

http://www.rsyslog.com/doc/rsyslog_reliable_forwarding.html