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