使用EC2时,如何跟上Nagios / Capistrano配置?


11

我将Amazon EC2用于我的移动应用程序。根据给定时间的应用程序负载,我可能会生成新的实例,然后在负载较低时将其删除以节省成本。

在这样一个动态环境下,如何与Nagios配置保持一致?当涉及托管硬件时,配置文件是可预测的。在这种情况下,需要添加Nagios,Capistrano和许多其他配置文件。Capistrano需要知道将新版本部署到应用服务器的位置。Nagios需要知道要删除现有实例或添加新实例进行监视。Nagios还需要知道节点是否被有意关闭或主机是否由于错误而关闭。

VPS /动态实例的精彩世界是如何做到的?

Answers:


9

我们使用配置管理工具(在本例中为Chef)中,它从节点信息中写出Nagios配置。


1
当然,一定要使用Puppet / Chef。但是诀窍是如何使每个节点的配置易于管理(例如,不必在Nagios服务器的Puppet配置上复制节点列表),并仍然使Nagios服务器跟踪添加/删除/更改的节点。我在下面的回答中谈到了这一点。
阿莫斯·夏皮拉

3

编写了自己的一套将nagios配置写入文件的php脚本。Nagios很容易,因为它只是一个文本文件,因此您需要做的就是为每种类型的服务器创建一个模板。然后,当服务器启动时,使用模板添加文件。文件中唯一更改的数据是主机ip和名称。

对于更多的静态服务器,我创建了一个脚本,该脚本运行ec2-describe-instances并为返回的每个实例创建一个文件。每个实例都标有tag:Purpose = XXXX,所以我知道要应用哪个模板。

对于我们的自动伸缩组,我们使用as-put-notification-configuration命令设置通知,该通知将消息发送到SQS队列。php脚本由crontab执行。脚本执行时,将检查队列中是否有新服务器。每当找到新服务器时,它都会创建一个新文件。删除服务器时也会发生同样的情况。如果您已经在使用Chef,则可能更容易使用它,但是如果您还没有使用它,那么几天之内就可以编写像我这样的简单php服务。


1

我们使用Opsview,这是另一个nagios + database + rest-api包装器。我不知道这是否对所有人(甚至我们)来说都是最佳解决方案,但是它允许我们在出现时从节点(或其他管理节点)通过简单的REST API通过一个简单的REST API动态配置Nagios服务器,并将其从中删除。完成配置。我将主机模板的定义用作Opsview(/ Nagios)服务器的Puppet清单的一部分,受监视的主机只需向其注册并加入正确的Host Template作为其Puppet清单的一部分。

Puppet存储配置是一种更“通用”的方法,它甚至可以处理几乎所有原始Nagios及其静态文件,它可以让您编写脚本来配置所需的任何工具,但是您可以根据puppet收集的信息进行配置它的清单。

我建议出于鉴证目的,不要在删除节点时完全删除该节点的配置,而应尝试对其进行归档,并在其启动时收集有关该节点的监视信息。


1

几种方法。

  • 使用预配置的Amazon EC2模板。

  • 使用木偶清单和可变模板。

  • 在nagios网络和Amazon VM之间建立VPN,然后所有Amazon VM将具有静态IP,您甚至可以在其上设置DNS。我们有一个nagios运行并监视我们所有的Amazon实例。我们甚至不需要弹性IP。我们使用openvpn进行VPN。

  • 构建Nagios,以监听外部命令并相应地更新其配置。最终,机器可以在Nagios上自行注册,注销,暂停,恢复它们自己。


0

我没有解决nagios这个问题的灵丹妙药。但是对于capistrano,有capify-ec2,这是capistrano的扩展,可以使用亚马逊标记功能解决服务器角色列表。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.