ServiceNow MetricBase 集成连接器 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon IoT Greengrass Version 1在 2023 年 6 月 30 日之前,不再接收功能更新,只会收到安全补丁和错误修复。有关更多信息,请参阅 。Amazon IoT Greengrass V1维护政策. 强烈建议您迁移到Amazon IoT Greengrass Version 2,它补充说重要新功能对其他平台的支持.

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

ServiceNow MetricBase 集成连接器

警告

此连接器已移入延长生命阶段, 和Amazon IoT Greengrass不会发布提供功能、现有功能增强功能、安全补丁或错误修复的更新。有关更多信息,请参阅 Amazon IoT Greengrass Version 1维护策略

这些区域有: ServiceNow MetricBase 集成连接器将时间序列指标从 Greengrass 设备发布到 ServiceNow MetricBase. 这样一来,您可以存储、分析和可视化 Greengrass 核心环境中的时间序列数据,并对本地事件执行操作。

此连接器接收关于 MQTT 主题的时间序列数据,并将数据发布到 ServiceNow 定期进行 API。

您可以使用此连接器支持如下情况:

  • 根据从 Greengrass 设备收集的时间序列数据,创建基于阈值的提醒和警报。

  • 使用 Greengrass 设备中的时间服务数据,且自定义应用程序在 ServiceNow platfor

此连接器具有以下版本。

版本

ARN

4

arn:aws:greengrass:region::/connectors/ServiceNowMetricBaseIntegration/versions/4

3

arn:aws:greengrass:region::/connectors/ServiceNowMetricBaseIntegration/versions/3

2

arn:aws:greengrass:region::/connectors/ServiceNowMetricBaseIntegration/versions/2

1

arn:aws:greengrass:region::/connectors/ServiceNowMetricBaseIntegration/versions/1

有关版本更改的信息,请参阅更改日志

要求

此连接器具有以下要求:

Version 3 - 4
  • Amazon IoT GreengrassCore 软件 v1.9.3 版或更高版本。Amazon IoT Greengrass必须配置为支持本地密钥,如中所述密钥要求.

    注意

    此要求包括允许访问您的Secrets Manager 密钥。如果使用的是默认 Greengrass 服务角色,Greengrass 有权获取密钥,其名称以greenrs-.

  • Python3.7 或 3.8 版安装在核心设备上并添加到 PATH 环境变量中。

    注意

    要使用 Python 3.8,请运行以下命令以创建从默认 Python 3.7 安装文件夹到已安装的 Python 3.8 二进制文件的符号链接。

    sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7

    这会将设备配置为满足 Amazon IoT Greengrass 的 Python 要求。

  • 一个 ServiceNow 激活订阅的账户 MetricBase. In此外,必须在账户中创建指标和指标表。有关更多信息,请参阅 。MetricBase中的 ServiceNow 文档中)。

  • 文本类型密钥Amazon Secrets Manager存储您的用户名和密码 ServiceNow 使用基本身份验证的实例。该密钥必须包含“用户”和“密码”键及相应的值。有关更多信息,请参阅 。创建基本密钥中的Amazon Secrets Manager用户指南.

  • Greengrass 组中引用 Secrets Manager 密钥的密钥资源。有关更多信息,请参阅 将密钥部署到 Amazon IoT Greengrass 核心

Versions 1 - 2
  • Amazon IoT GreengrassCore 软件 v1.7 或更高版本。Amazon IoT Greengrass必须配置为支持本地密钥,如中所述密钥要求.

    注意

    此要求包括允许访问您的Secrets Manager 密钥。如果使用的是默认 Greengrass 服务角色,Greengrass 有权获取密钥,其名称以greenrs-.

  • Python安装在核心设备上并添加到 PATH 环境变量中。

  • 一个 ServiceNow 激活订阅的账户 MetricBase. In此外,必须在账户中创建指标和指标表。有关更多信息,请参阅 。MetricBase中的 ServiceNow 文档中)。

  • 文本类型密钥Amazon Secrets Manager存储您的用户名和密码 ServiceNow 使用基本身份验证的实例。该密钥必须包含“用户”和“密码”键及相应的值。有关更多信息,请参阅 。创建基本密钥中的Amazon Secrets Manager用户指南.

  • Greengrass 组中引用 Secrets Manager 密钥的密钥资源。有关更多信息,请参阅 将密钥部署到 Amazon IoT Greengrass 核心

连接器参数

该连接器提供以下参数:

Version 4
PublishInterval

将事件发布到的最长时间间隔(秒数) ServiceNow. 最大值为 900。

连接器将发布到 ServiceNow 什么时候PublishBatchSize已达到已达到PublishInterval过期。

用户名在Amazon IoT控制台:以秒为单位的发布间隔

必需true

类型:string

有效值:1 - 900

有效模式:[1-9]|[1-9]\d|[1-9]\d\d|900

PublishBatchSize

可在发布到之前进行批处理的指标值的最大数量 ServiceNow.

连接器将发布到 ServiceNow 什么时候PublishBatchSize已达到已达到PublishInterval过期。

用户名在Amazon IoT控制台:发布发布发布批处理大小

必需true

类型:string

有效模式:^[0-9]+$

InstanceName

用于连接的实例的名称 ServiceNow.

用户名在Amazon IoT控制台:的名字 ServiceNow 实例

必需true

类型:string

有效模式:.+

DefaultTableName

包含GlideRecord与时间序列关联 MetricBase 数据库。输入消息负载中的 table 属性可用于覆盖该值。

用户名在Amazon IoT控制台:包含指标的名称

必需true

类型:string

有效模式:.+

MaxMetricsToRetain

替换为新指标之前可在内存中保存的指标的最大数量。

此限制适用于没有 Internet 连接并且连接器稍后开始缓冲要发布的指标的情况。当缓冲区已满时,最旧的指标将被新的指标所替换。

注意

如果连接器的宿主进程中断,则不会保存指标。例如,在组部署或设备重新启动期间,可能会发生此情况。

该值应大于批处理大小,且大到足以根据传入 MQTT 消息的速率来容纳消息。

用户名在Amazon IoT控制台:内存中最多可保留的指标的数量

必需true

类型:string

有效模式:^[0-9]+$

AuthSecretArn

密钥Amazon Secrets Manager它将这些密钥的 ServiceNow 用户名和密码。这必须是文本类型密钥。该密钥必须包含“用户”和“密码”键及相应的值。

用户名在Amazon IoT控制台:身份验证密钥的 ARN

必需true

类型:string

有效模式:arn:aws:secretsmanager:[a-z0-9\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\]+/)*[a-zA-Z0-9/_+=,.@\-]+-[a-zA-Z0-9]+

AuthSecretArn-ResourceId

组中引用 Secrets Manager 密钥的密钥资源 ServiceNow 凭证。

用户名在Amazon IoT控制台:身份验证令牌资源

必需true

类型:string

有效模式:.+

IsolationMode

此连接器的容器化模式。默认值为 GreengrassContainer,这意味着连接器在 Amazon IoT Greengrass 容器内的隔离运行时环境中运行。

注意

组的默认容器化设置不适用于连接器。

用户名在Amazon IoT控制台:容器隔离模式

必需false

类型:string

有效值:GreengrassContainerNoContainer

有效模式:^NoContainer$|^GreengrassContainer$

Version 1 - 3
PublishInterval

将事件发布到的最长时间间隔(秒数) ServiceNow. 最大值为 900。

连接器将发布到 ServiceNow 什么时候PublishBatchSize已达到已达到PublishInterval过期。

用户名在Amazon IoT控制台:以秒为单位的发布间隔

必需true

类型:string

有效值:1 - 900

有效模式:[1-9]|[1-9]\d|[1-9]\d\d|900

PublishBatchSize

可在发布到之前进行批处理的指标值的最大数量 ServiceNow.

连接器将发布到 ServiceNow 什么时候PublishBatchSize已达到已达到PublishInterval过期。

用户名在Amazon IoT控制台:发布发布发布批处理大小

必需true

类型:string

有效模式:^[0-9]+$

InstanceName

用于连接的实例的名称 ServiceNow.

用户名在Amazon IoT控制台:的名字 ServiceNow 实例

必需true

类型:string

有效模式:.+

DefaultTableName

包含GlideRecord与时间序列关联 MetricBase 数据库。输入消息负载中的 table 属性可用于覆盖该值。

用户名在Amazon IoT控制台:包含指标的名称

必需true

类型:string

有效模式:.+

MaxMetricsToRetain

替换为新指标之前可在内存中保存的指标的最大数量。

此限制适用于没有 Internet 连接并且连接器稍后开始缓冲要发布的指标的情况。当缓冲区已满时,最旧的指标将被新的指标所替换。

注意

如果连接器的宿主进程中断,则不会保存指标。例如,在组部署或设备重新启动期间,可能会发生此情况。

该值应大于批处理大小,且大到足以根据传入 MQTT 消息的速率来容纳消息。

用户名在Amazon IoT控制台:内存中最多可保留的指标的数量

必需true

类型:string

有效模式:^[0-9]+$

AuthSecretArn

密钥Amazon Secrets Manager它将这些密钥的 ServiceNow 用户名和密码。这必须是文本类型密钥。该密钥必须包含“用户”和“密码”键及相应的值。

用户名在Amazon IoT控制台:身份验证密钥的 ARN

必需true

类型:string

有效模式:arn:aws:secretsmanager:[a-z0-9\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\]+/)*[a-zA-Z0-9/_+=,.@\-]+-[a-zA-Z0-9]+

AuthSecretArn-ResourceId

组中引用 Secrets Manager 密钥的密钥资源 ServiceNow 凭证。

用户名在Amazon IoT控制台:身份验证令牌资源

必需true

类型:string

有效模式:.+

创建连接器示例 (Amazon CLI)

以下 CLI 命令将创建一个ConnectorDefinition其初始版本包含 ServiceNow MetricBase 集成连接器。

aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyServiceNowMetricBaseIntegrationConnector", "ConnectorArn": "arn:aws:greengrass:region::/connectors/ServiceNowMetricBaseIntegration/versions/4", "Parameters": { "PublishInterval" : "10", "PublishBatchSize" : "50", "InstanceName" : "myinstance", "DefaultTableName" : "u_greengrass_app", "MaxMetricsToRetain" : "20000", "AuthSecretArn" : "arn:aws:secretsmanager:region:account-id:secret:greengrass-secret-hash", "AuthSecretArn-ResourceId" : "MySecretResource", "IsolationMode" : "GreengrassContainer" } } ] }'
注意

此连接器中的 Lambda 函数具有长时间生存生命周期。

在Amazon IoT Greengrassconsole,则可以从组的连接器页. 有关更多信息,请参阅 Greengrass 连接器入门(控制台)

输入数据

此连接器接受关于 MQTT 主题的时间序列指标,并将指标发布到 ServiceNow. 输入消息必须采用 JSON 格式。

订阅中的主题筛选条件

servicenow/metricbase/metric

消息属性
request

有关表、记录和指标的信息。该请求表示时间序列 POST 请求中的 seriesRef 对象。有关更多信息,请参阅 Clotho 时间序列 API - POST

必需true

类型:object包含以下属性:

subject

表中特定记录的 sys_id

必需true

类型:string

metric_name

指标字段名称。

必需true

类型:string

table

用于存储记录的表的名称。指定该值以覆盖 DefaultTableName 参数。

必需false

类型:string

value

单个数据点的值。

必需true

类型:float

timestamp

单个数据点的时间戳。默认值为当前时间。

必需false

类型:string

示例输入
{ "request": { "subject":"ef43c6d40a0a0b5700c77f9bf387afe3", "metric_name":"u_count", "table": "u_greengrass_app" "value": 1.0, "timestamp": "2018-10-14T10:30:00" } }

输出数据

此连接器将状态信息发布为 MQTT 主题的输出数据。

订阅中的主题筛选条件

servicenow/metricbase/metric/status

输出示例:成功
{ "response": { "metric_name": "Errors", "table_name": "GliderProd", "processed_on": "2018-10-14T10:35:00", "response_id": "khjKSkj132qwr23fcba", "status": "success", "values": [ { "timestamp": "2016-10-14T10:30:00", "value": 1.0 }, { "timestamp": "2016-10-14T10:31:00", "value": 1.1 } ] } }
输出示例:失败
{ "response": { "error": "InvalidInputException", "error_message": "metric value is invalid", "status": "fail" } }
注意

如果连接器检测到可重试错误(例如,连接错误),则会在下一个批次中重试发布。

用法示例

使用以下概括步骤设置可用于尝试连接器的示例 Python 3.7 Lambda 函数。

注意
  1. 确保满足连接器的要求

  2. 创建并发布将输入数据发送到连接器的Lambda函数。

    示例代码保存为 PY 文件。下载并解压缩Amazon IoT Greengrass适用于 Python 的核需. 然后,创建一个 zip 包,其中在根级别包含 PY 文件和 greengrasssdk 文件夹。此 zip 包是您上传到的部署包Amazon Lambda.

    创建 Python 3.7 Lambda 函数后,发布函数版本并创建别名。

  3. 配置 Greengrass 组。

    1. 通过函数的别名添加此函数(推荐)。将 Lambda 生命周期配置为长时间生存(或"Pinned": true在 CLI 中)。

    2. 添加所需的密钥资源并授予对 Lambda 函数的读取访问权限。

    3. 添加连接器并配置其参数

    4. 添加允许连接器接收输入数据并针对支持的主题筛选条件发送输出数据的订阅。

      • 将 Lambda 函数设置为源,将连接器设置为目标,并使用支持的输入主题筛选条件。

      • 将连接器设置为源,将 Amazon IoT Core 设置为目标,并使用支持的输出主题筛选条件。您可以使用此订阅在Amazon IoT控制台。

  4. 部署组。

  5. 在Amazon IoT控制台测试页面上,订阅输出数据主题以查看连接器中的状态消息。示例 Lambda 函数是长时间生存的,并且在部署组后立即开始发送消息。

    完成测试后,您可以将 Lambda 生命周期设置为按需(或"Pinned": false在 CLI CLI 中设置为。这会阻止函数发送消息。

示例

以下示例 Lambda 函数将输入消息发送到连接器。

import greengrasssdk import json iot_client = greengrasssdk.client('iot-data') SEND_TOPIC = 'servicenow/metricbase/metric' def create_request_with_all_fields(): return { "request": { "subject": '2efdf6badbd523803acfae441b961961', "metric_name": 'u_count', "value": 1234, "timestamp": '2018-10-20T20:22:20', "table": 'u_greengrass_metricbase_test' } } def publish_basic_message(): messageToPublish = create_request_with_all_fields() print("Message To Publish: ", messageToPublish) iot_client.publish(topic=SEND_TOPIC, payload=json.dumps(messageToPublish)) publish_basic_message() def lambda_handler(event, context): return

许可证

这些区域有: ServiceNow MetricBase 集成连接器包含以下第三方软件/许可:

此连接器在Greengrass 核心软件许可协议.

更改日志

下表介绍了在连接器各个版本中进行的更改。

版本

更改

4

增加了用于配置连接器容器化模式的 IsolationMode 参数。

3

已将 Lambda 运行时升级到 Python 3.7,这会更改运行时要求。

2

进行了修复,以减少过多的日志记录。

1

首次发布。

Greengrass 组每次只能包含连接器版本。有关升级连接器版本的信息,请参阅升级连接器版本

另请参阅