Недавно Google Cloud Platform Blog опубликовал интересную статью о Советы а также Трюки для использования нового поддержки Regex в облачной регистрации Это мощная особенность, но в некотором роде многие разработчики даже не знакомы с ведомством!
Регистрация и мониторинг являются важной частью вашего проекта, вы должны знать, что происходит в вашем приложении, и я не просто говорю о Печать () или console.log () или system.out.println () или и т. д.
Богатый журнал Содержание (Очевидно, что анонимация и после законов о защите данных) поможет нам понять поведение наших приложений и улучшить их.
Итак, этот пост о том, как создавать и управлять нашими журналами на облаке GCP Регистрация простым способом для разработки.
Архитектура
Это архитектура, которая показывает базовый трубопровод для наших журналов.
Описание архитектуры:
Облако беги : Пример – докер и Облако беги это самый простой способ развертывать контейнер на GCP.
Облачная регистрация Вот где мы собираемся управлять нашими журналами.
Журналы экспорта (мойка) : Одним из преимуществ использования облачной регистрации является возможность экспортировать наши журналы к:
- Паб/подразделение В принципе, мы можем экспортировать наши журналы, куда бы мы ни хотели, просто опубликуйте журнал, и мы сделаем.
- Бить : Logs также могут быть проанализированы, чтобы получить представление о наших приложениях и создавать ML моделей с Бигкий МЛ
- Облачное хранение : Сохраните наши журналы дешевым способом, это может быть хорошим вариантом для аудита систем.
Создавать метрики : Мы можем создать приборную панель и оповещения на основе журналов. Например: если мы получим слишком много 403 ошибок, мы можем создать предупреждение, чтобы отправить нам электронное письмо или уведомление.
Для этого поста мы только будем сосредоточиться на Облачная регистрация Для других ресурсов я оставлю ссылки на документацию в конце поста или создаете больше сообщений об этом, если хотите:)
Ресурсы и разрешения GCP
Клиент для ведения журнала Cloud можно использовать в любом месте (например, на месте) и наилучшим способом представлять собой использование Docker. Тем не менее, нам нужно включить API Cloud Receging API и создать учетную запись услуг, чтобы предоставить разрешение на логиралителю на наше приложение.
# Get project information export PROJECT_ID=$(gcloud config list \ --format 'value(core.project)') export PROJECT_NUMBER=$(gcloud projects list \ --filter="$PROJECT_ID" \ --format="value(PROJECT_NUMBER)") # Enable services on GCP project gcloud services enable logging.googleapis.com # Creating a Service Account for our API gcloud iam service-accounts create logging-basis-cred \ --description "Service Account for Logging Basis Service" \ --display-name "Logging Basis Service Account" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:logging-basis-cred@$PROJECT_ID.iam.gserviceaccount.com \ --role="roles/logging.logWriter" gcloud iam service-accounts keys create \ --iam-account logging-basis-cred@$PROJECT_ID.iam.gserviceaccount.com logging-basis-cred.json # For CI/CD you can encrypt this service account # using KMS (https://cloud.google.com/security-key-management). # NEVER save a service account on a repository.
Код
Я использую Python в этом примере, но вы можете использовать клиент Что вы предпочитаете, концепции одинаковы.
main.py
from flask import Flask from google.cloud import logging from google.cloud.logging.resource import Resource import random import os app = Flask(__name__) # resource_type: "cloud_run_revision" (from Dockerfile), # GCP Resource that we use. # If not set this log can be found in # the Cloud Logging console under 'Custom Logs'. # or using the less efficient global restriction resource_type = os.environ['RESOURCE_TYPE'] # service_name: "logging-basis" (from Dockerfile), # service_name is a Cloud Run property service_name = os.environ['SERVICE'] # region: "us-east1" (from Dockerfile) region = os.environ['REGION'] # Log Name log_name = 'choose_side' '''Stackdriver Logging config (This could be a Class)''' logging_client = logging.Client() logger = logging_client.logger(log_name) resource = Resource( type=resource_type, labels={ "service_name": service_name, "location": region }) @app.route("/", methods=['GET']) def choose_side(): """ This method chooses a random side and return a simple message. :return: String message to the client """ # Getting the side side_random = random.randrange(2) side = 'Dark side' if side_random == 0 else 'Light side' struct = { 'sideRandom': side_random, 'side': side, } # Sending log to Stackdriver Logging logger.log_struct(struct, resource=resource, severity='INFO') # Response return "You're the {} [{}]".format(side, side_random)
DockerFile, требования и другие файлы находятся на репозитории GitHUB этого поста: https://github.com/alvardev/stackdriver-loggin-basis.
Построить и развернуть
Эта часть не требуется облачной регистрацией, я просто хотел показать вам, насколько легко развернуть контейнер на GCP:)
gcloud auth configure-docker docker build -t gcr.io/$PROJECT_ID/logging-basis:v0.1 . docker push gcr.io/$PROJECT_ID/logging-basis:v0.1 gcloud run deploy logging-basis \ --image gcr.io/$PROJECT_ID/logging-basis:v0.1 \ --region us-east1 \ --platform managed \ --allow-unauthenticated # Expected response: # Service [logging-basis] revision [logging-basis-00001-tij] # has been deployed and is serving 100 percent of traffic at # https://logging-basis-[your-cloud-run-hash]-ue.a.run.app
Тестовое задание
Код работает
логирование
Вот почему мы сделали все эту работу, теперь у нас есть возможность запрашивать наши журналы и экспортировать их, если это необходимо.
На GCP Console , Logs Viewer Раздел, мы можем запустить следующий запрос:
И это результат …
Есть наши журналы! В этом примере журнал является jsonpayload, но они могут быть просто строкой, если вы предпочитаете.
Теперь мы можем запрашивать наши журналы, пост, который вдохновил этот учебник, является хорошим примером. Как я уже говорил, можно экспортировать эти журналы на разные ресурсы, я думаю, что мониторинг является обязательным, потому что установка предупреждения о нежелательных событиях поможет нам многое.
Надеюсь, поможет.
Некоторые ссылки для дополнения этого поста:
- https://cloud.google.com/logging/docs/export
- https://cloud.google.com/logging/docs/view/query-library
- https://cloud.google.com/logging/docs/view/logging-query-language
- https://cloud.google.com/logging/docs/quickstart-python
- https://cloud.google.com/logging/docs/setup/python
- https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/logging/cloud-client/snippets.py
Оригинал: “https://dev.to/alvardev/gcp-cloud-logging-the-basis-45eh”