A página descreve como enviar métricas do Config Sync para o Prometheus.
Esta página explica como usar o Prometheus para ver as métricas do Config Sync. Recomendamos que use o Prometheus (esta página) ou o Cloud Monitoring para exportar métricas. Também é possível usar métricas personalizadas.
O Config Sync recolhe e exporta automaticamente métricas para o Prometheus. Pode configurar o Cloud Monitoring para extrair métricas personalizadas do Prometheus. Em seguida, pode ver as métricas personalizadas no Prometheus e no Monitoring. Para mais informações, consulte o artigo Usar o Prometheus na documentação do GKE.
Extraia as métricas
Todas as métricas do Prometheus estão disponíveis para extração na porta 8675. Antes de poder extrair métricas, tem de configurar o cluster para o Prometheus de uma das duas formas. Uma das seguintes opções:
Siga a documentação do Prometheus para configurar o cluster para extração de dados, ou
Use o Prometheus Operator juntamente com os seguintes manifestos, que extraem todas as métricas do Config Sync a cada 10 segundos.
Crie um diretório temporário para guardar os ficheiros de manifesto.
mkdir config-sync-monitor cd config-sync-monitor
Transfira o manifesto do operador Prometheus do repositório CoreOS. repositório, através do comando
curl
:curl -o bundle.yaml https://raw.githubusercontent.com/coreos/prometheus-operator/master/bundle.yaml
Este manifesto está configurado para usar o espaço de nomes
default
, o que não é recomendado. O passo seguinte modifica a configuração para usar um espaço de nomes chamadomonitoring
. Para usar um espaço de nomes diferente, substitua-o onde virmonitoring
nos passos restantes.Crie um ficheiro para atualizar o espaço de nomes do ClusterRoleBinding no pacote acima.
# patch-crb.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: prometheus-operator subjects: - kind: ServiceAccount name: prometheus-operator namespace: monitoring # we are patching from default namespace
Crie um ficheiro
kustomization.yaml
que aplique o patch e modifique o espaço de nomes para outros recursos no manifesto.# kustomization.yaml resources: - bundle.yaml namespace: monitoring patchesStrategicMerge: - patch-crb.yaml
Crie o espaço de nomes
monitoring
se não existir. Pode usar um nome diferente para o espaço de nomes, mas, se o fizer, também deve alterar o valor denamespace
nos manifestos YAML dos passos anteriores.kubectl create namespace monitoring
Aplique o manifesto do Kustomize através dos seguintes comandos:
kubectl apply -k . until kubectl get customresourcedefinitions servicemonitors.monitoring.coreos.com ; \ do date; sleep 1; echo ""; done
O segundo comando é bloqueado até que os CRDs estejam disponíveis no cluster.
Crie o manifesto para os recursos necessários para configurar um servidor Prometheus que recolhe métricas do Config Sync.
# config-sync-monitoring.yaml apiVersion: v1 kind: ServiceAccount metadata: name: prometheus-config-sync namespace: monitoring --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: prometheus-config-sync rules: - apiGroups: [""] resources: - nodes - services - endpoints - pods verbs: ["get", "list", "watch"] - apiGroups: [""] resources: - configmaps verbs: ["get"] - nonResourceURLs: ["/metrics"] verbs: ["get"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: prometheus-config-sync roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: prometheus-config-sync subjects: - kind: ServiceAccount name: prometheus-config-sync namespace: monitoring --- apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: config-sync namespace: monitoring labels: prometheus: config-sync spec: replicas: 2 serviceAccountName: prometheus-config-sync serviceMonitorSelector: matchLabels: prometheus: config-management alerting: alertmanagers: - namespace: default name: alertmanager port: web resources: requests: memory: 400Mi --- apiVersion: v1 kind: Service metadata: name: prometheus-config-sync namespace: monitoring labels: prometheus: config-sync spec: type: NodePort ports: - name: web nodePort: 31900 port: 9190 protocol: TCP targetPort: web selector: prometheus: config-sync --- ---
Aplique o manifesto através dos seguintes comandos:
kubectl apply -f config-sync.yaml until kubectl rollout status statefulset/prometheus-config-sync -n monitoring; \ do sleep 1; done
O segundo comando é bloqueado até que os pods estejam em execução.
Pode validar a instalação encaminhando a porta Web do servidor Prometheus para o seu computador local.
kubectl -n monitoring port-forward svc/prometheus-config-sync 9190
Já pode aceder à IU Web do Prometheus em
http://localhost:9190
.Remova o diretório temporário.
cd .. rm -rf config-sync-monitor
Métricas do Prometheus disponíveis
A sincronização de configuração recolhe as seguintes métricas e disponibiliza-as ao Prometheus. A coluna Etiquetas apresenta todas as etiquetas aplicáveis a cada métrica. As métricas sem etiquetas representam uma única medição ao longo do tempo, enquanto as métricas com etiquetas representam várias medições, uma para cada combinação de valores de etiquetas.
Se esta tabela ficar dessincronizada, pode filtrar as métricas por prefixo na interface do utilizador do Prometheus. Todas as métricas começam com o prefixo
config_sync_
.
Nome | Tipo | Etiquetas | Descrição |
---|---|---|---|
config_sync_api_duration_seconds_bucket |
Histograma | status, operation | Distribuição da latência das chamadas do servidor da API (distribuídas em contentores pela duração de cada ciclo) |
config_sync_api_duration_seconds_count |
Histograma | status, operation | Distribuição da latência das chamadas do servidor da API (ignorando a duração) |
config_sync_api_duration_seconds_sum |
Histograma | status, operation | Soma das durações de todas as chamadas do servidor da API |
config_sync_apply_duration_seconds_bucket |
Histograma | commit, status | Distribuição da latência da aplicação de recursos declarados a partir da fonte prioritária a um cluster (distribuída em contentores pela duração de cada ciclo) |
config_sync_apply_duration_seconds_count |
Histograma | commit, status | Distribuição da latência da aplicação de recursos declarados a partir da fonte prioritária a um cluster (ignorando a duração) |
config_sync_apply_duration_seconds_sum |
Histograma | commit, status | Soma das durações de toda a latência da aplicação de recursos declarados a partir da fonte prioritária a um cluster |
config_sync_apply_operations_total |
Contrapropor | funcionamento, estado, controlador | Número de operações que foram realizadas para sincronizar recursos da fonte de informação fidedigna com um cluster |
config_sync_cluster_scoped_resource_count |
Indicador | resourcegroup | Número de recursos com âmbito de cluster num ResourceGroup |
config_sync_crd_count |
Indicador | resourcegroup | Número de CRDs num ResourceGroup |
config_sync_declared_resources |
Indicador | consolidar | Número de recursos declarados analisados a partir do Git |
config_sync_internal_errors_total |
Contrapropor | fonte | Número de erros internos acionados pela sincronização de configuração. A métrica pode não aparecer se não tiver ocorrido nenhum erro interno |
config_sync_kcc_resource_count |
Indicador | resourcegroup | Número de recursos do Config Connector num ResourceGroup |
config_sync_last_apply_timestamp |
Indicador | commit, status | Data/hora da operação de aplicação mais recente |
config_sync_last_sync_timestamp |
Indicador | commit, status | Data/hora da sincronização mais recente do Git |
config_sync_parser_duration_seconds_bucket |
Histograma | status, trigger, source | Distribuição da latência das diferentes fases envolvidas na sincronização da fonte de dados fidedignos com um cluster |
config_sync_parser_duration_seconds_count |
Histograma | status, trigger, source | Distribuição da latência das diferentes fases envolvidas na sincronização da fonte de verdade com um cluster (ignorando a duração) |
config_sync_parser_duration_seconds_sum |
Histograma | status, trigger, source | Soma das latências das diferentes fases envolvidas na sincronização da fonte de informação fidedigna com um cluster |
config_sync_pipeline_error_observed |
Indicador | name, reconciler, component | Estado dos recursos personalizados RootSync e RepoSync. Um valor de 1 indica uma falha |
config_sync_ready_resource_count |
Indicador | resourcegroup | Número total de recursos prontos num ResourceGroup |
config_sync_reconcile_duration_seconds_bucket |
Histograma | estado | Distribuição da latência de eventos de conciliação processados pelo gestor de conciliação (distribuídos em contentores pela duração de cada chamada) |
config_sync_reconcile_duration_seconds_count |
Histograma | estado | Distribuição da latência de eventos de conciliação processados pelo gestor de conciliação (ignorando a duração) |
config_sync_reconcile_duration_seconds_sum |
Histograma | estado | Soma das durações de todos os eventos de latência de conciliação processados pelo gestor de conciliação |
config_sync_reconciler_errors |
Indicador | component, errorclass | Número de erros encontrados durante a sincronização de recursos da fonte de dados fidedignos para um cluster |
config_sync_remediate_duration_seconds_bucket |
Histograma | estado | Distribuição da latência de eventos de conciliação de remediadores (distribuídos em grupos por duração) |
config_sync_remediate_duration_seconds_count |
Histograma | estado | Distribuição da latência de eventos de conciliação de remediadores (ignorando a duração) |
config_sync_remediate_duration_seconds_sum |
Histograma | estado | Soma das durações de todos os eventos de conciliação de remediadores |
config_sync_resource_count |
Indicador | resourcegroup | Número de recursos monitorizados por um ResourceGroup |
config_sync_resource_conflicts_total |
Contrapropor | consolidar | Número de conflitos de recursos resultantes de uma incompatibilidade entre os recursos em cache e os recursos do cluster. A métrica pode não aparecer se não tiver ocorrido nenhum conflito de recursos |
config_sync_resource_fights_total |
Contrapropor | O número de recursos que estão a ser sincronizados com demasiada frequência. A métrica pode não ser apresentada se não tiver ocorrido nenhum conflito de recursos | |
config_sync_resource_group_total |
Indicador | Número de CRs ResourceGroup | |
config_sync_resource_ns_count |
Indicador | resourcegroup | Número de espaços de nomes usados por recursos num ResourceGroup |
config_sync_rg_reconcile_duration_seconds_bucket . |
Histograma | stallreason | Distribuição de tempo da conciliação de um CR ResourceGroup (distribuído em segmentos por duração) |
config_sync_rg_reconcile_duration_seconds_count |
Histograma | stallreason | Distribuição de tempo da conciliação de uma CR de ResourceGroup (ignorando a duração) |
config_sync_rg_reconcile_duration_seconds_sum |
Histograma | stallreason | Soma da conciliação de todos os tempos de um CR ResourceGroup |
config_sync_kustomize_build_latency_bucket |
Histograma | Distribuição da latência do tempo de execução de kustomize build (distribuída em contentores pela duração de cada operação) |
|
config_sync_kustomize_build_latency_count |
Histograma | Distribuição da latência do tempo de execução de kustomize build (ignorando a duração) |
|
config_sync_kustomize_build_latency_sum |
Histograma | Soma do tempo de execução de todas as kustomize build |
|
config_sync_kustomize_ordered_top_tier_metrics |
Indicador | top_tier_field | Utilização de recursos, geradores, SecretGenerator, ConfigMapGenerator, transformadores e validadores |
config_sync_kustomize_builtin_transformers |
Indicador | k8s_builtin_transformer | Utilização de transformadores incorporados relacionados com metadados de objetos do Kubernetes |
config_sync_kustomize_resource_count |
Indicador | Número de recursos gerados por kustomize build |
|
config_sync_kustomize_field_count |
Indicador | field_name | Número de vezes que um campo específico é usado nos ficheiros de personalização |
config_sync_kustomize_patch_count |
Indicador | patch_field | Número de patches nos campos patches , patchesStrategicMerge e patchesJson6902 |
config_sync_kustomize_base_count |
Indicador | base_source | Número de bases remotas e locais |
kustomize_deprecating_field_count |
Indicador | deprecating_field | Utilização de campos que podem ficar descontinuados |
kustomize_simplification_adoption_count |
Indicador | simplification_field | Utilização de transformadores de simplificação de imagens, réplicas e substituições |
kustomize_helm_inflator_count |
Indicador | helm_inflator | Utilização do Helm no Kustomize, quer seja pelos campos incorporados ou pela função personalizada |
Exemplos de procedimentos de depuração para o Prometheus
Os exemplos seguintes ilustram alguns padrões de utilização de métricas do Prometheus, campos de estado de objetos e anotações de objetos para detetar e diagnosticar problemas relacionados com o Config Sync. Estes exemplos mostram como pode começar com uma monitorização de alto nível que deteta um problema e, em seguida, refinar progressivamente a sua pesquisa para analisar em detalhe e diagnosticar a causa principal do problema.
Consulte as configurações de consultas por estado
O processo reconciler
fornece métricas de alto nível que dão estatísticas úteis sobre
uma vista geral do funcionamento da sincronização de configuração no cluster. Pode ver se ocorreram erros e até configurar alertas para os mesmos.
config_sync_reconciler_errors
Consulte métricas por reconciliador
Se estiver a usar as APIs Config Sync RootSync e RepoSync, pode monitorizar os objetos RootSync e RepoSync. Os objetos RootSync e RepoSync são instrumentados com métricas de alto nível que lhe dão estatísticas úteis sobre o funcionamento do Config Sync no cluster. Quase todas as métricas são etiquetadas pelo nome do reconciliador, para que possa ver se ocorreram erros e configurar alertas para os mesmos no Prometheus.
Consulte a lista completa de etiquetas de métricas disponíveis para filtragem.
No Prometheus, pode usar os seguintes filtros para RootSyncs ou RepoSyncs:
# Querying RootSync
config_sync_reconciler_errors{configsync_sync_name=ROOT_SYNC_NAME}
# Querying RepoSync
config_sync_reconciler_errors{configsync_sync_name=REPO_SYNC_NAME}
Consulte as operações de importação e sincronização por estado
No Prometheus, pode usar as seguintes consultas:
# Check for errors that occurred when sourcing configs.
config_sync_reconciler_errors{component="source"}
# Check for errors that occurred when syncing configs to the cluster.
config_sync_reconciler_errors{component="sync"}
Também pode verificar as métricas dos próprios processos de origem e sincronização:
config_sync_parser_duration_seconds{status="error"}
config_sync_apply_duration_seconds{status="error"}
config_sync_remediate_duration_seconds{status="error"}
Monitorize recursos com o Google Cloud Managed Service for Prometheus
O Google Cloud Managed Service for Prometheus é uma solução multinuvem totalmente gerida para métricas do Prometheus. Google CloudSuporta dois modos para a recolha de dados: recolha gerida (o modo recomendado) ou recolha de dados implementada autonomamente. Conclua os passos seguintes para configurar a monitorização do Config Sync com o Google Cloud Managed Service for Prometheus no modo de recolha gerido.
Ative o Managed Prometheus no cluster seguindo as instruções em Configure a recolha gerida.
Guarde o seguinte manifesto de exemplo como
pod-monitoring-config-sync-monitoring.yaml
. Este manifesto configura um recurso PodMonitoring para extrair as métricas do Config Sync na porta8675
do podotel-collector-*
no espaço de nomesconfig-management-monitoring
. O recurso PodMonitoring usa um seletor de etiquetas do Kubernetes para encontrar ootel-collector-*
pod.apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: config-sync-monitoring namespace: config-management-monitoring spec: selector: matchLabels: app: opentelemetry component: otel-collector endpoints: - port: 8675 interval: 10s
Aplique o manifesto ao cluster:
kubectl apply -f pod-monitoring-config-sync-monitoring.yaml
Verifique se os seus dados do Prometheus estão a ser exportados através da página do explorador de métricas do Cloud Monitoring na Google Cloud consola seguindo as instruções sobre os dados do Managed Service for Prometheus no Cloud Monitoring.