我正在开发一个需要根据负载进行扩展的 Web 应用程序 (django/gunicorn/nginx)。该应用程序将托管在 Linodes 上,因此我打算使用 StackScripts(也许还有 Puppet)启动 Web 服务器的新实例,然后将它们放在 NodeBalancer 后面。
看起来 Nagios 和 Munin 可以让我监控负载、在服务器压力过大时收到警报并查看一些漂亮的图表。但这些应用程序是否也允许我自动部署新的 Linode?看起来我应该能够编写一个启动 StackScript 的 Nagios 事件处理程序。但我不确定是否可以创建一个可以确定何时启动新实例的检查。
- 是否可以设置一个将过去的测量结果考虑在内的警报?我的标准将基于机器处于负载状态的时间,而不是瞬时读数。如果 Web 服务器在一次检查中接近最大使用率,我并不担心,但如果这种情况持续两次或两次以上,我可能会担心。
- 我是不是漏掉了什么?我认为这在插件中是可能的,该插件使用 Nagios/Munin 已有的数据。但也许我需要编写一个单独的应用程序或脚本来存储以前的检查值并进行比较。
- 有人能给我举一个使用 Nagios 扩展应用程序的例子吗?我看过一些幻灯片,人们讨论以这种方式扩展(通常在 EC2 上),但没有具体的例子。
谢谢。
答案1
您可以将 Nagios 负载检查设置为在触发事件处理程序和/或警报之前在设定的时间段内多次重新检查。如果负载达到临界阈值,则每分钟重新检查一次,持续 10 分钟,如果继续显示临界负载,则触发事件处理程序/警报。
它实际上并不检查历史记录,而是查看状态是否已从最近一次检查中发生变化。