我们有三台运行python程序的服务器,这些程序正在tmux会话中运行数据分析任务。我们目前使用的方法是将它们连接到tmux会话中的每一个中,并在命令行中查看输出。

这种方法很繁琐,因此我们正在寻找一种解决方案,该解决方案可以同时自动监视多个服务器的程序进度(在CLI上输出)。我们理想地希望使用Web UI解决方案,但CLI也将非常适合。

感谢您阅读。

评论

使用prometheus和grafana :-)

#1 楼

每当您运行临时的长期运行命令时,都应该退后一步并重新考虑您的过程,因为这应该是自动化的,包括错误处理。

而不是连接到服务器来查看地位,更好的方法是将这些信息推出。如果您想编写一堆自定义代码,则可以做很多事情,但是最简单的事情可能是开始通过syslog将输出发送到集中式日志记录系统(syslog本身,ELK或其他任何东西)。这样一来,您可以从中央位置监视所有内容。

再想一想,如果这不是一项一次性的任务,则监视应该自动化。也就是说,您永远不必只看日志来查看事情是否按预期进行。相反,您应该假设它们已经存在(并继续进行其他工作),直到触发警报为止。这是花费时间来获得可靠且覆盖范围广泛的警报,但是随着系统复杂性的提高,它将得到回报,因为您无需在更改任何内容时随时监视所有内容。

评论


这不是一件一次性的事情。我喜欢您关于将时间投入到自动化监视和集中日志记录中的想法。您对免费使用的工具有什么建议,这些工具可以与运行程序的ubuntu主机一起很好地工作吗?

–鸟粪
17-10-22在12:36

@guano我认为Wissam涵盖了我要提到的所有特定工具,除了使用Sensu之类的工具来增强警报功能之外。

–熊佳亚诺夫
17-10-23在19:26

#2 楼

Graylog
因为两个人已经建议您重新考虑当前的流程(我之所以这样做,是因为它会在某个时候使您彻夜难眠;),所以,我将另辟route径并推荐一款特定的软件-意见-满足您的大多数需求:Graylog。
我在当前的雇主中实施并使用了几个ELK堆栈进行日志聚合和商业智能,并且还运行/维护了Graylog大约两年。我建议使用Graylog,因为它具有以下内置功能,并且-在我看来-设置和维护起来比较容易:

Web界面
多用户功能


据我了解,您的情况看起来好像您需要对日志消息流中出现的某些事件采取行动或发出警报。如果我们查看Graylog功能:

触发操作或需要注意的事情时收到通知,例如失败的登录尝试,异常或性能下降。
想法:向发送电子邮件或Slack消息你的团队。生成新机器以平衡处理负载。当检测到攻击时,自动阻止防火墙中的IP范围。

要尝试使用Graylog,我建议执行以下两个步骤:

设置可访问的专用主机由您的所有应用程序主机运行graylog(及其依赖的MongoDB和ElasticSearch)
将日志从应用程序发送到graylog(可能是GELF消息)

注意:这两个步骤可以填写最佳实践的页面和页面,并且应该至少收到一些想法。更不用说Graylog不是监视解决方案,应该使用适当的监视工具(例如Icinga,Prometheus,Nagios等)监视Graylog本身。

#3 楼

我同意@Xiong Chiamiov的观点,并希望提供更多的澄清选项。
如果要监视CLI中的每一行,我建议将所有输出重定向到特定文件,并将错误重定向到另一个文件,然后使用logstash或filebeat将这两个文件都发送到Elasticsearch,然后可以使用Kibana配置Logtril,以使用devops友好的界面实时查看,分析,搜索和尾随来自多个主机的日志事件

#4 楼

集中化的tmux


从长远来看,其他答案更聪明,更明智,但我认为值得一提的是快速hacky的CLI解决方案。在可以访问所有其他服务器的一台服务器上运行tmux。一个合适的地方是跳箱或其他人们经常登录的地方。在此“中央” ssh内,进入不同窗格的每个框,并尾随任何必要的日志文件。您可以使用ctrl-b“在tmux的一个选项卡中获取更多窗格。现在,所有需要检查的内容都附加到” central“ tmux会话上,他们可以一目了然地看到整个群集。

我花了很多时间来构建您要使用的Web UI解决方案,但是如果今天需要,可以使用tmux一起破解某些东西可以节省一天。