如何在此情况发生时通知某人?

时间:2010-07-13 22:35:08

标签: c#

我在C#中创建了一个简单的通知程序命令行应用程序。基本上我使用Windows任务调度程序并将其设置为在特定时间运行此命令行应用程序。

当这个时间被命中时,运行命令行应用程序所有通知都是从数据库中获取的(使用linq到sql)格式化并由smtp发送给合适的人。

现在我应该如何处理这些情景

  1. 发生数据库错误
  2. 解决方案:向管理员发送电子邮件,通知他们失败并将其签出。

    1. 发生smtp错误
    2. 解决方案:?????

      所以这些都是可能出错的两件事。可能有不同的组合。

      可能会发生数据库错误,也可能发生smtp,或者只发生一个或另一个。

      那么如何将此信息提供给管理员或其他人,以便他们可以修复它。我非常怀疑管理员会每天检查通知是否有效。

      所以基本上如何使其失败安全或至少使其成为错误,如果出现问题,管理员可以修复它,只需手动运行通知程序,让所有内容恢复同步。

5 个答案:

答案 0 :(得分:1)

你有两个选择。

  1. 将错误信息写入日志。让它成为某个操作员经常检查日志的过程。

  2. 让它打电话给其他服务吗?

  3. 但是,如果数据库不仅仅被您的应用程序使用,那么其他人完全可能会注意到。与电子邮件服务器相同。如果它失败了,那么我打赌很多人都会打电话。请注意,您的情况会排除网络连接丢失(如死机或配置错误的路由器)。

    顺便提一下,如果它检测到SMTP已备份,那么它应该通知某人它在给定时间段内已关闭。关于数据库服务器也是如此。

    最后,应将所有错误条件写入系统日志。写入Windows事件日志非常简单。如果您的系统管理员遵循普遍接受的协议,他们应该经常监控这些协议。

答案 1 :(得分:0)

因此,主要问题是您不知道如何在SMTP服务器发生故障时通知管理员。假设管理员的电子邮件帐户不在同一服务器上,您有几种选择。

第一个选项:您可以在另一台服务器上设置cgi邮件脚本,并通过http联系该邮件脚本以发送电子邮件。

第二个选项:使用smtp客户端并将其设置为联系接收者的smtp服务器以直接发送电子邮件(而不是通过本地smtp服务器)。

BTW:一些电子邮件提供商为来自某个地址的电子邮件提供短信通知。如果服务器在管理员离开办公桌时发生故障,这非常方便。

答案 2 :(得分:0)

您可以使用SMS gateway或将手机附加到服务器,并在发生严重错误时向管理员发送短信。

但你可以更进一步:

  • 如果丢失网络连接怎么办? (开关或电缆坏了 例子)?
  • 如果电量下降怎么办? (你最后一次测试时间是什么时候 UPS)?

根据您的需求(以及在短时间内发送这些通知的业务成本),您可能需要一个完整的监控解决方案。

答案 3 :(得分:0)

将错误记录到EventLog也可以是一个选项,只要管理员定期检查EventLog或者您有监控系统来汇总这些错误。

答案 4 :(得分:0)

对于您的数据库错误,您可以在(一组)电子邮件地址中进行硬编码以发送数据库错误。

对于SMTP错误,您可以执行“在smtp恢复时发送电子邮件”,或者您必须使用备用方法来警告您的管理员。这可能是一个备份SMTP服务器,一个SMS网关(正如其他人提到的那样),甚至是某些东西,例如网络中的某个桌面,如果它没有收到某种类型的“一切正常”警报/消息,则会弹出警报运行脚本的框。