Superare le barriere linguistiche tradurre i log dell’applicazione con Amazon Translate per un supporto senza soluzione di continuità
Amazon Translate per tradurre i log dell'applicazione e superare le barriere linguistiche
I log dell’applicazione sono un elemento essenziale che fornisce informazioni cruciali sulle modalità di funzionamento di un’applicazione. Questo include informazioni preziose come eventi, errori e interazioni degli utenti che aiuterebbero uno sviluppatore di applicazioni o un ingegnere di supporto operativo a debuggare e fornire supporto. Tuttavia, quando questi log sono presentati in lingue diverse dall’inglese, 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 prontamente i problemi.
In questo post, esploreremo una soluzione su come superare le barriere linguistiche utilizzando Amazon Translate, un servizio di traduzione di testo completamente gestito basato su reti neurali per tradurre testi da e verso l’inglese in una vasta gamma di lingue supportate. La soluzione completerà i tuoi flussi di lavoro di logging esistenti traducendo automaticamente tutti i log delle tue applicazioni in Amazon CloudWatch in tempo reale, il che può alleviare le sfide poste dai log delle applicazioni non in inglese.
Panoramica della soluzione
Questa soluzione illustra come puoi utilizzare tre servizi chiave per automatizzare la traduzione dei log delle tue applicazioni in modo basato sugli eventi:
- CloudWatch Logs viene utilizzato per monitorare, archiviare e accedere ai file di log generati da varie fonti come servizi AWS e le tue applicazioni
- Amazon Translate viene utilizzato per eseguire la traduzione di testi da e verso l’inglese
- AWS Lambda è un servizio di calcolo che consente di eseguire codici per recuperare i log delle applicazioni e tradurli tramite l’uso del SDK di Amazon Translate
Il diagramma seguente illustra l’architettura della soluzione.
- Amazon SageMaker semplifica la configurazione di Amazon SageMaker Studio per gli utenti singoli
- Un potenziamento quantistico cuQuantum con PennyLane permette alle simulazioni di viaggiare sui supercomputer
- Mobilità Amplificata Il pavimento della mostra IAA si è energizzato grazie all’aumento delle rivelazioni di VE e all’IA generativa
Il flusso di lavoro consiste nei seguenti passaggi:
- 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 in CloudWatch Logs tramite l’agente CloudWatch Logs.
- Ogni voce di log scritta in CloudWatch Logs attiva la funzione Lambda sottoscritta al gruppo di log di CloudWatch.
- La funzione elabora i contenuti della voce di log e utilizza il metodo translate_text del SDK di Amazon Translate per tradurre il contenuto del log.
- Il contenuto del log tradotto viene restituito alla funzione.
- La funzione scrive il contenuto del log tradotto in CloudWatch Logs in un diverso gruppo di log.
L’intero processo avviene automaticamente in tempo reale e i tuoi sviluppatori saranno in grado di accedere ai log delle applicazioni tradotti dai gruppi di log di CloudWatch senza alcuna modifica nel modo in cui la tua applicazione esistente scrive i log in CloudWatch.
Prerequisiti
Per seguire le istruzioni di questa soluzione, è necessario disporre di un account AWS con un utente AWS Identity and Access Management (IAM) che abbia autorizzazioni per AWS CloudFormation, Amazon Translate, CloudWatch, Lambda e IAM.
Deploy della soluzione
Per iniziare, avvia il seguente template di CloudFormation per creare una funzione Lambda, due gruppi di log di CloudWatch e un ruolo IAM. Procedi con il deploy utilizzando le impostazioni predefinite. Questo template richiede circa 1 minuto per essere completato.
Dopo che lo stack è stato creato con successo, puoi esaminare la funzione Lambda navigando nella console di Lambda e individuando la funzione translate-application-logs
.
Puoi osservare che è stato aggiunto un trigger di CloudWatch Logs alla funzione.
Puoi visualizzare i dettagli della configurazione del trigger navigando nella scheda Configurazione e selezionando Trigger nel riquadro di navigazione.
Puoi verificare che il trigger sia stato configurato per sottoscriversi agli eventi di log dal gruppo di log /applicationlogs
. Qui verranno scritti i tuoi log delle applicazioni non in inglese.
Successivamente, seleziona Variabili di ambiente nel riquadro di navigazione.
Sono fornite due variabili di ambiente qui:
- source_language – La lingua originale in cui si trova il registro dell’applicazione (ad esempio, ja per il giapponese)
- target_language – 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 di lingua.
Successivamente, passare alla scheda Code e esaminare la logica della funzione:
import json, boto3, gzip, base64, os
translate = boto3.client(service_name='translate', region_name=os.environ['AWS_REGION'], use_ssl=True)
logs = boto3.client('logs')
def lambda_handler(event, context):
# recuperare 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_language']
logStream = json_log['logStream']
# verificare se il gruppo di log esiste, crearlo se non esiste
dlg = logs.describe_log_groups(logGroupNamePrefix=logGroup)
if len(dlg['logGroups']) == 0:
logs.create_log_group(logGroupName=logGroup)
# verificare se lo stream di log esiste, crearlo se non esiste
dls = logs.describe_log_streams(logGroupName=logGroup, logStreamNamePrefix=logStream)
if len(dls['logStreams']) == 0:
logs.create_log_stream(logGroupName=logGroup, logStreamName=logStream)
# tradurre i messaggi degli eventi di log dalla lingua di origine alla lingua di destinazione
for logevent in json_log['logEvents']:
logevent['message'] = translate.translate_text(Text=logevent['message'], SourceLanguageCode=os.environ['source_language'], TargetLanguageCode=os.environ['target_language']).get('TranslatedText')
del logevent['id']
# scrivere nuovamente gli eventi di log tradotti in un diverso gruppo di log in CloudWatch
logs.put_log_events(
logGroupName = logGroup,
logStreamName = logStream,
logEvents = json_log['logEvents']
)
# restituire il successo
return {
'statusCode': 200,
'body': 'Traduzione riuscita!'
}
Testare la soluzione
Infine, per testare la soluzione, è possibile creare un messaggio di log tramite la console di CloudWatch e scegliere il gruppo di log e lo stream di log creati.
Dopo aver creato i messaggi di log, sarà possibile vederli tradotti immediatamente.
Pulizia
Per eliminare le risorse create in questo post, eliminare lo stack di CloudFormation tramite la console di CloudFormation.
Conclusioni
Questo post ha affrontato la sfida che i developer e i team di supporto devono affrontare quando i log dell’applicazione sono presentati in lingue diverse dall’inglese, rendendo loro difficile il debug e la fornitura di supporto. La soluzione proposta utilizza Amazon Translate per tradurre automaticamente i log non in inglese in CloudWatch e fornisce una guida passo-passo sulla distribuzione della soluzione nel proprio ambiente. Attraverso questa implementazione, i developer possono ora superare senza problemi la barriera linguistica, consentendo loro di affrontare rapidamente ed efficacemente i problemi.
Provate questa implementazione e fateci sapere le vostre opinioni nei commenti.