Skip to content

Логирование

Иногда, когда возникают какие-либо проблемы с работой продукта, для их решения мы просим предоставить нам логи работы платформы.

Для установки с Docker

Утилита collect-logs

Для удобного сбора логов мы разработали утилиту collect-logs, которая позволяет одной командой получить все необходимые логи и упаковать их в архив для передачи команде техподдержки.

Все собранные логи, по умолчанию, сохраняются в файл ${PWD}/system_logs_$(date +%Y%m%d_%H%M%S).tar.gz

Примеры. Cобрать логи за последние 5 часов:

  • используя инсталлер:
bash install_dev_hw_vmp_en-US_<version>.run -- --collect-logs --output ${PWD} --since -5h
  • из директории с распакованным установщиком:
bin/collect-logs --since -5h
  • если приложение установлено:
/opt/hw-vmp/bin/collect-logs --since -5h

Включение DEBUG логов

Для получения более детальной информации в логах рекомендуется включить режим DEBUG:

  • Откройте файл /opt/hw-vmp/config/user.ini

  • Добавьте следующие параметры в раздел [main]

v.engine.logging.level=DEBUG
v.background.logging.level=DEBUG
  • Чтобы применить изменения, выполните команду: /opt/hw-vmp/bin/reconfig

Ручной сбор логов

Если утилита collect-logs недоступна, можно собрать логи вручную. Для этого выполните следующую команду:

sudo su
TODAY=$( date '+%Y-%m-%d' ); journalctl -u hw-vmp --since ${TODAY} | gzip > hw-vmp-${TODAY}.log.gz

Для установки в Kubernetes кластере

Включение DEBUG логов для Kubernetes

Для более подробных логов установите уровень DEBUG в файле оверрайдов:

vEngine:
  logLevel: DEBUG

vBackground:
  logLevel: DEBUG

vOrchestration:
  logLevel: DEBUG

После изменения конфигурации примените изменения:

helm upgrade $RELEASE_NAME oci://registry.hexway.io/charts/vampy \
  --version $RELEASE_VERSION \
  -n $RELEASE_NAMESPACE \
  -f my-values.yaml

Сбор логов

В примерах команд ниже предполагается, что заданы переменные среды окружения RELEASE_NAME и RELEASE_NAMESPACE. Вы можете задать их или подставлять нужные значения прямо в команды. Используйте те же значения, которые были указаны при установке чарта (имя релиза и namespace, в который он установлен).

Пример как задать переменные среды окружения:

RELEASE_NAME="vampy"
RELEASE_NAMESPACE="vampy"

Параметр времени: Используйте флаг --since для указания периода времени, за который собираются логи. Примеры:

  • --since=1h - логи за последний час
  • --since=30m - логи за последние 30 минут
  • --since=24h - логи за последние 24 часа
  • --since=2024-01-01T00:00:00Z - логи с указанной даты и времени

Сбор логов всех компонентов:

# Экспорт логов всех подов за последний час
kubectl logs -n $RELEASE_NAMESPACE -l app.kubernetes.io/instance=$RELEASE_NAME \
  --all-containers=true --prefix --since=1h 2>&1 | cat > vampy-logs-all-1h.txt

# Экспорт логов всех подов за последние 24 часа (может быть большой файл)
kubectl logs -n $RELEASE_NAMESPACE -l app.kubernetes.io/instance=$RELEASE_NAME \
  --all-containers=true --prefix --since=24h 2>&1 | cat > vampy-logs-all-24h.txt

Сбор логов конкретных компонентов:

Backend (vEngine):

# Логи backend за последний час
kubectl logs -n $RELEASE_NAMESPACE -l app.kubernetes.io/component=${RELEASE_NAME}-v-engine \
  --all-containers=true --prefix --since=1h 2>&1 | cat > vampy-logs-backend-1h.txt

Background Workers (vBackground):

# Логи всех background workers за последний час (если используется базовый режим vBackground)
kubectl logs -n $RELEASE_NAMESPACE -l app.kubernetes.io/component=${RELEASE_NAME}-v-background \
  --all-containers=true --prefix --since=1h 2>&1 | cat > vampy-logs-background-1h.txt

# Логи всех cpu-load workers (scan и calc вместе, если используется vBackgroundSeparated)
kubectl logs -n $RELEASE_NAMESPACE -l app.kubernetes.io/component=${RELEASE_NAME}-v-background-cpu-load \
  --all-containers=true --prefix --since=1h 2>&1 | cat > vampy-logs-background-cpu-load-1h.txt

# Логи high-priority-calc workers
kubectl logs -n $RELEASE_NAMESPACE -l app.kubernetes.io/component=${RELEASE_NAME}-v-background-high-priority-calc \
  --all-containers=true --prefix --since=1h 2>&1 | cat > vampy-logs-background-high-priority-calc-1h.txt

# Логи business-flow workers
kubectl logs -n $RELEASE_NAMESPACE -l app.kubernetes.io/component=${RELEASE_NAME}-v-background-business-flow \
  --all-containers=true --prefix --since=1h 2>&1 | cat > vampy-logs-background-business-flow-1h.txt

Orchestration (vOrchestration):

# Логи orchestration за последние 30 минут
kubectl logs -n $RELEASE_NAMESPACE -l app.kubernetes.io/component=${RELEASE_NAME}-v-orchestration \
  --all-containers=true --prefix --since=30m 2>&1 | cat > vampy-logs-orchestration-30m.txt

Frontend (vDeck):

# Логи frontend за последний час
kubectl logs -n $RELEASE_NAMESPACE -l app.kubernetes.io/component=${RELEASE_NAME}-v-deck \
  --all-containers=true --prefix --since=1h 2>&1 | cat > vampy-logs-frontend-1h.txt

Сбор диагностической информации:

# Экспорт состояния всех ресурсов
kubectl get all -n $RELEASE_NAMESPACE -o yaml 2>&1 | cat > vampy-resources.yaml

# Экспорт событий (может быть пустым, если события очищены или их нет - это нормально)
# События полезны для диагностики проблем с ресурсами, образами, PVC, но автоматически очищаются через ~1 час
kubectl get events -n $RELEASE_NAMESPACE --sort-by='.lastTimestamp' 2>&1 | cat > vampy-events.txt

# Экспорт конфигурации Helm
helm get values $RELEASE_NAME -n $RELEASE_NAMESPACE -o yaml 2>&1 | cat > vampy-helm-values.yaml
helm get manifest $RELEASE_NAME -n $RELEASE_NAMESPACE 2>&1 | cat > vampy-helm-manifest.yaml

# Список всех подов с их статусами
kubectl get pods -n $RELEASE_NAMESPACE -o wide 2>&1 | cat > vampy-pods.txt

# Описание проблемных подов (если есть)
kubectl describe pods -n $RELEASE_NAMESPACE 2>&1 | cat > vampy-pods-describe.txt

Примечания:

  • При выборе временного интервала учитывайте, что логи за большой период (24 часа и более) могут создать очень большие файлы
  • Если проблема возникла в конкретное время, используйте --since с указанием конкретной даты и времени
  • Логи отдельных компонентов удобнее для анализа, чем общий файл со всеми логами