У меня есть требование собирать настраиваемые метрики (сценарий оболочки) из кластера логических серверов каждые пять минут. Этот кластер серверов состоит из 10 виртуальных машин. Однажды знакомый мне вариант - это создание заданий cron на каждой из этих виртуальных машин и передача результатов в конечную точку. Я считаю, что эту опцию будет немного неудобно поддерживать, если скрипт пользовательских метрик постоянно меняется. Есть ли какие-либо другие варианты, позволяющие сделать этот процесс более удобным и удобным в обслуживании?
Люди, естественно, будут предлагать такие вещи, как Ansible, и это хорошая идея, если вы делаете несколько подобных вещей на регулярной основе, но предположим, что вам все это сейчас не нужно.
На самом деле запустить сценарий на другом компьютере довольно просто:
rsync script.sh user@${servername}:/path/of/script/
ssh user@${servername} /path/of/script/script.sh
Так работает на всех машинах:
for servername in server1 server2 server3; do
rsync script.sh user@${servername}:/path/of/script/
ssh user@${servername} /path/of/script/script.sh
done
Вы можете поместить сценарий, который делает это в cron, на отдельную машину, и теперь вы поддерживаете один crontab и одну копию сценария, которая автоматически реплицируется.
Вы можете попробовать использовать такие инструменты, как:
Сильно зависит от ваших потребностей. Лично работал со многими из перечисленного. Понравилась модель сервер / агент Zabbix, которая делает его очень гибким в мониторинге большого парка.
Управление развертыванием похожих вещей и аналогичных конфигураций на нескольких машинах - отличный повод для изучения Ansible.
Базовые требования к конечным точкам - это доступ по ssh и установка Python (в настоящее время вы действительно должны убедиться, что они могут запускать Python 3 - Python 2 завершится с 1 января 2020 года).