Modifique a configuração de monitoramento do Prometheus para coletar métricas de um nó virtual específico.
Visão geral
Na arquitetura de nós virtuais, vários nós virtuais no mesmo cluster compartilham o mesmo IP de nó. Como resultado, a coleta de dados de um único nó virtual retorna os dados de todos os nós virtuais. Como o Prometheus geralmente coleta as métricas de todos os nós por meio do kubelet Service, ocorrem métricas duplicadas. Para resolver esse problema, o Container Service for Kubernetes (ACK) permite coletar métricas de um nó virtual específico. Ele mantém o endpoint de coleta original <nodeIP>:10250/metrics/cadvisor e adiciona um endpoint que especifica o nome do nó virtual <nodeIP>:10250/metrics/cadvisor?nodeName=<nodeName>. Após especificar o nome de um nó virtual, o nó virtual retorna métricas apenas para os pods que ele gerencia.
Pré-requisitos
O add-on ACK Virtual Node está instalado na versão v2.11.0 ou posterior. Para mais informações, consulte {{XREF_0}}.
Modificar a configuração de monitoramento do Prometheus
Você pode modificar a configuração de monitoramento do Prometheus para coletar métricas de um nó virtual específico. O Container Service for Kubernetes oferece suporte a três cenários de configuração: o Alibaba Cloud Managed Service for Prometheus, a solução Prometheus Operator da edição comunitária (ou o {{XREF_1}} do App Marketplace do Container Service for Kubernetes) e o Prometheus open source.
Alibaba Cloud Managed Service for Prometheus
Há suporte por padrão. Nenhuma ação adicional é necessária.
Community edition Prometheus Operator
Se você usar a solução Prometheus Operator da edição comunitária ou o {{XREF_2}} do App Marketplace do Container Service for Kubernetes, adicione a seguinte configuração de CR do ServiceMonitor.
scrape_configs:
...Other job configurations.
- job_name: monitoring/ack-prometheus-operator-kubelet/0
honor_labels: true
honor_timestamps: true
...
relabel_configs:
...
# Remove the collection of the /metrics/cadvisor endpoint for virtual nodes.
- source_labels: [__meta_kubernetes_endpoint_address_target_name]
separator: ;
regex: (^virtual-kubelet.*)
replacement: $1
action: drop
Se o seu cluster já usa o service discovery baseado no kubelet Service para coletar métricas do cAdvisor, adicione a seguinte configuração para remover a coleta de <Virtual Node IP>:10250/metrics/cadvisor e evitar a coleta de dados duplicados.
scrape_configs:
...Other job configurations.
- job_name: monitoring/ack-prometheus-operator-kubelet/0
honor_labels: true
honor_timestamps: true
...
relabel_configs:
...
# Remove the collection of the /metrics/cadvisor endpoint for virtual nodes.
- source_labels: [__meta_kubernetes_endpoint_address_target_name]
separator: ;
regex: (^virtual-kubelet.*)
replacement: $1
action: drop
Open source Prometheus
No Prometheus open source, localize o arquivo de configuração do Prometheus, que geralmente está em /etc/prometheus/prometheus.yml ou no seu diretório de configuração personalizado, e adicione a seguinte configuração de scrape.
scrape_configs:
...Other job configurations.
- job_name: monitoring/ack-prometheus-operator-kubelet/0
honor_labels: true
honor_timestamps: true
...
relabel_configs:
...
# Remove the collection of the /metrics/cadvisor endpoint for virtual nodes.
- source_labels: [__meta_kubernetes_endpoint_address_target_name]
separator: ;
regex: (^virtual-kubelet.*)
replacement: $1
action: drop
Se o seu cluster já usa o service discovery baseado no kubelet Service para coletar métricas do cAdvisor, adicione a seguinte configuração para remover a coleta de <Virtual Node IP>:10250/metrics/cadvisor e evitar a coleta de dados duplicados.
scrape_configs:
...Other job configurations.
- job_name: monitoring/ack-prometheus-operator-kubelet/0
honor_labels: true
honor_timestamps: true
...
relabel_configs:
...
# Remove the collection of the /metrics/cadvisor endpoint for virtual nodes.
- source_labels: [__meta_kubernetes_endpoint_address_target_name]
separator: ;
regex: (^virtual-kubelet.*)
replacement: $1
action: drop
scrape_configs:
...Other job configurations.
- job_name: monitoring/ack-prometheus-operator-kubelet/0
honor_labels: true
honor_timestamps: true
...
relabel_configs:
...
# Remove the collection of the /metrics/cadvisor endpoint for virtual nodes.
- source_labels: [__meta_kubernetes_endpoint_address_target_name]
separator: ;
regex: (^virtual-kubelet.*)
replacement: $1
action: drop