Answers:
编写了自己的一套将nagios配置写入文件的php脚本。Nagios很容易,因为它只是一个文本文件,因此您需要做的就是为每种类型的服务器创建一个模板。然后,当服务器启动时,使用模板添加文件。文件中唯一更改的数据是主机ip和名称。
对于更多的静态服务器,我创建了一个脚本,该脚本运行ec2-describe-instances
并为返回的每个实例创建一个文件。每个实例都标有tag:Purpose = XXXX,所以我知道要应用哪个模板。
对于我们的自动伸缩组,我们使用as-put-notification-configuration
命令设置通知,该通知将消息发送到SQS队列。php脚本由crontab执行。脚本执行时,将检查队列中是否有新服务器。每当找到新服务器时,它都会创建一个新文件。删除服务器时也会发生同样的情况。如果您已经在使用Chef,则可能更容易使用它,但是如果您还没有使用它,那么几天之内就可以编写像我这样的简单php服务。
我们使用Opsview,这是另一个nagios + database + rest-api包装器。我不知道这是否对所有人(甚至我们)来说都是最佳解决方案,但是它允许我们在出现时从节点(或其他管理节点)通过简单的REST API通过一个简单的REST API动态配置Nagios服务器,并将其从中删除。完成配置。我将主机模板的定义用作Opsview(/ Nagios)服务器的Puppet清单的一部分,受监视的主机只需向其注册并加入正确的Host Template作为其Puppet清单的一部分。
Puppet存储配置是一种更“通用”的方法,它甚至可以处理几乎所有原始Nagios及其静态文件,它可以让您编写脚本来配置所需的任何工具,但是您可以根据puppet收集的信息进行配置它的清单。
我建议出于鉴证目的,不要在删除节点时完全删除该节点的配置,而应尝试对其进行归档,并在其启动时收集有关该节点的监视信息。
我没有解决nagios这个问题的灵丹妙药。但是对于capistrano,有capify-ec2,这是capistrano的扩展,可以使用亚马逊标记功能解决服务器角色列表。