Налагодження
Є два прапорці, які допомагають у налагодженні сценаріїв конфігурації. Оскільки проблеми із завантаженням конфігурації виявлятимуться під час завантаження, прапорці передаються як параметри завантаження ядра.
Створення образу ISO
Якщо у вас виникли проблеми зі збиранням власного образу ISO або з усуненням проблем із Дженкінсом, виконайте дії, наведені в Проблеми збірки ISO.
Запуск системи
Запуск системи можна налагодити (наприклад, завантаження файлу конфігурації з /config/config.boot
. Цього можна досягти шляхом розширення командного рядка ядра у завантажувачі.
Ядро
vyos-debug
- Додавання параметра до рядка завантаження Linux створить результати синхронізації для виконання сценаріїв під час фіксації. Якщо хтось бачить неочікувану затримку під час ручного або завантажувального фіксування, це може бути корисним для виявлення вузьких місць. Внутрішній прапор —VYOS_DEBUG
, його можна знайти у vyatta-cfg. Вихідні дані спрямовуються до/var/log/vyatta/cfg-stdout.log
.vyos-config-debug
- під час розробки помилки кодування можуть призвести до помилки фіксації під час завантаження, що, можливо, призведе до невдалої ініціалізації CLI. У цьому випадку параметр завантаження ядраvyos-config-debug
забезпечить доступ до системи як користувачvyos
і запише трасування стека Python у файл/tmp/boot-config- слід
. Файлboot-config-trace
буде створено, лише якщо конфігурацію завантажено зі статусом помилки.
Жива система
Для зміни поведінки VyOS під час виконання можна встановити ряд прапорців. Ці прапорці можна перемикати за допомогою змінних середовища або створення файлів.
Для кожної функції можна створити файл під назвою vyos.feature.debug
, щоб увімкнути функцію. Якщо параметр потрібен, його можна розмістити всередині файлу як його перший рядок.
Файл можна помістити в /tmp
для одноразового налагодження (оскільки файл буде видалено під час перезавантаження) або помістити в '/config', щоб залишитися назавжди.
Наприклад, /tmp/vyos.ifconfig.debug
можна створити, щоб увімкнути налагодження інтерфейсу.
Також можна налаштувати налагодження за допомогою змінних середовища. У такому випадку ім’я буде (у верхньому регістрі) VYOS_FEATURE_DEBUG.
Наприклад, запуск export VYOS_IFCONFIG_DEBUG=""
на вашому vbash матиме той самий ефект, що touch /tmp/vyos.ifconfig.debug
.
ifconfig
- після встановлення всі використані команди та відповіді на них, отримані від ОС, будуть представлені на екрані для перевірки.команда
– після встановлення всі використані команди та відповіді на них, отримані від ОС, будуть представлені на екрані для перевірки.розробник
- якщо команда завершується помилкою, замість друку повідомлення для користувача з поясненням, як повідомити про проблеми, інтерпретатор python розпочне сеанс PBD post mortem, щоб дозволити розробнику налагодити проблему. Оскільки налагоджувач чекатиме вхідних даних від розробника, він має здатність запобігти завантаженню маршрутизатора, тому його слід постійно налаштовувати лише у робочому стані, якщо ви готові побачити, що ОС не завантажиться.журнал
- У деяких рідкісних випадках може бути корисно побачити, що робить ОС, зокрема під час завантаження. Цей параметр надсилає всі команди, які використовує VyOS, у файл. Типовим файлом є/tmp/full-log
, але його можна змінити.
Примітка
Щоб отримати вихідні дані налагодження в командному рядку, вам потрібно додатково вимкнути vyos-configd
. Це можна запустити одноразово, викликавши sudo systemctl stop vyos-configd
, або зробити це перезавантаження безпечним, викликавши sudo systemctl disable vyos-configd
.
FRR
В останніх версіях використовується структура vyos.frr
. Клас Python знаходиться всередині нашого vyos-1x:python/vyos/frr.py
. Він постачається із вбудованим налагоджувачем налагодження/(стиль друку), як це робить vyos.ifconfig.
Щоб увімкнути налагодження, просто запустіть: $ touch /tmp/vyos.frr.debug
Налагодження коду Python за допомогою PDB
Іноді може бути корисним налагодити код Python в інтерактивному режимі в живій системі, а не в IDE. Цього можна досягти за допомогою pdb.
Припустімо, ви хочете налагодити сценарій Python, який викликається командою режиму op-mode. Після того, як ви знайшли сценарій, переглянувши op-mode-defitions, ви можете редагувати сценарій у живій системі, наприклад, за допомогою vi: vi /usr/libexec/vyos/op_mode/show_xyz.py
Вставте наступний оператор безпосередньо перед розділом, де ви хочете дослідити проблему (наприклад, оператор, який ви бачите у зворотному трасуванні): import pdb; pdb.set_trace()
За бажанням ви можете оточити цей оператор if
, який запускається лише за умови, яка вас цікавить.
Щойно ви запустите show xyz
і ваша умова спрацює, ви повинні перейти до налагоджувача python:
> /usr/libexec/vyos/op_mode/show_nat_translations.py(109)process()
-> rule_type = rule.get('type', '')
(Pdb)
Ви можете ввести help
, щоб отримати огляд доступних команд, і help command
, щоб отримати більше інформації про кожну команду.
Корисні команди:
перевірити змінні за допомогою
pp(var)
continue execution using
cont
отримати зворотне трасування за допомогою
bt
Налаштувати сценарії міграції
Під час написання нового засобу міграції конфігурації може статися, що ви побачите помилку під час спроби викликати його вручну в системі розробки. Ця помилка виглядатиме так:
vyos@vyos:~$ /opt/vyatta/etc/config-migrate/migrate/ssh/0-to-1 /tmp/config.boot
Traceback (most recent call last):
File "/opt/vyatta/etc/config-migrate/migrate/ssh/0-to-1", line 31, in <module>
config = ConfigTree(config_file)
File "/usr/lib/python3/dist-packages/vyos/configtree.py", line 134, in __init__
raise ValueError("Failed to parse config: {0}".format(msg))
ValueError: Failed to parse config: Syntax error on line 240, character 1: Invalid syntax.
The reason is that the configuration migration backend is rewritten and uses a new form of «magic string» which is applied on demand when real config migration is run on boot. When running individual migrators for testing, you need to convert the «magic string» on your own by:
vyos@vyos:~$ /usr/libexec/vyos/run-config-migration.py --virtual --set-vintage vyos /tmp/config.boot
Помилка конфігурації під час завантаження системи
Being brave and running the latest rolling releases will sometimes trigger
bugs due to corner cases we missed in our design. Those bugs should be filed
via Phabricator but you can help us to narrow down the issue. Login to your
VyOS system and change into configuration mode by typing configure
. Now
re-load your boot configuration by simply typing load
followed by return.
You should now see a Python backtrace which will help us to handle the issue, please attach it to the Phabricator task.
Час завантаження
Під час міграції та значного переписування функціональності з Perl на Python було помічено значне збільшення загального часу завантаження системи. Можна проаналізувати час завантаження системи та зрештою створити графік, який детально показує, хто кому телефонував під час фази запуску системи.
Це робиться за допомогою пакета systemd-bootchart
, який тепер встановлено за замовчуванням у гілці VyOS 1.3 (equuleus). Конфігурація також має версії, тому ми отримуємо порівняльні результати. systemd-bootchart
налаштовується за допомогою цього файлу: bootchart.conf
To enable boot time graphing change the Kernel commandline and add the following
string: init=/usr/lib/systemd/systemd-bootchart
Це також можна зробити постійно, змінивши /boot/grub/grub.cfg
.
Пріоритети
VyOS CLI is all about priorities. Every CLI node has a corresponding
node.def
file and possibly an attached script that is executed when the
node is present. Nodes can have a priority, and on system bootup - or any
other commit
to the config all scripts are executed from lowest to highest
priority. This is good as this gives a deterministic behavior.
Щоб усунути проблеми з пріоритетами або побачити, що відбувається у фоновому режимі, ви можете скористатися сценарієм /opt/vyatta/sbin/priority.pl
, який показує вам порядок виконання сценаріїв.