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

Игнорирование IP-адреса пересылки в syslog-ng

Мы получаем каналы syslog-ng от пересылки, которую мы не контролируем.

Проблема в том, что они используют более старую версию (RHEL 6), и, хотя для keep_hostnames установлено значение «yes» (для chain_hostnames установлено значение «no»), это просто не работает. Их канал все еще добавляет к сообщению IP-адрес реле и временную метку.

Я не знаю другого способа сделать это, кроме создания глобального фильтра для этого единственного входа, чтобы оторвать ведущий IP-адрес и временную метку.

У кого-нибудь есть предложения? Я очень удивлен, что не могу сказать своему syslog-ng просто игнорировать все добавленные цепочки реле.

Моя работа по этому поводу не является привлекательной, но она работает. Я все слышу, если кто-то знает способ получше.

Вот что я сделал. Поэтому в этой ситуации я пытаюсь отфильтровать журналы IIS (s_net - это просто tcp / udp, прослушивающий порт 514). Итак, вот что находится в моем файле iis.conf внутри conf.d

parser p_iis_pattern_db {
    db_parser(file("/etc/syslog-ng/patterndb.d/strip_header.xml"));
};

filter f_iis {
    match("iis", value(".classifier.class"));
};

rewrite r_iis {
    set("${real_sender}", value("HOST"));
    set("iis", value("PROGRAM"));
};

destination d_iis {
    file("/nfs/syslog/iis/$YEAR/$MONTH/$DAY/${real_sender}/$YEAR-$MONTH-$DAY-$HOUR-${real_sender}-$PROGRAM.log"
        template("${orig_sender}${msg}\n"));
};

log {
    source(s_net);
    parser(p_iis_pattern_db);
    filter(f_iis);
    rewrite(r_iis);
    destination(d_iis);
    flags(final);
};

Затем у меня есть файл шаблона в patterndb.d (strip_header.xml), который выглядит так:

<patterndb version='3' pub_date='2017-02-07'>
  <ruleset name='strip_sender' id='strip_leading_sender'>
    <rules>
      <rule id='iis' class='iis'>
        <patterns>
          <pattern>@ESTRING:datestamp: @@IPv4:real_sender@ iis - - - @ANYSTRING:msg@</pattern>
        </patterns>
      </rule>
    </rules>
  </ruleset>
</patterndb>

Я бы предпочел фильтрацию на основе значения MACRO, отличного от сообщения, поскольку я думаю, что это, вероятно, довольно дорого; он должен анализировать послание каждого пакета. Поскольку данные поступают от реле, на котором запущена более старая версия syslog-ng, я выполняю исходящий тег данных на этом реле, и параметры keep-hostname / chain-hostname не работают.

Еще меня беспокоит то, что в спешке это станет небрежным, поскольку я начну добавлять источники без ретрансляции. Мне, возможно, придется сделать все, где я назову файлы conf определенным образом, чтобы убедиться, что они выполняются в правильном порядке, чтобы сэкономить циклы процессора (это по алфавиту?).