2015-08-24 131 views
-1
发送的服务状态结果电子邮件

希望有人能帮助我,请使用红宝石

我是相当新的Ruby语言,目前有红宝石的工作运行,告诉我对我的窗口中的一个正在运行的服务的信息2008服务器。

我已经编写了在css小部件上显示输出的代码,但是我的老板已经要求我在发生服务失败的事件中包含电子邮件警报。

我知道如何检查服务,如果状态没有运行,那么会发送一封电子邮件,但如果服务关闭,那么每次作业检查时都会发送一封电子邮件。

我需要一封电子邮件发送服务失败后,然后离开它。我知道我可以使用一个循环来实现这一点,但是我不知道如何将它应用到我的代码中。

这里是我的代码如下

monitors = 
    [{name: 'service display name', svc: 'service name', host: '192.168.2.1'}, 
    {name: 'service display name', svc: 'service name', host: '192.168.2.1'}, 
    {name: 'service display name', svc: 'service name', host: '192.168.2.1'}, 
    {name: 'service display name', svc: 'service name', host: '192.168.2.1'}, 
    {name: 'service display name', svc: 'service name', host: '192.168.2.1'}, 
    {name: 'service display name', svc: 'service name', host: '192.168.2.1'}, 
    {name: 'service display name', svc: 'service name', host: '192.168.2.1'}] 

SCHEDULER.every '5s', :first_in => 0 do |job| 
statuses = Array.new 

monitors.each do |monitor| 
status = Service.status(monitor[:svc], monitor[:host]).current_state 

if status == "running" 
result = 1 
else 
result = 0 
end 

if result == 1 
     arrow = "icon-ok-sign" 
     color = "green" 
    else 
     arrow = "icon-warning-sign" 
     color = "red" 
    end 
statuses.push({label: monitor[:name], value: result, arrow: arrow, color: color}) 

的结果= 0,我可能包括SMTP功能,但它只是每个作业运行是每5秒的时间通过电子邮件发送给你

感谢时间

mark

回答

0

我已经通过创建日志文件并根据服务的状态写入文件来解决此问题(如果服务正在运行,那么ok是wr如果文件失败,则转到文件失败写入失败每次它执行某件事先检查文件