Scenario 2: dati quasi in tempo reale per i team di sicurezza - Soluzioni per i dati di streaming di AWS per Amazon Kinesis

Scenario 2: dati quasi in tempo reale per i team di sicurezza

L'azienda ABC2badge fornisce sensori e badge per eventi aziendali o su larga scala come AWS re:Invent. Gli utenti si iscrivono all'evento e ricevono badge univoci che i sensori rilevano in tutto il campus. Quando gli utenti passano davanti a un sensore, le loro informazioni anonime vengono registrate in un database relazionale.

In un evento imminente, a causa dell'elevato volume di partecipanti, il team responsabile della sicurezza dell'evento ha richiesto ad ABC2badge di acquisire i dati delle aree più concentrate del campus ogni 15 minuti. Ciò darà al team di sicurezza tempo sufficiente per reagire e distribuire il personale addetto alla sicurezza proporzionalmente nelle aree di concentrazione. Data questa nuova esigenza da parte del team di sicurezza e l'inesperienza nella costruzione di una soluzione per lo streaming, per elaborare i dati quasi in tempo reale, ABC2badge è alla ricerca di una soluzione semplice ma scalabile e affidabile.

L'attuale soluzione di data warehouse è Amazon Redshift. Durante l'esame delle caratteristiche dei servizi Amazon Kinesis, l'azienda ha realizzato che Amazon Kinesis Data Firehose può ricevere un flusso di record di dati, raggruppare i record in base alle dimensioni del buffer e/o all'intervallo di tempo e inserirli in Amazon Redshift. È stato creato un flusso di consegna di Kinesis Data Firehose ed è stato configurato in modo da copiare i dati nelle tabelle di Amazon Redshift ogni cinque minuti. Come parte di questa nuova soluzione, sui server è stato utilizzato l'agente Amazon Kinesis. Ogni cinque minuti, Kinesis Data Firehose carica i dati in Amazon Redshift, dove il team di business intelligence (BI) è abilitato a eseguire l'analisi dei dati e a inviare i dati al team di sicurezza ogni 15 minuti.

Nuova soluzione con Amazon Kinesis Data Firehose

Nuova soluzione con Amazon Kinesis Data Firehose

Amazon Kinesis Data Firehose

Amazon Kinesis Data Firehose è il mezzo più semplice per caricare i dati di streaming in AWS. È in grado di acquisire, trasformare e caricare dati di streaming in Amazon Kinesis Data Analytics, Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon OpenSearch Service (OpenSearch Service) e Splunk. Inoltre, Kinesis Data Firehose può caricare i dati di streaming in qualsiasi endpoint HTTP personalizzato o in endpoint HTTP di proprietà di provider di servizi di terze parti supportati.

Kinesis Data Firehose consente l'analisi dei dati quasi in tempo reale con gli strumenti e i pannelli di controllo di business intelligence esistenti già in uso oggi. Si tratta di un servizio serverless completamente gestito che dimensiona automaticamente le risorse in base alla velocità effettiva dei dati e non richiede alcuna attività di amministrazione continua. Kinesis Data Firehose può elaborare in batch, comprimere e crittografare i dati prima del caricamento, riducendo al minimo l'archiviazione utilizzata e migliorando il livello di sicurezza. Utilizzando AWS Lambda, può anche trasformare i dati di origine e inviare i dati trasformati alle destinazioni. Sarà sufficiente configurare le applicazioni producer di dati perché inviino i dati a Kinesis Data Firehose, che a sua volta li distribuirà automaticamente alla destinazione specificata.

Invio di dati a un flusso di consegna Firehose

Per inviare dati al flusso di consegna, sono disponibili diverse opzioni. AWS offre SDK per molti linguaggi di programmazione comuni, ognuno dei quali fornisce API per Amazon Kinesis Data Firehose. AWS dispone di una utility per l'invio di dati al flusso di consegna. Kinesis Data Firehose è stato integrato con altri servizi AWS per inviare dati direttamente da tali servizi nel flusso di consegna.

Utilizzo dell'Agente di Amazon Kinesis

L'agente Amazon Kinesis è un'applicazione software autonoma che monitora continuamente un set di file di log alla ricerca di nuovi dati da inviare al flusso di consegna. L'agente gestisce automaticamente la rotazione dei file, il checkpoint, i nuovi tentativi in caso di errori e invia parametri di Amazon CloudWatch per il monitoraggio e la risoluzione dei problemi del flusso di consegna. All'agente è possibile applicare configurazioni aggiuntive, come la pre-elaborazione dei dati, il monitoraggio di più directory di file e la scrittura su più flussi di consegna.

L'agente può essere installato su server basati su Linux o Windows come server Web, server di registro e server di database. Una volta installato l'agente, è sufficiente specificare i file di log che monitorerà e il flusso di consegna a cui effettuerà gli invii. L'agente invierà in modo duraturo e affidabile nuovi dati al flusso di consegna.

Utilizzo di API con fonti quali AWS SDK e servizi AWS

L'API Kinesis Data Firehose offre due operazioni per l'invio di dati al flusso di consegna. PutRecord invia un record di dati all'interno di una chiamata. PutRecordBatch può inviare più record di dati all'interno di una chiamata e può raggiungere una velocità effettiva più elevata per produttore. In ogni metodo, è necessario specificare il nome del flusso di consegna e il record di dati, o array di record di dati, quando si utilizza questo metodo. Per ulteriori informazioni e il codice di esempio per le operazioni delle API di Kinesis Data Firehose, consulta l'argomento relativo alla scrittura in un flusso di consegna di Firehose mediante l'AWS SDK.

Kinesis Data Firehose funziona anche con Kinesis Data Firehose, CloudWatch Logs, CloudWatch Events, Amazon Simple Notification Service (Amazon SNS), Amazon API Gateway e AWS IoT. Puoi inviare in modo scalabile e affidabile flussi di dati, registri, eventi e dati IoT direttamente in una destinazione Kinesis Data Firehose.

Elaborazione dei dati prima della consegna alla destinazione

In alcuni scenari, potresti voler trasformare o migliorare i dati di streaming prima che vengano consegnati a destinazione. Ad esempio, i produttori di dati potrebbero inviare testo non strutturato nei record di dati ed è necessario trasformarli in JSON prima di inviarli a OpenSearch Service. Oppure potresti voler convertire i dati JSON in un formato di file colonnare come Apache Parquet o Apache ORC prima di archiviare i dati in Simple Storage Service (Amazon S3).

Kinesis Data Firehose è dotato di funzionalità incorporate di conversione del formato dati. Con questo strumento è possibile convertire facilmente i flussi di dati JSON in formati di file Apache Parquet o Apache ORC.

Flusso di trasformazione dei dati

Per abilitare le trasformazioni dei dati di streaming, Kinesis Data Firehose utilizza una funzione Lambda creata per trasformare i dati. Kinesis Data Firehose memorizza i dati in entrata in una dimensione di buffer specificata per la funzione e quindi richiama la funzione Lambda specificata in modo asincrono. I dati trasformati vengono inviati da Lambda a Kinesis Data Firehose e Kinesis Data Firehose consegna i dati alla destinazione.

Conversione del formato dei dati

È anche possibile abilitare la conversione del formato dei dati di Kinesis Data Firehose, che convertirà il flusso di dati JSON in Apache Parquet o Apache ORC. Questa caratteristica può convertire solo JSON in Apache Parquet o Apache ORC. Se si dispone di dati in formato CSV, è possibile trasformarli tramite una funzione Lambda in JSON, quindi applicare la conversione del formato dei dati.

Distribuzione di dati

Come un flusso di consegna quasi in tempo reale, Kinesis Data Firehose effettua il buffering dei dati in entrata. Dopo aver raggiunto le soglie di buffering del flusso di consegna, i dati vengono recapitati alla destinazione che hai configurato. Esistono alcune differenze nel modo in cui Kinesis Data Firehose consegna i dati a ciascuna destinazione, che questo documento esamina nelle sezioni seguenti.

Simple Storage Service (Amazon S3)

Simple Storage Service (Amazon S3) è una soluzione di archiviazione di oggetti con una semplice interfaccia di servizio Web, che consente di archiviare e recuperare qualsiasi quantità di dati ovunque sul Web. È stato progettato per offrire una durabilità del 99,999999999% ed essere in grado di gestire migliaia di miliardi di oggetti in tutto il mondo.

Distribuzione dei dati su Simple Storage Service (Amazon S3)

Per la distribuzione dei dati su Simple Storage Service (Amazon S3), Kinesis Data Firehose concatena più record in entrata in base alla configurazione di buffering del flusso di consegna, quindi li distribuisce a Simple Storage Service (Amazon S3) come oggetto S3. La frequenza di distribuzione dei dati a S3 è determinata dalla dimensione del buffer S3 (da 1 MB a 128 MB) o dall'intervallo del buffer (da 60 secondi a 900 secondi), a seconda dell'evento che si verifica per primo.

La distribuzione dei dati sul bucket S3 potrebbe non riuscire per diversi motivi. Ad esempio, il bucket potrebbe non esistere più oppure il ruolo AWS Identity and Access Management (IAM) assunto da Kinesis Data Firehose potrebbe non avere accesso al bucket. In queste condizioni, Kinesis Data Firehose continua a riprovare per un massimo di 24 ore fino a quando la distribuzione va a buon fine. Il tempo massimo di archiviazione dati di Kinesis Data Firehose è di 24 ore. Se la distribuzione dei dati non va a buon fine per più di 24 ore, i dati vengono persi.

Amazon Redshift

Amazon Redshift è una soluzione di data warehouse performante e completamente gestita che semplifica e riduce i costi dell'analisi dei dati utilizzando SQL standard e gli strumenti BI già esistenti. Questo servizio consente di eseguire query di analisi complesse su petabyte di dati strutturati utilizzando sofisticati sistemi di ottimizzazione delle query, archiviazione a colonne su dischi locali ad alte prestazioni ed esecuzione query in parallelo di grandi volumi di dati.

Distribuzione dei dati ad Amazon Redshift

Per la distribuzione dei dati ad Amazon Redshift, Kinesis Data Firehose consegna prima i dati in arrivo nel bucket S3 nel formato descritto in precedenza. Kinesis Data Firehose invia quindi un comando COPY di Amazon Redshift per caricare i dati dal bucket S3 al cluster di Amazon Redshift.

La frequenza delle operazioni COPY dei dati da Amazon S3 in Amazon Redshift è determinata dalla rapidità di esecuzione del comando COPY da parte del cluster Redshift. Per una destinazione Amazon Redshift, puoi specificare una durata dei nuovi tentativi (0-7200 secondi) quando crei un flusso di consegna per gestire gli errori di consegna dei dati. Kinesis Data Firehose tenta nuovamente per il tempo specificato e ignora quel particolare batch di oggetti S3 se non riesce. Le informazioni relative agli oggetti non elaborati vengono inviate al bucket S3 sotto forma di file manifesto nella cartella errors/, che potrai utilizzare per recuperare le informazioni manualmente.

Di seguito è riportato un diagramma di architettura del flusso di dati da Kinesis Data Firehose ad Amazon Redshift. Sebbene questo flusso di dati sia esclusivo di Amazon Redshift, Kinesis Data Firehose segue schemi simili per gli altri target di destinazione.

Flusso di dati da Kinesis Data Firehose ad Amazon Redshift

Flusso di dati da Kinesis Data Firehose ad Amazon Redshift

Amazon OpenSearch Service (OpenSearch Service)

OpenSearch Service è un servizio completamente gestito che fornisce le API OpenSearch di facile utilizzo e le funzionalità in tempo reale insieme alla disponibilità, alla scalabilità e alla sicurezza richieste dai carichi di lavoro di produzione. OpenSearch Service semplifica l'implementazione, il funzionamento e il dimensionamento OpenSearch per l'analisi dei dati dei registri, la ricerca di testi completi e il monitoraggio delle applicazioni.

Distribuzione di dati a OpenSearch Service

Per la distribuzione dei dati a OpenSearch Service, Kinesis Data Firehose esegue il buffering dei record in entrata in base alla configurazione del buffering del flusso di consegna, quindi genera una richiesta in blocco OpenSearch per indicizzare più record nel cluster OpenSearch. La frequenza di distribuzione dei dati a OpenSearch Service è determinata dai valori della dimensione del buffer OpenSearch (da 1 MB a 100 MB) e dell'intervallo del buffer (da 60 secondi a 900 secondi), a seconda dell'evento che si verifica per primo.

Per la destinazione OpenSearch Service, puoi specificare una durata di ripetizione (da 0 a 7200 secondi) durante la creazione di un flusso di consegna. Kinesis Data Firehose riprova per il tempo specificato e poi ignora quella particolare richiesta di indice. I documenti non elaborati vengono distribuiti sul bucket S3 nella cartella elasticsearch_failed/, che potrai utilizzare per recuperare le informazioni manualmente.

Amazon Kinesis Data Firehose può ruotare l'indice OpenSearch Service in base a una durata. A seconda dell'opzione di rotazione scelta (NoRotation, OneHour, OneDay OneWeek, o OneMonth), Kinesis Data Firehose aggiunge una parte del timestamp degli arrivi UTC (Coordinated Universal Time) al nome dell'indice specificato.

Endpoint HTTP personalizzato o provider di servizi di terzi supportato

Kinesis Data Firehose può inviare dati a endpoint HTTP personalizzati o a provider di terze parti supportati come Datadog, Dynatrace, LogicMonitor, MongoDB, New Relic, Splunk e Sumo Logic.

Endpoint HTTP personalizzato o provider di servizi di terzi supportato

Affinché Kinesis Data Firehose possa distribuire correttamente i dati agli endpoint HTTP personalizzati, questi endpoint devono accettare richieste e inviare risposte utilizzando determinati formati di richiesta e risposta di Kinesis Data Firehose.

Quando si forniscono dati a un endpoint HTTP di proprietà di un provider di servizi di terze parti supportato, è possibile utilizzare il servizio AWS Lambda integrato per creare una funzione per trasformare i record in entrata nel formato corrispondente al formato previsto dall'integrazione del provider di servizi.

Per la frequenza di distribuzione dei dati, ogni fornitore di servizi ha una dimensione del buffer consigliata. Collabora con il tuo fornitore di servizi per ulteriori informazioni sulla dimensione del buffer consigliata. Per la gestione degli errori di distribuzione dei dati, Kinesis Data Firehose stabilisce prima una connessione con l'endpoint HTTP in attesa di una risposta dalla destinazione. Kinesis Data Firehose continua a stabilire la connessione fino alla scadenza della durata dei tentativi. Successivamente, Kinesis Data Firehose lo considera un errore di distribuzione dei dati ed esegue il backup dei dati sul bucket S3.

Riepilogo

Kinesis Data Firehose è in grado di distribuire in modo persistente i dati di streaming verso una destinazione supportata. È una soluzione completamente gestita, che richiede uno sviluppo minimo o nullo. Per l'azienda ABC2badge, l'utilizzo di Kinesis Data Firehose è stata una scelta naturale. Stava già utilizzando Amazon Redshift come soluzione per il data warehouse. Poiché le origini dati scrivevano continuamente nei registri delle transazioni, è stata in grado di sfruttare l'agente Amazon Kinesis per la trasmissione dei dati senza scrivere codice aggiuntivo. Ora che ABC2badge ha creato un flusso di record di sensori e sta ricevendo questi record tramite Kinesis Data Firehose, può usarlo come base per il caso d'uso del team di sicurezza.