Назад | Перейти на главную страницу

rsyslog: проанализировать журнал доступа nginx и отправить его через omhttp на бэкэнд

Мне нужно прочитать файл nginx access_log и отправить данные в HTTP-сервер, когда строка содержит «какое-то выражение». Это часть задачи выставления счетов за скачанные файлы через nginx. access_log.


Nginx хранит логи в /var/log/nginx/access.log В формате загрузки:

log_format download '{ "remote_addr": "$remote_addr", "time": "$time_local", "request": "$request", "traffic": $body_bytes_sent, "x_forwarded_for": "$http_x_forwarded_for" }';

Rsyslog смотреть этот файл (/etc/rsyslog.conf).

module(load="imfile" PollingInterval="10") 
input(type="imfile"
      File="/var/log/nginx/access.log"
      Tag="nginx-access"
      Severity="info"
      Facility="local3")

Мне нужна помощь с модулем rsyslog omhttp. Как настроить для:

Правильный ответ - использование syslog-ng вместо того syslog

Часть конфигурации, выполняющей эту работу:

destination d_http {
  http(
    url("http://127.0.0.1/api/billing")
    method("POST")
    body("$(format-json message=$MESSAGE)")
  );
};

log {
  source(s_src);
  filter { program("nginx") and message("download\/ogg") };
  destination(d_http);
};

В Rails нужен патч обезьяны:

JSON.parse(JSON.parse(request.raw_post)['message'])['request'] => "POST /api/subscriptions/downloads/billing HTTP/1.0"