Допустим, у меня есть среда, содержащая следующее:
- Веб-сервер NodeJS, работающий на порту 9876
- , агент td-агента пересылки журналов уже установлен
Я бы хотел отправить сообщения HTTP POST, полученные веб-сервером NodeJS, на fluentd (log-aggregator) без изменения самого веб-сервера.
Я попытался настроить файл конфигурации log-forwarder td-agent(/etc/td-agent/td-agent.conf
) примерно так:
<source>
@type http
tag app.httplogs
port 9876
bind 0.0.0.0
body_size_limit 50m
keepalive_timeout 10s
</source>
<match *.*>
@type forward
@id forward_http
heartbeat_type tcp
<server>
host (ip address of fluentd log-aggregator)
</server>
</match>
Затем я выполнил следующую команду:
sudo /etc/init.d/td-agent start
В результате EADDRINUSE: адрес уже используется ошибка
2019-02-21 14:35:14 +0900 [error]: unexpected error error_class=Errno::EADDRINUSE error=#<Errno::EADDRINUSE: Address already in use - bind(2) for "0.0.0.0" port 9876>
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/lib/ruby/gems/2.5.0/gems/fluentd-0.12.43/lib/fluent/plugin/in_http.rb:104:in `initialize'
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/lib/ruby/gems/2.5.0/gems/fluentd-0.12.43/lib/fluent/plugin/in_http.rb:104:in `new'
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/lib/ruby/gems/2.5.0/gems/fluentd-0.12.43/lib/fluent/plugin/in_http.rb:104:in `start'
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/lib/ruby/gems/2.5.0/gems/fluentd-0.12.43/lib/fluent/root_agent.rb:115:in `block in start'
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/lib/ruby/gems/2.5.0/gems/fluentd-0.12.43/lib/fluent/root_agent.rb:114:in `each'
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/lib/ruby/gems/2.5.0/gems/fluentd-0.12.43/lib/fluent/root_agent.rb:114:in `start'
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/lib/ruby/gems/2.5.0/gems/fluentd-0.12.43/lib/fluent/engine.rb:237:in `start'
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/lib/ruby/gems/2.5.0/gems/fluentd-0.12.43/lib/fluent/engine.rb:187:in `run'
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/lib/ruby/gems/2.5.0/gems/fluentd-0.12.43/lib/fluent/supervisor.rb:570:in `run_engine'
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/lib/ruby/gems/2.5.0/gems/fluentd-0.12.43/lib/fluent/supervisor.rb:162:in `block in start'
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/lib/ruby/gems/2.5.0/gems/fluentd-0.12.43/lib/fluent/supervisor.rb:366:in `main_process'
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/lib/ruby/gems/2.5.0/gems/fluentd-0.12.43/lib/fluent/supervisor.rb:339:in `block in supervise'
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/lib/ruby/gems/2.5.0/gems/fluentd-0.12.43/lib/fluent/supervisor.rb:338:in `fork'
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/lib/ruby/gems/2.5.0/gems/fluentd-0.12.43/lib/fluent/supervisor.rb:338:in `supervise'
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/lib/ruby/gems/2.5.0/gems/fluentd-0.12.43/lib/fluent/supervisor.rb:156:in `start'
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/lib/ruby/gems/2.5.0/gems/fluentd-0.12.43/lib/fluent/command/fluentd.rb:173:in `<top (required)>'
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:55:in `require'
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:55:in `require'
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/lib/ruby/gems/2.5.0/gems/fluentd-0.12.43/bin/fluentd:8:in `<top (required)>'
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/bin/fluentd:23:in `load'
2019-02-21 14:35:14 +0900 [error]: /opt/td-agent/embedded/bin/fluentd:23:in `<top (required)>'
2019-02-21 14:35:14 +0900 [error]: /usr/sbin/td-agent:7:in `load'
2019-02-21 14:35:14 +0900 [error]: /usr/sbin/td-agent:7:in `<main>'
2019-02-21 14:35:14 +0900 [info]: shutting down fluentd
2019-02-21 14:35:14 +0900 [info]: shutting down output type="forward" plugin_id="forward_http"
2019-02-21 14:35:15 +0900 [info]: process finished code=0
Разве невозможно использовать http-плагин Fluentd вместе (т.е. в одной среде) с веб-сервером?