Изучение 26 методов анализа больших данных: часть 1
Изучение 26 методов анализа больших данных: часть 1
Supervisor - это клиент-серверная система, используемая для управления рядом процессов UNIX, в частности, процессами, связанными с проектом или клиентом. Например, вы можете использовать supervisor для порождения и отслеживания произвольного числа рабочих очередей вашего веб-приложения.
Компоненты этой системы:
В этом уроке мы установим самую последнюю версию супервизора, покажем, как создавать программы и упр��влять ими supervisorctl
, а также настроим веб-интерфейс для управления нашими программами.
Мы будем устанавливать супервизор через easy_install
, особенность python setuptools.
Сначала обновите список локальных пакетов, а затем установите python setuptools
.
sudo apt-get update && sudo apt-get install python-setuptools
Теперь мы можем установить супервизор.
sudo easy_install supervisor
После завершения установки мы должны сгенерировать наш файл конфигурации. Создайте папку с именем supervisor
внутри /etc
.
sudo mkdir /etc/supervisor
И затем выполните следующее.
echo_supervisord_conf > /etc/supervisor/supervisord.conf
Если вы не вошли в систему с root
пользователем, вы можете получить Permission denied
ошибку (даже с sudo
). Это связано с перенаправлением. Чтобы преодолеть это, войдите как root.
sudo su
Затем вы можете снова запустить команду.
echo_supervisord_conf > /etc/supervisor/supervisord.conf
Теперь вы можете оставить root
пользователя с помощью exit
команды. Команда echo_supervisord_conf
была предоставлена нашим супервизором установки.
Откройте /etc/supervisor/supervisord.conf
файл и проверьте его содержимое. Вы заметите, что этот файл конфигурации соответствует INI
синтаксису и разделен на разделы (представлены в скобках, как в [section-name]
).
Чтобы добавить программы для управления супервизором, нам просто нужно создать соответствующие [program]
разделы. Однако во избежание путаницы с основным файлом конфигурации каждый раз, когда нам нужно добавить (или изменить) программу, мы будем использовать этот [include]
раздел. Найдите этот раздел, раскомментируйте его и отредактируйте, чтобы он выглядел следующим образом.
[include]
files=conf.d/*.conf
Теперь для каждой программы, которую мы хотим добавить, мы будем создавать .ini
файл внутри /etc/supervisor/conf.d/
каталога. Давайте создадим эту папку.
sudo mkdir /etc/supervisor/conf.d
Как отмечалось ранее, супервизор состоит из сервера и клиентов, которые к нему подключаются. Чтобы иметь возможность управлять и контролировать программы, нам нужно запустить сервер. Для этого мы будем регистрировать сервер супервизора systemd
, чтобы он мог быть запущен при запуске системы.
Для этого создайте файл с именем supervisord.service
в /etc/systemd/system
каталоге.
sudo touch /etc/systemd/system/supervisord.service
Добавьте следующее содержимое в файл.
[Unit]
Description=Supervisor daemon
Documentation=http://supervisord.org
After=network.target
[Service]
ExecStart=/usr/local/bin/supervisord -n -c /etc/supervisor/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/local/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
Alias=supervisord.service
Активировать услугу супервизор.
sudo systemctl start supervisord.service
Если служебный файл находится в /etc/systemd/system
каталоге, он будет автоматически запускаться при запуске системы.
Вы можете проверить статус услуги.
systemctl status supervisord.service
Кроме того, вы можете проверить журналы.
sudo journalctl -u supervisord.service
Программы, контролируемые супервизором, задаются в разных [program]
разделах конфигурации. Для каждой программы, которой мы хотим управлять, мы создадим отдельный файл конфигурации, сообщающий путь к исполняемому файлу команды, любые переменные окружения, как выполнять в случае завершения работы.
Во-первых, давайте создадим простой скрипт, который регистрирует метку времени. Создайте файл с именем hello_supervisor.sh
(где бы вы ни пожелали, мы будем ссылаться на полный путь этого скрипта).
touch hello_supervisor.sh
Теперь поместите в него следующее содержимое
#!/bin/bash
while true
do
# Echo current timestamp to stdout
echo Hello Supervisor: `date`
# Echo 'error!' to stderr
echo An error ocurred at `date`! >&2
sleep 1
done
Теперь сделайте это исполняемым
chmod +x hello_supervisor.sh
В практическом плане этот сценарий практически бесполезен. Тем не менее, мы можем использовать его, чтобы продемонстрировать силу супервизора. Создайте соответствующий файл конфигурации, выполнив следующее.
sudo touch /etc/supervisor/conf.d/hello_supervisor.conf
Теперь поместите следующее содержимое в этот файл.
[program:hello_supervisor]
command=/home/USER/hello_supervisor.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/hello_supervisor.err.log
stdout_logfile=/var/log/hello_supervisor.out.log
Примечание. Обязательно замените его USER
своим именем пользователя.
Мы рассмотрим эту конфигурацию шаг за шагом.
[program:hello_supervisor]
command=/home/USER/hello_supervisor.sh
Сначала конфигурация начинается с определения программы с именем hello_supervisor . Он также сообщает полный путь исполняемого файла для запуска.
autostart=true
В этой строке указывается, что эта программа должна запускаться автоматически при запуске супервизора.
autorestart=true
Если программа по какой-либо причине завершает работу, эта строка информирует супервизора об автоматическом перезапуске процесса.
stderr_logfile=/var/log/hello_supervisor.err.log
stdout_logfile=/var/log/hello_supervisor.out.log
Эти строки определяют местоположение файла журнала для stderr
и stdout
, соответственно.
Теперь, когда мы установили и настроили супервизор, мы можем управлять нашими процессами.
После добавления новой программы мы должны выполнить следующие две команды, чтобы сообщить серверу о необходимости перечитать файлы конфигурации и применить любые изменения.
sudo supervisorctl reread
sudo supervisorctl update
Теперь выполните supervisorctl
клиент.
sudo supervisorctl
Вас встретит список зарегистрированных процессов. Вы увидите процесс, вызванный hello_supervisor
со RUNNING
статусом.
hello_supervisor RUNNING pid 6853, uptime 0:22:30
supervisor>
Введите help
список доступных команд.
supervisor> help
default commands (type help <topic>):
=====================================
add exit open reload restart start tail
avail fg pid remove shutdown status update
clear maintail quit reread signal stop version
В двух словах, мы можем start
, stop
и restart
программы, передавая его имя программы в качестве аргумента соответствующей команды.
supervisor> stop hello_supervisor
hello_supervisor: stopped
supervisor> start hello_supervisor
hello_supervisor: started
supervisor> restart hello_supervisor
hello_supervisor: stopped
hello_supervisor: started
supervisor>
Мы также можем посмотреть на вывод программы с помощью tail
команды.
supervisor> tail hello_supervisor
Hello Supervisor: Mon Sep 25 19:27:29 UTC 2017
Hello Supervisor: Mon Sep 25 19:27:30 UTC 2017
Hello Supervisor: Mon Sep 25 19:27:31 UTC 2017
Для stderr
вывода вы также можете использовать tail
.
supervisor> tail hello_supervisor stderr
An error ocurred at Mon Sep 25 19:31:12 UTC 2017!
An error ocurred at Mon Sep 25 19:31:13 UTC 2017!
An error ocurred at Mon Sep 25 19:31:14 UTC 2017!
Вызвав status
команду, вы можете просмотреть статус всех зарегистрированных программ.
Как только вы закончите, вы можете выйти.
supervisor> quit
Чтобы разрешить доступ к веб-серверу супервизора, откройте файл конфигурации супервизора и найдите [inet_http_server]
раздел.
nano /etc/supervisor/supervisord.conf
Теперь обновите конфигурацию этого раздела следующим образом.
[inet_http_server]
port=*:9001
username=your_username
password=your_password
Замените your_username
и your_password
введите нужные учетные данные, сохраните изменения и перезапустите службу супервизора.
sudo systemctl restart supervisord.service
Не забудьте разрешить TCP
доступ к порту 9001
на вашем брандмауэре, а затем доступ через http://{server-ip}:9001
браузер. Когда спрошено, предоставьте username
и password
. Теперь вы можете контролировать свои процессы из Интернета.
Мы установили самую последнюю версию supervisord, узнали, как настроить ее для автоматического запуска системы с помощью systemd, а также рассмотрели основные возможности использования supervisorctl
. Для более сложной конфигурации и вариантов использования вы можете обратиться к официальной документации супервизора .
Изучение 26 методов анализа больших данных: часть 1
Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.
Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.
Прочтите блог, чтобы узнать о различных уровнях архитектуры больших данных и их функциях самым простым способом.
Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.
CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?
По мере того, как наука развивается быстрыми темпами, принимая на себя большую часть наших усилий, также возрастает риск подвергнуться необъяснимой сингулярности. Прочтите, что может значить для нас необычность.
Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!
Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.
Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше