Sbloccare le barriere linguistiche: traduci i log delle applicazioni con Amazon Translate per un supporto continuo


I registri delle applicazioni sono informazioni essenziali che forniscono informazioni cruciali sul funzionamento interno di un'applicazione. Ciò include informazioni preziose come eventi, errori e interazioni dell'utente che potrebbero aiutare uno sviluppatore di applicazioni o un tecnico di supporto operativo a eseguire il debug e fornire supporto. Tuttavia, quando questi registri vengono presentati in lingue diverse dall'inglese, si crea un ostacolo significativo per gli sviluppatori che non possono leggere il contenuto e ostacola la capacità del team di supporto di identificare e risolvere tempestivamente i problemi.

In questo post esploriamo una soluzione su come sbloccare le barriere linguistiche utilizzando Amazon Translate, un servizio di traduzione automatica neurale completamente gestito per tradurre testo da e verso l'inglese in un'ampia gamma di lingue supportate. La soluzione completerà i flussi di lavoro di registrazione esistenti traducendo automaticamente in tempo reale tutti i log delle applicazioni in Amazon CloudWatch, il che può alleviare le sfide poste dai log delle applicazioni non in inglese.

Panoramica della soluzione

Questa soluzione mostra come utilizzare tre servizi chiave per automatizzare la traduzione dei log dell'applicazione in modo basato sugli eventi:

  • CloudWatch Logs viene utilizzato per monitorare, archiviare e accedere ai file di log generati da varie origini come i servizi AWS e le tue applicazioni
  • Amazon Translate viene utilizzato per eseguire la traduzione di testo da e verso l'inglese
  • AWS Lambda è un servizio di elaborazione che consente di eseguire codici per recuperare i log delle applicazioni e tradurli tramite l'utilizzo dell'SDK Amazon Translate

Il diagramma seguente illustra l'architettura della soluzione.

ML15104 immagine001

Il flusso di lavoro è costituito dai seguenti passaggi:

  1. Un'applicazione personalizzata o di terze parti è ospitata su un'istanza Amazon Elastic Compute Cloud (Amazon EC2) e i log dell'applicazione generati vengono caricati su CloudWatch Logs tramite l'agente CloudWatch Logs.
  2. Ogni voce di log scritta su CloudWatch Logs attiva la funzione Lambda iscritta al gruppo di log CloudWatch.
  3. La funzione elabora il contenuto della voce di log e utilizza Amazon Translate SDK tradurre_testo per tradurre il contenuto del registro.
  4. Il contenuto del log tradotto viene restituito alla funzione.
  5. La funzione riscrive il contenuto del log tradotto in CloudWatch Logs in un gruppo di log diverso.

L'intero processo avviene automaticamente in tempo reale e i tuoi sviluppatori potranno accedere ai log dell'applicazione tradotti dai gruppi di log CloudWatch senza alcuna modifica nel modo in cui l'applicazione esistente scrive i log su CloudWatch.

Prerequisiti

Per seguire le istruzioni in questa soluzione, è necessario un account AWS con un utente AWS Identity and Access Management (IAM) che disponga dell'autorizzazione per AWS CloudFormation, Amazon Translate, CloudWatch, Lambda e IAM.

Distribuisci la soluzione

Per iniziare, avvia il seguente modello CloudFormation per creare una funzione Lambda, due gruppi di log CloudWatch e un ruolo IAM. Procedere con la distribuzione con le impostazioni predefinite. Il completamento di questo modello richiede circa 1 minuto.

Una volta creato correttamente lo stack, puoi esaminare la funzione Lambda accedendo alla console Lambda e individuando la funzione tradurre-log-applicazione.

Puoi osservare che alla funzione è stato aggiunto un trigger CloudWatch Logs.

ML15104 immagine002

È possibile visualizzare i dettagli della configurazione del trigger accedendo a Configurazione scheda e scegliendo Trigger nel riquadro di navigazione.

ML15104 immagine003

Puoi confermare che il trigger è stato configurato per sottoscrivere gli eventi di log dal gruppo di log /applicationlogs. Qui è dove verranno scritti i log dell'applicazione non in inglese.

Quindi, scegli Variabili ambientali nel riquadro di navigazione.

ML15104 immagine004

Qui vengono fornite due variabili di ambiente:

  • linguaggio del codice – La lingua originale in cui si trova il registro dell'applicazione (ad esempio, per il giapponese)
  • lingua di destinazione – La lingua di destinazione in cui tradurre il registro dell'applicazione (ad esempio, en per l'inglese)

Per un elenco delle lingue supportate, fare riferimento a Lingue supportate e codici lingua.

Successivamente, vai a Codice scheda e rivedere la logica della funzione:

import json, boto3, gzip, base64, os Translate = boto3.client(service_name="translate", regional_name=os.environ['AWS_REGION'], use_ssl=True) logs = boto3.client('logs') def lambda_handler( evento, contesto): # recupera i messaggi di registro encoded_zipped_data = event['awslogs']['data'] zipped_data = base64.b64decode(encoded_zipped_data) data = gzip.decompress(zipped_data) json_log = json.loads(data) logGroup = json_log[ 'logGroup']+'-'+os.environ['target_lingual'] logStream = json_log['logStream'] # controlla se il gruppo di log esiste, crea se non è dlg = logs.describe_log_groups(logGroupNamePrefix=logGroup) if len(dlg[ 'logGroups']) == 0: logs.create_log_group(logGroupName=logGroup) # controlla se esiste un flusso di log, crea se non dls = logs.describe_log_streams(logGroupName=logGroup, logStreamNamePrefix=logStream) if len(dls['logStreams'] ) == 0: logs.create_log_stream(logGroupName=logGroup, logStreamName=logStream) # traduce i messaggi degli eventi di registro dalla lingua di origine alla lingua di destinazione per logevent in json_log['logEvents']: logevent['message'] = Translate.translate_text(Text =logevent['message'], SourceLanguageCode=os.environ['source_lingual'], TargetLanguageCode=os.environ['target_lingual']).get('TranslatedText') del logevent['id'] # riscrive gli eventi di registro tradotti a un gruppo di log diverso in CloudWatch logs.put_log_events( logGroupName = logGroup, logStreamName = logStream, logEvents = json_log['logEvents'] ) # return success return { 'statusCode': 200, 'body': 'Translation success!' }

Testare la soluzione

Infine, per testare la soluzione, puoi creare un messaggio di log tramite la console CloudWatch e scegliere il gruppo di log e il flusso di log creati.

ML15104 immagine005

Dopo aver creato i tuoi messaggi di registro, potrai vederli tradotti immediatamente.

ML15104 immagine006

Ripulire

Per ripulire le risorse create in questo post, elimina lo stack CloudFormation tramite la console CloudFormation.

Conclusione

Questo post affronta la sfida affrontata dagli sviluppatori e dai team di supporto quando i log delle applicazioni vengono presentati in lingue diverse dall'inglese, rendendo difficile per loro eseguire il debug e fornire supporto. La soluzione proposta utilizza Amazon Translate per tradurre automaticamente i log non in inglese in CloudWatch e fornisce indicazioni dettagliate sulla distribuzione della soluzione nel tuo ambiente. Attraverso questa implementazione, gli sviluppatori possono ora superare senza problemi la barriera linguistica, consentendo loro di affrontare i problemi in modo rapido ed efficace.

Prova questa implementazione e facci sapere cosa ne pensi nei commenti.


Circa l'autore

Xan Huang è un Senior Solutions Architect presso AWS e ha sede a Singapore. Collabora con i principali istituti finanziari per progettare e realizzare soluzioni sicure, scalabili e altamente disponibili nel cloud. Al di fuori del lavoro, Xan trascorre la maggior parte del suo tempo libero con la famiglia e documentando il percorso di crescita di sua figlia.



Collegamento alla fonte

lascia un commento

L'indirizzo email non verrà pubblicato. I campi richiesti sono contrassegnati *

Puoi utilizzare questi tag e attributi HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

it_ITItalian