Логирование¶
Лог событий аудита¶
На Портале администратора можно отслеживать все события, которые произошли в системе. Для этого перейдите в раздел .
Подробнее в статье CADF-события на Портале администратора.
Ротация консольных логов¶
В KeyStack реализована ротация консольных логов на уровне хостовых систем с помощью logrotate из контейнера cron c общими для всех ротируемых логов параметрами.
Расписание по умолчанию:
# Максимальный размер файла лога
cron_logrotate_log_maxsize: "100M"
# Минимальный размер файла лога
cron_logrotate_log_minsize: "30M"
# Периодичность проведения операции ротации
cron_logrotate_rotation_interval: "weekly"
# Количество ротированных файлов для хранения
cron_logrotate_rotation_count: 6
# Расписание запуска ротации
cron_logrotate_schedule: "daily"
Для просмотра списка ротируемых логов откройте на хостовой ОС любого сервера региона файл /etc/kolla/cron/logrotate.conf.
Для изменения параметров ротируемых логов выполните следующие действия:
Откройте веб-интерфейс GitLab.
Перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
globals.d/REGION.ymlи измените или добавьте переменные:cron_logrotate_log_maxsize: "100M" cron_logrotate_log_minsize: "30M" cron_logrotate_rotation_interval: "weekly" cron_logrotate_rotation_count: 6 cron_logrotate_schedule: "daily"
Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
В открывшемся окне добавьте значение переменной
KOLLA_ARGSравное-t common.Запустите пайплайн, нажав кнопку New pipeline.
Дождитесь завершения задач на этапе setup.
Запустите задачу deploy на этапе deploy и дождитесь её завершения.
Ротация logrotate охватывает только файлы журналов на хостовой операционной системе. Объём вывода контейнеров в стандартные потоки ограничивается отдельно, см. Логи контейнеров.
Логи контейнеров¶
Журналы самих служб записываются в файлы каталога /var/log/kolla/<служба>/ и собираются Fluentd в OpenSearch; список файлов приведён в разделе Файлы журналов компонентов платформы. Отдельно от них существует вывод контейнера в стандартные потоки stdout и stderr — его хранит движок контейнеров, и настоящий раздел посвящён именно ему. Описанные ниже параметры на содержимое /var/log/kolla не влияют.
Параметры разделены на две группы: драйверы логов применяются развёртыванием, а ограничения объёма — задачей bootstrap-servers.
Примечание
Если вы используете docker, замените podman на docker в представленных ниже командах.
Где хранится вывод контейнеров¶
Движок контейнеров |
Расположение файла |
Чем ограничивается объём |
|---|---|---|
|
Параметр |
|
|
Файл |
Искать файл вручную не требуется, вывод постоянно работающего контейнера выводится командой:
# podman logs <имя контейнера>
На Podman файл лога обрезается на месте при достижении предельного размера, ротированные копии не создаются.
Вывод контейнера доступен и на Портале администратора: кнопка Podman Logs в карточке контейнера (см. Команды служб Docker/Podman), а также вкладка Логи в карточке гипервизора (см. Вкладка Логи).
Вывод одноразовых контейнеров¶
Одноразовые контейнеры — начальной настройки службы (bootstrap), синхронизации схемы базы данных, миграции данных — удаляются сразу после завершения работы и уносят с собой свой файл лога. Команда podman logs для них недоступна: контейнера уже не существует. Поэтому их вывод по умолчанию направляется в системный журнал journald, где сохраняется и после удаления контейнера.
Для просмотра вывода укажите имя контейнера:
# journalctl CONTAINER_NAME=bootstrap_glance
Имена таких контейнеров соответствуют выполняемой операции, например bootstrap_glance, bootstrap_neutron или nova_list_cells. Вывод сохраняется целиком, включая код завершения:
Драйвер логов для одноразовых контейнеров задаётся отдельным параметром, см. Драйверы логов контейнеров.
Драйверы логов контейнеров¶
Параметр |
По умолчанию |
Допустимые значения |
Описание |
|---|---|---|---|
|
|
|
Драйвер логов постоянно работающих контейнеров. Действует только при |
|
|
|
Драйвер логов одноразовых контейнеров. Только значение |
Предупреждение
Изменение параметра container_log_driver меняет описание systemd-юнита контейнера, поэтому все контейнеры на узле будут пересозданы. В регионе с несколькими управляющими узлами применяйте изменение поочерёдно, по одному узлу за раз.
Для изменения драйверов логов выполните следующие действия:
Откройте веб-интерфейс GitLab.
Перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
globals.d/REGION.ymlи измените или добавьте переменные:container_log_driver: "k8s-file" container_log_driver_oneshot: "journald"
Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
В открывшемся окне добавьте значение переменной
KOLLA_ARGSравное--limit <имя узла>, чтобы применить изменение к одному узлу.Запустите пайплайн, нажав кнопку New pipeline.
Дождитесь завершения задач на этапе setup.
Запустите задачу deploy на этапе deploy и дождитесь её завершения.
Повторите процедуру для остальных узлов региона.
Ограничение объёма логов¶
Перечисленные ниже параметры задаются в том же файле globals.d/REGION.yml, но применяются задачей bootstrap-servers, а не задачей deploy.
Параметр |
По умолчанию |
Описание |
|---|---|---|
|
|
Предельный размер файла лога контейнера в байтах. Podman обрезает файл на месте, ротированные копии не создаются, поэтому предельный объём на узле равен числу контейнеров, умноженному на это значение. |
|
|
Уровень логирования службы podman API. При значении |
|
См. пример ниже |
Ограничения системного журнала на узле. |
Вывод постоянно работающих контейнеров в системный журнал больше не попадает, однако в него пишут systemd, ядро, служба podman API и одноразовые контейнеры. Ограничение частоты защищает системные сообщения от вытеснения:
podman_journald_config:
SystemMaxUse: "1G"
RuntimeMaxUse: "256M"
MaxRetentionSec: "1week"
RateLimitIntervalSec: "30s"
RateLimitBurst: "10000"
Примечание
При использовании docker перечисленные параметры не применяются: параметры хранения задаются в файле /etc/docker/daemon.json.
Для изменения ограничений выполните следующие действия:
Откройте веб-интерфейс GitLab.
Перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
globals.d/REGION.ymlи измените или добавьте переменные.Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
Запустите пайплайн, нажав кнопку New pipeline.
Дождитесь завершения задач на этапе setup.
Запустите задачу bootstrap-servers и дождитесь её завершения.
Настройка дополнительного приемника журналов KeyStack в формате syslog¶
Для вывода логов в удалённый сервис системного журнала (syslog) используется fluent-plugin-remote_syslog — плагин Fluentd.
При работе с данным плагином необходимо выполнить следующие действия:
В репозитории региона project_k / deployments / <имя региона> создайте файл
config/fluentd/output/fluent-plugin-remote_syslog.confсо следующим содержанием:<match **> @type remote_syslog host <remote_syslog_IP_address> port 514 protocol tcp </match>
Параметры:
[match **]— регулярное выражение соответствия «всем» логам;[host <remote_syslog_IP_address>]— ip-адрес (fqdn) сервиса syslog;[port 514]— порт прослушивания сервиса syslog;[protocol tcp]— протокол передачи данных.
После развёртывания kolla-ansible конфигурационный файл
td-agent.confконтейнера fluentd будет содержать следующие данные:# Outputs # Included from conf/output/00-local.conf.j2: # Included from /etc/kolla/config/fluentd/output/fluent-plugin-remote_syslog.conf: <match **> @type remote_syslog host 10.120.120.125 port 514 protocol tcp </match>
Пример возможной конфигурации плагина fluent-plugin-remote_syslog с секциями¶
<match foo.bar>
@type remote_syslog
host example.com
port 514
severity debug
program fluentd
hostname ${tag[1]}
<buffer tag>
</buffer>
<format>
@type single_value
message_key message
</format>
</match>
Основные конфигурационные параметры¶
Название |
Тип |
Поддержка заполнения |
Описание |
|---|---|---|---|
hostname |
string |
support |
Отправление журнала. |
host |
string |
support |
Системный журнал целевого узла. |
port |
integer (default: |
Системный журнал целевого порта. |
|
host_with_port |
string |
support |
Параметр для: style. |
facility |
string (default: |
support |
Системный журнал объекта. |
severity |
string (default: |
support |
Системный журнал приоритетов. |
program |
string (default: |
support |
Системный журнал название программ. |
protocol |
enum (udp, tcp) (default: |
Протокол передачи данных. |
|
tls |
bool (default: false) |
Использование TLS (только tcp). |
|
ca_file |
string |
Путь к файлу ca_file (только для режима tls). |
|
verify_mode |
integer |
SSL режим проверки (только для режима tls). |
|
packet_size |
integer (default: |
Ограничение размера пакета системного журнала. |
|
timeout |
integer |
Время ожидания передачи по протоколу TCP. Если значение равно 0, ожидайте вечно. |
|
timeout_exception |
bool (default: |
Если значение равно true, вызовите исключение по тайм-ауту передачи. |
|
keep_alive |
bool (default: |
Использование TCP для поддержания работоспособности. |
|
keep_alive_idle |
integer |
Установите режим ожидания TCP для поддержания работоспособности во время простоя. |
|
keep_alive_cnt |
integer |
Установите объём измерения TCP для поддержания работоспособности. |
|
keep_alive_intvl |
integer |
Установите интервал измерения TCP для поддержания работоспособности. |
Конфигурационные параметры для секции buffer¶
Название |
По умолчанию |
|---|---|
flush_mode |
interval |
flush_interval |
5 |
flush_thread_interval |
0.5 |
flush_thread_burst_interval |
0.5 |
Конфигурационные параметры для секции format¶
Название |
По умолчанию |
|---|---|
@type |
ltsv |