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.