Splunk Integrconnector - AWS IoT Greengrass

AWS IoT Greengrass Version 1 è entrato nella fase di estensione della vita utile il 30 giugno 2023. Per ulteriori informazioni, consulta la politica AWS IoT Greengrass V1 di manutenzione. Dopo questa data, AWS IoT Greengrass V1 non rilascerà aggiornamenti che forniscano funzionalità, miglioramenti, correzioni di bug o patch di sicurezza. I dispositivi che funzionano AWS IoT Greengrass V1 non subiranno interruzioni e continueranno a funzionare e a connettersi al cloud. Ti consigliamo vivamente di eseguire la migrazione a AWS IoT Greengrass Version 2, che aggiunge nuove importanti funzionalità e supporto per piattaforme aggiuntive.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Splunk Integrconnector

avvertimento

Questo connettore è stato spostato nelfase di vita prolungata, eAWS IoT Greengrassnon rilascerà aggiornamenti che forniscono funzionalità, miglioramenti alle funzionalità esistenti, patch di sicurezza o correzioni di bug. Per ulteriori informazioni, consulta la pagina AWS IoT Greengrass Version 1politica di manutenzione .

L'integrazione Splunkconnettorepubblica i dati dai dispositivi Greengrass su Splunk. In questo modo potrai utilizzare Splunk per monitorare e analizzare l'ambiente core di Greengrass e agire sugli eventi locali. Il connettore si integra con HTTP Event Collector (HEC). Per ulteriori informazioni, consulta Introduzione a Splunk HTTP Event Collector nella documentazione di Splunk.

Questo connettore riceve dati di eventi e di logging in un argomento MQTT e pubblica i dati così come sono nell'API Splunk.

Puoi utilizzare questo connettore per supportare scenari industriali, ad esempio:

  • Gli operatori possono utilizzare i dati periodici provenienti da attuatori e sensori (ad esempio, letture di temperatura, pressione e acqua) per attivare allarmi se i valori superano una determinata soglia.

  • Gli sviluppatori utilizzano i dati raccolti dai macchinari industriali per creare modelli ML in grado di monitorare le apparecchiature in vista di potenziali problemi.

Questo connettore dispone delle versioni seguenti.

Versione

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

Per informazioni sulle modifiche di ogni versione, consulta Changelog.

Requisiti

Questo connettore presenta i seguenti requisiti:

Version 3 - 4
  • AWS IoT GreengrassSoftware Core v1.9.3 o versioni successive.AWS IoT Greengrassdeve essere configurato per supportare segreti locali, come descritto inRequisiti per i segreti.

    Nota

    Questo requisito include consentire l'accesso ai tuoi segreti di Secrets Manager. Se stai utilizzando il ruolo del servizio Greengrass predefinito, Greengrass avrà il permesso di ottenere i valori dei segreti con nomi che iniziano con"greengrass-.

  • Pitoneversione 3.7 o 3.8 installata sul dispositivo core e aggiunta alla variabile di ambiente PATH.

    Nota

    Per utilizzare Python 3.8, eseguire il seguente comando per creare un collegamento simbolico dalla cartella di installazione predefinita di Python 3.7 ai binari Python 3.8 installati.

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

    Questo configura il dispositivo in modo che soddisfi il requisito Python per AWS IoT Greengrass.

  • La funzionalità HTTP Event Collector deve essere abilitata in Splunk. Per ulteriori informazioni, consulta Configurazione e utilizzo di HTTP Event Collector in Splunk Web nella documentazione di Splunk.

  • Un segreto in formato testo in AWS Secrets Manager di archiviazione dei token di HTTP Event Collector di Splunk. Per ulteriori informazioni, consultaInformazioni sui token raccoglitorenella documentazione di Splunk eCreazione di un segreto di basenellaAWS Secrets ManagerGuida per l’utente di.

    Nota

    Per creare il segreto nella console di Secrets Manager, inserisci il tuo token nellatesto normaleScheda. Non includere virgolette o altra formattazione. Nell'API, specificare il token come valore per ilSecretStringproprietà.

  • Una risorsa segreta nel gruppo Greengrass che fa riferimento al segreto del Secrets Manager. Per ulteriori informazioni, consulta la pagina Distribuzione dei segreti nel core AWS IoT Greengrass .

Versions 1 - 2
  • AWS IoT GreengrassSoftware Core v1.7 o versioni successive.AWS IoT Greengrassdeve essere configurato per supportare segreti locali, come descritto inRequisiti per i segreti.

    Nota

    Questo requisito include consentire l'accesso ai tuoi segreti di Secrets Manager. Se stai utilizzando il ruolo del servizio Greengrass predefinito, Greengrass avrà il permesso di ottenere i valori dei segreti con nomi che iniziano con"greengrass-.

  • Pitoneversione 2.7 installata sul dispositivo core e aggiunta alla variabile di ambiente PATH.

  • La funzionalità HTTP Event Collector deve essere abilitata in Splunk. Per ulteriori informazioni, consulta Configurazione e utilizzo di HTTP Event Collector in Splunk Web nella documentazione di Splunk.

  • Un segreto in formato testo in AWS Secrets Manager di archiviazione dei token di HTTP Event Collector di Splunk. Per ulteriori informazioni, consultaInformazioni sui token raccoglitorenella documentazione di Splunk eCreazione di un segreto di basenellaAWS Secrets ManagerGuida per l’utente di.

    Nota

    Per creare il segreto nella console di Secrets Manager, inserisci il tuo token nellatesto normaleScheda. Non includere virgolette o altra formattazione. Nell'API, specificare il token come valore per ilSecretStringproprietà.

  • Una risorsa segreta nel gruppo Greengrass che fa riferimento al segreto del Secrets Manager. Per ulteriori informazioni, consulta la pagina Distribuzione dei segreti nel core AWS IoT Greengrass .

Parametri del connettore

Questo connettore fornisce i seguenti parametri:

Version 4
SplunkEndpoint

L'endpoint dell'istanza database Splunk. Questo valore deve contenere il protocollo, il nome host e la porta.

Nome visualizzato nellaAWS IoTConsole : Splunk endpoint (

Campo obbligatorio:true

Tipo: string

Pattern:^(http:\/\/|https:\/\/)?[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$

MemorySize

La quantità di memoria (in KB) da allocare al connettore.

Nome visualizzato nellaAWS IoTConsole : Dimensioni memoria

Campo obbligatorio:true

Tipo: string

Pattern:^[0-9]+$

SplunkQueueSize

Il numero massimo di voci da salvare in memoria prima che vengono inviate o eliminate. Quando si raggiunge questo limite, le voci meno recenti in coda vengono sostituite da quelle più recenti. Questo limite si applica in genere in assenza di una connessione a Internet.

Nome visualizzato nellaAWS IoTConsole : Numero massimo di voci da conservare

Campo obbligatorio:true

Tipo: string

Pattern:^[0-9]+$

SplunkFlushIntervalSeconds

L'intervallo di tempo (in secondi) per la pubblicazione dei dati ricevuti in Splunk HEC. Il valore massimo è 900. Per configurare il connettore in modo da pubblicare gli elementi man mano che vengono ricevuti (senza raggruppamento), specificare 0.

Nome visualizzato nellaAWS IoTConsole : Splunk publish interval

Campo obbligatorio:true

Tipo: string

Pattern:[0-9]|[1-9]\d|[1-9]\d\d|900

SplunkTokenSecretArn

Il secreto di nellaAWS Secrets Managerche memorizza il token Splunk. Deve essere un segreto in formato testo.

Nome visualizzato nellaAWS IoTConsole : ARN del segreto del token di autorizzazione Splunk

Campo obbligatorio:true

Tipo: string

Pattern:arn:aws:secretsmanager:[a-z]{2}-[a-z]+-\d{1}:\d{12}?:secret:[a-zA-Z0-9-_]+-[a-zA-Z0-9-_]+

SplunkTokenSecretArn-ResourceId

La risorsa segreta nel gruppo Greengrass che fa riferimento al segreto Splunk.

Nome visualizzato nellaAWS IoTConsole : Risorsa token di autorizzazione Splunk

Campo obbligatorio:true

Tipo: string

Pattern:.+

SplunkCustomCALocation

Il percorso del file dell'autorità di certificazione (CA) personalizzata per Splunk (ad esempio /etc/ssl/certs/splunk.crt).

Nome visualizzato nellaAWS IoTConsole : Percorso autorità di certificazione personalizzata Splunk

Campo obbligatorio:false

Tipo: string

Pattern:^$|/.*

IsolationMode

Modalità di containerizzazione per questo connettore. L'impostazione predefinita è GreengrassContainer, il che significa che il connettore viene eseguito in un ambiente di runtime isolato all'interno del container AWS IoT Greengrass.

Nota

L'impostazione predefinita della containerizzazione per il gruppo non si applica ai connettori.

Nome visualizzato nellaAWS IoTConsole : modalità di isolamento del container

Campo obbligatorio:false

Tipo: string

Valori validi: GreengrassContainer o NoContainer

Pattern:^NoContainer$|^GreengrassContainer$

Version 1 - 3
SplunkEndpoint

L'endpoint dell'istanza database Splunk. Questo valore deve contenere il protocollo, il nome host e la porta.

Nome visualizzato nellaAWS IoTConsole : Splunk endpoint (

Campo obbligatorio:true

Tipo: string

Pattern:^(http:\/\/|https:\/\/)?[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$

MemorySize

La quantità di memoria (in KB) da allocare al connettore.

Nome visualizzato nellaAWS IoTConsole : Dimensioni memoria

Campo obbligatorio:true

Tipo: string

Pattern:^[0-9]+$

SplunkQueueSize

Il numero massimo di voci da salvare in memoria prima che vengono inviate o eliminate. Quando si raggiunge questo limite, le voci meno recenti in coda vengono sostituite da quelle più recenti. Questo limite si applica in genere in assenza di una connessione a Internet.

Nome visualizzato nellaAWS IoTConsole : Numero massimo di voci da conservare

Campo obbligatorio:true

Tipo: string

Pattern:^[0-9]+$

SplunkFlushIntervalSeconds

L'intervallo di tempo (in secondi) per la pubblicazione dei dati ricevuti in Splunk HEC. Il valore massimo è 900. Per configurare il connettore in modo da pubblicare gli elementi man mano che vengono ricevuti (senza raggruppamento), specificare 0.

Nome visualizzato nellaAWS IoTConsole : Splunk publish interval

Campo obbligatorio:true

Tipo: string

Pattern:[0-9]|[1-9]\d|[1-9]\d\d|900

SplunkTokenSecretArn

Il secreto di nellaAWS Secrets Managerche memorizza il token Splunk. Deve essere un segreto in formato testo.

Nome visualizzato nellaAWS IoTConsole : ARN del segreto del token di autorizzazione Splunk

Campo obbligatorio:true

Tipo: string

Pattern:arn:aws:secretsmanager:[a-z]{2}-[a-z]+-\d{1}:\d{12}?:secret:[a-zA-Z0-9-_]+-[a-zA-Z0-9-_]+

SplunkTokenSecretArn-ResourceId

La risorsa segreta nel gruppo Greengrass che fa riferimento al segreto Splunk.

Nome visualizzato nellaAWS IoTConsole : Risorsa token di autorizzazione Splunk

Campo obbligatorio:true

Tipo: string

Pattern:.+

SplunkCustomCALocation

Il percorso del file dell'autorità di certificazione (CA) personalizzata per Splunk (ad esempio /etc/ssl/certs/splunk.crt).

Nome visualizzato nellaAWS IoTConsole : Percorso autorità di certificazione personalizzata Splunk

Campo obbligatorio:false

Tipo: string

Pattern:^$|/.*

Esempio di creazione di un connettore (AWS CLI)

Il seguente comando CLI crea unConnectorDefinitioncon una versione iniziale che contiene il connettore Splunk Integration.

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" } } ] }'
Nota

La funzione Lambda in questo connettore ha un::::ciclo di vita.

NellaAWS IoT Greengrassconsole, è possibile aggiungere un connettore dal gruppoConnettori(Certificato creato). Per ulteriori informazioni, consulta la pagina Nozioni di base sui connettori Greengrass (console) .

Dati di input

Questo connettore accetta dati di eventi e di logging in un argomento MQTT e pubblica i dati ricevuti così come sono nell'API Splunk. I messaggi di input devono essere in formato JSON.

Filtro argomento in sottoscrizione

splunk/logs/put

Proprietà dei messaggi
request

I dati dell'evento da inviare all'API Splunk. Gli eventi devono soddisfare le specifiche dell'API services/collector.

Campo obbligatorio:true

Type: object. Soloeventè obbligatoria solo la proprietà.

id

Un ID arbitrario della richiesta. Questa proprietà viene utilizzata per associare una richiesta di input a uno stato di output.

Campo obbligatorio:false

Tipo: string

Limiti

Tutti i limiti imposti dall'API Splunk vengono applicati quando si utilizza questo connettore. Per ulteriori informazioni, consulta services/collector.

Input di esempio
{ "request": { "event": "some event", "fields": { "severity": "INFO", "category": [ "value1", "value2" ] } }, "id": "request123" }

Dati di output

Questo connettore pubblica i dati di output in due argomenti:

  • Informazioni di stato nell'argomento splunk/logs/put/status.

  • Gli errori nell'argomento splunk/logs/put/error.

Filtro di argomenti: splunk/logs/put/status

Utilizza questo argomento per ascoltare lo stato delle richieste. Ogni volta che il connettore invia all'API Splunk un batch di dati ricevuti, viene pubblicato l'elenco degli ID delle richieste con esito positivo e di quelle con esito negativo.

Output di esempio
{ "response": { "succeeded": [ "request123", ... ], "failed": [ "request789", ... ] } }
Filtro di argomenti: splunk/logs/put/error

Utilizza questo argomento per ascoltare gli errori del connettore. La proprietà error_message che descrive l'errore o il timeout rilevato durante l'elaborazione della richiesta.

Output di esempio
{ "response": { "error": "UnauthorizedException", "error_message": "invalid splunk token", "status": "fail" } }
Nota

Se il connettore rileva un errore riprovabile (ad esempio, errori di connessione), tenta nuovamente la pubblicazione nel batch successivo.

Esempio di utilizzo

Utilizza i seguenti passaggi di alto livello per impostare un esempio di funzione Lambda Python 3.7 che puoi utilizzare per provare il connettore.

Nota
  1. Assicurarsi di soddisfare i requisiti per il connettore.

  2. Crea e pubblica una funzione Lambda che invia i dati di input al connettore.

    Salvare il codice di esempio come file PY. Scarica e decomprimi il fileAWS IoT GreengrassSDK di Core per Python. Quindi, crea un pacchetto zip che contiene il file PY e la cartella greengrasssdk a livello root. Questo pacchetto zip è il pacchetto di distribuzione caricato suAWS Lambda.

    Dopo aver creato la funzione Lambda Python 3.7, pubblica una versione della funzione e crea un alias.

  3. Configurare il gruppo Greengrass.

    1. Aggiungi la funzione Lambda con il suo alias (scelta consigliata). Configura il ciclo di vita Lambda su lunga durata (o"Pinned": truenella CLI).

    2. Aggiungi la risorsa segreta richiesta e concedi l'accesso in lettura alla funzione Lambda.

    3. Aggiungere il connettore e configurarne i relativi parametri.

    4. Aggiungere sottoscrizioni che consentono al connettore di ricevere i dati di input e inviare i dati di output nei filtri degli argomenti supportati.

      • Imposta la funzione Lambda come origine, il connettore come destinazione e utilizza un filtro per l'argomento di input supportato.

      • Imposta il connettore come origine, AWS IoT Core come destinazione e utilizza un filtro per l’argomento di output supportato. Utilizza questa sottoscrizione per visualizzare i messaggi di stato nellaAWS IoTConsole.

  4. Distribuisci il gruppo.

  5. NellaAWS IoTconsole,Test, sottoscrivi l'argomento dei dati di output per visualizzare i messaggi di stato dal connettore. La funzione Lambda di esempio ha una lunga durata e inizia a inviare messaggi immediatamente dopo la distribuzione del gruppo.

    Al termine del test, puoi impostare il ciclo di vita Lambda su «on demand» (o"Pinned": falsenella CLI) e distribuire il gruppo. Ciò impedisce alla funzione di inviare messaggi.

Esempio

La funzione Lambda di esempio seguente invia un messaggio di input al connettore.

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

Licenze

Questo connettore viene rilasciato sottoAccordo di licenza del software Greengrass Core.

Changelog

La tabella seguente descrive le modifiche apportate a ogni versione del connettore.

Versione

Modifiche

4

Aggiunto il parametro IsolationMode per configurare la modalità di containerizzazione per il connettore.

3

Aggiornato il runtime Lambda a Python 3.7, che modifica il requisito di runtime.

2

Correggere per ridurre l'eccessiva registrazione di log.

1

Versione iniziale.

Un gruppo Greengrass può contenere una sola versione del connettore alla volta. Per informazioni sull'aggiornamento di una versione del connettore, consulta Aggiornamento delle versioni dei connettori.

Consulta anche