syslog-ng / telegraf: EOF произошел во время простоя – несовместимо?

Это следующий вопрос из предыдущего вопроса , созданный потому, что я узнал больше информации, и было бы проще задать его как новый вопрос.

Я использую syslog-ng OSE v3.31.2 для получения сообщений системного журнала RFC3164 через UDP-порт 514 от группы клиентов, записываю их как в файл, так и пересылаю их в телеграф через TCP-порт 601 без TLS RFC5424 для вставки в База данных InfluxDB.

Моя конфигурация syslog-ng:

      @version: 3.29
@include "scl.conf"

options {
    flush-lines(1);
};
    
source s_network {
    udp(ip(0.0.0.0) port(514));
};

destination d_file {
    file("/var/log/messages");
};
    
destination d_telegraf {
    syslog("telegraf" port(601) transport(tcp));
};
    
log {
    source(s_network);
    destination(d_telegraf);
    destination(d_file);
};

Соответствующая часть моей конфигурации телеграфа выглядит следующим образом:

      [global_tags]

[agent]
  interval = "100ms"
  round_interval = true
  metric_buffer_limit = 10000
  flush_buffer_when_full = true
  collection_jitter = "0s"
  flush_interval = "100ms"
  flush_jitter = "0s"
  debug = true
  quiet = false

[[outputs.influxdb]]
  urls = ["http://influxdb:8086"]
  database = "logs_db"

[[inputs.syslog]]
  server = "tcp://telegraf:601"

По сути, syslog-ng настроен для пересылки записей системного журнала через TCP-соединение в telegraf.

Проблема в том, что я вижу, что syslog-ng часто отключает TCP от Telegraf. Они отображаются в журнале syslog-ng как:

      [2021-11-17T02:55:32.662972] EOF occurred while idle; fd='12'
[2021-11-17T02:55:32.663102] Syslog connection closed; fd='12', server='AF_INET(192.168.0.6:601)', time_reopen='60'
[2021-11-17T02:56:32.719139] Syslog connection established; fd='12', server='AF_INET(192.168.0.6:601)', local='AF_INET(0.0.0.0:0)'

Это отключение обычно происходит, когда я отправляю журнал в syslog-ng с помощью:

      logger -i -d --server localhost test

Но если я просто оставлю все это без дела, я также получу:

      [2021-11-17T02:57:05.392356] EOF on control channel, closing connection;

В этих случаях 192.168.0.6 является сервером телеграфа.

Хотя я могу установить опциюtime-reopen(1)Чтобы ускорить повторное подключение, я бы предпочел найти основную причину и в первую очередь предотвратить отключение.

Возможно ли, что существует несовместимость между syslog-ng и telegraf, которая вызывает этот EOF и нечистое отключение?

Все это выполняется в стеке docker-compose на одном хосте.


РЕДАКТИРОВАТЬ: я начал изучать RFC5424 и RFC6587. Используя Wireshark для обнаружения пакетов из syslog-ng, предназначенных для Telegraf, я определил, что они используют вставку октетов (так называемое непрозрачное кадрирование), а не подсчет октетов, который Telegraf ожидает по умолчанию. Полезная нагрузка каждого сообщения системного журнала для telegraf начинается с символа «<», а не с целого числа.

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

К сожалению, когда я настроил телеграф на прием непрозрачного кадра, он отклоняет всю запись, и я еще не понял, почему.

Я также еще не понял, как настроить syslog-ng для вывода сообщений с кадрированием с подсчетом октетов.

Но, по крайней мере, сообщение EOF и отключение перестали происходить. Но я не уверен, что это имеет большое значение, если Telegraf полностью отвергает все сообщения.

1 ответ

Я определил, что syslog-ng отправляет в телеграф сообщения в рамках подсчета октетов.

Причина этой проблемы заключается в том, что Telegraf отключает TCP-соединение от syslog-ng через 5 секунд, не получая сообщения. Это противоречит документации, прилагаемой к плагину системного журнала telegraf, в которой говорится, что этот тайм-аут применяется только ко времени получения одного сообщения, а не ко времени между сообщениями. Хотя это может быть проблема с английским языком/интерпретацией. Параметрread_timeoutк0в конфигурации телеграфа достаточно, чтобы телеграф не отключался.

Другие вопросы по тегам