如何定期在服务器群上运行 shell 脚本

如何定期在服务器群上运行 shell 脚本

我需要每五分钟从逻辑服务器集群收集一次自定义指标(shell 脚本)。此服务器集群由 10 台虚拟机组成。我熟悉的一个选项是在这些虚拟机中的每一个上创建 cron 作业并将结果报告给端点。如果自定义指标脚本不断变化,我觉得这个选项维护起来有点麻烦。还有其他选项可以使这个过程更加用户友好和易于维护吗?

答案1

人们自然会建议使用像 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 和一份自动复制的脚本副本。

答案2

管理在多台机器上类似的东西和类似配置的部署听起来像是学习一些Ansible

端点的基本要求是 ssh 访问和 Python 安装(现在你真的应该确保它们可以运行 Python 3 - Python 2 将于 2020 年 1 月 1 日 EOL)。

答案3

您可以尝试使用以下工具:

  • 扎比克斯
  • Icinga/Nagios/check_mk
  • 仙人掌
  • 普罗米修斯/Grafana

很大程度上取决于您的需求。我亲自使用过列出的许多产品。喜欢 Zabbix 的服务器/代理模型,这使得它在监控大型集群时非常灵活。

相关内容