Neste tutorial, mostramos como gravar, implantar e chamar um serviço do Cloud Run que informa métricas OTLP personalizadas para o Google Cloud Managed Service para Prometheus usando o OpenTelemetry Collector criado pelo Google como um arquivo secundário. Para informações sobre o coletor criado pelo Google, consulte Visão geral do coletor do OpenTelemetry criado pelo Google.
Se você tiver um serviço do Cloud Run que informe métricas do Prometheus, use o arquivo secundário do Prometheus para o Cloud Run.
Como configurar padrões do gcloud
Para configurar a gcloud com os padrões do serviço do Cloud Run, realize as etapas a seguir:
- Defina seu projeto padrão: - gcloud config set project PROJECT_ID - Substitua PROJECT_ID pelo nome do projeto que você criou para este tutorial. 
- Configure a gcloud para a região escolhida: - gcloud config set run/region REGION - Substitua REGION pela região compatível do Cloud Run. 
Locais do Cloud Run
O Cloud Run é regional, o que significa que a infraestrutura que executa seus serviços do Cloud Run está localizada em uma região específica e é gerenciada pelo Google para estar disponível de maneira redundante em todas as zonas da região.
Atender aos seus requisitos de latência, disponibilidade ou durabilidade são os principais fatores para selecionar a região em que seus serviços do Cloud Run são executados.
Geralmente, é possível selecionar a região mais próxima de seus usuários, mas considere
a localização dos outros Google Cloud
produtos usados pelo serviço do Cloud Run.
O uso de produtos do Google Cloud em vários locais pode afetar a latência e o custo do serviço.
O Cloud Run está disponível nas regiões a seguir:
Sujeitas aos preços do nível 1
- asia-east1(Taiwan)
- asia-northeast1(Tóquio)
- asia-northeast2(Osaka)
- asia-south1(Mumbai, Índia)
- europe-north1(Finlândia)- Baixo CO2 
- europe-north2(Estocolmo)- Baixo CO2 
- europe-southwest1(Madri)- Baixo CO2 
- europe-west1(Bélgica)- Baixo CO2 
- europe-west4(Países Baixos)- Baixo CO2 
- europe-west8(Milão)
- europe-west9(Paris)- Baixo CO2 
- me-west1(Tel Aviv)
- northamerica-south1(México)
- us-central1(Iowa)- Baixo CO2 
- us-east1(Carolina do Sul)
- us-east4(Norte da Virgínia)
- us-east5(Columbus)
- us-south1(Dallas)- Baixo CO2 
- us-west1(Oregon)- Baixo CO2 
Sujeitas aos preços do nível 2
- africa-south1(Johannesburgo)
- asia-east2(Hong Kong)
- asia-northeast3(Seul, Coreia do Sul)
- asia-southeast1(Singapura)
- asia-southeast2(Jacarta)
- asia-south2(Déli, Índia)
- australia-southeast1(Sydney)
- australia-southeast2(Melbourne)
- europe-central2(Varsóvia, Polônia)
- europe-west10(Berlim)
- europe-west12(Turim)
- europe-west2(Londres, Reino Unido)- Baixo CO2 
- europe-west3(Frankfurt, Alemanha)
- europe-west6(Zurique, Suíça)- Baixo CO2 
- me-central1(Doha)
- me-central2(Damã)
- northamerica-northeast1(Montreal)- Baixo CO2 
- northamerica-northeast2(Toronto)- Baixo CO2 
- southamerica-east1(São Paulo, Brasil)- Baixo CO2 
- southamerica-west1(Santiago, Chile)- Baixo CO2 
- us-west2(Los Angeles)
- us-west3(Salt Lake City)
- us-west4(Las Vegas)
Se você já criou um serviço do Cloud Run, é possível visualizar a região no painel do Cloud Run no console doGoogle Cloud .
Como criar um repositório de imagens do Artifact Registry
Crie um repositório do Artifact Registry no Docker para hospedar a imagem de serviço de amostra:
gcloud artifacts repositories create run-otel \
    --repository-format=docker \
    --location=REGION \
    --project=PROJECT_ID
Substitua:
- PROJECT_ID pelo nome do projeto que você criou para este tutorial.
- Substitua REGION REGION pela região compatível do Cloud Run.
Como recuperar o exemplo de código
Para recuperar o exemplo de código para uso, siga estas etapas:
- Clone o repositório do app de amostra na máquina local: - Go- git clone https://github.com/GoogleCloudPlatform/golang-samples.git - Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo. 
- Mude para o diretório que contém o código de amostra do Cloud Run: - Go- cd golang-samples/run/custom-metrics/ 
Como revisar o código
O código deste tutorial consiste nisto:
- Um servidor que processa solicitações de entrada e gera uma métrica chamada sidecar_sample_counter_total.
- Um Dockerfileque define o ambiente operacional do serviço.
A amostra também inclui arquivos no subdiretório collector para criar um coletor personalizado:
- Um arquivo de configuração para o coletor. 
- Um - Dockerfileque agrupa a configuração fornecida em uma imagem do coletor upstream.
Como enviar o código
O código de envio consiste em três etapas: criar uma imagem de contêiner com o Cloud Build, fazer upload da imagem de contêiner no Container Artifact e implantar a imagem de contêiner no Cloud Run.
Para enviar o código, siga estas etapas:
- 
      Crie o contêiner de serviço de amostra e publique no Container Artifact: gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/run-otel/sample-metrics-app Após a conclusão, você verá uma mensagem de "SUCESSO" contendo o ID, a hora da criação e o nome da imagem. A imagem é armazenada no Artifact Registry e poderá ser reutilizada se você quiser. 
- 
      Compile seu contêiner e publique no Container Artifact: gcloud builds submit collector --tag REGION-docker.pkg.dev/PROJECT_ID/run-otel/otel-collector-metrics Após a conclusão, você verá uma mensagem de "SUCESSO" contendo o ID, a hora da criação e o nome da imagem. A imagem é armazenada no Artifact Registry e poderá ser reutilizada se você quiser. 
- 
      Implante sua aplicação: YAML- 
                  Crie um novo arquivo chamado service.yamlcom o seguinte conteúdo:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE-NAME annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: annotations: run.googleapis.com/container-dependencies: "{app:[collector]}" spec: containers: - image: REGION-docker.pkg.dev/PROJECT_ID/run-otel/sample-metrics-app name: app ports: - containerPort: CONTAINER_PORT env: - name: "OTEL_EXPORTER_OTLP_ENDPOINT" value: "http://localhost:4317" - image: REGION-docker.pkg.dev/PROJECT_ID/run-otel/otel-collector-metrics name: collector startupProbe: httpGet: path: / port: 13133
- Substitua:
               - CONTAINER_PORT pela porta que o contêiner de entrada do serviço detecta. Por padrão, ele é 8080.
- SERVICE-NAME por qualquer nome para seu serviço, como custom-metrics-sample-service.
 
- CONTAINER_PORT pela porta que o contêiner de entrada do serviço detecta. Por padrão, ele é 
 
- 
                  
- 
  Crie o serviço com o seguinte comando: gcloud run services replace service.yaml Esse comando retorna um URL de serviço. Use esse URL para testar o aplicativo de amostra em Como testar. 
Testar
Usando o URL do comando gcloud run em Como enviar o código, conecte-se ao serviço para gerar algumas métricas de amostra. É possível executar esse comando várias vezes para gerar dados mais interessantes.
curl -H \ "Authorization: Bearer $(gcloud auth print-identity-token)" \ SERVICE_URL
Substitua SERVICE_URL pelo URL da função.
Em seguida, navegue até o Metrics Explorer na seção do Cloud Monitoring do console do Google Cloud e selecione a métrica sidecar_sample_counter_total.
 
 
Também é possível consultar as métricas com o PromQL. Por exemplo, a consulta abaixo filtrará as métricas com base no ID da instância do Cloud Run:
sidecar_sample_counter_total{instance="INSTANCE_ID"}
Substitua INSTANCE_ID pelo ID de qualquer instância do serviço (disponível nos registros da instância ou no servidor de metadados).
Esta consulta produz um gráfico como este:
