Configura la hora exacta para las instancias de Compute Engine de U4

En esta página, se describe cómo configurar la hora exacta para una instancia de Compute Engine de U4 y cómo configurar la supervisión para que puedas ver la precisión de la sincronización de la hora.

Cómo funciona

La solución de latencia ultrabaja (ULL) usa el protocolo de sincronización de reloj Firefly para proporcionar sincronización a nivel de nanosegundos.Google Cloud Firefly realiza automáticamente las siguientes acciones:

  • Realiza una sincronización interna para sincronizar los relojes de la interfaz de red física (NIC) de todos los servidores host de instancias U4 entre sí.
  • Realiza una sincronización externa para sincronizar los relojes de las NIC físicas de todos los servidores host de instancias U4 con la hora universal coordinada (UTC).

Debido a que Firefly sincroniza automáticamente los relojes de las NIC físicas de los servidores host que ejecutan instancias de U4, puedes configurar la hora precisa para tu instancia sincronizando el reloj del sistema de la instancia con el reloj de la NIC física de su servidor host.

Para obtener más información sobre Firefly, consulta la siguiente Google Cloud entrada de blog: Understanding the Firefly clock synchronization protocol (Descripción del protocolo de sincronización de reloj de Firefly).

Antes de comenzar

Antes de configurar la hora exacta para las instancias de Compute Engine de U4, consulta las siguientes secciones.

Crea una instancia de U4 con la imagen requerida

Crea una instancia de Compute Engine U4 con la imagen que proporciona Google para las pruebas. Consulta el procedimiento que corresponde a tu caso de uso:

Asegúrate de que no se estén ejecutando otros servicios de sincronización de reloj.

Los procedimientos de esta página usan chrony como el cliente de sincronización de reloj recomendado. Antes de comenzar, asegúrate de que no haya otros servicios de sincronización de relojes en ejecución en tu instancia, como ntpd, systemd-timesyncd o phc2sys. Las interacciones inesperadas con estos servicios pueden causar errores en la configuración de chrony.

En la versión 4.7 y posteriores de chrony, puedes verificar el registro de advertencias de chronyd para otros servicios de sincronización del reloj ejecutando el siguiente comando:

journalctl -u chronyd

Si se está ejecutando otro servicio de sincronización del reloj, el resultado incluye un mensaje de advertencia como el siguiente: System clock interference detected (another NTP client?).

Configura chrony para que se cargue solo después de que los controladores de red sean estables

En algunos casos, systemd podría cargar chrony antes de que finalice la inicialización de los controladores de la interfaz de red, lo que puede provocar que chrony no se inicie porque no puede inicializar el dispositivo de reloj de hardware PTP (PHC).

Para evitar el problema anterior, anula el archivo de unidad systemd de chrony para esperar a que los dispositivos PHC estén listos:

  1. Ejecuta el comando de edición:

    systemctl edit chronyd
    
  2. Agrega la anulación que corresponde a tu tipo de instancia:

    • Para las instancias U4P y U4C:

      [Unit]
      After=dev-ptp0.device dev-ptp1.device dev-ptp2.device
      Requires=dev-ptp0.device dev-ptp1.device dev-ptp2.device
      
    • Para las instancias U4S:

      [Unit]
      After=dev-ptp0.device
      Requires=dev-ptp0.device
      
  3. Reinicia el servicio. Si bien el comando systemctl edit que ejecutaste anteriormente volvió a cargar el daemon automáticamente, te recomendamos que ejecutes el siguiente comando para asegurarte de que chrony se esté ejecutando después de los cambios.

    systemctl restart chronyd
    

Configura chrony para usar el reloj de la NIC física sincronizado con Firefly

En esta sección, se describe cómo configurar chrony para sincronizar el reloj del sistema de tu instancia con el reloj de la NIC física en el servidor host de tu instancia que ya está sincronizado por Firefly.

Las interfaces de red virtuales (vNIC) de tu instancia U4, como se muestra en el SO invitado (por ejemplo, eth0), se asignan a las NIC físicas en el servidor host de la instancia. Una vNIC determinada puede acceder al reloj de la NIC física a través del dispositivo reloj de hardware PTP (PHC) correspondiente:

  • Los nombres de dispositivos PHC en Linux tienen el siguiente formato: /dev/ptpNUMBER, donde NUMBER se determina según el kernel de Linux de acuerdo con el orden de inicialización del dispositivo. Por ejemplo, consulta los siguientes nombres de dispositivos PHC: /dev/ptp0, /dev/ptp1, /dev/ptp2.

  • Para especificar un reloj de NIC físico como la fuente de sincronización, la configuración de chrony debe usar o resolver el dispositivo PHC correspondiente.

En cada una de las siguientes secciones, se proporcionan ejemplos de cómo configurar chrony según los requisitos anteriores. Consulta la sección que corresponde a tu tipo de instancia y versión de chrony:

Configura chrony 4.7 y versiones posteriores en instancias de U4P y U4C

La versión 4.7 y las posteriores de chrony admiten la especificación de un nombre de vNIC (como eth0) como fuente de reloj y lo resuelven automáticamente en el dispositivo de reloj de hardware PTP (PHC) correspondiente que representa el reloj de la NIC física.

Para configurar la versión 4.7 y posteriores de chrony en una instancia de U4P o U4C, haz lo siguiente:

  1. Agrega lo siguiente al archivo de configuración chrony, /etc/chrony.conf. El archivo solo debe contener la siguiente configuración. Asegúrate de quitar o reemplazar el contenido preexistente del archivo.

    # 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 eth0:nocrossts poll -1 noselect
    refclock PHC eth1:nocrossts poll -1
    refclock PHC eth2: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 eth0 poll -1 noselect
    refclock PHC eth1 poll -1 noselect
    refclock PHC eth2 poll -1 noselect
  2. Para aplicar la configuración, reinicia chrony ejecutando el siguiente comando:

    systemctl restart chronyd
    

    chrony registra las estadísticas de sincronización del reloj en /var/log/chrony/tracking.log con el reloj de hardware PTP de eth1 como fuente de tiempo.

Configura chrony 4.6.1 y versiones anteriores en instancias de U4P y U4C

Las versiones 4.6.1 y anteriores de chrony requieren que especifiques manualmente el nombre del dispositivo de reloj de hardware PTP (PHC) en tu archivo de configuración.

Para configurar las versiones 4.6.1 y anteriores de chrony en una instancia de U4P o U4C, haz lo siguiente:

  1. Obtén el número de índice del dispositivo PHC asociado a una vNIC. En el siguiente ejemplo, se usa eth0.

    ethtool -T eth0
    
    1. Revisa el resultado de PTP Hardware Clock:NUMBER.

      En este ejemplo de salida, se muestra PTP Hardware Clock: 1, que corresponde a /dev/ptp1.

      Time stamping parameters for eth0:
      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
      
  2. Agrega lo siguiente al archivo de configuración chrony, /etc/chrony.conf. El archivo solo debe contener la siguiente configuración. Asegúrate de quitar o reemplazar el contenido preexistente del archivo.

    El resultado de ethtool en el paso anterior mostró que eth0 usa /dev/ptp1. En el siguiente ejemplo, se sincroniza el reloj del sistema con el reloj de la NIC física correspondiente para eth0 especificando 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
  3. Para aplicar la configuración, reinicia chrony ejecutando el siguiente comando:

    systemctl restart chronyd
    

    chrony registra las estadísticas de sincronización del reloj en /var/log/chrony/tracking.log con el reloj de hardware PTP de eth0 como fuente de tiempo.

Configura chrony 4.7 y versiones posteriores en instancias de U4S

Te recomendamos que uses las versiones 4.7 y posteriores de chrony para las instancias de U4S. El uso de versiones anteriores puede generar errores frecuentes, ya que el dispositivo de sincronización del reloj de Compute Engine para las instancias de máquina virtual (VM) (ptp_kvm) puede provocar cambios en los números de índice de los dispositivos de reloj de hardware PTP (PHC).

Esta configuración de ejemplo para instancias U4S es similar a la que se usa para las instancias U4P y U4C, pero tiene las siguientes diferencias:

  • Este ejemplo incluye una sola vNIC. Una instancia de U4S puede tener varias vNIC, pero todas están respaldadas por la misma NIC física y acceden al mismo reloj de NIC física.
  • La medición de tiempo de precisión (PTM) no está disponible.

Para configurar chrony, versión 4.7 y posteriores, en una instancia de U4S, haz lo siguiente:

  1. Agrega lo siguiente al archivo de configuración chrony, /etc/chrony.conf. El archivo solo debe contener la siguiente configuración. Asegúrate de quitar o reemplazar el contenido preexistente del archivo.

    # 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 eth0:nocrossts poll -1
  2. Para aplicar la configuración, reinicia chrony ejecutando el siguiente comando:

    systemctl restart chronyd
    

    chrony registra las estadísticas de sincronización del reloj en /var/log/chrony/tracking.log con el reloj de hardware PTP de eth0 como fuente de tiempo.

Verifica la configuración de chrony

Para verificar que chrony esté configurado correctamente, ejecuta el siguiente comando:

chronyc sourcestats

Una configuración correcta genera un resultado similar al siguiente:

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

Si el comando muestra un resultado inesperado, consulta Solución de problemas.

Modifica la configuración de chrony

Si deseas modificar la NIC física con la que se sincroniza el reloj del sistema de tu instancia, puedes actualizar la configuración de la siguiente manera:

  1. Quita noselect de la línea que incluye el nombre de la vNIC para la que deseas usar el reloj de la NIC física correspondiente.
  2. Agrega noselect a la línea que incluye el nombre de la vNIC para la que deseas dejar de usar el reloj de la NIC física correspondiente.
  3. Para aplicar la configuración nueva, reinicia chronyd: systemctl restart chronyd.

Supervisa la sincronización de hora

En esta sección, se describen las métricas disponibles para la sincronización de hora y cómo usarlas para supervisar la precisión de la sincronización de hora.

Métricas disponibles para la sincronización de tiempo

Puedes usar las siguientes métricas para supervisar la sincronización de la hora:

Medida Métrica disponible y descripción
Reloj del sistema de la instancia al reloj de la NIC física logging.googleapis.com/user/phc-clock-max-error

Esta métrica mide la precisión de la sincronización del reloj del sistema de la instancia con el reloj de la NIC física en su servidor host.

Debes configurar esta métrica recopilándola del Agente de operaciones y creando una métrica basada en registros, como se describe en Configura una métrica personalizada para el reloj del sistema de la instancia, que también crea un panel personalizado. Además, puedes usar esta métrica en los procedimientos que se describen en Usa métricas de Cloud Monitoring.

Reloj de NIC física a UTC compute.googleapis.com/instance/time/firefly_utc_traceable_uncertainty

Esta métrica representa el límite máximo de error del reloj de la NIC física en comparación con la hora UTC real. Se informa automáticamente a Cloud Monitoring.

Puedes ver esta métrica, definir políticas de alertas y crear paneles personalizados como se describe en Usa las métricas de Cloud Monitoring.

Estado general del reloj de la NIC física compute.googleapis.com/instance/time/firefly_nic_sync_healthy

Esta métrica booleana indica el estado general del reloj de la NIC física, incluida la sincronización de NIC a NIC y de NIC a UTC. Se informa automáticamente a Cloud Monitoring.

Puedes ver esta métrica, definir políticas de alertas y crear paneles personalizados como se describe en Usa las métricas de Cloud Monitoring.

Para obtener información sobre el período durante el que Cloud Monitoring retiene los datos de métricas, consulta Retención de datos en Cuotas y límites de Cloud Monitoring. Para obtener información sobre cómo exportar métricas para realizar análisis a largo plazo, consulta Exportación de métricas de Cloud Monitoring en la documentación del Cloud Architecture Center.

Configura una métrica personalizada para el reloj del sistema de la instancia

En esta sección, se proporciona un ejemplo de configuración de supervisión que hace lo siguiente:

  • Configura el agente de operaciones para recopilar el registro de chrony para la precisión de la sincronización de tu instancia
  • Configura Cloud Monitoring para que ingiera el registro correspondiente de todas las instancias de tu proyecto como una métrica basada en registros.

Configura el Agente de operaciones de Google Cloud en tu instancia

Para configurar el Agente de operaciones de modo que recopile la métrica necesaria para la supervisión, haz lo siguiente:

  1. Si aún no lo hiciste, instala el Agente de operaciones en tu instancia.

  2. Agrega la siguiente configuración al archivo /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]
  3. Reinicia el agente de operaciones ejecutando el siguiente comando:

    systemctl restart google-cloud-ops-agent
    

Configura una métrica y un panel basados en registros en tu proyecto

Para configurar la supervisión de la sincronización de hora de las instancias de tu proyecto, ejecuta la siguiente secuencia de comandos de configuración del registro y el panel. Esta secuencia de comandos te ayuda a completar las siguientes tareas:

  • Establece los permisos adecuados en la cuenta de servicio asociada con el proyecto de tu instancia. La secuencia de comandos supone que la cuenta de servicio que se usa para las instancias es la cuenta de servicio predeterminada del proyecto. Si es necesario, reemplaza SERVICE_ACCOUNT_EMAIL por un valor diferente.
  • Crea una métrica basada en registros que mide la precisión de la sincronización de la hora entre el reloj del sistema de la instancia y el reloj de la NIC física en el servidor host de la instancia.
  • Crea un panel que muestra la precisión de la sincronización de tiempo según la métrica.

Para realizar las tareas anteriores, ejecuta la siguiente secuencia de comandos. Una vez que se complete la ejecución de la secuencia de comandos, usa el panel que creó para ver los datos de precisión del reloj de las instancias de tu proyecto.

#!/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": "Chrony Accuracy",
  "dashboardFilters": [],
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 28,
        "width": 28,
        "widget": {
          "xyChart": {
            "chartOptions": {
              "displayHorizontal": false,
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "prometheusQuery": "(\n    histogram_quantile(\n        1,\n        sum by (le, instance_id, monitored_resource) (\n            increase(\n                logging_googleapis_com:user_phc_clock_max_error_bucket{monitored_resource=\"gce_instance\"}[1m]\n            )\n        )\n    ) * 1000000000\n)",
                  "unitOverride": "ns"
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "Clock Accuracy",
              "scale": "LINEAR"
            }
          }
        }
      }
    ]
  }
}
'

echo "$DASHBOARD_CONF" > /tmp/metrics-dashboard.json

gcloud monitoring dashboards create --project=${PROJECT_ID} --config-from-file=/tmp/metrics-dashboard.json

Usa las métricas de Cloud Monitoring

En las siguientes secciones, se describe cómo usar las métricas de Cloud Monitoring. Puedes usar cada una de las métricas disponibles para la sincronización de tiempo en las siguientes secciones.

Además de la consola de Google Cloud , puedes crear paneles personalizados, configurar alertas y consultar las métricas a través de la API de Monitoring.

Visualiza métricas en Monitoring

En esta sección, se describe cómo ver las métricas en Monitoring.

Console

Para consultar las métricas de un recurso supervisado usando el Explorador de métricas, haz lo siguiente:

  1. En la consola de Google Cloud , accede a la página  Explorador de métricas:

    Acceder al Explorador de métricas

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.

  2. En la barra de herramientas de la consola de Google Cloud , selecciona tu proyecto de Google Cloud . Para las configuraciones de App Hub, selecciona el proyecto host de App Hub o el proyecto de administración de la carpeta habilitada para apps.
  3. En el elemento Métrica, expande el menú Seleccionar una métrica, ingresa VM instance en la barra de filtros y, luego, usa los submenús para seleccionar un métrica y tipo de recurso específicos:
    1. En el menú Recursos activos, selecciona Instancia de VM.
    2. Para seleccionar una métrica, usa los menús Categorías de métricas activas y Métricas activas. Para obtener una lista de las métricas disponibles, consulta Métricas disponibles para la sincronización de hora.
    3. Haz clic en Aplicar.
  4. Para agregar filtros que quiten series temporales de los resultados de la consulta, usa el elemento Filtro.

  5. Configura cómo se ven los datos. De forma predeterminada, la pantalla agrega las métricas de todas las instancias y las NIC físicas. Para mostrar las métricas por NIC y por instancia, haz lo siguiente: En el elemento Agregación, selecciona Sin agregar.

    Para obtener más información sobre la configuración de un gráfico, consulta elige métricas cuando uses el Explorador de métricas.

Definir políticas de alertas

En esta sección, se describe cómo definir políticas de alertas.

Cuando configures la forma en que Monitoring evalúa una condición cuando dejan de llegar datos, te recomendamos la opción Los datos faltantes se tratan como valores que incumplen la condición de la política, que ayuda a detectar la pérdida de datos silenciosa. Sin embargo, este parámetro de configuración genera alertas de falsos positivos cuando se borra una instancia.

Console

Puedes crear políticas de alertas para supervisar los valores de las métricas y recibir notificaciones cuando estas infrinjan una condición.

  1. En la consola de Google Cloud , ve a la página Alertas :

    Ir a las Alertas

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.

  2. Si aún no creaste canales de notificaciones y deseas recibirlas, haz clic en Editar canales de notificaciones y agrega tus canales de notificaciones. Regresa a la página Alertas después de agregar tus canales.
  3. En la página Alertas, elige Crear política.
  4. Para elegir la métrica, expande el menú Seleccionar una métrica y, luego, haz lo siguiente:
    1. Para limitar el menú a las entradas relevantes, ingresa VM Instance en la barra de filtros. Si no hay resultados después de que filtres el menú, inhabilita el botón para activar o desactivar la opción Mostrar solo recursos y métricas activos.
    2. En Tipo de recurso, selecciona Instancia de VM.
    3. En Categoría de métrica, selecciona Instancia.
    4. En Métrica, selecciona una métrica de la lista en Métricas disponibles para la sincronización de tiempo.
    5. Selecciona Apply (Apply).
  5. Haz clic en Siguiente.
  6. Los parámetros de configuración de la página Configurar activador de alertas determinan cuándo se activa la alerta. Selecciona un tipo de condición y, si es necesario, índica un umbral. Para obtener más información, consulta Crea políticas de alertas de umbral de métrica.
  7. Haz clic en Siguiente.
  8. Opcional: Para agregar notificaciones a tu política de alertas, haz clic en Canales de notificaciones. En el diálogo, selecciona uno o más canales de notificaciones del menú y, luego, haz clic en Aceptar.
  9. Opcional: Actualiza el campo Duración del cierre automático de incidentes. Este determina cuándo Monitoring cierra los incidentes ante la ausencia de datos de métricas.
  10. Opcional: Haz clic en Documentación y, luego, agrega la información que deseas incluir en un mensaje de notificación.
  11. Haz clic en Nombre de la alerta y, luego, ingresa un nombre para la política de alertas.
  12. Haz clic en Crear política.
Para obtener más información, consulta Descripción general de alertas.

Crea paneles personalizados de Monitoring

En esta sección, se describe cómo crear paneles personalizados. Para ver un ejemplo específico que usa una consulta de PromQL, consulta Ejemplo: Crea un panel personalizado que combine métricas de precisión.

Console

  1. En la consola de Google Cloud , accede a la página Paneles :

    Acceder a Paneles

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.

  2. Haz clic en Crear panel.
  3. Actualiza el título del panel con un nombre descriptivo para tu panel (opcional).
  4. Para cada widget que desees agregar a tu panel, haz clic en Agregar widget, completa el diálogo y, luego, selecciona Aplicar.

    Para obtener más información sobre cómo agregar widgets, consulta las siguientes páginas:

Ejemplo: Crea un panel personalizado que combine métricas de precisión

Monitoring te permite crear paneles personalizados. Los paneles pueden usar cualquiera de las métricas disponibles para la sincronización de hora.

En esta sección, se incluye un ejemplo de consulta de PromQL que puedes pegar en un panel de Monitoring personalizado. Para obtener más información sobre PromQL, consulta PromQL para Cloud Monitoring.

La consulta de esta sección genera una métrica de precisión total combinando los siguientes elementos:

  • La métrica mide la precisión del reloj del sistema de la instancia en relación con el reloj de la NIC física (phc-clock-max-error).
  • Es la métrica que mide la precisión del reloj de la NIC física en relación con la hora UTC (firefly_utc_traceable_uncertainty).

Console

  1. Sigue los pasos para acceder al editor de código de PromQL.

  2. Ingresa la siguiente consulta en el 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}])
     )
    )
    + 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}])
    )
    
  3. Haga clic en Ejecutar consulta.

Para obtener más información sobre cómo usar el editor y guardar tus gráficos, consulta Usa el editor de código para PromQL.

Solucionar problemas

Es posible que recibas resultados inesperados cuando verifiques la configuración de chrony, como el siguiente resultado que indica que chrony no se pudo iniciar:

506 Cannot talk to daemon

Para solucionar problemas, consulta los registros de journald en busca de chrony:

journalctl -u chronyd.service

En el siguiente ejemplo de resultado, se muestra un error que se produce si aplicas una configuración destinada a chrony 4.7 y versiones posteriores mientras se instala una versión anterior de chrony en tu instancia.

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.

Limitaciones

Consulta las siguientes limitaciones:

  • Las métricas firefly_utc_traceable_uncertainty y firefly_nic_sync_healthy solo están disponibles para las instancias de U4P y U4C. Estas métricas no están disponibles para las instancias U4S.