Amazon-Ec2
使用 EC2 時如何跟上 Nagios/Capistrano 配置?
我將 Amazon EC2 用於我的移動應用程序。根據給定時間應用程序的負載,我可能會生成新實例,然後在負載較低時將其關閉以節省成本。
對於這樣一個動態環境,如何跟上 Nagios 的配置?當處理託管硬體時,配置文件是可預測的。在這種情況下,需要添加 Nagios、Capistrano 和一堆其他配置文件。Capistrano 需要知道將新建構部署到應用伺服器的位置。Nagios 需要知道刪除現有實例或添加新實例以進行監控。Nagios 還需要知道節點是否被故意關閉,或者主機是否由於錯誤而關閉。
VPS/動態實例的美妙世界是如何做到的?
我們使用一個配置管理工具(在我們的例子中是 Chef),它從節點資訊中寫出 Nagios 配置。
編寫了我自己的一組將 nagios 配置寫入文件的 php 腳本。Nagios 很簡單,因為它只是一個文本文件,所以您只需為每種類型的伺服器創建一個模板。然後在伺服器啟動時使用模板添加文件。文件中唯一更改的數據是主機 ip 和名稱。
對於更多靜態伺服器,我創建了一個腳本,該腳本執行
ec2-describe-instances
並為每個返回的實例創建一個文件。每個實例都標有標籤:Purpose=XXXX,所以我知道要應用哪個模板。
as-put-notification-configuration
對於我們的自動縮放組,我們使用向 SQS 隊列發送消息的命令設置通知。php 腳本由 crontab 執行。當腳本執行時,它會檢查隊列中是否有任何新伺服器。每當它找到一個新伺服器時,它都會創建一個新文件。當伺服器被刪除時也會發生同樣的情況。如果您已經在使用 Chef 或其他東西,可能更容易使用它,但如果您不是,您可以在幾天內編寫一個像我這樣的簡單 php 服務。