Promtail — конфигурация системного журнала регистрирует только локальный хост для имени хоста и IP

У меня есть несколько ящиков, на которых работают докер-контейнеры. Чтобы вести учет всех журналов, у нас есть 1 экземпляр logspout на каждом ящике, который собирает все журналы контейнера в этом ящике и направляет их в экземпляр syslog-ng (докер-контейнер) на центральном хосте, который сохраняет их на определенный путь.

Я пытаюсь расширить эту настройку, чтобы использовать графану/локи. Проблема в том, что метка __syslog_connection_hostname всегда имеет значение «[локальный хост fdqn].,[имя хоста],localhost.localdomain». неважно откуда берутся логи. Я знаю, что syslog-ng знает, где находятся настоящие хосты, потому что маршрут, по которому мы храним журналы, выглядит примерно так:date_underscore/hostname/containername.log

Я попробовал установитьkeep-hostname(yes)в syslog-ng нет игральных костей. Не уверен, что мне не хватает.

системный журнал-ng конф

      @version: 3.37
@include "scl.conf"
options {
  dir-perm(0755);
  keep-hostname(yes);
};
source s_network {
  default-network-drivers();
};
destination d_local {
  file("/logs/${YEAR}_${MONTH}_${DAY}/${HOST_FROM}/${PROGRAM}.log" perm(0755) create_dirs(yes));
};
destination d_loki {
  syslog("localhost" transport("tcp") port(1514));
};
log {
  source(s_network);
  destination(d_local);
  destination(d_loki);
};

Фрагмент конфигурации Promtail

      - job_name: syslog
  syslog:
    listen_address: 0.0.0.0:1514
    idle_timeout: 60s
    label_structured_data: yes
    labels:
      job: "syslog"
  relabel_configs:
    - source_labels: ['__syslog_message_hostname']
      target_label: 'container_name'
    - source_labels: ['__syslog_connection_hostname']
      target_label: 'hostname'
    - source_labels: ['__syslog_connection_ip_address']
      target_label: 'ip'
    - source_labels: ['__syslog_message_severity']
      target_label: 'severity'

0 ответов

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