【问题标题】:how to make fail2ban read json docker logs如何让fail2ban读取json docker日志
【发布时间】:2016-07-10 21:34:07
【问题描述】:

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

Jail.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 [error] 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读取json日志文件 docker nginx 容器
  • 如果没有,如何配置docker制作syslog日志格式
  • 如果不是,如何在容器上配置系统日志以通过 记录到我的主机?

谢谢!

【问题讨论】:

    标签: logging nginx docker docker-compose fail2ban


    【解决方案1】:

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

    【讨论】:

    • 我实际上是在使用 docker-compose 运行我的容器,文档有点模棱两可,但谢谢 :)
    【解决方案2】:

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

    /etc/fail2ban/filter.d
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-25
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多