使用流利的docker来获取nginx日志

时间:2017-10-09 14:20:32

标签: docker nginx kibana fluentd

我有一个场景,nginx在一个容器中运行而fluentd在另一个容器中,我将nginx日志映射到var/logs/nginx目录,但我无法使用fluentd将日志检索到弹性搜索,请帮我解决此问题:

fluentd.conf

<source>
  @type forward
  port 24224
  bind 0.0.0.0
</source>
<source>
  @type tail
  path /var/log/nginx/access_in_log
  #pos_file /var/log/td-agent/nginx-access.log.pos
  tag nginx.access
  format nginx
</source>


<match nginx.access>
  @type elasticsearch
  logstash_format true
  host elasticsearchkibana
  port 9200
  index_name nginxindex
  type_name nginxlogtype
</match>

请让我知道我错过了什么。

1 个答案:

答案 0 :(得分:1)

我使用nginx syslog驱动程序(http://nginx.org/en/docs/syslog.html)解决了这个问题。

在我的nginx.conf内部的nginx容器中,我有以下设置:

http {
...
access_log syslog:server=<FLUENTD_HOST>:<FLUENTD_PORT>,tag=nginx_access;    
error_log syslog:server=<FLUENTD_HOST>:<FLUENTD_PORT>,tag=nginx_error info;  

在我的Fluentd容器中的fluent.conf我有这个配置:

<source>
    @type syslog
    port 5141
    tag "syslog"
</source>

日志看起来像这样:

Nginx access and error logs in EFK