Splunk 統合コネクタ - 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ことを強くお勧めします。これにより、重要な新機能が追加され、追加のプラットフォームのサポートが追加されます

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

Splunk 統合コネクタ

警告

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

Splunk 統合コネクタは Greengrass デバイスから Splunk にデータを発行します。これにより、Splunk を使用して Greengrass Core 環境をモニタリングおよび分析し、ローカルイベントに対処できます。コネクタは HTTP Event Collector (HEC) と統合されています。詳細については、「Splunk HTTP Event Collector の概要」を参照してください。

このコネクタは、MQTT トピックのログおよびイベントデータを受信し、そのデータをそのまま Splunk API に発行します。

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

  • オペレーターは、アクチュエーターやセンサーからの定期的なデータ (温度、圧力、水の読み取り値など) を使用して、値が特定のしきい値を超えたときにアラームが開始されるようにする。

  • 開発者は、産業機械から収集されたデータを使用して、問題の徴候をデバイスでモニタリングできる ML モデルを構築する。

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

バージョン

ARN

4

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

3

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

2

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

1

arn:aws:greengrass:region::/connectors/SplunkIntegration/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 要件を満たすようにデバイスが設定されます。

  • HTTP Event Collector 機能を Splunk で有効にする必要があります。詳細については、Splunk ドキュメントの「Set up and use HTTP Event Collector in Splunk Web」を参照してください。

  • AWS Secrets Manager で Splunk HTTP Event Collector トークンを保存するテキスト形式のシークレット。詳細については、Splunk ドキュメントの「About event collector tokens」(イベントコレクタトークンについて) と「AWS Secrets Manager ユーザーガイド」の「Creating a basic secret」(基本的なシークレットの作成) を参照してください。

    注記

    Secrets Manager コンソールでシークレットを作成するには、[Plaintext] (プレーンテキスト) タブにトークンを入力します。引用符やその他の書式は含めないでください。API で、SecretString プロパティの値としてトークンを指定します。

  • 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 環境変数に追加されている。

  • HTTP Event Collector 機能を Splunk で有効にする必要があります。詳細については、Splunk ドキュメントの「Set up and use HTTP Event Collector in Splunk Web」を参照してください。

  • AWS Secrets Manager で Splunk HTTP Event Collector トークンを保存するテキスト形式のシークレット。詳細については、Splunk ドキュメントの「About event collector tokens」(イベントコレクタトークンについて) と「AWS Secrets Manager ユーザーガイド」の「Creating a basic secret」(基本的なシークレットの作成) を参照してください。

    注記

    Secrets Manager コンソールでシークレットを作成するには、[Plaintext] (プレーンテキスト) タブにトークンを入力します。引用符やその他の書式は含めないでください。API で、SecretString プロパティの値としてトークンを指定します。

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

コネクタパラメータ

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

Version 4
SplunkEndpoint

Splunk インスタンスのエンドポイント。この値には、プロトコル、ホスト名、ポートが含まれている必要があります。

AWS IoT コンソールでの表示名: [Splunk endpoint] (Splunk エンドポイント)

必須: true

タイプ: string

有効なパターン: ^(http:\/\/|https:\/\/)?[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$

MemorySize

コネクタに割り当てるメモリ量 (KB 単位)。

AWS IoT コンソールでの表示名: [Memory size] (メモリサイズ)

必須: true

タイプ: string

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

SplunkQueueSize

項目が送信または破棄されるまでにメモリに保存する項目の最大数。この制限に達すると、キュー内の最も古い項目が新しい項目に置き換えられます。この制限は通常、インターネットに接続していない場合に適用されます。

AWS IoT コンソールでの表示名: [Maximum items to retain] (保持する最大項目)

必須: true

タイプ: string

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

SplunkFlushIntervalSeconds

受信したデータを Splunk HEC に発行する間隔 (秒単位)。最大の値は 900 です。アイテムを受信時にバッチにまとめないで発行するようにコネクタを設定するには、0 を指定します。

AWS IoT コンソールでの表示名: [Splunk publish interval] (Splunk 発行間隔)

必須: true

タイプ: string

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

SplunkTokenSecretArn

Splunk トークンを保存する AWS Secrets Manager のシークレット。これはテキスト形式のシークレットであることが必要です。

AWS IoT コンソールでの表示名: [ARN of Splunk auth token secret] (Splunk 認証トークンシークレットの ARN)

必須: true

タイプ: string

有効なパターン: arn:aws:secretsmanager:[a-z]{2}-[a-z]+-\d{1}:\d{12}?:secret:[a-zA-Z0-9-_]+-[a-zA-Z0-9-_]+

SplunkTokenSecretArn-ResourceId

Splunk シークレットを参照する Greengrass グループのシークレットリソース。

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

必須: true

タイプ: string

有効なパターン: .+

SplunkCustomCALocation

Splunk のカスタム認証機関 (CA) のファイルパス (/etc/ssl/certs/splunk.crt など)。

AWS IoT コンソールでの表示名: [Splunk custom certificate authority location] (Splunk カスタム認証機関の場所)

必須: false

タイプ: string

有効なパターン: ^$|/.*

IsolationMode

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

注記

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

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

必須: false

タイプ: string

有効な値: GreengrassContainer または NoContainer

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

Version 1 - 3
SplunkEndpoint

Splunk インスタンスのエンドポイント。この値には、プロトコル、ホスト名、ポートが含まれている必要があります。

AWS IoT コンソールでの表示名: [Splunk endpoint] (Splunk エンドポイント)

必須: true

タイプ: string

有効なパターン: ^(http:\/\/|https:\/\/)?[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$

MemorySize

コネクタに割り当てるメモリ量 (KB 単位)。

AWS IoT コンソールでの表示名: [Memory size] (メモリサイズ)

必須: true

タイプ: string

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

SplunkQueueSize

項目が送信または破棄されるまでにメモリに保存する項目の最大数。この制限に達すると、キュー内の最も古い項目が新しい項目に置き換えられます。この制限は通常、インターネットに接続していない場合に適用されます。

AWS IoT コンソールでの表示名: [Maximum items to retain] (保持する最大項目)

必須: true

タイプ: string

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

SplunkFlushIntervalSeconds

受信したデータを Splunk HEC に発行する間隔 (秒単位)。最大の値は 900 です。アイテムを受信時にバッチにまとめないで発行するようにコネクタを設定するには、0 を指定します。

AWS IoT コンソールでの表示名: [Splunk publish interval] (Splunk 発行間隔)

必須: true

タイプ: string

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

SplunkTokenSecretArn

Splunk トークンを保存する AWS Secrets Manager のシークレット。これはテキスト形式のシークレットであることが必要です。

AWS IoT コンソールでの表示名: [ARN of Splunk auth token secret] (Splunk 認証トークンシークレットの ARN)

必須: true

タイプ: string

有効なパターン: arn:aws:secretsmanager:[a-z]{2}-[a-z]+-\d{1}:\d{12}?:secret:[a-zA-Z0-9-_]+-[a-zA-Z0-9-_]+

SplunkTokenSecretArn-ResourceId

Splunk シークレットを参照する Greengrass グループのシークレットリソース。

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

必須: true

タイプ: string

有効なパターン: .+

SplunkCustomCALocation

Splunk のカスタム認証機関 (CA) のファイルパス (/etc/ssl/certs/splunk.crt など)。

AWS IoT コンソールでの表示名: [Splunk custom certificate authority location] (Splunk カスタム認証機関の場所)

必須: false

タイプ: string

有効なパターン: ^$|/.*

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

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

aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MySplunkIntegrationConnector", "ConnectorArn": "arn:aws:greengrass:region::/connectors/SplunkIntegration/versions/4", "Parameters": { "SplunkEndpoint": "https://myinstance.cloud.splunk.com:8088", "MemorySize": 200000, "SplunkQueueSize": 10000, "SplunkFlushIntervalSeconds": 5, "SplunkTokenSecretArn":"arn:aws:secretsmanager:region:account-id:secret:greengrass-secret-hash", "SplunkTokenSecretArn-ResourceId": "MySplunkResource", "IsolationMode" : "GreengrassContainer" } } ] }'
注記

このコネクタの Lambda 関数には存続期間の長いライフサイクルがあります。

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

入力データ

このコネクタは、MQTT トピックのログおよびイベントデータを受け取り、そのまま Splunk API に発行します。入力メッセージは JSON 形式である必要があります。

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

splunk/logs/put

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

Splunk API に送信するイベントデータ。イベントは services/collector API の仕様を満たしている必要があります。

必須: true

タイプ:objectevent プロパティのみが必須です。

id

リクエストの任意の ID。このプロパティは、入力リクエストを出力ステータスにマッピングするために使用します。

必須: false

タイプ: string

制限

このコネクタを使用する場合、Splunk API によって課せられるすべての制限が適用されます。詳細については、「services/collector」を参照してください。

入力例
{ "request": { "event": "some event", "fields": { "severity": "INFO", "category": [ "value1", "value2" ] } }, "id": "request123" }

出力データ

このコネクタは 2 つのトピックに関する出力データを発行します。

  • splunk/logs/put/status トピックのステータス情報。

  • splunk/logs/put/error トピックでのエラー。

トピックのフィルター: splunk/logs/put/status

このトピックを使用して、リクエストの状態をリッスンします。コネクタは受信したデータのバッチを Splunk API に送信するたびに、成功したリクエストの ID と失敗したリクエストの ID のリストを発行します。

出力例
{ "response": { "succeeded": [ "request123", ... ], "failed": [ "request789", ... ] } }
トピックのフィルター: splunk/logs/put/error

このトピックを使用して、コネクタからのエラーをリッスンします。リクエストの処理中に発生したエラーまたはタイムアウトを表す error_message プロパティ。

出力例
{ "response": { "error": "UnauthorizedException", "error_message": "invalid splunk token", "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 time import json iot_client = greengrasssdk.client('iot-data') send_topic = 'splunk/logs/put' def create_request_with_all_fields(): return { "request": { "event": "Access log test message." }, "id" : "req_123" } 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

ライセンス

このコネクタは、Greengrass Core ソフトウェアライセンス契約に従ってリリースされます。

変更ログ

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

バージョン

変更

4

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

3

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

2

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

1

初回リリース。

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

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