為 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 執行個體。請參閱與您用途相符的程序:
- 如要建立 U4P 或 U4C 執行個體,請參閱「建立 ULL Compute Engine 執行個體」。
- 如要建立 U4S 執行個體,請參閱「 為輔助工作負載建立非 ULL Compute Engine 執行個體」。
確認沒有其他時鐘同步服務正在執行
本頁的程序會使用 chrony 做為建議的時鐘同步用戶端。開始前,請確認執行個體上沒有其他時鐘同步服務正在執行,例如 ntpd、systemd-timesyncd 或 phc2sys。與這些服務進行非預期的互動,可能會導致 chrony 設定發生錯誤。
在 chrony 4.7 以上版本中,您可以執行下列指令,檢查其他時鐘同步服務的 chronyd 警告記錄:
journalctl -u chronyd
如果正在執行其他時鐘同步服務,輸出內容會包含類似下列內容的警告訊息:System clock interference detected (another NTP client?)。
設定 chrony,確保網路驅動程式穩定後再載入
在某些情況下,systemd 可能會在網路介面驅動程式完成初始化之前載入 chrony,導致 chrony 無法啟動,因為它無法初始化 PTP 硬體時鐘 (PHC) 裝置。
為避免發生上述問題,請覆寫 chrony 的 systemd 單位檔案,等待 PHC 裝置準備就緒:
執行編輯指令:
systemctl edit chronyd
加入與執行個體類型對應的覆寫:
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
重新啟動服務。雖然您先前執行的
systemctl edit指令會自動重新載入 Daemon,但我們建議您執行下列指令,確保chrony在變更後正常運作。systemctl restart chronyd
取得網路介面名稱
取得訪客 OS 指派的執行個體虛擬網路介面 (vNIC) 名稱。 Google Cloud 使用的名稱包括 nic0 和 nic1,但客體 OS 的命名格式不同,例如 enp22s0f0 和 ens8f0。
如要依序列出 vNIC 名稱,請執行下列指令:
find /sys/class/net -type l -not -lname '*virtual*' -printf '%l %f\n' | sort | awk '{print $2}'
將 chrony 設為使用 Firefly 同步的實體 NIC 時鐘
本節說明如何設定 chrony,將執行個體的系統時鐘與執行個體主機伺服器上的實體 NIC 時鐘同步處理,而該時鐘已由 Firefly 同步處理。
如訪客 OS (例如 enp22s0f0) 所示,U4 執行個體的虛擬網路介面 (vNIC) 會對應至執行個體主機伺服器上的實體 NIC。特定 vNIC 可使用對應的 PTP 硬體時鐘 (PHC) 裝置存取實體 NIC 時鐘:
Linux 中的 PHC 裝置名稱格式如下:
/dev/ptpNUMBER,其中NUMBER是由 Linux 核心根據裝置初始化順序決定。 例如:/dev/ptp0、/dev/ptp1、/dev/ptp2。如要將實體 NIC 時鐘指定為同步來源,
chrony設定必須使用或解析為對應的 PHC 裝置。
以下各節提供範例,說明如何根據上述規定設定 chrony。請參閱與執行個體類型和 chrony 版本對應的部分:
- 在 U4P 和 U4C 執行個體上設定
chrony4.7 以上版本 - 在 U4P 和 U4C 執行個體上設定
chrony4.6.1 和更早版本 - 在 U4S 執行個體上設定
chrony4.7 以上版本
在 U4P 和 U4C 執行個體上設定 chrony 4.7 以上版本
chrony 4.7 以上版本支援將 vNIC 名稱指定為時鐘來源,並自動解析為代表實體 NIC 時鐘的對應 PTP 硬體時鐘 (PHC) 裝置。
如要在 U4P 或 U4C 執行個體上設定 chrony 4.7 以上版本,請按照下列步驟操作:
在
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
將
NIC0、NIC1、NIC2替換為先前取得的對應名稱。如有需要,請參閱「取得網路介面名稱」。如要套用設定,請執行下列指令來重新啟動
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 以下版本,請按照下列步驟操作:
取得與 vNIC 相關聯的 PHC 裝置索引編號。下列範例使用第一個 vNIC。
ethtool -T NIC0
將
NIC0替換為先前取得的對應名稱,例如enp22s0f0。如有需要,請參閱「取得網路介面名稱」。檢查
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
在
chrony設定檔中新增下列內容:/etc/chrony.conf。 檔案只能包含下列設定。請務必移除或覆寫檔案中的所有現有內容。上一個步驟中的
ethtool輸出內容顯示enp22s0f0使用/dev/ptp1。以下範例會指定refclock PHC /dev/ptp1:nocrossts poll -1,將系統時鐘與對應的實體 NIC 時鐘同步enp22s0f0: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
如要套用設定,請執行下列指令來重新啟動
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 以上版本,請按照下列步驟操作:
在
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。如有需要,請參閱「取得網路介面名稱」。如要套用設定,請執行下列指令來重新啟動
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,請按照下列步驟更新設定:
- 從包含 vNIC 名稱的行中移除
noselect,您要使用對應的實體 NIC 時鐘。 - 在包含要停止使用對應實體 NIC 時脈的 vNIC 名稱的行中,加入
noselect。 - 重新啟動
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 時鐘與實際世界標準時間相比的最大誤差範圍。系統會自動向 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 Architecture Center 說明文件中的「Cloud Monitoring 指標匯出作業」。
設定執行個體系統時鐘的自訂指標
本節提供監控設定範例,可執行下列操作:
- 設定 Ops Agent,從執行個體收集
chrony的記錄,以瞭解同步準確度 - 設定 Cloud Monitoring,從專案中的所有執行個體擷取對應的記錄,做為記錄指標
在執行個體上設定 Google Cloud Ops Agent
如要設定 Ops Agent 收集監控所需的指標,請按照下列步驟操作:
如果尚未在執行個體上安裝 Ops Agent,請先完成安裝。
在
/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]
執行下列指令,重新啟動 Ops Agent:
systemctl restart google-cloud-ops-agent
在專案中設定記錄指標和資訊主頁
如要為專案中的執行個體設定時間同步監控,請執行下列記錄和資訊主頁設定指令碼。這個指令碼可協助您完成下列工作:
- 並為與執行個體專案相關聯的服務帳戶設定適當權限。指令碼會假設執行個體使用的服務帳戶是專案的預設服務帳戶。視需要將
SERVICE_ACCOUNT_EMAIL替換成其他值。 - 這項指標會根據記錄檔建立,用於測量執行個體系統時鐘與執行個體主機伺服器上實體 NIC 時鐘之間的時間同步準確度。
- 系統會根據自訂記錄檔指標和可用的 Firefly 指標,建立資訊主頁,顯示執行個體的個別和合併時間同步準確度。
如要完成上述工作,請執行下列指令碼。指令碼執行完畢後,請使用指令碼建立的資訊主頁,查看專案例項的時鐘準確度資料。
#!/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
使用 Cloud Monitoring 指標
以下章節說明如何使用 Cloud Monitoring 指標。您可以在下列各節中使用可用的時間同步指標。
除了 Google Cloud 控制台,您也可以透過 Monitoring API 建立自訂資訊主頁、設定快訊及查詢指標。
在 Monitoring 中查看指標
本節說明如何在「監控」中查看指標。
控制台
如要使用 Metrics Explorer 查看受監控資源的指標,請執行下列操作:
-
前往 Google Cloud 控制台的 leaderboard「指標探索器」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 在 Google Cloud 控制台的工具列中,選取 Google Cloud 專案。 如要進行 App Hub 設定,請選取 App Hub 主專案或已啟用應用程式的資料夾管理專案。
- 在「指標」元素中,展開「選取指標」選單,
在篩選列中輸入
VM instance, 然後使用子選單選取特定資源類型和指標:- 在「Active resources」(有效資源) 選單中,選取「VM instance」(VM 執行個體)。
- 如要選取指標,請使用「使用中的指標類別」和「使用中的指標」選單。 如需可用指標的清單,請參閱「時間同步的可用指標」。
- 按一下「套用」。
如要新增篩選器,從查詢結果中移除時間序列,請使用「Filter」元素。
- 設定資料的查看方式。
根據預設,顯示畫面會匯總所有執行個體和實體 NIC 的指標。
如要顯示每個 NIC、每個執行個體的指標,請在「Aggregation」(匯總) 元素中選取「Unaggregated」(未匯總)。
如要進一步瞭解如何設定圖表,請參閱「使用 Metrics Explorer 時選取指標」。
定義快訊政策
本節說明如何定義警告政策。
設定監控功能在資料停止傳送時評估條件的方式時,建議選取「缺少資料點會視為違反政策條件的值」選項,有助於擷取無聲資料遺失。不過,如果刪除執行個體,這項設定會導致誤判快訊。
控制台
您可以建立警告政策來監控指標值,並在指標違反條件時收到通知。
-
前往 Google Cloud 控制台的 notifications「Alerting」(警告) 頁面:
如果是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 如果尚未建立通知管道,但想收到通知,請按一下「Edit Notification Channels」(編輯通知管道),新增通知管道。新增管道後,請返回「Alerting」(警告) 頁面。
- 在「Alerting」(警告) 頁面,選取「Create policy」(建立政策)。
- 如要選取指標,請展開「Select a metric」(選取指標) 選單,執行下列步驟:
- 點選「下一步」。
- 「Configure alert trigger」(設定警告觸發條件) 頁面中的設定會決定警告觸發時機。選取條件類型,視需要指定門檻。詳情請參閱「建立指標門檻警告政策」。
- 點選「Next」(下一步)。
- 選用:如要新增警告政策的通知,請按一下「Notification channels」(通知管道)。在對話方塊中,從選單選取一或多個通知管道,然後按一下「OK」(確定)。
- 選用:更新「Alert autoclose duration」(快訊自動關閉期限)。這個欄位會決定在缺少指標資料時,監控服務何時會關閉快訊。
- 選用:按一下「Documentation」(說明文件),新增要納入通知訊息的資訊。
- 按一下「Alert name」(警告名稱),輸入警告政策的名稱。
- 點按「建立政策」。
建立自訂監控資訊主頁
本節說明如何建立自訂資訊主頁。如需使用 PromQL 查詢的具體範例,請參閱「範例:建立結合準確率指標的自訂資訊主頁」。
控制台
-
在 Google Cloud 控制台中,前往「Dashboards」(資訊主頁) 頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 按一下「建立資訊主頁」。
- 選用:更新資訊主頁標題,為資訊主頁加上描述性名稱。
針對要新增至資訊主頁的每個小工具,按一下「新增小工具」, 完成對話方塊,然後選取「套用」。
如要進一步瞭解如何新增小工具,請參閱下列頁面:
範例:建立結合準確度指標的自訂資訊主頁
Monitoring 可助您建立自訂資訊主頁。資訊主頁可使用時間同步處理的任何可用指標。
這個部分包含 PromQL 查詢範例,您可以將其貼到自訂 Monitoring 資訊主頁。如要進一步瞭解 PromQL,請參閱「Cloud Monitoring 的 PromQL」。
本節中的查詢會結合下列項目,產生總準確度指標:
- 用來測量執行個體系統時鐘與實體 NIC 時鐘準確度的指標 (
phc-clock-max-error) 用來測量實體 NIC 時鐘與世界標準時間 (UTC) 準確度的指標 (
firefly_utc_traceable_uncertainty)
控制台
按照步驟存取 PromQL 的程式碼編輯器。
在文字欄位中輸入下列查詢:
( 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}]) )按一下 [Run Query] (執行查詢)。
如要進一步瞭解如何使用編輯器及儲存圖表,請參閱「使用 PromQL 的程式碼編輯器」。
疑難排解
驗證 chrony 設定時,您可能會收到非預期的輸出內容,例如以下輸出內容表示 chrony 無法啟動:
506 Cannot talk to daemon
如要進一步排解問題,請檢查 journald 的 chrony 記錄檔:
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.
已知問題
為 U4 執行個體設定準確時間時,可能會發生下列已知問題:
-
只有在執行個體生命週期內觀察到非零流量的網路介面,才會回報準確度指標。如要解決這個問題,您可以將
nic0設為同步處理的時鐘來源,確保遙測功能正常運作。或者,請確保所有網路介面都有流量。