Работа с серийными логами
Настроить вывод логов в серийный порт
Заголовок раздела «Настроить вывод логов в серийный порт»Откройте файл конфигурации GRUB
/etc/default/grubи измените значение параметраGRUB_CMDLINE_LINUXтаким образом:cfg GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8"Здесь:
console=tty1— стандартный виртуальный терминал.console=ttyS0— серийный порт/dev/ttyS0. Поскольку порт указан последним, это приоритетное устройство вывода.115200n8— спецификация порта/dev/ttyS0:115200— скорость передачи данных;n— отсутствие проверки на четность;8— количество бит в одном байте данных.
Обновите GRUB:
- Debian/Ubuntu
- CentOS/Fedora/Red Hat
bash sudo update-grubПерезапустите ВМ, чтобы изменения вступили в силу.
Просмотреть серийные логи
Заголовок раздела «Просмотреть серийные логи»Для просмотра серийных логов нужна роль compute.editor.
- Веб-консоль
- MWS CLI
- API
В веб-консоли выберите нужный проект.
В списке сервисов выберите Compute → Виртуальные машины.
Перейдите на вкладку Серийный лог и выберите нужный порт.
На вкладке Серийный лог вы также можете:
- переключиться на исходный формат данных, в котором управляющие последовательности ANSI не интерпретируются;
- включить автоматическое обновление логов раз в 30 секунд;
- обновить логи вручную;
- скопировать логи;
- скачать файл с логами.
Вывести текстовое сообщение в серийный порт
Заголовок раздела «Вывести текстовое сообщение в серийный порт»Выполните команду:
bash echo "Message to serial port <порт>" | sudo tee <порт>Здесь
порт— путь к порту:- порт 1 —
/dev/ttyS0; - порт 2 —
/dev/ttyS1; - порт 3 —
/dev/ttyS2; - порт 4 —
/dev/ttyS3.
Вывести информацию из Docker-контейнера в серийный порт
Заголовок раздела «Вывести информацию из Docker-контейнера в серийный порт»Для примера используется порт /dev/ttyS2.
Установите и настройте Docker:
- Добавьте текущего пользователя в группу
docker.
Создайте Dockerfile со следующим содержанием:
FROM alpine:latest# Устанавливается пакет procps для доступа к расширенной команде uptimeRUN apk add --no-cache procps# 1. Запускается бесконечный цикл (while true)# 2. Каждые 5 секунд выводится текущая дата и загрузка системы (uptime)# 3. Вывод перенаправляется в порт /dev/ttyS2ENTRYPOINT ["/bin/sh", "-c", "while true; do echo \"[$(date)] Load: $(uptime)\" > /dev/ttyS2; sleep 5; done"]Соберите Docker-образ и запустите контейнер:
bash docker build -t serial-log-app . && \sudo docker run -d --privileged --name serial-log-app --volume /dev/ttyS2:/dev/ttyS2 serial-log-app