10

是否可以将我的 fail2ban jail.conf 配置为检查 docker 日志而不是将日志安装在主机中。例如将 logpath 设置为容器的日志路径。

监狱.conf:

...
#example
[nginx-http-auth]
    enabled = true
    filter  = nginx-http-auth
    port    = http,https
    logpath = /var/lib/docker/containers/819564257d4*/*e0923e-json.log
...

但这并没有多大作用,因为 docker logs 命令和日志文件之间有一点区别:

# docker logs @nginx_container_name 

2016/03/23 12:39:52 [错误] 6#6: *350​​ 上游过早关闭连接,同时从上游读取响应标头,客户端: @ATTACKER_IP,服务器:@MY_DNS,请求:“GET /Blog/wp-login .php HTTP/1.1”,上游:“ http://172.17.0.3:8001/Blog/wp-login.php ”,主机:“ @MY_IP:80” @ATTACKER_IP - - [23/Mar/2016:12: 39:52 +0000]“GET /Blog/wp-login.php HTTP/1.1”502 173“-”“Python-urllib/2.7”

# cat /var/lib/docker/containers/819564257d4*/*e0923e-json.log

{"log":"2016/03/23 12:39:52 [错误] 6#6: *350​​ 上游从上游读取响应标头时过早关闭连接,客户端:@ATTACKER_IP,服务器:@MY_DNS,请求:\" GET /Blog/wp-login.php HTTP/1.1\",上游:\" http://172.17.0.3:8001/Blog/wp-login.php \",主机:\" @MY_IP :80\"\ n","stream":"stdout","time":"2016-03-23T12:39:52.219982304Z"} {"log":" @ATTACKER_IP - - [23/Mar/2016:12:39:52 +0000] \"GET /Blog/wp-login.php HTTP/1.1\" 502 173 \"-\" \"Python-urllib/2.7\"\n","stream":"stdout","time" :"2016-03-23T12:39:52.421767592Z"}

我正在将日志文件安装到主机中,我知道这很愚蠢,所以我的问题是:

  • 有什么办法可以让 rsyslog 读取 docker nginx 容器的 json 日志文件
  • 如果没有,如何配置 docker 以制作 syslog 日志格式
  • 如果没有,如何在容器上配置 syslog 以便将日志传递到我的主机?

谢谢 !

4

2 回答 2

0

您可以配置容器以将日志发送到 syslog,请参阅https://docs.docker.com/engine/admin/logging/overview/

于 2016-03-25T16:37:56.080 回答
0

您还可以更改nginx-http-auth守护程序的 fail2ban 正则表达式规则。正则表达式规则位于此文件夹中:

/etc/fail2ban/filter.d
于 2016-03-26T21:43:49.223 回答