用途
MID Server(Management, Instrumentation, and Discovery)用于让 ServiceNow 实例与内部网络中的资源进行通信。本技能聚焦于通过 ECC 队列(ECC Queue)与 MID Server 交互,实现命令下发、脚本执行、探针与传感器构建以及状态监控。
架构与关键表
资料给出的架构为:ServiceNow 实例通过 ECC Queue 与 MID Server 通信。MID Server 包含探针(Probes,出站,即发送到 MID 的命令)、传感器(Sensors,入站,即从 MID 返回的结果)以及脚本执行。
涉及的关键表:
- ecc_agent:MID Server 记录
- ecc_queue:输入/输出队列
- discovery_probes:探针定义
- discovery_sensors:传感器定义
- sys_script_execution:脚本执行请求
主要能力
- 通过 ECC 队列发送命令:向 ecc_queue 写入记录,设置 agent、topic(如 Command)、name、source、payload、queue(output 表示发往 MID,input 表示来自 MID)、state(ready)等字段。
- 监控 ECC 响应:通过查询 response_to 与 queue=input 获取返回结果,并支持超时处理。
- 在 MID Server 上执行脚本:使用 topic 为 JSProbe,将脚本放入 payload 的 CDATA 中。
- 创建自定义探针:在 discovery_probes 中定义,设置 mid_type、triggered_by、script 等,探针脚本运行在 MID Server 上(ES5/Rhino)。
- 创建传感器:在 discovery_sensors 中定义,关联探针,传感器脚本运行在 ServiceNow 实例上(ES5)。
- 编排能力:支持远程 PowerShell(topic 为 PowerShell)与远程 SSH(topic 为 SSHCommand),通过 payload 传递 host、credential_id、script/command 等参数。
- MID Server 监控:查询 ecc_agent 获取名称、状态、IP、版本、验证状态、最后刷新时间、主机名等。
使用方式
资料中的示例均基于 ES5(Rhino)语法,明确标注“ES5 ONLY”。典型流程包括:获取 MID Server 记录(getMIDServer)、初始化 ecc_queue 记录、设置字段、插入记录并返回 sys_id,随后轮询等待响应。探针与传感器通过 GlideRecord 创建并插入。
MCP 工具集成提供以下工具:
- snow_query_table:查询 MID 与 ECC 表
- snow_artifact_manage(action='find'):查找探针/传感器
- snow_execute_script:测试 MID 脚本
示例工作流包括:查询状态为 Up 的 ecc_agent、查询 queue=output^state=ready 的 ecc_queue、查找 active=true 的 discovery_probes。
适用场景
适用于需要通过 ServiceNow 与内部网络资源通信的场景,例如远程执行命令、运行 PowerShell/SSH 脚本、构建自定义发现探针与传感器、监控 MID Server 健康状态等。
限制与最佳实践
资料强调:脚本仅支持 ES5,不使用现代 JavaScript 语法。最佳实践包括:凭据不得硬编码在脚本中;处理网络故障;设置合适的超时;记录日志以便排查;限制 MID 访问;监控 MID 健康;使用多个 MID 实现高可用与负载均衡。
关于具体收费、价格、平台支持范围等,资料暂未提供。