ServiceNow MetricBase 統合コネクタ - AWS IoT Greengrass

AWS IoT Greengrass Version 1 は 2023 年 6 月 30 日に延長ライフフェーズに参加しました。詳細については、「AWS IoT Greengrass V1 メンテナンスポリシー」を参照してください。この日以降、 AWS IoT Greengrass V1 は機能、機能強化、バグ修正、またはセキュリティパッチを提供する更新をリリースしません。で実行されるデバイスは中断 AWS IoT Greengrass V1 されず、引き続き動作し、クラウドに接続します。に移行することを強くお勧めします。 AWS IoT Greengrass Version 2これにより、重要な新機能が追加され、プラットフォーム のサポートが追加されます

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ServiceNow MetricBase 統合コネクタ

警告

このコネクタは延長ライフサイクルフェーズに移行しており、AWS IoT Greengrass では、機能、既存機能の拡張、セキュリティパッチ、バグ修正を提供するアップデートはリリースされません。詳細については、「AWS IoT Greengrass Version 1 メンテナンスポリシー」を参照してください。

ServiceNow MetricBase 統合コネクタは、Greengrass デバイスから ServiceNow MetricBase に時系列メトリクスを発行します。これにより、Greengrass Core 環境からの時系列データを保存、分析、可視化して、ローカルイベントに対処できます。

このコネクタは、MQTT トピックに関する時系列データを受け取り、ServiceNow API に定期的に発行します。

このコネクタを使用して、以下のようなシナリオをサポートできます。

  • Greengrass デバイスから収集した時系列データに基づいて、しきい値ベースのアラートとアラームを作成する。

  • ServiceNow プラットフォームに構築されたカスタムアプリケーションで、Greengrass デバイスのタイムサービスデータを使用する。

このコネクタには、次のバージョンがあります。

バージョン

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

バージョンの変更については、「Changelog」を参照してください。

要件

このコネクタには以下の要件があります。

Version 3 - 4
  • AWS IoT Greengrass Core ソフトウェア v1.9.3 以降。シークレットの要件で説明されているように、AWS IoT Greengrass はローカルシークレットをサポートするように設定する必要があります。

    注記

    この要件には、Secrets Manager シークレットへのアクセス許可が含まれます。デフォルトの Greengrass サービスロールを使用している場合、Greengrass は greengrass- で始まる名前の付いたシークレット値にアクセスできます。

  • Python バージョン 3.7 または 3.8 が Core デバイスにインストールされ、PATH 環境変数に追加されている。

    注記

    Python 3.8 を使用するには、次のコマンドを実行して、Python 3.7 のデフォルトのインストールフォルダからインストール済みの Python 3.8 バイナリへのシンボリックリンクを作成します。

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

    これにより、AWS IoT Greengrass の Python 要件を満たすようにデバイスが設定されます。

  • MetricBase へのサブスクリプションを有効化した ServiceNow アカウント。さらに、メトリクスとメトリクステーブルをアカウントに作成する必要があります。詳細については、ServiceNow ドキュメントの「MetricBase」を参照してください。

  • ServiceNow インスタンスにログインするためのユーザー名とパスワードを保存する、AWS Secrets Manager でのテキスト形式のシークレット (基本認証用)。シークレットには、対応する値が設定された「user」と「password」キーが含まれている必要があります。詳細については、「AWS Secrets Manager ユーザーガイド」の「Creating a basic secret」(基本的なシークレットの作成) を参照してください。

  • Secrets Manager シークレットを参照する Greengrass グループのシークレットリソース。詳細については、「AWS IoT Greengrass Core にシークレットをデプロイする」を参照してください。

Versions 1 - 2
  • AWS IoT Greengrass Core ソフトウェア v1.7 以降。シークレットの要件で説明されているように、AWS IoT Greengrass はローカルシークレットをサポートするように設定する必要があります。

    注記

    この要件には、Secrets Manager シークレットへのアクセス許可が含まれます。デフォルトの Greengrass サービスロールを使用している場合、Greengrass は greengrass- で始まる名前の付いたシークレット値にアクセスできます。

  • Python バージョン 2.7 が Core デバイスにインストールされ、PATH 環境変数に追加されている。

  • MetricBase へのサブスクリプションを有効化した ServiceNow アカウント。さらに、メトリクスとメトリクステーブルをアカウントに作成する必要があります。詳細については、ServiceNow ドキュメントの「MetricBase」を参照してください。

  • ServiceNow インスタンスにログインするためのユーザー名とパスワードを保存する、AWS Secrets Manager でのテキスト形式のシークレット (基本認証用)。シークレットには、対応する値が設定された「user」と「password」キーが含まれている必要があります。詳細については、「AWS Secrets Manager ユーザーガイド」の「Creating a basic secret」(基本的なシークレットの作成) を参照してください。

  • Secrets Manager シークレットを参照する Greengrass グループのシークレットリソース。詳細については、「AWS IoT Greengrass Core にシークレットをデプロイする」を参照してください。

コネクタパラメータ

このコネクタには、以下のパラメータが用意されています。

Version 4
PublishInterval

ServiceNow への発行イベント間の最大待機秒数。最大の値は 900 です。

PublishBatchSize に達するか、PublishInterval が有効期限切れになると、コネクタは ServiceNow への発行を行います。

AWS IoT コンソールでの表示名: [Publish interval in seconds] (秒単位の発行間隔)

必須: true

タイプ: string

有効な値: 1 - 900

有効なパターン: [1-9]|[1-9]\d|[1-9]\d\d|900

PublishBatchSize

ServiceNow への発行前にバッチにまとめることのできるメトリクス値の最大数。

PublishBatchSize に達するか、PublishInterval が有効期限切れになると、コネクタは ServiceNow への発行を行います。

AWS IoT コンソールでの表示名: [Publish batch size] (発行バッチサイズ)

必須: true

タイプ: string

有効なパターン: ^[0-9]+$

InstanceName

ServiceNow への接続に使用されるインスタンスの名前。

AWS IoT コンソールでの表示名: [Name of ServiceNow instance] (ServiceNow インスタンスの名前)

必須: true

タイプ: string

有効なパターン: .+

DefaultTableName

時系列 MetricBase データベースに関連付けられた GlideRecord を含むテーブルの名前。入力メッセージペイロードの table プロパティは、この値を上書きするために使用できます。

AWS IoT コンソールでの表示名: [Name of the table to contain the metric] (メトリクスを含めるテーブルの名前)

必須: true

タイプ: string

有効なパターン: .+

MaxMetricsToRetain

新しいメトリクスに置き換えられるまでメモリに保存するメトリクスの最大数。

この制限は、インターネットへの接続がなく、コネクタが後で発行するメトリクスをバッファし始めるときに適用されます。バッファが満杯になると、最も古いメトリクスが新しいメトリクスに置き換えられます。

注記

コネクタのホストプロセスが中断された場合、メトリクスは保存されません。例えば、この状況はグループデプロイ中またはデバイスの再起動時に発生する可能性があります。

この値は、バッチサイズより大きく、MQTT メッセージの受信率に基づいてメッセージを保持するのに十分な大きさであることが必要です。

AWS IoT コンソールでの表示名: [Maximum metrics to retain in memory] (メモリに保持する最大メトリクス)

必須: true

タイプ: string

有効なパターン: ^[0-9]+$

AuthSecretArn

ServiceNow のユーザー名とパスワードを保存する AWS Secrets Manager のシークレット。これはテキスト形式のシークレットであることが必要です。シークレットには、対応する値が設定された「user」と「password」キーが含まれている必要があります。

AWS IoT コンソールでの表示名: [ARN of auth secret] (認証シークレットの 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

ServiceNow 認証情報の Secrets Manager シークレットを参照するグループのシークレットリソース。

AWS IoT コンソールでの表示名: [Auth token resource] (認証トークンリソース)

必須: true

タイプ: string

有効なパターン: .+

IsolationMode

このコネクタのコンテナ化モード。デフォルトは GreengrassContainer です。つまり、コネクタは AWS IoT Greengrass コンテナ内の分離されたランタイム環境で実行されます。

注記

グループの既定のコンテナ化設定は、コネクタには適用されません。

AWS IoT コンソールでの表示名: [Container isolation mode] (コンテナ分離モード) 

必須: false

タイプ: string

有効な値: GreengrassContainer または NoContainer

有効なパターン: ^NoContainer$|^GreengrassContainer$

Version 1 - 3
PublishInterval

ServiceNow への発行イベント間の最大待機秒数。最大の値は 900 です。

PublishBatchSize に達するか、PublishInterval が有効期限切れになると、コネクタは ServiceNow への発行を行います。

AWS IoT コンソールでの表示名: [Publish interval in seconds] (秒単位の発行間隔)

必須: true

タイプ: string

有効な値: 1 - 900

有効なパターン: [1-9]|[1-9]\d|[1-9]\d\d|900

PublishBatchSize

ServiceNow への発行前にバッチにまとめることのできるメトリクス値の最大数。

PublishBatchSize に達するか、PublishInterval が有効期限切れになると、コネクタは ServiceNow への発行を行います。

AWS IoT コンソールでの表示名: [Publish batch size] (発行バッチサイズ)

必須: true

タイプ: string

有効なパターン: ^[0-9]+$

InstanceName

ServiceNow への接続に使用されるインスタンスの名前。

AWS IoT コンソールでの表示名: [Name of ServiceNow instance] (ServiceNow インスタンスの名前)

必須: true

タイプ: string

有効なパターン: .+

DefaultTableName

時系列 MetricBase データベースに関連付けられた GlideRecord を含むテーブルの名前。入力メッセージペイロードの table プロパティは、この値を上書きするために使用できます。

AWS IoT コンソールでの表示名: [Name of the table to contain the metric] (メトリクスを含めるテーブルの名前)

必須: true

タイプ: string

有効なパターン: .+

MaxMetricsToRetain

新しいメトリクスに置き換えられるまでメモリに保存するメトリクスの最大数。

この制限は、インターネットへの接続がなく、コネクタが後で発行するメトリクスをバッファし始めるときに適用されます。バッファが満杯になると、最も古いメトリクスが新しいメトリクスに置き換えられます。

注記

コネクタのホストプロセスが中断された場合、メトリクスは保存されません。例えば、この状況はグループデプロイ中またはデバイスの再起動時に発生する可能性があります。

この値は、バッチサイズより大きく、MQTT メッセージの受信率に基づいてメッセージを保持するのに十分な大きさであることが必要です。

AWS IoT コンソールでの表示名: [Maximum metrics to retain in memory] (メモリに保持する最大メトリクス)

必須: true

タイプ: string

有効なパターン: ^[0-9]+$

AuthSecretArn

ServiceNow のユーザー名とパスワードを保存する AWS Secrets Manager のシークレット。これはテキスト形式のシークレットであることが必要です。シークレットには、対応する値が設定された「user」と「password」キーが含まれている必要があります。

AWS IoT コンソールでの表示名: [ARN of auth secret] (認証シークレットの 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

ServiceNow 認証情報の Secrets Manager シークレットを参照するグループのシークレットリソース。

AWS IoT コンソールでの表示名: [Auth token resource] (認証トークンリソース)

必須: true

タイプ: string

有効なパターン: .+

サンプルコネクタを作成する (AWS CLI)

以下の CLI コマンドは、ServiceNow MetricBase 統合コネクタを含む初期バージョンで ConnectorDefinition を作成します。

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 関数には存続期間の長いライフサイクルがあります。

AWS IoT Greengrass コンソールでは、グループの [Connectors] (コネクタ) ページからコネクタを追加できます。詳細については、「Greengrass コネクタの開始方法 (コンソール)」を参照してください。

入力データ

このコネクタは、MQTT トピックに関する時系列メトリクスを受け取り、それを ServiceNow に発行します。入力メッセージは JSON 形式である必要があります。

サブスクリプションのトピックフィルター

servicenow/metricbase/metric

メッセージのプロパティ
request

テーブル、レコード、メトリクスに関する情報。このリクエストは時系列 POST リクエストの seriesRef オブジェクトを表します。詳細については、「Clotho Time Series 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 ファイルとして保存します。AWS IoT Greengrass Core SDK for Python をダウンロードして解凍します。次に、PY ファイルとルートレベルの greengrasssdk フォルダを含む zip パッケージを作成します。この zip パッケージは、AWS Lambda にアップロードするデプロイパッケージです。

    Python 3.7 Lambda 関数を作成したら、関数バージョンを公開し、エイリアスを作成します。

  3. Greengrass グループを設定します。

    1. エイリアスで Lambda 関数を追加します (推奨)。Lambda ライフサイクルを長期間有効に (または CLI で "Pinned": true に) 設定します。

    2. 必要なシークレットリソースを追加し、Lambda 関数への読み取りアクセスを許可します。

    3. コネクタを追加し、そのパラメータを設定します。

    4. コネクタが入力データを受信し、サポートされているトピックフィルターで出力データを送信できるようにするサブスクリプションを追加します。

      • Lambda 関数をソースに、コネクタをターゲットに設定し、サポートされている入力トピックフィルターを使用します。

      • コネクタをソースとして、AWS IoT Core をターゲットとして設定し、サポートされている出力トピックフィルターを使用します。このサブスクリプションを使用して、AWS IoT コンソールでステータスメッセージを表示します。

  4. グループをデプロイします。

  5. AWS IoT コンソールの [Test] (テスト) ページで、出力データトピックをサブスクライブして、コネクタからのステータスメッセージを表示します。この例の Lambda 関数は長期間有効であり、グループがデプロイされた直後にメッセージの送信を開始します。

    テストが終了したら、Lambda ライフサイクルをオンデマンドに (または CLI で "Pinned": false に) 設定して、グループをデプロイできます。これにより、関数がメッセージの送信を停止します。

次の例では、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 Core ソフトウェアライセンス契約に従ってリリースされます。

変更ログ

次の表に、コネクタの各バージョンにおける変更点を示します。

バージョン

変更

4

コネクタのコンテナ化モードを設定するための IsolationMode パラメータが追加されました。

3

Lambda ランタイムを Python 3.7 にアップグレードしたことで、ランタイム要件が変更。

2

過剰なログ記録を減らすための修正。

1

初回リリース。

Greengrass グループには、一度に 1 つのバージョンのコネクタしか含めることができません。コネクタのバージョンのアップグレードについては、「コネクタのバージョンのアップグレード」を参照してください。

以下も参照してください。