Home Машинное обучение Устранение языковых барьеров: переводите журналы приложений с помощью Amazon Translate для бесперебойной поддержки | DeepTech

Устранение языковых барьеров: переводите журналы приложений с помощью Amazon Translate для бесперебойной поддержки | DeepTech

0
Устранение языковых барьеров: переводите журналы приложений с помощью Amazon Translate для бесперебойной поддержки
 | DeepTech

Журналы приложений — это важная часть информации, которая дает важную информацию о внутренней работе приложения. Сюда входит ценная информация, такая как события, ошибки и взаимодействия с пользователем, которая поможет разработчику приложения или инженеру поддержки операций в отладке и обеспечении поддержки. Однако, когда эти журналы представлены на языках, отличных от английского, это создает серьезные препятствия для разработчиков, которые не могут прочитать содержимое, и затрудняет способность группы поддержки оперативно выявлять и устранять проблемы.

В этом посте мы исследуем решение, позволяющее преодолеть языковые барьеры с помощью Amazon Translate, полностью управляемого сервиса нейронного машинного перевода для перевода текста на английский и обратно на широкий спектр поддерживаемых языков. Это решение дополнит ваши существующие рабочие процессы ведения журналов, автоматически переводя все журналы ваших приложений в Amazon CloudWatch в режиме реального времени, что может облегчить проблемы, связанные с журналами приложений, написанными не на английском языке.

Обзор решения

Это решение показывает, как можно использовать три ключевых сервиса для автоматизации перевода журналов приложений на основе событий:

  • CloudWatch Logs используется для мониторинга, хранения и доступа к файлам журналов, созданным из различных источников, таких как сервисы AWS и ваши приложения.
  • Amazon Translate используется для перевода текста на английский язык и с него.
  • AWS Lambda — это вычислительный сервис, который позволяет запускать коды для получения журналов приложений и переводить их с помощью Amazon Translate SDK.

На следующей диаграмме показана архитектура решения.

Рабочий процесс состоит из следующих шагов:

  1. Пользовательское или стороннее приложение размещается на экземпляре Amazon Elastic Compute Cloud (Amazon EC2), а созданные журналы приложения загружаются в CloudWatch Logs через агент CloudWatch Logs.
  2. Каждая запись журнала, записанная в журналы CloudWatch, запускает функцию Lambda, подписанную на группу журналов CloudWatch.
  3. Функция обрабатывает содержимое записи журнала и использует Amazon Translate SDK. перевести_текст для перевода содержимого журнала.
  4. Переведенное содержимое журнала возвращается в функцию.
  5. Функция записывает переведенное содержимое журнала обратно в CloudWatch Logs в другую группу журналов.

Весь процесс происходит автоматически в режиме реального времени, и ваши разработчики смогут получить доступ к переведенным журналам приложений из групп журналов CloudWatch без каких-либо изменений в том, как ваше существующее приложение записывает журналы в CloudWatch.

Предварительные условия

Чтобы следовать инструкциям этого решения, вам понадобится учетная запись AWS с пользователем AWS Identity and Access Management (IAM), у которого есть разрешения на использование AWS CloudFormation, Amazon Translate, CloudWatch, Lambda и IAM.

Развертывание решения

Для начала запустите следующий шаблон CloudFormation, чтобы создать функцию Lambda, две группы журналов CloudWatch и роль IAM. Перейдите к развертыванию с настройками по умолчанию. Создание этого шаблона занимает около 1 минуты.

После успешного создания стека вы можете просмотреть функцию Lambda, перейдя в консоль Lambda и найдя функцию translate-application-logs.

Вы можете заметить, что к функции добавлен триггер CloudWatch Logs.

Вы можете просмотреть подробную информацию о конфигурации триггера, перейдя к Конфигурация вкладка и выбор Триггеры в панели навигации.

Вы можете подтвердить, что триггер настроен на подписку на события журнала из группы журналов. /applicationlogs. Сюда будут записываться журналы приложений, написанных не на английском языке.

Далее выберите Переменные среды в панели навигации.

Здесь представлены две переменные среды:

  • исходный язык – Исходный язык журнала приложения (например, да для японцев)
  • язык перевода – Целевой язык для перевода журнала приложения (например, ru для английского)

Список поддерживаемых языков см. в разделе Поддерживаемые языки и коды языков.

Далее перейдите в Код и просмотрите логику функции:

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):
    # retrieve log messages
    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')
    
    # check  if log group exists, create if not    
    dlg = logs.describe_log_groups(logGroupNamePrefix=logGroup)
    if len(dlg('logGroups')) == 0:
        logs.create_log_group(logGroupName=logGroup)

    # check if log stream exists, create if not    
    dls = logs.describe_log_streams(logGroupName=logGroup, logStreamNamePrefix=logStream)
    if len(dls('logStreams')) == 0:
        logs.create_log_stream(logGroupName=logGroup, logStreamName=logStream)

    # translate log event messages from source language to target language
    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')

    # write translated log events back to a different log group in CloudWatch
    logs.put_log_events(
        logGroupName = logGroup,
        logStreamName = logStream,
        logEvents = json_log('logEvents')
    )
    
    # return success
    return {
        'statusCode': 200,
        'body': 'Translation success!'
    }

Проверьте решение

Наконец, чтобы протестировать решение, вы можете создать сообщение журнала через консоль CloudWatch и выбрать созданную группу журналов и поток журналов.

После создания сообщений журнала вы сможете сразу увидеть их переведенными.

Очистить

Чтобы очистить ресурсы, созданные в этом посте, удалите стек CloudFormation через консоль CloudFormation.

Заключение

В этом посте рассматривается проблема, с которой сталкиваются разработчики и группы поддержки, когда журналы приложений представлены на языках, отличных от английского, что затрудняет отладку и предоставление поддержки. Предлагаемое решение использует Amazon Translate для автоматического перевода журналов не на английском языке в CloudWatch и предоставляет пошаговые инструкции по развертыванию решения в вашей среде. Благодаря этой реализации разработчики теперь могут беспрепятственно преодолевать языковой барьер, давая им возможность быстро и эффективно решать проблемы.

Попробуйте эту реализацию и сообщите нам свои мысли в комментариях.


Об авторе

Ксан Хуанг — старший архитектор решений в AWS, живет в Сингапуре. Он сотрудничает с крупными финансовыми учреждениями над проектированием и созданием безопасных, масштабируемых и высокодоступных облачных решений. Вне работы Ксан проводит большую часть своего свободного времени со своей семьей и документирует путь взросления своей дочери.

LEAVE A REPLY

Please enter your comment!
Please enter your name here