Как можно изменить местоположение, куда Consul записывает свои логи?

Как можно изменить местоположение записи журнала для агента Consul на машине, чтобы он записывал логи в `/var/log/consul/consul.log` вместо дефолтного места `/var/log/message`?
  • 19 января 2024 г. 9:50
Ответы на вопрос 2
Consul, как правило, по умолчанию не пишет логи в файл `/var/log/messages`. Скорее, это поведение может быть связано с тем, что stdout и stderr агента Consul перехватываются системным регистратором, например, systemd-journald, который затем может перенаправлять сообщения в `/var/log/messages`.

Для изменения местоположения логов Consul в системе на базе Linux, которая использует systemd, вам понадобится создать файл конфигурации для systemd сервиса, который управляет запуском агента Consul. Вы будете перенаправлять stdout и stderr в нужный файл лога.

Вот шаги, которые вам нужно предпринять:

1. Создайте директорию для логов Consul, если она ещё не существует:

```bash
sudo mkdir -p /var/log/consul
sudo chown consul:consul /var/log/consul
```

2. Создайте или отредактируйте файл unit'a systemd для Consul, например, с помощью редактора `nano`:

```bash
sudo nano /etc/systemd/system/consul.service
```

или, если системный файл unit'a уже существует, вы можете создать файл переопределения:

```bash
sudo systemctl edit consul.service
```

3. Внесите изменения в файл unit'a (или в файл переопределения) для настройки логирования:

```ini
[Service]
ExecStart=
ExecStart=/usr/bin/consul agent -config-dir=/etc/consul.d/
StandardOutput=file:/var/log/consul/consul.log
StandardError=file:/var/log/consul/consul.log
```

Обратите внимание, что `ExecStart` указан дважды: сначала с пустым значением, чтобы сбросить предыдущие настройки, а затем с фактическим путем запуска.

4. Перезагрузите конфигурацию systemd и перезапустите Consul:

```bash
sudo systemctl daemon-reload
sudo systemctl restart consul
```

После этого логи агента Consul должны начать писаться в файл `/var/log/consul/consul.log`.

Также важно убедиться, что у пользователя `consul` есть права на запись в файл лога. Если Consul запущен под другим пользователем, замените `consul` на соответствующее имя пользователя в команде `chown` выше.

Обратите внимание, что возможность перенаправлять stdout и stderr в файл напрямую из unit-файла systemd доступна начиная с версии systemd 236. Если у вас более старая версия, вы можете использовать традиционный подход с `tee` или другими методами логирования.
Добавьте 

"enable_syslog": false
Похожие вопросы