Изучение журналов App Engine: комплексное руководство по анализу и использованию журналов приложений

В современной разработке программного обеспечения ведение журналов играет решающую роль в мониторинге и устранении неполадок приложений. Google Cloud Platform (GCP) предлагает надежное решение для ведения журналов под названием App Engine Logs, которое позволяет разработчикам собирать и анализировать журналы, созданные их приложениями, работающими в Google App Engine. В этой статье мы рассмотрим различные методы и приемы работы с журналами App Engine, сопровождаемые примерами кода.

  1. Использование средства просмотра журналов.
    Просмотр журналов — это веб-инструмент, предоставляемый GCP, который позволяет просматривать, искать и фильтровать журналы приложений App Engine. Он предоставляет удобный интерфейс для просмотра журналов и получения информации о поведении вашего приложения. Вот пример использования средства просмотра журналов:
from google.cloud import logging
def view_logs(project_id, filter_str):
    client = logging.Client(project=project_id)
    logger = client.logger("appengine.googleapis.com%2Frequest_log")
    entries = logger.list_entries(filter_=filter_str)

    for entry in entries:
        print(entry.payload)
  1. Экспорт журналов в облачное хранилище.
    Журналы App Engine можно экспортировать в облачное хранилище для долгосрочного хранения, резервного копирования или дальнейшего анализа. Это позволяет вам сохранять журналы в целях обеспечения соответствия или выполнять расширенный анализ журналов с помощью таких инструментов, как BigQuery. Вот пример экспорта журналов в Cloud Storage:
from google.cloud import logging_v2
def export_logs(project_id, bucket_name, filter_str):
    client = logging_v2.LoggingServiceV2Client()
    parent = client.project_path(project_id)
    sink_name = f"projects/{project_id}/sinks/{bucket_name}"

    sink = {
        "name": sink_name,
        "destination": f"storage.googleapis.com/{bucket_name}",
        "filter": filter_str,
        "include_children": True,
    }

    response = client.create_sink(parent, sink)
    print(f"Logs exported to Cloud Storage: {response.name}")
  1. Потоковая передача журналов в Pub/Sub.
    Вы можете осуществлять потоковую передачу журналов App Engine в Pub/Sub, службу обмена сообщениями, предоставляемую GCP, для обработки журналов в режиме реального времени и запуска последующих рабочих процессов или уведомлений. Вот пример потоковой передачи журналов в Pub/Sub:
from google.cloud import logging_v2
def stream_logs_to_pubsub(project_id, topic_name, filter_str):
    client = logging_v2.LoggingServiceV2Client()
    parent = client.project_path(project_id)

    sink = {
        "name": f"projects/{project_id}/sinks/{topic_name}",
        "destination": f"pubsub.googleapis.com/projects/{project_id}/topics/{topic_name}",
        "filter": filter_str,
        "include_children": True,
    }

    response = client.create_sink(parent, sink)
    print(f"Logs streaming to Pub/Sub: {response.name}")
  1. Анализ журналов с помощью BigQuery.
    Экспортируя журналы App Engine в BigQuery, вы можете использовать его мощные возможности запросов для выполнения сложного анализа журналов и получения более глубокого понимания производительности и поведения вашего приложения. Вот пример анализа журналов с помощью BigQuery:
from google.cloud import bigquery
def analyze_logs_with_bigquery(project_id, dataset_id, filter_str):
    client = bigquery.Client(project=project_id)

    query = f"""
        SELECT *
        FROM `{project_id}.{dataset_id}.appengine_googleapis_com_request_log`
        WHERE {filter_str}
        LIMIT 100
    """

    query_job = client.query(query)
    results = query_job.result()

    for row in results:
        print(row)

Журналы App Engine предлагают широкий спектр возможностей для анализа и использования журналов, созданных вашими приложениями. Независимо от того, используете ли вы средство просмотра журналов, экспорт журналов в облачное хранилище, потоковую передачу журналов в Pub/Sub или анализ журналов с помощью BigQuery, теперь у вас есть прочная основа для эффективной работы с журналами App Engine. Используя эти методы, вы можете получить ценную информацию, устранить неполадки и оптимизировать производительность вашего приложения.

Внедрив эти методы, вы сможете использовать возможности журналов App Engine и вывести управление и анализ журналов на новый уровень.