为 U4 Compute Engine 实例配置准确时间

本页面介绍了如何为 U4 Compute Engine 实例配置准确时间,以及如何配置监控,以便查看时间同步的准确性。

工作原理

Google Cloud 超低延迟 (ULL) 解决方案使用 Firefly 时钟同步协议来提供纳秒级同步。Firefly 会自动执行以下操作:

  • 执行内部同步,以将所有 U4 实例宿主服务器的物理网卡 (NIC) 时钟彼此同步。
  • 执行外部同步,以将所有 U4 实例宿主服务器的物理 NIC 时钟同步到协调世界时 (UTC)。

由于运行 U4 实例的主机服务器的物理 NIC 时钟会自动通过 Firefly 进行同步,因此您可以通过将实例的系统时钟同步到其主机服务器的物理 NIC 时钟来为实例配置准确的时间。

如需详细了解 Firefly,请参阅以下 Google Cloud 博文:了解 Firefly 时钟同步协议

准备工作

在为 U4 Compute Engine 实例配置准确时间之前,您必须满足以下要求。

创建 U4 实例

如果您尚未创建 U4 Compute Engine 实例,请创建一个。请参阅与您的使用场景对应的步骤:

确保没有其他时钟同步服务正在运行

本页面上的过程使用 chrony 作为推荐的时钟同步客户端。在开始之前,请确保您的实例上没有运行其他时钟同步服务,例如 ntpdsystemd-timesyncdphc2sys。与这些服务进行意外互动可能会导致 chrony 配置出现错误。

chrony 版本 4.7 及更高版本中,您可以运行以下命令来检查其他时钟同步服务的 chronyd 警告日志:

journalctl -u chronyd

如果另一个时钟同步服务正在运行,输出会包含一条警告消息,例如 System clock interference detected (another NTP client?)

配置 chrony 以仅在网络驱动程序稳定后加载

在某些情况下,systemd 可能会在网络接口驱动程序完成初始化之前加载 chrony,这可能会导致 chrony 无法启动,因为它无法初始化 PTP 硬件时钟 (PHC) 设备。

为避免上述问题,请替换 chronysystemd 单元文件,以等待 PHC 设备就绪:

  1. 运行 edit 命令:

    systemctl edit chronyd
    
  2. 添加与您的实例类型对应的替换项:

    • 对于 U4P 和 U4C 实例:

      [Unit]
      After=dev-ptp0.device dev-ptp1.device dev-ptp2.device
      Requires=dev-ptp0.device dev-ptp1.device dev-ptp2.device
      
    • 对于 U4S 实例:

      [Unit]
      After=dev-ptp0.device
      Requires=dev-ptp0.device
      
  3. 重启服务。虽然您之前运行的 systemctl edit 命令会自动重新加载守护程序,但我们建议您运行以下命令,以确保 chrony 在您做出更改后正常运行。

    systemctl restart chronyd
    

获取网络接口名称

获取由客机操作系统分配的实例虚拟网络接口 (vNIC) 的名称。虽然 Google Cloud 使用 nic0nic1 等名称,但客机操作系统命名格式有所不同,例如 enp22s0f0ens8f0

如需按顺序列出 vNIC 名称,请运行以下命令:

find /sys/class/net -type l -not -lname '*virtual*' -printf '%l %f\n' | sort | awk '{print $2}'

chrony 配置为使用 Firefly 同步的物理 NIC 时钟

本部分介绍如何配置 chrony,以将实例的系统时钟与实例宿主服务器上已由 Firefly 同步的物理 NIC 时钟同步。

U4 实例的虚拟网络接口 (vNIC)(如客机操作系统中的 enp22s0f0)会映射到实例宿主服务器上的物理 NIC。给定的 vNIC 可以通过使用相应的 PTP 硬件时钟 (PHC) 设备来访问物理 NIC 时钟:

  • Linux 中的 PHC 设备名称采用以下格式:/dev/ptpNUMBER,其中 NUMBER 由 Linux 内核根据设备初始化顺序确定。 例如,请参阅以下 PHC 设备名称:/dev/ptp0/dev/ptp1/dev/ptp2

  • 如需指定物理 NIC 时钟作为同步源,chrony 配置必须使用或解析为相应的 PHC 设备。

以下各部分分别提供了根据上述要求配置 chrony 的示例。请参阅与您的实例类型和 chrony 版本对应的部分:

在 U4P 和 U4C 实例上配置 chrony 4.7 及更高版本

chrony 4.7 及更高版本支持将 vNIC 名称指定为时钟源,并自动将其解析为表示物理 NIC 时钟的相应 PTP 硬件时钟 (PHC) 设备。

如需在 U4P 或 U4C 实例上配置 chrony 版本 4.7 及更高版本,请执行以下操作:

  1. 将以下内容添加到 chrony 配置文件 /etc/chrony.conf 中。 该文件必须仅包含以下配置。确保您移除或覆盖文件的所有预先存在的内容。

    # 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

    NIC0NIC1NIC2 替换为您之前获得的相应名称。如有需要,请参阅获取网络接口名称

  2. 如需应用配置,请运行以下命令来重启 chrony

    systemctl restart chronyd
    

    chrony 使用 NIC1 的 PTP 硬件时钟作为时间源,将时钟同步统计信息记录到 /var/log/chrony/tracking.log

在 U4P 和 U4C 实例上配置 chrony 4.6.1 及更早版本

chrony 版本 4.6.1 及更低版本要求您在配置文件中手动指定 PTP 硬件时钟 (PHC) 设备名称。

如需在 U4P 或 U4C 实例上配置 chrony 版本 4.6.1 及更低版本,请执行以下操作:

  1. 获取与 vNIC 关联的 PHC 设备的索引号。以下示例使用第一个 vNIC。

    ethtool -T NIC0
    

    NIC0 替换为您之前获得的相应名称,例如 enp22s0f0。如有需要,请参阅获取网络接口名称

    1. 查看 PTP Hardware Clock:NUMBER 的输出

      此示例输出显示了 PTP Hardware Clock: 1,它对应于 /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
      
  2. 将以下内容添加到 chrony 配置文件 /etc/chrony.conf 中。 该文件必须仅包含以下配置。确保您移除或覆盖文件的所有预先存在的内容。

    上一步中的 ethtool 输出显示 enp22s0f0 使用 /dev/ptp1。以下示例通过指定 refclock PHC /dev/ptp1:nocrossts poll -1 将系统时钟同步到 enp22s0f0 的相应物理 NIC 时钟。

    # 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. 如需应用配置,请运行以下命令来重启 chrony

    systemctl restart chronyd
    

    chrony 使用 enp22s0f0 的 PTP 硬件时钟作为时间源,将时钟同步统计信息记录到 /var/log/chrony/tracking.log

在 U4S 实例上配置 chrony 4.7 及更高版本

我们建议您为 U4S 实例使用 chrony 版本 4.7 及更高版本。使用旧版本可能会导致频繁出错,因为虚拟机 (VM) 实例的 Compute Engine 时钟同步设备 (ptp_kvm) 可能会导致 PTP 硬件时钟 (PHC) 设备的索引号发生变化。

此 U4S 实例的配置示例与用于 U4P 和 U4C 实例的配置示例类似,但存在以下差异:

  • 此示例包含单个 vNIC。一个 U4S 实例可以有多个 vNIC,但所有 vNIC 都由同一个物理 NIC 提供支持,并访问同一个物理 NIC 时钟。
  • 精确时间测量 (PTM) 不可用。

如需在 U4S 实例上配置 chrony 版本 4.7 及更高版本,请执行以下操作:

  1. 将以下内容添加到 chrony 配置文件 /etc/chrony.conf 中。 该文件必须仅包含以下配置。确保您移除或覆盖文件的所有预先存在的内容。

    # 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

    NIC0 替换为您之前获得的相应名称,例如 enp22s0f0。如有需要,请参阅获取网络接口名称

  2. 如需应用配置,请运行以下命令来重启 chrony

    systemctl restart chronyd
    

    chrony 使用 NIC0 的 PTP 硬件时钟作为时间源,将时钟同步统计信息记录到 /var/log/chrony/tracking.log

验证 chrony 配置

如需验证 chrony 是否已正确配置,请运行以下命令:

chronyc sourcestats

成功配置后,系统会输出类似以下内容:

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

如果该命令返回意外输出,请参阅问题排查

修改 chrony 配置

如果您想修改将实例的系统时钟同步到的物理 NIC,可以按如下方式更新配置:

  1. 从包含您要使用相应物理 NIC 时钟的 vNIC 名称的行中移除 noselect
  2. noselect 添加到包含您要停止使用相应物理 NIC 时钟的 vNIC 名称的行中。
  3. 通过重启 chronyd 应用新配置:systemctl restart chronyd

监控时间同步

本部分介绍了可用于时间同步的指标,以及如何使用这些指标来监控时间同步准确性。

可用于时间同步的指标

您可以使用以下指标来监控时间同步:

衡量 可用指标和说明
实例系统时钟到物理 NIC 时钟 logging.googleapis.com/user/phc-clock-max-error

此指标用于衡量实例系统时钟与其宿主服务器上的物理 NIC 时钟同步的准确性。

您必须通过从 Ops Agent 收集此指标并创建基于日志的指标来配置此指标,如为实例系统时钟配置自定义指标中所述,此操作还会创建自定义信息中心。此外,您还可以在使用 Cloud Monitoring 指标中所述的程序中使用此指标。

将物理 NIC 时钟设置为 UTC compute.googleapis.com/instance/time/firefly_utc_traceable_uncertainty

此指标表示物理 NIC 时钟与实际世界协调时间 (UTC) 相比的最大误差界限。系统会自动向 Cloud Monitoring 报告。

您可以按照使用 Cloud Monitoring 指标中所述查看此指标、定义提醒政策和创建自定义信息中心。

物理 NIC 时钟的一般健康状况 compute.googleapis.com/instance/time/firefly_nic_sync_healthy

此布尔值指标表示物理 NIC 时钟的总体健康状况,包括 NIC 到 NIC 和 NIC 到 UTC 的同步。系统会自动向 Cloud Monitoring 报告这些指标。

您可以按照使用 Cloud Monitoring 指标中所述查看此指标、定义提醒政策和创建自定义信息中心。

如需了解 Cloud Monitoring 保留指标数据的时间长度,请参阅 Cloud Monitoring 配额和限制中的数据保留。如需了解如何导出指标以进行长期分析,请参阅 Cloud 架构中心文档中的 Cloud Monitoring 指标导出

为实例系统时钟配置自定义指标

本部分提供了一个监控配置示例,该配置可执行以下操作:

  • 配置 Ops Agent 以从您的实例收集 chrony 的日志,从而提高同步准确性
  • 将 Cloud Monitoring 配置为从项目中的所有实例注入相应的日志作为基于日志的指标

在实例上配置 Google Cloud Ops Agent

如需配置 Ops Agent 以收集监控所需的指标,请执行以下操作:

  1. 如果您尚未在实例上安装 Ops Agent,请先安装。

  2. 将以下配置添加到 /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. 通过运行以下命令重启 Ops Agent:

    systemctl restart google-cloud-ops-agent
    

在项目中配置基于日志的指标和信息中心

如需为项目中的实例配置时间同步监控,请运行以下日志记录和信息中心设置脚本。此脚本可帮助您完成以下任务:

  • 它会为与实例项目关联的服务账号设置适当的权限。该脚本假设实例使用的服务账号是项目的默认服务账号。如果需要,请将 SERVICE_ACCOUNT_EMAIL 替换为其他值。
  • 它会创建一个基于日志的指标,用于衡量实例的系统时钟与实例宿主服务器上的物理 NIC 时钟之间的时间同步准确性。
  • 它会创建一个信息中心,用于根据相应指标显示时间同步的准确性。

如需完成上述任务,请运行以下脚本。脚本运行完毕后,使用其创建的控制面板查看项目实例的时钟准确度数据。

#!/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

使用 Cloud Monitoring 指标

以下部分介绍了如何使用 Cloud Monitoring 指标。您可以在以下各部分中使用可用于时间同步的各项指标

除了 Google Cloud 控制台,您还可以通过 Monitoring API 创建自定义信息中心、设置提醒和查询指标。

在 Monitoring 中查看指标

本部分介绍了如何在 Monitoring 中查看指标。

控制台

如需使用 Metrics Explorer 查看受监控资源的指标,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Metrics Explorer 页面:

    进入 Metrics Explorer

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 在 Google Cloud 控制台的工具栏中,选择您的 Google Cloud 项目。对于 App Hub 配置,请选择 App Hub 宿主项目或已启用应用的文件夹的管理项目。
  3. 指标元素中,展开选择指标菜单,在过滤栏中输入 VM instance,然后使用子菜单选择一个特定资源类型和指标:
    1. 活跃资源菜单中,选择虚拟机实例
    2. 如需选择指标,请使用活跃指标类别活跃指标菜单。 如需查看可用指标的列表,请参阅时间同步的可用指标
    3. 点击应用
  4. 如需添加用于从查询结果中移除时序的过滤条件,请使用过滤条件元素

  5. 配置数据的查看方式。 默认情况下,显示屏会汇总所有实例和物理网卡的指标。 如需显示每个 NIC、每个实例的指标,请执行以下操作:在汇总元素中,选择未汇总

    如需详细了解如何配置图表,请参阅使用 Metrics Explorer 时选择指标

定义提醒政策

本部分介绍了如何定义提醒政策。

在配置 Monitoring 在数据停止到达时如何评估条件时,我们建议选择缺失的数据点被视为违反政策条件的值,这有助于捕获静默数据丢失。不过,此设置会在删除实例时导致误报。

控制台

您可以创建提醒政策来监控指标的值,当这些指标违反条件时便会通知您。

  1. 在 Google Cloud 控制台中,前往 提醒页面:

    进入提醒

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 如果您尚未创建通知渠道并希望收到通知,请点击修改通知渠道并添加通知渠道。添加渠道后,返回到提醒页面。
  3. 提醒页面中,点击创建政策
  4. 如需选择指标,请展开选择指标菜单,然后执行以下操作:
    1. 如需将菜单限制为相关条目,请在过滤条件栏中输入 VM Instance。如果过滤菜单后没有显示任何结果,请停用仅显示活跃的资源和指标切换开关。
    2. 资源类型部分,选择虚拟机实例
    3. 指标类别部分,选择实例
    4. 对于指标,请从可用于时间同步的指标列表中选择一个指标。
    5. 选择应用
  5. 点击下一步
  6. 配置提醒触发器页面中的设置决定了何时触发提醒。 选择条件类型,并在必要时指定阈值。如需了解详情,请参阅创建指标阈值提醒政策
  7. 点击下一步
  8. 可选:如需将通知添加到您的提醒政策中,请点击通知渠道。在对话框中,从菜单中选择一个或多个通知渠道,然后点击确定
  9. 可选:更新突发事件自动关闭持续时间。此字段用于确定在缺少指标数据的情况下 Monitoring 何时关闭突发事件。
  10. 可选:点击文档,然后添加您希望包含在通知消息中的任何信息。
  11. 点击提醒名称,然后输入提醒政策的名称。
  12. 点击创建政策
如需了解详情,请参阅提醒概览

创建自定义 Monitoring 信息中心

本部分介绍如何创建自定义信息中心。如需查看使用 PromQL 查询的具体示例,请参阅示例:创建可合并准确率指标的自定义信息中心

控制台

  1. 在 Google Cloud 控制台中,前往  信息中心页面:

    前往信息中心

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 点击创建信息中心
  3. 可选:使用信息中心的描述性名称更新信息中心标题。
  4. 对于要添加到信息中心的每个 widget,请点击添加 widget,完成对话框,然后选择应用

    如需详细了解如何添加微件,请参阅以下页面:

示例:创建可合并准确率指标的自定义信息中心

Monitoring 允许您创建自定义信息中心。信息中心可以使用任何可用于时间同步的指标

本部分包含一个示例 PromQL 查询,您可以将其粘贴到自定义 Monitoring 信息中心内。如需详细了解 PromQL,请参阅 PromQL for Cloud Monitoring

本部分中的查询通过组合以下各项来生成总体准确率指标:

  • 该指标用于衡量实例系统时钟相对于物理 NIC 时钟 (phc-clock-max-error) 的准确性
  • 用于衡量物理 NIC 时钟相对于 UTC 的准确性的指标 (firefly_utc_traceable_uncertainty)

控制台

  1. 按照步骤访问 PromQL 代码编辑器

  2. 在文本字段中输入以下查询:

    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. 点击 Run Query

如需详细了解如何使用编辑器和保存图表,请参阅使用 PromQL 代码编辑器

问题排查

验证 chrony 配置时,您可能会收到意外的输出,例如以下输出表明 chrony 启动失败:

506 Cannot talk to daemon

为了帮助您排查问题,请检查 chronyjournald 日志:

journalctl -u chronyd.service

以下示例输出显示了在实例上安装了旧版 chrony 的情况下,应用旨在用于 chrony 4.7 及更高版本的配置时发生的错误。

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.