Рубрики
Без рубрики

GCP облачная регистрация: Основа

Недавно блог Google Cloud Platform разместил интересную статью о советах и трюках для использования … Помечено GoogleCloud, архитектуру, DevOps, Python.

Недавно 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://dev.to/alvardev/gcp-cloud-logging-the-basis-45eh”