Логирование
Иногда, когда возникают какие-либо проблемы с работой продукта, для их решения мы просим предоставить нам логи работы платформы.
Для установки с Docker
Утилита collect-logs
Для удобного сбора логов мы разработали утилиту collect-logs, которая позволяет одной командой получить все необходимые логи и упаковать их в архив для передачи команде техподдержки.
Все собранные логи, по умолчанию, сохраняются в файл ${PWD}/system_logs_$(date +%Y%m%d_%H%M%S).tar.gz
Примеры. Cобрать логи за последние 5 часов:
- используя инсталлер:
- из директории с распакованным установщиком:
- если приложение установлено:
Включение DEBUG логов
Для получения более детальной информации в логах рекомендуется включить режим DEBUG:
-
Откройте файл
/opt/hw-vmp/config/user.ini -
Добавьте следующие параметры в раздел
[main]
- Чтобы применить изменения, выполните команду:
/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 в файле оверрайдов:
После изменения конфигурации примените изменения:
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, в который он установлен).
Пример как задать переменные среды окружения:
Параметр времени: Используйте флаг --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с указанием конкретной даты и времени - Логи отдельных компонентов удобнее для анализа, чем общий файл со всеми логами