Files
sless/doc/run_and_logs.md
T

9.1 KiB
Raw Blame History

Run & Logs — инструкции по запуску и сбору логов

Дата: 2026-03-11 (обновлено 2026-03-11)

ГЛАВНОЕ ОТКРЫТИЕ: запускать всё на удалённой машине

Проблема: lokальная машина (remote_dev) ходит в интернет через VPN, который нестабилен:

  • docker push — TLS handshake timeout
  • terraform apply — TLS timeout при скачивании провайдера
  • HTTP-запросы к sless-api.kube5s.ru — иногда падают

Решение: удалённая машина 5.172.178.213 имеет прямой выход в интернет без VPN. Все долгие операции нужно запускать там через SSH, а не локально.

Агент Copilot делает это автоматически: пишет команду через ssh -i /home/naeel/.ssh/naeel_vm_id_ed25519, читает вывод/логи.

Что запускаем на удалённой машине (5.172.178.213):

  • terraform init / apply / destroy — все E2E и стресс-тесты
  • git pull / push
  • docker build / push
  • kubectl деплой оператора — kubeconfig скопирован в ~/.kube/config (2026-03-11)
  • run_stress_test.sh, run_e2e_tests.sh
  • HTTP-проверки к sless-api.kube5s.ru
  • go build / go test (если нужно проверить без VPN)

Что остаётся локально:

  • VS Code + Copilot — правка кода
  • git commit + push (файлы редактируются здесь)

Шаблон: запустить команду на удалённой машине

ssh -i /home/naeel/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no naeel@5.172.178.213 '<команда>'

Шаблон: запустить долгий скрипт в фоне и смотреть лог

# Запуск в фоне:
ssh -i /home/naeel/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no naeel@5.172.178.213 \
  'cd /home/naeel/terra/sless && nohup bash run_stress_test.sh > /tmp/stress.log 2>&1 & echo PID=$!'

# Следить за логом:
ssh -i /home/naeel/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no naeel@5.172.178.213 'tail -30 /tmp/stress.log'

  1. Предварительные условия
  • На локальной машине должен быть доступ в репозиторий (этот проект).
  • Для удалённого запуска через SSH используйте ключ или пароль пользователя naeel.
  • Если нужен неинтерактивный ввод пароля, установите sshpass.

Реквизиты удалённой машины:

  • Host: 5.172.178.213
  • User: naeel
  • SSH ключ: /home/naeel/.ssh/naeel_vm_id_ed25519
  • Repo path: /home/naeel/terra/sless

Пример подключения:

ssh -i /home/naeel/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no naeel@5.172.178.213 'echo OK'
  1. Скрипты (подготовленные в репо)
  • Диагностика системы: .tmp/ssh_diag.sh
  • Сбор логов ssh: .tmp/ssh_logs.sh
  • Тест пуша в pearlharbor: test_pearlharbor_push.sh (в корне репо)
  1. Быстрый запуск диагностик (одной командой, безопасно)

Если sshpass установлен, запустить локально и направить вывод в файл на локальной машине:

ssh -i /home/naeel/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no naeel@5.172.178.213 'bash -s' < .tmp/ssh_diag.sh > /tmp/ssh_diag_output.txt 2>&1
scp -i /home/naeel/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no naeel@5.172.178.213:/tmp/ssh_diag_output.txt ./

Или интерактивно:

ssh -i /home/naeel/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no naeel@5.172.178.213 'bash -s' < .tmp/ssh_diag.sh
  1. Сбор системных логов вручную (на хосте)

Запустите эти команды на хосте (через ssh) и сохраните результаты в /tmp для удобного скачивания:

sudo journalctl -u ssh -n 200 --no-pager > /tmp/ssh_journal.log
sudo tail -n 200 /var/log/auth.log > /tmp/auth.log
sudo systemctl status ssh --no-pager > /tmp/ssh_status.txt
sudo cat /etc/ssh/sshd_config > /tmp/sshd_config.txt

Docker логи и состояние:

docker --version > /tmp/docker_version.txt 2>&1 || true
docker ps -a > /tmp/docker_ps.txt 2>&1 || true
docker logs <container_name> > /tmp/docker_<container_name>.log 2>&1 || true

Если использовался nohup или фоновые скрипты, проверьте их лог-файлы (пример):

ls -la /tmp | grep pearlharbor
cat /tmp/pearlharbor_bg.log > /tmp/pearlharbor_bg.log.copy || true
  1. Забрать логи на локальную машину
scp -i /home/naeel/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213:/tmp/ssh_journal.log ./
scp -i /home/naeel/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213:/tmp/auth.log ./
scp -i /home/naeel/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213:/tmp/docker_ps.txt ./
  1. Запуск test_pearlharbor_push.sh (мультипуш тест)

Файл: test_pearlharbor_push.sh (в корне репозитория). Примеры использования:

# простая однократная прогонка (локально, когда docker настроен)
bash ./test_pearlharbor_push.sh

# с параметрами окружения
# NUM_PUSHES=5 CLEANUP=true ./test_pearlharbor_push.sh
# CREATE_PROJECT=true NUM_PUSHES=3 ./test_pearlharbor_push.sh

Скрипт печатает сводку по каждому пушу и возвращает HTTP/registry статусы. При включённом CLEANUP=true он попытается удалить тестовые теги через Harbor API.

  1. Рекомендации по безопасности
  • Никогда не выкладывайте содержимое secrets/pearlharbor_registry.txt публично.
  • Если используете sshpass, убедитесь, что доступ к вашей машине ограничен и удалённый пароль меняется по окончании тестов.
  1. Что делать при проблемах
  • Если docker push даёт TLS handshake timeout — проверьте VPN/маршрутизацию и повторы (retry) сети.
  • При 401 Unauthorized — проверьте правильность тега registry/PROJECT/REPO:TAG и существование проекта в Harbor (создаётся через API либо через WebUI).
  • Для ошибок ssh — смотрите /var/log/auth.log и journalctl -u ssh.
  1. Контактные точки (быстрый чек-лист)
  • Скрипты: .tmp/ssh_diag.sh, .tmp/ssh_logs.sh
  • Тест пуш: test_pearlharbor_push.sh
  • Логи на хосте: /var/log/auth.log, journalctl -u ssh, docker logs <container>

Файл создан автоматически агентом 2026-03-11.

  1. Соответствие локальных и удалённых путей

На локальной машине репозиторий находится в /home/naeel/remote_dev/sless, на удалённой — в /home/naeel/dev/sless. Это не обязательно значит, что содержимое одинаково. При проверке в данной сессии было обнаружено, что оба репозитория указывают на один и тот же коммит:

3dc39ddc20648b15e1f154d5e0b238ccf9789ba0

Команды для проверки соответствия и синхронизации:

  • Проверить текущий git-HEAD локально и на удалённой машине:
git -C /home/naeel/remote_dev/sless rev-parse HEAD
ssh naeel@serv 'git -C /home/naeel/dev/sless rev-parse HEAD'
  • Сравнить списки файлов (локально собрать и получить с удалённой):
find /home/naeel/remote_dev/sless -type f | sort > /tmp/files_local_sless.txt
ssh naeel@serv 'find /home/naeel/dev/sless -type f | sort' > /tmp/files_remote_sless.txt
diff -u /tmp/files_local_sless.txt /tmp/files_remote_sless.txt | less
  • Быстрая проверка синхронизации через rsync (dry-run):
rsync -av --dry-run --delete /home/naeel/remote_dev/sless/ naeel@serv:/home/naeel/dev/sless/

Если хэши совпадают, репозитории находятся в одном состоянии на уровне коммита. Если нужно, могу запустить подробный diff или предложить команды для синхронизации (rsync/пуш/клонирование).