Различные службы создают журналы автоматически. В VMware Aria Automation можно создавать наборы журналов. Кроме того, в среде можно настроить автоматическую отправку журналов в VMware Aria Operations for Logs.

Для получения сведений о служебной программе командной строки vracli используйте аргумент --help в командной строке vracli (например, vracli log-bundle --help).

Дополнительные сведения об использовании VMware Aria Operations for Logs см. в разделе Настройка пересылки журналов в VMware Aria Operations for Logs в VMware Aria Automation.

Команды набора журналов

В наборе журналов можно объединить все журналы, которые создаются запущенными службами. Набор журналов содержит все журналы служб. Набор журналов можно использовать для устранения неполадок.

В кластерной среде (режим высокой доступности) команда vracli log-bundle выполняется только на одном узле. Журналы собираются со всех узлов в среде. Однако при наличии проблем c сетевым подключением или проблем в кластере журналы собираются только с доступных узлов. Например, если в кластере, состоящем из трех узлов, один узел недоступен, то журналы собираются только с двух работоспособных узлов. Выходные данные команды vracli log-bundle содержат сведения об обнаруженных проблемах и их устранении.

  • Чтобы создать набор журналов, необходимо подключиться по протоколу SSH к любому узлу и выполнить следующую команду vracli:

    vracli log-bundle

  • Чтобы изменить время ожидания при получении журналов с каждого узла, выполните следующую команду vracli:

    vracli log-bundle --collector-timeout $CUSTOM_TIMEOUT_IN_SECONDS

    Например, в среде с большими файлами журналов, медленной сетью или интенсивным использованием ЦП, можно установить время ожидания, превышающее значение по умолчанию (1000 сек.).

  • Чтобы определить дисковое пространство, используемое конкретным журналом службы, например ebs или vro, выполните следующую команду vracli и проанализируйте ее выходные данные.

    vracli disk-mgr

  • Чтобы настроить другие параметры, например время ожидания сборки и расположение буфера, используйте следующую команду справки vracli:

    vracli log-bundle --help

Структура набора журналов

Набор журналов — это файл tar с отметками времени. Имя пакета формируется по шаблону log-bundle-<дата>T<время>.tar, например log-bundle-20200629T131312.tar. Типовой набор журналов содержит журналы со всех узлов среды. В случае ошибки он содержит максимально возможное количество журналов. Как минимум он содержит журналы с локального узла.

Набор журналов включает в себя следующее содержимое.
  • Файл среды

    Файл среды содержит выходные данные различных команд обслуживания Kubernetes. Он предоставляет информацию о текущем использовании ресурсов по узлам и по модулям. В нем также содержатся сведения о кластере и описания всех доступных сущностей Kubernetes.

  • Журналы узлов и конфигурация

    Конфигурация каждого узла (например, его каталога /etc) и связанные с узлом журналы (например, journald) собираются в одном каталоге для каждого узла кластера. Имя каталога соответствует имени узла. Внутреннее содержимое каталога соответствует файловой системе узла. Количество каталогов соответствует количеству узлов кластера.

  • Журналы служб
    Журналы для служб Kubernetes находятся в следующей иерархии папок:
    • <hostname>/services-logs/<namespace>/<app-name>/file-logs/<container-name>.log
    • <hostname>/services-logs/<namespace>/<app-name>/console-logs/<container-name>.log

    Пример имени файла — my-host-01/services-logs/prelude/vco-app/file-logs/vco-server-app.log.

    • hostname — это имя узла, на котором выполняется или выполнялся контейнер приложения. Как правило, на каждом узле используется один экземпляр каждой службы. Например, 3 узла = 3 экземпляра.
    • namespace — это пространство имен Kubernetes, в котором развернуто приложение. Для служб, связанных с пользователями, оно имеет значение prelude.
    • app-name — это имя приложения Kubernetes, создавшего журналы (например, provisioning-service-app).
    • container-name — это имя контейнера, в котором созданы журналы. Некоторые приложения состоят из нескольких контейнеров. Например, контейнер vco-app содержит контейнеры vco-server-app и vco-controlcenter-app.
  • Журналы модулей (устарело)

    Хотя наборы журналов модулей можно по-прежнему создавать с помощью команды vracli log-bundle --include-legacy-pod-logs, это не рекомендуется делать, поскольку все данные журналов уже находятся в журналах служб. Создание журналов модулей может привести к невынужденной потере времени и затратам памяти при создании набора журналов.

Уменьшение размера набора журналов

Чтобы создать набор журналов, имеющий меньший размер, используйте какую-либо из следующих команд vracli log-bundle.

  • vracli log-bundle --since-days n

    Эта команда используется для сбора только тех файлов журнала, которые были созданы за определенное количество прошедших дней. По умолчанию собираются и хранятся журналы за последние 2 дня. Например:

    vracli log-bundle --since-days 1

  • vracli log-bundle --services service_A,service_B,service_C

    Эта команда используется для сбора журналов только для именованных предоставленных служб. Например:

    vracli log-bundle --services ebs-app,vco-app

  • vracli log-bundle --skip-heap-dumps

    Используйте эту команду, чтобы исключить дампы кучи из созданного набора журналов.

Отображение журналов

Для вывода журналов модуля или приложения службы можно использовать команду vracli logs <pod_name>.

Доступны следующие параметры команды.
  • --service

    Отображение объединенного журнала для всех узлов приложения вместо одного модуля.

    Пример: vracli logs --service abx-service-app

  • --tail n

    Отображение последних n строк журнала. Значение n по умолчанию — 10.

    Пример: vracli logs --tail 20 abx-service-app-8598fcd4b4-tjwhk

  • --file

    Отображение только указанного файла. Если имя файла не указано, отображаются все файлы.

    Пример: vracli logs --file abx-service-app.log abx-service-app-8598fcd4b4-tjwhk

Основные сведения о ротации журналов

Что касается ротации журналов, необходимо учитывать следующие факторы, касающиеся журналов служб.
  • Все службы создают журналы. Журналы служб хранятся на выделенном диске /var/log/services-logs.
  • Все журналы регулярно проходят ротацию. Ротация происходит ежечасно или при достижении определенного ограничения размера.
  • Ротация старых журналов со временем уплотняется.
  • Квот на ротацию журналов для отдельных служб не устанавливается.
  • Система сохраняет как можно больше журналов. Автоматизация регулярно проверяет дисковое пространство, занятое журналами. Если оно заполняется на 70 %, старые журналы удаляются, пока его объем не достигнет 60 %.
  • Если требуется больше пространства, емкость диска для журналов можно изменить. См. раздел Увеличение размера диска устройства VMware Aria Automation.

Чтобы проверить дисковое пространство для журналов, выполните следующие команды vracli. Свободного места на диске /dev/sdc(/var/log) для каждого узла должно быть не менее 30 %.

# vracli cluster exec -- bash -c 'current_node; vracli disk-mgr; exit 0'
sc1-10-182-1-103.eng.vmware.com
/dev/sda4(/):
	Total size: 47.80GiB
	Free: 34.46GiB(72.1%)
	Available(for non-superusers): 32.00GiB(66.9%)
	SCSI ID: (0:0)
/dev/sdb(/data):
	Total size: 140.68GiB
	Free: 116.68GiB(82.9%)
	Available(for non-superusers): 109.47GiB(77.8%)
	SCSI ID: (0:1)
/dev/sdc(/var/log):
	Total size: 21.48GiB
	Free: 20.76GiB(96.6%)
	Available(for non-superusers): 19.64GiB(91.4%)
	SCSI ID: (0:2)
/dev/sdd(/home):
	Total size: 29.36GiB
	Free: 29.01GiB(98.8%)
	Available(for non-superusers): 27.49GiB(93.7%)
	SCSI ID: (0:3)