Configurar a hora exata para instâncias do Compute Engine U4
Nesta página, descrevemos como configurar a hora exata para uma instância do Compute Engine U4 e como configurar o monitoramento para que você possa ver a precisão da sincronização de horário.
Como funciona
Google Cloud A solução de latência ultrabaixa (ULL) usa o protocolo de sincronização de relógio Firefly para fornecer sincronização no nível de nanossegundos. O Firefly faz o seguinte automaticamente:
- Realiza uma sincronização interna para sincronizar os relógios da interface de rede física (NIC) de todos os servidores host da instância U4 entre si.
- Realiza a sincronização externa para sincronizar os relógios das NICs físicas de todos os servidores host da instância U4 com o Tempo Universal Coordenado (UTC).
Como os relógios da NIC física dos servidores host que executam instâncias U4 são sincronizados automaticamente pelo Firefly, você pode configurar a hora exata da sua instância sincronizando o relógio do sistema da instância com o relógio da NIC física do servidor host.
Para mais informações sobre o Firefly, consulte a seguinte postagem do blog Google Cloud : Entenda o protocolo de sincronização de relógio do Firefly.
Antes de começar
Antes de configurar a hora exata para instâncias do Compute Engine U4, você precisa atender aos seguintes requisitos.
Criar uma instância U4
Se você ainda não tiver feito isso, crie uma instância do Compute Engine U4. Consulte o procedimento que corresponde ao seu caso de uso:
- Para criar uma instância U4P ou U4C, consulte Criar instâncias do Compute Engine ULL.
- Para criar uma instância do U4S, consulte Criar instâncias do Compute Engine não ULL para cargas de trabalho auxiliares.
Verifique se nenhum outro serviço de sincronização de relógio está em execução.
Os procedimentos nesta página usam chrony como
o cliente de sincronização de relógio recomendado. Antes de começar, verifique se não há outros serviços de sincronização de relógio em execução na instância, como ntpd, systemd-timesyncd ou phc2sys. Interações inesperadas com esses serviços podem causar erros na sua configuração do chrony.
Na versão 4.7 e mais recentes do chrony, é possível verificar o registro de avisos do chronyd para outros serviços de sincronização de relógio executando o seguinte comando:
journalctl -u chronyd
Se outro serviço de sincronização de relógio estiver em execução, a saída vai incluir uma mensagem de aviso como esta: System clock interference detected (another NTP client?).
Configure o chrony para carregar somente depois que os drivers de rede estiverem estáveis.
Em alguns casos, o systemd pode carregar o chrony antes que os drivers de interface de rede
terminem a inicialização, o que pode fazer com que o chrony não seja iniciado porque
não é possível inicializar o dispositivo
PTP hardware clock (PHC).
Para evitar o problema anterior, substitua o arquivo de unidade systemd de chrony para aguardar
que os dispositivos PHC estejam prontos:
Execute o comando de edição:
systemctl edit chronyd
Adicione a substituição que corresponde ao tipo de instância:
Para instâncias U4P e U4C:
[Unit] After=dev-ptp0.device dev-ptp1.device dev-ptp2.device Requires=dev-ptp0.device dev-ptp1.device dev-ptp2.device
Para instâncias U4S:
[Unit] After=dev-ptp0.device Requires=dev-ptp0.device
Reinicie o serviço. Embora o comando
systemctl editexecutado anteriormente tenha recarregado automaticamente o daemon, recomendamos que você execute o comando a seguir para garantir que ochronyesteja em execução após as mudanças.systemctl restart chronyd
Receber nomes de interfaces de rede
Receba os nomes das interfaces de rede virtual (vNICs) da instância atribuídos pelo SO convidado. Enquanto o Google Cloud usa nomes como nic0 e nic1, o formato de nomenclatura do SO convidado é diferente, como enp22s0f0 e ens8f0.
Para listar os nomes das vNICs em ordem, execute o seguinte comando:
find /sys/class/net -type l -not -lname '*virtual*' -printf '%l %f\n' | sort | awk '{print $2}'
Configurar chrony para usar o relógio da placa de rede física sincronizada com o Firefly
Esta seção descreve como configurar o chrony para sincronizar o
relógio do sistema da instância com o relógio da NIC física no
servidor host da instância, que já está sincronizado pelo Firefly.
As interfaces de rede virtuais (vNICs) da instância U4, conforme mostrado no SO convidado
(como enp22s0f0), são mapeadas para NICs físicas no servidor
host da instância. Uma determinada vNIC pode acessar o clock da NIC física usando o dispositivo PTP hardware clock (PHC) correspondente:
Os nomes de dispositivos PHC no Linux têm o seguinte formato:
/dev/ptpNUMBER, em queNUMBERé determinado pelo kernel do Linux de acordo com a ordem de inicialização do dispositivo. Por exemplo, confira os seguintes nomes de dispositivos PHC:/dev/ptp0,/dev/ptp1,/dev/ptp2.Para especificar um clock de NIC físico como a origem da sincronização, a configuração
chronyprecisa usar ou resolver o dispositivo PHC correspondente.
Cada uma das seções a seguir oferece exemplos de como configurar chrony
de acordo com os requisitos anteriores. Consulte a seção que corresponde ao
tipo de instância e à versão do chrony:
- Configurar o
chrony4.7 e versões mais recentes em instâncias U4P e U4C - Configurar o
chrony4.6.1 e versões anteriores em instâncias U4P e U4C - Configurar o
chrony4.7 e versões mais recentes em instâncias U4S
Configurar o chrony 4.7 e versões mais recentes em instâncias U4P e U4C
O chrony versão 4.7 e mais recente permite especificar um nome de vNIC
como a origem do relógio e o resolve automaticamente para o dispositivo de relógio
de hardware PTP (PHC) correspondente que representa o relógio da NIC física.
Para configurar o chrony versão 4.7 e mais recentes em uma instância U4P ou U4C, faça o seguinte:
Adicione o seguinte ao arquivo de configuração
chrony,/etc/chrony.conf. O arquivo precisa conter apenas a seguinte configuração. Remova ou substitua qualquer conteúdo pré-existente do arquivo.# Record the rate at which the system clock gains/loses time. driftfile /var/lib/chrony/drift # Allow the system clock to be stepped in the first three updates # if its offset is larger than 1 micro-second. makestep 0.0000001 3 # Specify directory for log files. logdir /var/log/chrony # Select which information is logged. log measurements statistics tracking refclocks # U4 Compute Engine instance clocks are 200ppb accurate maxclockerror 0.2 # Configure all clocks for tracking, but select only one of them as source. refclock PHC NIC0:nocrossts poll -1 noselect refclock PHC NIC1:nocrossts poll -1 refclock PHC NIC2:nocrossts poll -1 noselect # The following lines opportunistically enable Precision Time Measurement (PTM) based clock synchronization. # Note that PTM can potentially result in a (constant) clock skew of up to 700 nanoseconds # which is not accounted for in chrony's accuracy metrics. refclock PHC NIC0 poll -1 noselect refclock PHC NIC1 poll -1 noselect refclock PHC NIC2 poll -1 noselect
Substitua
NIC0,NIC1eNIC2pelos nomes correspondentes que você recebeu anteriormente. Se necessário, consulte Receber nomes de interfaces de rede.Para aplicar a configuração, reinicie
chronyexecutando o seguinte comando:systemctl restart chronyd
O
chronyregistra estatísticas de sincronização de relógio em/var/log/chrony/tracking.logusando o relógio de hardware PTP deNIC1como fonte de tempo.
Configurar o chrony 4.6.1 e versões anteriores em instâncias U4P e U4C
As versões 4.6.1 e anteriores do chrony exigem que você especifique manualmente o nome do dispositivo de clock de hardware PTP (PHC) no arquivo de configuração.
Para configurar as versões 4.6.1 e anteriores do chrony em uma instância U4P ou U4C, faça o seguinte:
Recebe o número de índice do dispositivo PHC associado a uma vNIC. O exemplo a seguir usa a primeira vNIC.
ethtool -T NIC0
Substitua
NIC0pelo nome correspondente que você recebeu anteriormente, comoenp22s0f0. Se necessário, consulte Receber nomes de interfaces de rede.Analise a saída para
PTP Hardware Clock:NUMBEREste exemplo de saída mostra
PTP Hardware Clock: 1, que corresponde a/dev/ptp1.Time stamping parameters for enp22s0f0: Capabilities: hardware-receive software-receive software-system-clock hardware-raw-clock PTP Hardware Clock: 1 Hardware Transmit Timestamp Modes: off Hardware Receive Filter Modes: none all
Adicione o seguinte ao arquivo de configuração
chrony,/etc/chrony.conf. O arquivo precisa conter apenas a seguinte configuração. Remova ou substitua qualquer conteúdo pré-existente do arquivo.A saída
ethtoolna etapa anterior mostrou queenp22s0f0usa/dev/ptp1. O exemplo a seguir sincroniza o relógio do sistema com o relógio da NIC física correspondente paraenp22s0f0especificando:refclock PHC /dev/ptp1:nocrossts poll -1.# Record the rate at which the system clock gains/loses time. driftfile /var/lib/chrony/drift # Allow the system clock to be stepped in the first three updates # if its offset is larger than 1 micro-second. makestep 0.0000001 3 # Enable kernel synchronization of the real-time clock (RTC). rtcsync # Save NTS keys and cookies. ntsdumpdir /var/lib/chrony # Specify directory for log files. logdir /var/log/chrony # Select which information is logged. log measurements statistics tracking refclocks # U4 Compute Engine instance clocks are 200ppb accurate maxclockerror 0.2 # Configure all clocks for tracking, but select only one of them as source. refclock PHC /dev/ptp0:nocrossts poll -1 noselect refclock PHC /dev/ptp1:nocrossts poll -1 refclock PHC /dev/ptp2:nocrossts poll -1 noselect # The following lines opportunistically enable Precision Time Measurement (PTM) based clock synchronization. # Note that PTM can potentially result in a (constant) clock skew of up to 700 nanoseconds # which is not accounted for in chrony's accuracy metrics. refclock PHC /dev/ptp0 poll -1 noselect refclock PHC /dev/ptp1 poll -1 noselect refclock PHC /dev/ptp2 poll -1 noselect
Para aplicar a configuração, reinicie
chronyexecutando o seguinte comando:systemctl restart chronyd
O
chronyregistra estatísticas de sincronização de relógio em/var/log/chrony/tracking.logusando o relógio de hardware PTP deenp22s0f0como fonte de tempo.
Configurar o chrony 4.7 e versões mais recentes em instâncias U4S
Recomendamos usar as versões 4.7 e mais recentes do chrony para instâncias U4S.
O uso de versões anteriores pode resultar em erros frequentes porque o dispositivo de sincronização de relógio do Compute Engine para instâncias de máquina virtual (VM) (ptp_kvm) pode causar mudanças nos números de índice dos dispositivos de relógio de hardware PTP (PHC).
Essa configuração de exemplo para instâncias U4S é semelhante à usada para instâncias U4P e U4C, mas tem as seguintes diferenças:
- Este exemplo inclui uma única vNIC. Uma instância do U4S pode ter várias vNICs, mas todas elas são apoiadas pela mesma NIC física e acessam o mesmo clock de NIC física.
- A medição de tempo de precisão (PTM) não está disponível.
Para configurar as versões 4.7 e mais recentes do chrony em uma instância do U4S, faça o seguinte:
Adicione o seguinte ao arquivo de configuração
chrony,/etc/chrony.conf. O arquivo precisa conter apenas a seguinte configuração. Remova ou substitua qualquer conteúdo pré-existente do arquivo.# Record the rate at which the system clock gains/loses time. driftfile /var/lib/chrony/drift # Allow the system clock to be stepped in the first three updates # if its offset is larger than 1 micro-second. makestep 0.0000001 3 # Specify directory for log files. logdir /var/log/chrony # Select which information is logged. log measurements statistics tracking refclocks # U4 Compute Engine instance clocks are 200ppb accurate maxclockerror 0.2 # Configure all clocks for tracking, but select only one of them as source. refclock PHC NIC0:nocrossts poll -1
Substitua
NIC0pelo nome correspondente que você recebeu anteriormente, comoenp22s0f0. Se necessário, consulte Receber nomes de interfaces de rede.Para aplicar a configuração, reinicie
chronyexecutando o seguinte comando:systemctl restart chronyd
O
chronyregistra estatísticas de sincronização de relógio em/var/log/chrony/tracking.logusando o relógio de hardware PTP deNIC0como fonte de tempo.
Verificar a configuração do chrony
Para verificar se o chrony está configurado corretamente, execute o seguinte comando:
chronyc sourcestats
Uma configuração bem-sucedida resulta em uma saída semelhante a esta:
Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev ============================================================================== PHC0 5 3 2 -0.002 0.014 +9ns 2ns PHC1 5 3 2 -0.003 0.007 -0ns 1ns PHC2 5 3 2 -0.004 0.016 +33ns 2ns PHC3 5 5 2 +0.002 0.078 +135ns 10ns PHC4 5 3 2 -0.005 0.077 +130ns 9ns PHC5 5 5 2 -0.006 0.131 +123ns 16ns
Se o comando retornar uma saída inesperada, consulte Solução de problemas.
Modificar a configuração chrony
Se você quiser modificar qual NIC física sincronizar com o relógio do sistema da sua instância, atualize a configuração da seguinte maneira:
- Remova
noselectda linha que inclui o nome da vNIC para a qual você quer usar o clock da NIC física correspondente. - Adicione
noselectà linha que inclui o nome da vNIC para a qual você quer parar de usar o clock da NIC física correspondente. - Aplique a nova configuração reiniciando
chronyd:systemctl restart chronyd.
Monitorar a sincronização de horário
Nesta seção, descrevemos as métricas disponíveis para sincronização de tempo e como usá-las para monitorar a precisão da sincronização.
Métricas disponíveis para sincronização de horário
Use as seguintes métricas para monitorar a sincronização de tempo:
| Medição | Métrica e descrição disponíveis |
|---|---|
| Relógio do sistema da instância para o relógio da NIC física |
logging.googleapis.com/user/phc-clock-max-error
Essa métrica mede a precisão da sincronização do relógio do sistema da instância com o relógio da NIC física no servidor host. Configure essa métrica coletando-a do Agente de operações e criando uma métrica com base em registros, conforme descrito em Configurar uma métrica personalizada para o relógio do sistema da instância, que também cria um painel personalizado. Além disso, é possível usar essa métrica nos procedimentos descritos em Usar métricas do Cloud Monitoring. |
| Relógio da NIC física para UTC |
compute.googleapis.com/instance/time/firefly_utc_traceable_uncertainty
Essa métrica representa o limite máximo de erro do clock da NIC física em comparação com a hora UTC real. Ele é informado automaticamente ao Cloud Monitoring. Consulte essa métrica, defina políticas de alertas e crie painéis personalizados conforme descrito em Usar métricas do Cloud Monitoring. Essa métrica também está incluída no painel criado pelo script em Configurar uma métrica personalizada para o relógio do sistema da instância. |
| Status geral de integridade do clock da NIC física |
compute.googleapis.com/instance/time/firefly_nic_sync_healthy
Essa métrica booleana indica o estado geral de integridade do clock da NIC física, incluindo a sincronização de NIC para NIC e de NIC para UTC. Ele é informado automaticamente ao Cloud Monitoring. Consulte essa métrica, defina políticas de alertas e crie painéis personalizados conforme descrito em Usar métricas do Cloud Monitoring. |
Para informações sobre o período em que o Cloud Monitoring retém dados de métricas, consulte Retenção de dados em Cotas e limites do Cloud Monitoring. Para informações sobre como exportar métricas para análise de longo prazo, consulte Exportação de métricas do Cloud Monitoring na documentação do Centro de arquitetura do Cloud.
Configurar uma métrica personalizada para o relógio do sistema da instância
Esta seção mostra um exemplo de configuração de monitoramento que faz o seguinte:
- Configura o Agente de operações para coletar o registro de
chronypara precisão da sincronização da sua instância. - Configura o Cloud Monitoring para ingerir o registro correspondente de todas as instâncias no seu projeto como uma métrica com base em registros.
Configurar o agente de operações do Google Cloud na instância
Para configurar o Agente de operações para coletar a métrica necessária para o monitoramento, faça o seguinte:
Se ainda não tiver feito isso, instale o Agente de operações na sua instância.
Adicione a seguinte configuração ao arquivo
/etc/google-cloud-ops-agent/config.yaml:logging: receivers: chrony_tracking_receiver: type: files include_paths: - /var/log/chrony/tracking.log processors: chrony_tracking_processor: type: parse_regex regex: "^.*PHC.* (?<max_error>[-\d\.eE]+)$" service: pipelines: chrony_tracking_pipeline: receivers: [chrony_tracking_receiver] processors: [chrony_tracking_processor]
Reinicie o Agente de operações executando o seguinte comando:
systemctl restart google-cloud-ops-agent
Configurar uma métrica com base em registros e um painel no projeto
Para configurar o monitoramento da sincronização de tempo nas instâncias do seu projeto, execute o seguinte script de configuração de geração de registros e painel. Esse script ajuda você a concluir as seguintes tarefas:
- Ele define as permissões adequadas na conta de serviço associada ao projeto da instância. O script pressupõe que a conta de serviço usada
para as instâncias é a conta de serviço padrão do projeto. Se necessário, substitua
SERVICE_ACCOUNT_EMAILpor um valor diferente. - Ela cria uma métrica com base em registros que mede a precisão da sincronização de tempo entre o relógio do sistema da instância e o relógio da NIC física no servidor host da instância.
- Ele cria um painel que mostra a acurácia da sincronização de tempo individual e combinada das suas instâncias com base na métrica personalizada com base em registros e nas métricas disponíveis do Firefly.
Para realizar as tarefas anteriores, execute o script a seguir. Depois que o script terminar de ser executado, use o painel criado para conferir os dados de precisão do relógio das instâncias do projeto.
#!/bin/bash if [ -z "$1" ]; then echo "Usage: setup_logging.sh <project_id>" >&2 exit 1 fi PROJECT_ID="$1" PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)") SERVICE_ACCOUNT_EMAIL=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com # Grant permissions: gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${SERVICE_ACCOUNT_EMAIL}" \ --role="roles/compute.instanceAdmin" gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${SERVICE_ACCOUNT_EMAIL}" \ --role="roles/monitoring.metricWriter" gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${SERVICE_ACCOUNT_EMAIL}" \ --role="roles/logging.logWriter" # Configure log-based metric METRIC_CONF=' { "name": "phc-clock-max-error", "description": "Maximum error of the VM clock from the host clock exposed by ptp_kvm", "filter": "logName=~\".*/logs/chrony_tracking_receiver\"", "metricDescriptor": { "metricKind": "DELTA", "valueType": "DISTRIBUTION", "unit": "s", "labels": [ { "key": "instance_id", "valueType": "STRING", "description": "Instance ID for the source instance" } ] }, "valueExtractor": "REGEXP_EXTRACT(jsonPayload.max_error, \"(.*)\")", "bucketOptions": { "explicitBuckets": { "bounds": [ 0.0, 1.0E-6, 5.0E-6, 1.0E-5, 1.0E-4, 0.001, 0.01, 0.1, 1.0 ] } }, "labelExtractors": { "instance_id": "REGEXP_EXTRACT(resource.labels.instance_id, \"(.*)\")" } } ' echo "$METRIC_CONF" > /tmp/clock-error-metric.json gcloud logging metrics create --project=${PROJECT_ID} phc-clock-max-error --config-from-file=/tmp/clock-error-metric.json # Create a dashboard plotting the clock accuracy DASHBOARD_CONF=' { "displayName": "Clock Accuracy", "dashboardFilters": [], "description": "", "labels": {}, "mosaicLayout": { "columns": 48, "tiles": [ { "height": 19, "width": 48, "widget": { "title": "Combined Accuracy With Threshold", "id": "", "xyChart": { "chartOptions": { "displayHorizontal": false, "mode": "COLOR", "showLegend": false }, "dataSets": [ { "breakdowns": [], "dimensions": [], "legendTemplate": "", "measures": [], "plotType": "LINE", "sort": [], "targetAxis": "Y1", "timeSeriesQuery": { "outputFullDuration": false, "prometheusQuery": "(\n histogram_quantile(\n 1, \n sum by (le, instance_id) (\n increase({\"__name__\"=\"logging.googleapis.com/user/phc-clock-max-error_bucket\", monitored_resource=\"gce_instance\"}[${__interval}])\n )\n ) * 1e9\n) \n+ on(instance_id) \nmax by (instance_id) (\n max_over_time({\"__name__\"=\"compute.googleapis.com/instance/time/firefly_utc_traceable_uncertainty\", monitored_resource=\"gce_instance\"}[${__interval}])\n)", "unitOverride": "ns" } } ], "thresholds": [ { "color": "COLOR_UNSPECIFIED", "direction": "DIRECTION_UNSPECIFIED", "label": "", "targetAxis": "Y1", "value": 30000 } ], "yAxis": { "label": "", "scale": "LINEAR" } } } }, { "yPos": 19, "height": 16, "width": 24, "widget": { "title": "NIC-UTC sync accuracy", "id": "", "xyChart": { "chartOptions": { "displayHorizontal": false, "mode": "COLOR", "showLegend": false }, "dataSets": [ { "breakdowns": [], "dimensions": [], "legendTemplate": "", "measures": [], "minAlignmentPeriod": "60s", "plotType": "LINE", "sort": [], "targetAxis": "Y1", "timeSeriesQuery": { "outputFullDuration": false, "timeSeriesFilter": { "aggregation": { "alignmentPeriod": "60s", "crossSeriesReducer": "REDUCE_SUM", "groupByFields": [ "metric.label.\"instance_name\"", "metric.label.\"nic_id\"", "resource.label.\"instance_id\"" ], "perSeriesAligner": "ALIGN_MEAN" }, "filter": "metric.type=\"compute.googleapis.com/instance/time/firefly_utc_traceable_uncertainty\" resource.type=\"gce_instance\"" }, "unitOverride": "" } } ], "thresholds": [], "yAxis": { "label": "", "scale": "LINEAR" } } } }, { "yPos": 19, "xPos": 24, "height": 16, "width": 24, "widget": { "title": "VM-NIC sync Accuracy", "id": "", "xyChart": { "chartOptions": { "displayHorizontal": false, "mode": "COLOR", "showLegend": false }, "dataSets": [ { "breakdowns": [], "dimensions": [], "legendTemplate": "", "measures": [], "minAlignmentPeriod": "60s", "plotType": "LINE", "sort": [], "targetAxis": "Y1", "timeSeriesQuery": { "outputFullDuration": false, "timeSeriesFilter": { "aggregation": { "alignmentPeriod": "60s", "crossSeriesReducer": "REDUCE_PERCENTILE_99", "groupByFields": [ "metric.label.\"instance_id\"" ], "perSeriesAligner": "ALIGN_DELTA" }, "filter": "metric.type=\"logging.googleapis.com/user/phc-clock-max-error\"" }, "unitOverride": "" } } ], "thresholds": [], "yAxis": { "label": "", "scale": "LINEAR" } } } } ] } } ' echo "$DASHBOARD_CONF" > /tmp/metrics-dashboard.json gcloud monitoring dashboards create --project=${PROJECT_ID} --config-from-file=/tmp/metrics-dashboard.json
Usar métricas do Cloud Monitoring
As seções a seguir descrevem como usar as métricas do Cloud Monitoring. É possível usar cada uma das métricas disponíveis para sincronização de tempo nas seções a seguir.
Além do console do Google Cloud , é possível criar painéis personalizados, configurar alertas e consultar as métricas usando a API Monitoring.
Ver métricas no Monitoring
Nesta seção, descrevemos como visualizar métricas no Monitoring.
Console
Para visualizar as métricas de um recurso monitorado usando o Metrics Explorer, faça o seguinte:
-
No console Google Cloud , acesse a página do leaderboard Metrics explorer:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.
- Na barra de ferramentas do console Google Cloud , selecione seu projeto Google Cloud . Para configurações do App Hub, selecione o projeto host do App Hub ou o projeto de gerenciamento da pasta habilitada para apps.
- No elemento Metric, expanda o menu Selecionar uma métrica,
digite
VM instancena barra de filtro e use os submenus para selecionar um tipo de recurso e métrica específicos:- No menu Recursos ativos, selecione Instância de VM.
- Para selecionar uma métrica, use os menus Categorias de métricas ativas e Métricas ativas. Para uma lista de métricas disponíveis, consulte Métricas disponíveis para sincronização de tempo.
- Clique em Aplicar.
Para adicionar filtros que removem séries temporais dos resultados da consulta, use o elemento Filtro.
- Configure a visualização dos dados.
Por padrão, a tela agrega as métricas de todas as instâncias e NICs físicas.
Para mostrar métricas por NIC e por instância, faça o seguinte: no elemento Agregação, selecione Não agregado.
Para mais informações sobre como configurar um gráfico, consulte Selecionar métricas ao usar o Metrics Explorer.
Definir políticas de alertas
Nesta seção, descrevemos como definir políticas de alerta.
Ao configurar como o Monitoring avalia uma condição quando os dados param de chegar, recomendamos a opção Pontos de dados ausentes tratados como valores que violam a condição da política, que ajuda a capturar a perda silenciosa de dados. No entanto, essa configuração causa alertas falsos positivos quando uma instância é excluída.
Console
É possível criar políticas de alertas para monitorar os valores das métricas e receber notificações quando elas violarem uma condição.
-
No console do Google Cloud , acesse a página notifications Alertas:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.
- Se você ainda não criou canais de notificação e desejar recebê-las, clique em Editar canais de notificação e adicione seus canais. Retorne para a página Alertas depois de adicionar seus canais.
- Na página Alertas, clique em Criar política.
- Para selecionar a métrica, expanda o menu Selecionar uma métrica e faça isto:
- Para limitar o menu a entradas relevantes, insira
VM Instancena barra de filtros. Se não houver resultados depois de filtrar o menu, desative a opção Mostrar somente recursos e métricas ativos. - Em Tipo de recurso, selecione Instância de VM.
- Em Categoria da métrica, selecione Instância.
- Em Métrica, selecione uma opção na lista em Métricas disponíveis para sincronização de tempo.
- Selecione Apply.
- Para limitar o menu a entradas relevantes, insira
- Clique em Próxima.
- As configurações da página Configurar acionador de alertas determinam quando o alerta é acionado. Selecione um tipo de condição e, se necessário, especifique um limite. Para mais informações, confira Criar políticas de alertas com limites de métricas.
- Clique em Próxima.
- Opcional: para adicionar notificações à política de alertas, clique em Canais de notificação. Na caixa de diálogo, selecione um ou mais canais de notificação no menu e clique em OK.
- Opcional: atualize a Duração do fechamento automático de alertas. Este campo determina quando o Monitoring fecha alertas na ausência de dados de métrica.
- Opcional: clique em Documentação e adicione as informações que você deseja incluir em uma mensagem de notificação.
- Clique em Nome do alerta e insira um nome para a política de alertas.
- Clique em Criar política.
Criar painéis personalizados do Monitoring
Nesta seção, descrevemos como criar painéis personalizados. Para um exemplo específico que usa uma consulta PromQL, consulte Exemplo: criar um painel personalizado que combine métricas de acurácia.
Console
-
No console Google Cloud , acesse a página Painéis:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.
- Clique em Criar painel.
- Opcional: atualize o título do painel com um nome descritivo.
Para cada widget que você quer adicionar ao painel, clique em Adicionar widget, preencha a caixa de diálogo e selecione Aplicar.
Para mais informações sobre como adicionar widgets, consulte as seguintes páginas:
Exemplo: criar um painel personalizado que combine métricas de acurácia
O Monitoring permite a criação de painéis personalizados. Os painéis podem usar qualquer uma das métricas disponíveis para sincronização de tempo.
Esta seção contém um exemplo de consulta PromQL que pode ser colada em um painel personalizado do Monitoring. Para mais informações sobre o PromQL, consulte PromQL para Cloud Monitoring.
A consulta nesta seção gera uma métrica de acurácia total combinando o seguinte:
- a métrica que mede a precisão do relógio do sistema da instância em relação ao relógio da NIC física (
phc-clock-max-error) a métrica que mede a precisão do relógio da NIC física em relação ao UTC (
firefly_utc_traceable_uncertainty)
Console
Siga as etapas para acessar o editor de código do PromQL.
Digite a seguinte consulta no campo de texto:
( histogram_quantile( 1, sum by (le, instance_id) ( increase({"__name__"="logging.googleapis.com/user/phc-clock-max-error_bucket", monitored_resource="gce_instance"}[${__interval}]) ) ) * 1e9 ) + on(instance_id) max by (instance_id) ( max_over_time({"__name__"="compute.googleapis.com/instance/time/firefly_utc_traceable_uncertainty", monitored_resource="gce_instance"}[${__interval}]) )Selecione Executar consulta.
Para mais informações sobre como usar o editor e salvar seus gráficos, consulte Usar o editor de código para PromQL.
Resolver problemas
Você pode receber uma saída inesperada ao verificar a configuração do chrony, como a saída a seguir, que indica que o chrony não foi iniciado:
506 Cannot talk to daemon
Para ajudar a resolver problemas, verifique os registros de journald para chrony:
journalctl -u chronyd.service
O exemplo de saída a seguir mostra um erro que ocorre se você aplicar uma
configuração destinada ao chrony 4.7 e versões mais recentes enquanto uma versão
anterior do chrony está instalada na sua instância.
Feb 19 06:19:42 host-name systemd[1]: Starting chronyd.service - NTP client/server... Feb 19 06:19:42 host-name chronyd[35160]: chronyd version 4.6.1 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +NTS +SECHASH +IPV6 +DEBUG) Feb 19 06:19:42 host-name chronyd[35160]: Setting filter length for PHC0 to 1 Feb 19 06:19:42 host-name chronyd[35160]: Could not open eth0 : No such file or directory Feb 19 06:19:42 host-name chronyd[35160]: Fatal error : Could not open PHC Feb 19 06:19:42 host-name chronyd[35157]: Could not open PHC Feb 19 06:19:42 host-name systemd[1]: chronyd.service: Control process exited, code=exited, status=1/FAILURE Feb 19 06:19:42 host-name systemd[1]: chronyd.service: Failed with result 'exit-code'. Feb 19 06:19:42 host-name systemd[1]: Failed to start chronyd.service - NTP client/server.
Problemas conhecidos
Os seguintes problemas conhecidos podem ocorrer ao configurar a hora exata para instâncias do U4:
-
As métricas de acurácia são informadas apenas para interfaces de rede em que um tráfego diferente de zero foi observado durante o ciclo de vida da instância. Para contornar esse problema, use
nic0como a origem do relógio para sincronização e garantir a telemetria. Como alternativa, verifique se há tráfego em todas as interfaces de rede.