1

我根据How to Create Inbound Connectors中的示例代码创建了一个 SCOM 入站连接器。我运行代码,我的对象按预期出现在操作管理器中。

我找不到任何关于如何让我的发现可执行文件被自动调用的指导——理想情况下,它将像管理包中的“发现”片段一样运行。我想到的另一个选项是代理任务,但我不确定是否可以安排。第三种选择只是将代码安装为完全在管理包之外的服务。

是否有关于如何执行/安排执行自定义入站连接器的最佳实践?

4

2 回答 2

0

入站连接器生命周期和频率需要由开发人员管理。

我遵循的是:

  1. 在产品安装期间创建连接器 GUID,将其持久化
  2. 当您的产品(被监控)启动时,创建连接器,创建一个每 X 分钟调用一次的 Timer。如果它是一个长时间运行的服务器,那么代码可以标记服务器代码。否则,您将需要创建一个 Windows 服务来在其中托管计时器+连接器代码。在产品发布时,只需启动此服务。
  3. 卸载产品后,取消注册并清理连接器。

这允许在高峰时段监控要求期间进行更轻松的报告,例如 30 分钟或 1 小时甚至动态频率。

管理包中的监视器/警报在频率方面可能会更加激进。

于 2016-05-09T07:27:10.703 回答
0

如果您想将您的发现/连接器推送工作流与 SCOM 结合起来,只需将其包装为 SCOM 规则即可。

优点是:

  1. 它是定期安排的。
  2. 您可以返回带有发现过程状态的属性包——因此,如果您的过程中出现异常,SCOM 会发出警报。
  3. 它作为 MP 存储在 SCOM 中,因此不会丢失,就像它是另一台服务器上的 Windows 服务一样。

因此,您需要在 C# 中编写一个 Probe Action。最好的方法是使用 MS 示例。然后将其编译为类库,链接到 MP,包装为 Probe Action 并在 MP 内制定规则。

注意:

  • 仅使用 .NET 3.5 及更低版本作为目标平台
  • 使用特殊的编译器选项来提高 SDK 调用性能。

    // 为了使 SCOM SDK 调用更快 [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: CompilationRelaxations(CompilationRelaxations.NoStringInterning)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [程序集:PermissionSet(SecurityAction.RequestMinimum, Name = "Execution")] [程序集:PermissionSet(SecurityAction.RequestRefuse, Unrestricted = false)] [模块:UnverifiableCode] [程序集:CLSCompliant(false)]

于 2016-08-28T09:57:32.077 回答