Esta página descreve o processo de extração de métricas de cargas de trabalho em ambientes de dispositivo isolados do Google Distributed Cloud (GDC) para facilitar a monitorização e a observabilidade dos dados.
Pode extrair e recolher métricas que os seus componentes produzem ao longo do tempo. A plataforma de monitorização oferece uma API personalizada para extrair métricas de cargas de trabalho em execução
no espaço de nomes do projeto do dispositivo isolado do GDC. Para extrair métricas,
implemente um recurso personalizado MonitoringTarget
no espaço de nomes do seu projeto no
servidor da API Management. Após a implementação deste recurso, a plataforma de monitorização inicia a recolha de dados.
O recurso personalizado MonitoringTarget
direciona o pipeline de monitorização para extrair dados de pods designados no seu projeto. Estes pods têm de expor um ponto final HTTP que forneça métricas num formato de exposição do Prometheus, como o OpenMetrics.
As métricas extraídas são apresentadas na instância do Grafana do seu projeto,
fornecendo estatísticas sobre o estado operacional da sua aplicação.
Para configurar o recurso personalizado MonitoringTarget
, tem de especificar os pods
no espaço de nomes do projeto para a recolha de métricas. Pode personalizar várias definições, incluindo a frequência de recolha de dados, o ponto final de métricas dos pods, as etiquetas e as anotações.
Antes de começar
Para receber as autorizações necessárias para gerir recursos personalizados, peça ao administrador de IAM da organização ou ao administrador de IAM do projeto que lhe conceda uma das funções associadas.MonitoringTarget
MonitoringTarget
Consoante o nível de acesso e as autorizações de que precisa, pode obter as funções de criador, editor ou leitor para este recurso numa organização ou num projeto. Para mais informações, consulte o artigo Prepare as autorizações de IAM.
Configure o MonitoringTarget
recurso personalizado
O recurso personalizado MonitoringTarget
indica à plataforma de monitorização onde
recolher métricas. Pode especificar os agrupamentos para os quais está a recolher métricas, o ponto final de métricas desses agrupamentos, a frequência de recolha e quaisquer definições adicionais.
Este recurso define as seguintes configurações:
- Alvos: os pods e os respetivos pontos finais no seu projeto que expõem métricas.
- Intervalo de extração: a frequência com que quer extrair métricas dos pontos finais selecionados.
- Personalizações de etiquetas: regras opcionais com modificações de etiquetas para métricas.
Escolha um dos seguintes métodos para especificar pontos finais de métricas no recurso personalizado MonitoringTarget
:
- Pontos finais estáticos: declara explicitamente o ponto final (porta, caminho, esquema) na configuração
MonitoringTarget
. Anotações: as informações do ponto final da métrica do agrupamento são obtidas a partir de anotações no ficheiro
Deployment
do contentor. Este método oferece mais flexibilidade se cada pod tiver pontos finais diferentes.
Endpoints estáticos
Siga estes passos para expor métricas dos seus pods selecionados num ponto final definido estaticamente:
Determine o projeto do dispositivo isolado do GDC a partir do qual quer recolher métricas para monitorização.
Na especificação do agrupamento, declare a porta que publica métricas no campo
containerPort
. O exemplo seguinte mostra como declarar port2112
na especificação do pod:# ... spec: template: spec: containers: - name: your-container-name ports: - containerPort: 2112 # ...
Na configuração do
MonitoringTarget
, especifique os detalhes do ponto final (porta, caminho, esquema) na secçãopodMetricsEndpoints
para corresponder à porta que expôs na especificação do pod.O ficheiro YAML seguinte mostra um exemplo de uma
MonitoringTarget
configuração em que cada pod selecionado tem de expor métricas no mesmo ponto final,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 espaço de nomes que os seus pods de destino:kubectl --kubeconfig KUBECONFIG_PATH apply -f MONITORING_TARGET_NAME.yaml
Substitua o seguinte:
KUBECONFIG_PATH
: o caminho para o ficheiro kubeconfig do servidor da API Management.MONITORING_TARGET_NAME
: o nome do ficheiro de definiçãoMonitoringTarget
.
A plataforma de monitorização começa a recolher métricas.
Notas
Siga estes passos para expor métricas através de anotações se cada agrupamento tiver endpoints diferentes:
Determine o projeto do dispositivo isolado do GDC a partir do qual quer recolher métricas para monitorização.
Adicione as seguintes anotações à secção
annotations
do ficheiroDeployment
do contentor:prometheus.io/path
prometheus.io/port
prometheus.io/scheme
O exemplo seguinte 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 do
MonitoringTarget
, especifique as anotações que adicionou ao ficheiroDeployment
do contentor na secçãopodMetricsEndpoints
. Esta especificação indica ao recurso personalizado que recolha as informações do ponto final de métricas das anotações nos pods selecionados.O ficheiro YAML seguinte mostra um exemplo de uma
MonitoringTarget
configuração com 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 espaço de nomes que os seus pods de destino:kubectl --kubeconfig KUBECONFIG_PATH apply -f MONITORING_TARGET_NAME.yaml
Substitua o seguinte:
KUBECONFIG_PATH
: o caminho para o ficheiro kubeconfig do servidor da API Management.MONITORING_TARGET_NAME
: o nome do ficheiro de definiçãoMonitoringTarget
.
A plataforma de monitorização começa a recolher métricas.
Consulte a especificação MonitoringTarget
completa
e a documentação de referência da API
para ver campos e opções adicionais.
Preencha a especificação de MonitoringTarget
O ficheiro YAML seguinte 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 o seguinte:
PROJECT_NAMESPACE
: o espaço de nomes do seu projeto.MONITORING_TARGET_NAME
: o nome do ficheiro de definiçãoMonitoringTarget
.