Métricas de rótulo

Antes de começar

Para receber as permissões necessárias para rotular métricas ou visualizar rótulos de métricas, peça ao administrador do IAM do projeto para conceder a você um dos seguintes papéis no namespace do projeto:

  • Editor de destino do Monitoring: edita ou modifica recursos personalizados MonitoringTarget. Solicite o papel de editor de destino do Monitoring (monitoringtarget-editor).
  • Leitor de destino do Monitoring: visualiza recursos personalizados MonitoringTarget. Solicite o papel Leitor de destino do Monitoring (monitoringtarget-viewer).

Com os rótulos, é possível diferenciar as características de uma métrica. Além de coletar métricas, o recurso personalizado MonitoringTarget permite rotular métricas para recursos opcionais, como:

Para mais informações sobre a nova rotulagem de métricas, consulte https://grafana.com/blog/2022/03/21/how-relabeling-in-prometheus-works/

Enviar métricas para outro projeto

Os autores de contêineres podem escrever no código que o sistema precisa enviar métricas específicas para outro projeto para monitoramento do sistema, mesmo que o projeto corresponda a uma persona diferente do GDC. Para enviar métricas a um projeto específico, adicione o rótulo _gdch_project a uma métrica no seu código. Defina o valor como o nome do projeto que você quer que seja proprietário dessa métrica de observabilidade específica. Por exemplo, "_gdch_project": "another-project-name".

Como alternativa, use o recurso personalizado MonitoringTarget para enviar todos os dados de métricas coletados a outro projeto para observabilidade de dados. Para isso, defina o rótulo _gdch_project como um rótulo de destino no campo metricsRelabelings e estabeleça um valor de substituição.

O exemplo de código a seguir mostra como substituir o valor do rótulo _gdch_project por another-project-name no recurso personalizado MonitoringTarget:

apiVersion: monitoring.gdc.goog/v1alpha1
kind: MonitoringTarget
metadata:
  # Choose the same namespace as the workload pods
  namespace: PROJECT_NAMESPACE
  name: string
spec:
  ...
  podMetricsEndpoints:
    ...
    metricsRelabelings:
      ...
      - action: replace
        targetLabel: _gdch_project
        replacement: another-project-name

Substitua PROJECT_NAMESPACE pelo namespace do projeto.

Adicionar novos rótulos às métricas

Os rótulos são úteis para a observabilidade de dados e o monitoramento do sistema porque permitem identificar diferentes características de uma métrica. É possível adicionar novos rótulos às métricas que os contêineres extraídos não expõem inicialmente. No recurso personalizado MonitoringTarget, defina o novo rótulo como uma meta e estabeleça uma substituição para servir como o valor do rótulo. O sistema adiciona o novo par de chave-valor a todas as métricas que o recurso personalizado coleta para fins de observabilidade de dados.

O exemplo de código a seguir mostra como adicionar o rótulo my_new_label e definir o valor dele como my_label_value no recurso personalizado MonitoringTarget:

apiVersion: monitoring.gdc.goog/v1alpha1
kind: MonitoringTarget
metadata:
  # Choose the same namespace as the workload pods
  namespace: PROJECT_NAMESPACE
  name: string
spec:
  ...
  podMetricsEndpoints:
    ...
    metricsRelabelings:
      ...
      - action: replace
        targetLabel: my_new_label
        replacement: my_label_value

Substitua PROJECT_NAMESPACE pelo namespace do projeto.

Renomear uma métrica

É possível renomear completamente uma métrica produzida por um contêiner usando o CR MonitoringTarget. Defina o nome original da métrica e a substituição dela no campo metricsRelabelings. O recurso personalizado usa o nome original da métrica como uma expressão regular e o substitui pelo novo nome adicionado.

O exemplo de código a seguir mostra como substituir o nome da métrica cpu_usage por cpu_usage_new_name na resposta automática MonitoringTarget:

apiVersion: monitoring.gdc.goog/v1alpha1
kind: MonitoringTarget
metadata:
  # Choose the same namespace as the workload pods
  namespace: PROJECT_NAMESPACE
  name: string
spec:
  ...
  podMetricsEndpoints:
    ...
    metricsRelabelings:
      ...
      - action: replace
        regex: cpu_usage
        replacement: cpu_usage_new_name
        sourceLabels: [__name__]
        targetLabel: __name__

Substitua PROJECT_NAMESPACE pelo namespace do projeto.