Esta página descreve o processo de extração de métricas de cargas de trabalho em ambientes isolados do Google Distributed Cloud (GDC) para facilitar o monitoramento e a observabilidade de dados.
É possível extrair e coletar métricas que seus componentes produzem ao longo do tempo. A plataforma de monitoramento oferece uma API personalizada para extrair métricas de cargas de trabalho em execução no namespace do projeto do Distributed Cloud. Para extrair métricas,
implante um recurso personalizado MonitoringTarget
no namespace do projeto no
servidor da API Management. Após a implantação desse recurso, a plataforma de monitoramento inicia a coleta de dados.
O recurso personalizado MonitoringTarget
direciona o pipeline de monitoramento para extrair
pods designados no seu projeto. Esses pods precisam expor um endpoint HTTP
que forneça métricas em um formato de exposição do Prometheus, como o OpenMetrics.
As métricas extraídas são mostradas na instância do Grafana do projeto, fornecendo insights sobre o estado operacional do aplicativo.
Para configurar o recurso personalizado MonitoringTarget
, especifique os pods
no namespace do projeto para coleta de métricas. É possível personalizar várias configurações, incluindo a frequência de raspagem, o endpoint de métricas dos pods, rótulos e anotações.
Antes de começar
Para receber as permissões necessárias para gerenciar recursos personalizados do MonitoringTarget
, peça ao administrador do IAM da organização ou do projeto para conceder a você uma das funções associadas do MonitoringTarget
.
Dependendo do nível de acesso e das permissões necessárias, você pode receber papéis de criador, editor ou leitor para esse recurso em uma organização ou um projeto. Para mais informações, consulte Preparar permissões do IAM.
Configurar o recurso personalizado MonitoringTarget
O recurso personalizado MonitoringTarget
informa à plataforma de monitoramento onde coletar métricas. É possível especificar os pods para os quais você está coletando métricas, o endpoint de métricas desses pods, a frequência de coleta e outras configurações.
Esse recurso define as seguintes configurações:
- Destinos: os pods e os endpoints no seu projeto que expõem métricas.
- Intervalo de extração: a frequência com que você quer extrair métricas dos endpoints selecionados.
- Personalizações de marcador: regras opcionais com modificações de marcador para métricas.
Escolha um dos seguintes métodos para especificar endpoints de métricas no recurso personalizado
MonitoringTarget
:
- Endpoints estáticos: você declara explicitamente o endpoint (porta, caminho, esquema) na configuração
MonitoringTarget
. Anotações: as informações do endpoint de métricas do pod são recuperadas de anotações no arquivo
Deployment
do contêiner. Esse método oferece mais flexibilidade se cada pod tiver endpoints diferentes.
Endpoints estáticos
Siga estas etapas para expor métricas dos pods selecionados em um endpoint definido estaticamente:
Determine o projeto do Distributed Cloud de que você quer coletar métricas para monitoramento.
Na especificação do pod, declare a porta que atende às métricas no campo
containerPort
. O exemplo a seguir mostra como declarar a porta2112
na especificação do pod:# ... spec: template: spec: containers: - name: your-container-name ports: - containerPort: 2112 # ...
Na configuração
MonitoringTarget
, especifique os detalhes do endpoint (porta, caminho, esquema) na seçãopodMetricsEndpoints
para corresponder à porta exposta na especificação do pod.O arquivo YAML a seguir mostra um exemplo de configuração de
MonitoringTarget
em que cada pod selecionado precisa expor métricas no mesmo endpoint,http://your-container-name:2112/metrics
:apiVersion: monitoring.gdc.goog/v1 kind: MonitoringTarget metadata: # Choose the same namespace as the workload pods. namespace: your-project-namespace name: your-container-name spec: selector: # Choose pod labels to consider for this job. # Optional: Map of key-value pairs. # Default: No filtering by label. # To consider every pod in the project namespace, remove selector fields. matchLabels: app: your-app-label podMetricsEndpoints: port: value: 2112 path: # Choose any value for your endpoint. # The /metrics value is an example. value: /metrics scheme: value: http
Aplique a configuração
MonitoringTarget
ao servidor da API Management no mesmo namespace dos pods de destino:kubectl --kubeconfig KUBECONFIG_PATH apply -f MONITORING_TARGET_NAME.yaml
Substitua:
KUBECONFIG_PATH
: o caminho para o arquivo kubeconfig do servidor da API Management.MONITORING_TARGET_NAME
: o nome do arquivo de definição deMonitoringTarget
.
A plataforma de monitoramento começa a coletar métricas.
Anotações
Siga estas etapas para expor métricas usando anotações se cada pod tiver endpoints diferentes:
Determine o projeto do Distributed Cloud de que você quer coletar métricas para monitoramento.
Adicione as seguintes anotações à seção
annotations
do arquivoDeployment
do contêiner:prometheus.io/path
prometheus.io/port
prometheus.io/scheme
O exemplo a seguir mostra anotações para métricas na porta
2112
:apiVersion: apps/v1 kind: Deployment metadata: name: your-container-name namespace: your-project-namespace labels: app: your-app-label annotations: # These annotations are not required. They demonstrate selecting # pod metric endpoints through annotations. prometheus.io/path: /metrics prometheus.io/port: \"2112\" prometheus.io/scheme: http
Na configuração
MonitoringTarget
, especifique as anotações que você adicionou ao arquivoDeployment
do contêiner na seçãopodMetricsEndpoints
. Essa especificação informa ao recurso personalizado para coletar as informações do endpoint de métricas das anotações nos pods selecionados.O arquivo YAML a seguir mostra um exemplo de configuração do
MonitoringTarget
usando anotações:apiVersion: monitoring.gdc.goog/v1 kind: MonitoringTarget metadata: metadata: # Choose the same namespace as the workload pods. namespace: your-project-namespace name: your-container-name spec: selector: matchLabels: app: your-app-label podMetricsEndpoints: port: annotation: prometheus.io/port path: annotation: prometheus.io/path scheme: annotation: prometheus.io/scheme
Aplique a configuração
MonitoringTarget
ao servidor da API Management no mesmo namespace dos pods de destino:kubectl --kubeconfig KUBECONFIG_PATH apply -f MONITORING_TARGET_NAME.yaml
Substitua:
KUBECONFIG_PATH
: o caminho para o arquivo kubeconfig do servidor da API Management.MONITORING_TARGET_NAME
: o nome do arquivo de definição deMonitoringTarget
.
A plataforma de monitoramento começa a coletar métricas.
Consulte a especificação completa de MonitoringTarget
e a documentação de referência da API para mais campos e opções.
Especificação completa de MonitoringTarget
O arquivo YAML a seguir mostra um exemplo da especificação completa do recurso personalizado MonitoringTarget
. Para mais informações e uma descrição completa dos campos, consulte a documentação de referência da API.
apiVersion: monitoring.gdc.goog/v1
kind: MonitoringTarget
metadata:
# Choose the same namespace as the workload pods.
namespace: PROJECT_NAMESPACE
name: MONITORING_TARGET_NAME
spec:
# Choose matching pattern that identifies pods for this job.
# Optional
# Relationship between different selectors: AND
selector:
# Choose clusters to consider for this job.
# Optional: List
# Default: All clusters applicable to this project.
# Relationship between different list elements: OR
matchClusters:
- string
# Choose pod labels to consider for this job.
# Optional: Map of key-value pairs.
# Default: No filtering by label.
# Relationship between different pairs: AND
matchLabels:
key1: value1
# Choose annotations to consider for this job.
# Optional: Map of key-value pairs
# Default: No filtering by annotation
# Relationship between different pairs: AND
matchAnnotations:
key1: value1
# Configure the endpoint exposed for this job.
podMetricsEndpoints:
# Choose a port either through static value or annotation.
# Optional
# Annotation takes priority.
# Default: static port 80
port:
value: integer
annotation: string
# Choose a path either through static value or annotation.
# Optional
# Annotation takes priority
# Default: static path /metrics
path:
value: string
annotation: string
# Choose a scheme either through a static value (http or https) or annotation.
# Optional
# Annotation takes priority
# Default: static scheme http
scheme:
value: string
annotation: string
# Choose the frequency to scrape the metrics endpoint defined in podMetricsEndpoints
# Optional
# Default: 60s
scrapeInterval: string
# Dynamically rewrite the label set of a target before it gets scraped.
# https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
# Optional
# Default: No filtering by label
metricsRelabelings:
- sourceLabels:
- string
separator: string
regex: string
action: string
targetLabel: string
replacement: string
Substitua:
PROJECT_NAMESPACE
: o namespace do projeto.MONITORING_TARGET_NAME
: o nome do arquivo de definição deMonitoringTarget
.