Серийные логи и порты
Операционная система, BIOS и другие системные компоненты выводят логи в серийные порты виртуальной машины. Логи можно просматривать и использовать для диагностики загрузки и анализа ошибок ОС или приложений.
У виртуальных машин Compute есть четыре виртуальных серийных порта:
- порт 1 —
/dev/ttyS0; - порт 2 —
/dev/ttyS1; - порт 3 —
/dev/ttyS2; - порт 4 —
/dev/ttyS3.
В порт /dev/ttyS0 по умолчанию выводятся логи следующих системных компонентов в порядке их запуска:
- UEFI — логи UEFI содержат информацию об инициализации процессора, памяти, поиске дисков.
- GRUB — в облачных образах ядро Linux выбирается автоматически, поэтому логи содержат только название запускаемой ОС.
- Ядро Linux — логи содержат информацию о загрузке драйверов, поиске файловых систем и распаковке временной файловой системы (
initrd). Логи ядра позволяют отследить системные ошибки, возникающие при загрузке ОС. - Cloud-init — логи содержат информацию о генерации SSH-ключей, увеличении размера диска, установке пакетов при первом запуске ВМ.
- Getty — логи содержат информацию о вводе имени пользователя.
В порт /dev/ttyS1 дублируются логи UEFI, а в /dev/ttyS2 и /dev/ttyS3 не поступает никакой вывод.
Вы можете перенаправить вывод пользовательского приложения в любой порт. Например, вывести в серийный порт текстовое сообщение или информацию из Docker-контейнера.
Хранение логов
Заголовок раздела «Хранение логов»У каждого порта есть циклический буфер, который хранит 1 МБ логов в виде сырых данных. Логи хранятся, пока виртуальная машина запущена. Когда виртуальная машина выключается, буфер очищается.
Формат логов
Заголовок раздела «Формат логов»Сырые данные, поступающие в серийный порт, сериализируются в JSON по спецификации RFC 8259. При сериализации применяются следующие правила обработки символов:
| Символ | Результат в JSON | Пояснение |
|---|---|---|
\n (0x0A) | \n | Перевод строки (line feed) |
\r (0x0D) | \r | Возврат каретки (carriage return) |
\t (0x09) | \t | Табуляция |
\b (0x08) | \b | Возврат на шаг (backspace) |
\f (0x0C) | \f | Перевод страницы (form feed) |
ESC (0x1B) | \u001b | Начало управляющей последовательности |
NUL (0x00) | \u0000 | Нулевой байт |
BEL (0x07) | \u0007 | Звуковой сигнал |
" (0x22) | \" | Экранируется, чтобы не нарушить синтаксис строки |
\ (0x5C) | \\ | Экранируется, чтобы следующий символ не интерпретировался как часть последовательности |
<, >, & | <, >, & | Не изменяется |
| Текст (многобайтовый) | Не изменяется | Не изменяется |
| Некорректный UTF-8 | \ufffd | Заменяющий символ (replacement character) |
При просмотре через веб-консоль данные в формате JSON преобразуются в текст.