8.8 KiB
Run & Logs — инструкции по запуску и сбору логов
Дата: 2026-03-11 (обновлено 2026-03-11)
ГЛАВНОЕ ОТКРЫТИЕ: запускать всё на удалённой машине
Проблема: lokальная машина (remote_dev) ходит в интернет через VPN, который нестабилен:
docker push— TLS handshake timeoutterraform apply— TLS timeout при скачивании провайдера- HTTP-запросы к
sless-api.kube5s.ru— иногда падают
Решение: удалённая машина 192.168.1.220 имеет прямой выход в интернет без VPN.
Все долгие операции нужно запускать там через SSH, а не локально.
Агент Copilot делает это автоматически: пишет команду через sshpass ssh, читает вывод/логи.
Что запускаем на удалённой машине (192.168.1.220):
terraform init / apply / destroy— все E2E и стресс-тестыgit pull / pushdocker build / pushkubectlдеплой оператора — 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(файлы редактируются здесь)
Шаблон: запустить команду на удалённой машине
sshpass -p 'p' ssh -o StrictHostKeyChecking=no naeel@192.168.1.220 '<команда>'
Шаблон: запустить долгий скрипт в фоне и смотреть лог
# Запуск в фоне:
sshpass -p 'p' ssh -o StrictHostKeyChecking=no naeel@192.168.1.220 \
'cd /home/naeel/dev/sless && nohup bash run_stress_test.sh > /tmp/stress.log 2>&1 & echo PID=$!'
# Следить за логом:
sshpass -p 'p' ssh -o StrictHostKeyChecking=no naeel@192.168.1.220 'tail -30 /tmp/stress.log'
- Предварительные условия
- На локальной машине должен быть доступ в репозиторий (этот проект).
- Для удалённого запуска через SSH используйте ключ или пароль пользователя
naeel. - Если нужен неинтерактивный ввод пароля, установите
sshpass.
Реквизиты удалённой машины:
- Host:
192.168.1.220 - User:
naeel - Password:
p - Repo path:
/home/naeel/dev/sless
Пример подключения:
sshpass -p 'p' ssh -o StrictHostKeyChecking=no naeel@192.168.1.220 'echo OK'
- Скрипты (подготовленные в репо)
- Диагностика системы:
.tmp/ssh_diag.sh - Сбор логов ssh:
.tmp/ssh_logs.sh - Тест пуша в pearlharbor:
test_pearlharbor_push.sh(в корне репо)
- Быстрый запуск диагностик (одной командой, безопасно)
Если sshpass установлен, запустить локально и направить вывод в файл на локальной машине:
sshpass -p 'p' ssh -o StrictHostKeyChecking=no naeel@192.168.1.220 'bash -s' < .tmp/ssh_diag.sh > /tmp/ssh_diag_output.txt 2>&1
scp -o StrictHostKeyChecking=no naeel@192.168.1.220:/tmp/ssh_diag_output.txt ./
Или интерактивно (ввести пароль вручную):
ssh -o StrictHostKeyChecking=no naeel@192.168.1.220 'bash -s' < .tmp/ssh_diag.sh
- Сбор системных логов вручную (на хосте)
Запустите эти команды на хосте (через 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
- Забрать логи на локальную машину
scp naeel@192.168.1.220:/tmp/ssh_journal.log ./
scp naeel@192.168.1.220:/tmp/auth.log ./
scp naeel@192.168.1.220:/tmp/docker_ps.txt ./
- Запуск
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.
- Рекомендации по безопасности
- Никогда не выкладывайте содержимое
secrets/pearlharbor_registry.txtпублично. - Если используете
sshpass, убедитесь, что доступ к вашей машине ограничен и удалённый пароль меняется по окончании тестов.
- Что делать при проблемах
- Если
docker pushдаёт TLS handshake timeout — проверьте VPN/маршрутизацию и повторы (retry) сети. - При
401 Unauthorized— проверьте правильность тегаregistry/PROJECT/REPO:TAGи существование проекта в Harbor (создаётся через API либо через WebUI). - Для ошибок ssh — смотрите
/var/log/auth.logиjournalctl -u ssh.
- Контактные точки (быстрый чек-лист)
- Скрипты:
.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.
- Соответствие локальных и удалённых путей
На локальной машине репозиторий находится в /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/пуш/клонирование).