В результате выполнения задания вы:
- познакомитесь со средством сбора метрик node_exporter и средством сбора и визуализации метрик NetData. Такие инструменты позволяют выстроить систему мониторинга сервисов для своевременного выявления проблем в их работе;
- построите простой systemd unit-файл для создания долгоживущих процессов, которые стартуют вместе со стартом системы автоматически;
- проанализируете dmesg, а именно часть лога старта виртуальной машины, чтобы понять, какая полезная информация может там находиться;
- поработаете с unshare и nsenter для понимания, как создать отдельный namespace для процесса (частичная контейнеризация).
- Убедитесь, что у вас установлен Netdata c ресурса с предподготовленными пакетами или
sudo apt install -y netdata
.
- Документация по systemd unit-файлам.
- Документация по параметрам sysctl.
-
На лекции вы познакомились с node_exporter. В демонстрации его исполняемый файл запускался в background. Этого достаточно для демо, но не для настоящей production-системы, где процессы должны находиться под внешним управлением. Используя знания из лекции по systemd, создайте самостоятельно простой unit-файл для node_exporter:
- поместите его в автозагрузку;
- предусмотрите возможность добавления опций к запускаемому процессу через внешний файл (посмотрите, например, на
systemctl cat cron
); - удостоверьтесь, что с помощью systemctl процесс корректно стартует, завершается, а после перезагрузки автоматически поднимается.
-
Изучите опции node_exporter и вывод
/metrics
по умолчанию. Приведите несколько опций, которые вы бы выбрали для базового мониторинга хоста по CPU, памяти, диску и сети. -
Установите в свою виртуальную машину Netdata. Воспользуйтесь готовыми пакетами для установки (
sudo apt install -y netdata
).После успешной установки:
- в конфигурационном файле
/etc/netdata/netdata.conf
в секции [web] замените значение с localhost наbind to = 0.0.0.0
; - добавьте в Vagrantfile проброс порта Netdata на свой локальный компьютер и сделайте
vagrant reload
:
config.vm.network "forwarded_port", guest: 19999, host: 19999
После успешной перезагрузки в браузере на своём ПК (не в виртуальной машине) вы должны суметь зайти на
localhost:19999
. Ознакомьтесь с метриками, которые по умолчанию собираются Netdata, и с комментариями, которые даны к этим метрикам. - в конфигурационном файле
-
Можно ли по выводу
dmesg
понять, осознаёт ли ОС, что загружена не на настоящем оборудовании, а на системе виртуализации? -
Как настроен sysctl
fs.nr_open
на системе по умолчанию? Определите, что означает этот параметр. Какой другой существующий лимит не позволит достичь такого числа (ulimit --help
)? -
Запустите любой долгоживущий процесс (не
ls
, который отработает мгновенно, а, например,sleep 1h
) в отдельном неймспейсе процессов; покажите, что ваш процесс работает под PID 1 черезnsenter
. Для простоты работайте в этом задании под root (sudo -i
). Под обычным пользователем требуются дополнительные опции (--map-root-user
) и т. д. -
Найдите информацию о том, что такое
:(){ :|:& };:
. Запустите эту команду в своей виртуальной машине Vagrant с Ubuntu 20.04 (это важно, поведение в других ОС не проверялось). Некоторое время всё будет плохо, после чего (спустя минуты) — ОС должна стабилизироваться. Вызовdmesg
расскажет, какой механизм помог автоматической стабилизации.
Как настроен этот механизм по умолчанию, и как изменить число процессов, которое можно создать в сессии?
В качестве решения отправьте ответы на вопросы и опишите, как эти ответы были получены.
В личном кабинете отправлена ссылка на .md-файл в вашем репозитории.
Зачёт:
- выполнены все задания;
- ответы даны в развёрнутой форме;
- приложены соответствующие скриншоты и файлы проекта;
- в выполненных заданиях нет противоречий и нарушения логики.
На доработку:
- задание выполнено частично или не выполнено вообще;
- в логике выполнения заданий есть противоречия и существенные недостатки.