как заставить fail2ban читать логи докеров json

Можно ли настроить мой fail2ban jail.conf для проверки журналов докеров вместо монтирования журнала на хосте. например, чтобы установить путь журнала к пути журнала контейнера.

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 < / strong>, запрос: "GET /Blog/wp-login.php HTTP / 1.1", восходящий поток: "http://172.17.0.3:8001/Blog/wp-login.php", хост: "@MY_IP: 80" @ATTACKER_IP - - [23 марта / 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 / Март / 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
  • если нет, как настроить докер для создания формата журнала системного журнала
  • если нет, как настроить системный журнал на контейнере, чтобы передать журнал моему хосту?

Спасибо !


person Octo    schedule 23.03.2016    source источник


Ответы (2)


Вы можете настроить контейнер для отправки журналов в системный журнал, см. https://docs.docker.com/engine/admin/logging/overview/

person dnephin    schedule 25.03.2016
comment
На самом деле я запускаю свои контейнеры с помощью docker-compose, и документы немного неоднозначны, но спасибо :) - person Octo; 29.03.2016

Вы также можете изменить правила регулярного выражения fail2ban для демона nginx-http-auth. Правила регулярных выражений находятся в этой папке:

/etc/fail2ban/filter.d
person tibbus    schedule 26.03.2016