Google Cloud 的 Agent for SAP 疑難排解指南

本指南說明如何解決 Google Cloud的 Agent for SAP 3.8 版 (最新版)相關問題。

如需 SAP 的疑難排解和支援資訊,請參閱下列 SAP 注意事項:

記錄

請查看作業系統專屬目錄中的記錄。

如要查看 Google Cloud的 Agent for SAP 記錄,請前往下列路徑:

Linux

/var/log/google-cloud-sap-agent.log

Windows

C:\Program Files\Google\google-cloud-sap-agent\logs\google-cloud-sap-agent.log

如果您已啟用 Google Cloud的 SAP 代理程式Backint 功能,請查看下列記錄:

  • SAP HANA backup.log 檔案,其中包含 SAP HANA 備份與復原作業的相關資訊。
  • SAP HANA backint.log 檔案,其中包含對備份介面的呼叫,該介面會由代理程式和其他外部備份工具的 Backint 功能使用。
  • Google Cloud的 Agent for SAP 的 Backint 記錄檔:/var/log/google-cloud-sap-agent/backint.log。這個檔案包含啟用 Backint 功能的時間、相關作業事件,以及與 Cloud Storage 和相關設定或權限問題的通訊錯誤指示資訊。
  • Cloud Logging 中的 Google Cloud 記錄,可能包含與 Google Cloud的 SAP 代理程式所使用的服務帳戶相關的錯誤。如要查看這些記錄,請前往 Google Cloud 控制台的「Logs Explorer」頁面。

常見問題

以下各節說明使用Google Cloud的 SAP 服務代理時常見的問題、原因和解決方法。

問題:IAM 權限不足

問題: Google Cloud的 Agent for SAP 記錄顯示 IAM 權限不足錯誤。

原因:代理程式使用的服務帳戶沒有必要的 IAM 權限,無法存取 Cloud Monitoring API 或 Workload Manager API,如果您使用代理程式的Backint 功能,則權限不足,無法存取 Cloud Storage 值區。

解決方法:如要解決這個問題,請執行下列步驟:

  1. Google Cloud 控制台的 VM 執行個體詳細資料頁面中,記下服務帳戶名稱。例如:sap-example@example-project-123456.iam.gserviceaccount.com

  2. 前往「IAM 與管理」頁面,確認所選服務帳戶具備下列 IAM 角色:

    功能 必要的 IAM 角色
    SAP Host Agent 指標收集
    程序監控指標收集
    代理程式健康指標收集
    Workload Manager 評估指標收集
    SAP HANA 監控指標收集
    以 Backint 為基礎的 SAP HANA 備份和復原

    詳情請參閱「Cloud Storage 必要權限」。

    以磁碟快照為基礎的 SAP HANA 備份和復原作業 這項功能的 IAM 權限取決於 SAP 系統的磁碟設定。如需更多資訊,請參閱「使用磁碟快照備份及復原 SAP HANA」一文中的「設定權限」一節。

如要進一步瞭解Google Cloud的 SAP 代理程式所需的驗證方式,請參閱「驗證和存取權」。

如要確認 Cloud Monitoring 代理程式所需的權限,請參閱下列 Monitoring 說明文件:

問題:Compute Engine 執行個體的服務帳戶存取範圍不正確

問題:如果您限制主機運算執行個體的存取範圍,Google Cloud的 Agent for SAP 記錄可能會顯示 IAM 權限不足的錯誤。

原因: Google Cloud的 Agent for SAP 需要主機運算執行個體的最低 Cloud API 存取範圍。當服務帳戶沒有必要的存取範圍時,就會發生這項錯誤。

解決方法: 存取權範圍是為運算執行個體指定權限的傳統方法。Compute Engine 建議您設定運算執行個體,允許所有 Cloud API 的所有存取權範圍,並僅使用服務帳戶的 IAM 權限來控管資源的存取權。 Google Cloud

如要解決這個問題,最佳做法是在運算執行個體上設定所有 cloud-platform 存取權範圍,然後透過 IAM 角色安全地限制服務帳戶的 API 存取權。例如:

  • https://www.googleapis.com/auth/cloud-platform

如果您限制運算執行個體的存取權範圍,則必須確保主機運算執行個體具有下列存取權範圍:

  • https://www.googleapis.com/auth/source.read_write
  • https://www.googleapis.com/auth/compute
  • https://www.googleapis.com/auth/servicecontrol
  • https://www.googleapis.com/auth/service.management.readonly
  • https://www.googleapis.com/auth/logging.admin
  • https://www.googleapis.com/auth/monitoring
  • https://www.googleapis.com/auth/trace.append
  • https://www.googleapis.com/auth/devstorage.full_control

如果您已啟用程序監控指標或 SAP HANA 監控指標的收集功能,則主機運算執行個體的存取權範圍也必須具備寫入權限,才能將指標資料發布至 Google Cloud 專案:

  • https://www.googleapis.com/auth/monitoring.write

如要變更存取權範圍,您需要停止雲端運算執行個體、進行變更,然後重新啟動雲端運算執行個體。如需操作說明,請參閱 Compute Engine 說明文件。在此情況下,您無須針對身分與存取權管理角色的權限進行任何變更。

問題:SAP Host Agent 遺失或不正確

問題: Google Cloud的 Agent for SAP 記錄顯示 SAP Host Agent 遺失或錯誤。

原因:未安裝 SAP Host Agent,或未安裝 SAP Host Agent 所需的最低修補程式等級。 Google Cloud的 SAP 代理程式必須安裝在 SAP 系統中,且維持 Host Agent 所需的最低修補程式等級,才能正常運作。

解決方法:如要解決這個問題,請安裝必要版本的 SAP Host Agent。如需安裝 SAP Host Agent 的操作說明,請參閱 SAP 說明文件

如需 SAP Host Agent 的版本必要條件,請參閱下列 SAP 注意事項:

問題:無法安裝 Google Cloud的 Agent for SAP

問題:執行套件管理工具安裝指令 (例如 yumzyppergooget) 時,代理程式安裝作業失敗,或您看到下列錯誤訊息:Package matching google-cloud-sap-agent-VERSION_NUMBER already installed. Checking for update.

原因:代理程式安裝失敗,原因如下:

  • 您將代理程式降級至非最新版本,且運算執行個體會在較舊版本的 RHEL for SAP 上執行,例如 7.9。
  • 已建立主機代管代理程式的 Compute 執行個體,但沒有外部 IP 位址。

解決方法:如要解決這個問題,請視情況採取下列任一做法:

  • 如果您想將代理程式執行個體降級至非最新版本,且運算執行個體在較舊版本的 RHEL for SAP (例如 7.9) 上執行,請執行下列指令:

    RHEL

    sudo tee /etc/yum.repos.d/google-cloud-sap-agent.repo << EOM
    [google-cloud-sap-agent]
    name=Google Cloud Agent for SAP
    baseurl=https://packages.cloud.google.com/yum/repos/google-cloud-sap-agent-el$(cat /etc/redhat-release | cut -d . -f 1 | tr -d -c 0-9)-x86_64
    enabled=1
    gpgcheck=1
    repo_gpgcheck=0
    gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
    EOM
    sudo yum downgrade google-cloud-sap-agent-VERSION_NUMBER.x86_64

    SLES15

    sudo zypper addrepo --refresh https://packages.cloud.google.com/yum/repos/google-cloud-sap-agent-sles15-x86_64 google-cloud-sap-agent
    sudo zypper install google-cloud-sap-agent-VERSION_NUMBER.x86_64

    SLES 12

    sudo zypper addrepo --refresh https://packages.cloud.google.com/yum/repos/google-cloud-sap-agent-sles12-x86_64 google-cloud-sap-agent
    sudo zypper install google-cloud-sap-agent-VERSION_NUMBER.x86_64

    VERSION_NUMBER 替換為要安裝的代理程式版本號碼,例如 3.1-606637668。如要瞭解可安裝的代理程式版本,請參閱「列出所有可用的代理程式版本」。

  • 如果代管代理程式的運算執行個體沒有外部 IP 位址,請設定 NAT 閘道,讓主機伺服器可存取網際網路。如要瞭解如何設定 NAT 閘道,請參閱 SAP 系統的部署指南。例如,如需 SAP NetWeaver 的相關資訊,請參閱:

問題:收集 SAP HANA 監控指標失敗

問題:從 SAP HANA 監控代理程式升級時,在安裝 Google Cloud的 SAP 代理程式後,您會看到類似以下的錯誤訊息:

tls: failed to verify certificate: x509: certificate relies on legacy Common Name field, use SANs instead

原因: Google Cloud的 SAP 代理程式無法開始收集 SAP HANA 監控指標,因為目標 SAP HANA 執行個體使用的是使用通用名稱 (CN) 指定的 SSL 憑證。

解決方法:如要解決這個問題,請完成下列步驟:

  1. 如要使用Google Cloud的 SAP 代理程式監控 SAP HANA 執行個體,您必須改用主體別名 (SAN) 安全資料傳輸層 (SSL) 憑證,而非使用以通用名稱 (CN) 指定的 SSL 憑證。

  2. 建立與主機 Compute Engine 執行個體或 Bare Metal 解決方案伺服器的 SSH 連線。

  3. 開啟 Google Cloud的 Agent for SAP 設定檔:

    /etc/google-cloud-sap-agent/configuration.json
  4. hana_monitoring_configuration 部分中,將 enabled 參數設為 true

  5. hana_monitoring_configuration.hana_instances 部分,針對每個使用 TLS/SSL 通訊協定進行安全通訊的 SAP HANA 執行個體,執行下列操作:

    1. 指定參數 enable_ssl,並將其值設為 true

    2. 指定參數 host_name_in_certificate,並將 TLS/SSL 憑證中指定的 SAP HANA 主機名稱設為其值。

    3. 指定 tls_root_ca_file 參數,並將 TLS/SSL 憑證的儲存路徑設為其值。

  6. 儲存設定檔。

  7. 重新啟動 Google Cloud的 Agent for SAP,讓新設定生效:

    sudo systemctl restart google-cloud-sap-agent
  8. 確認代理程式是否正在收集 SAP HANA 監控指標。如需操作說明,請參閱「查看其他指標」一節。

  9. 解除安裝 SAP HANA 的監控代理程式。

問題:連線遭拒錯誤

問題:SAP Host Agent 記錄顯示連線遭拒錯誤。

原因: Google Cloud的 Agent for SAP 無法啟動,因為通訊埠 18181 無法使用。 Google Cloud的 Agent for SAP 會在通訊埠 18181 上接聽要求。代理程式必須可使用這個通訊埠才能啟動。

解決方法:如要解決這個問題,請確認 Google Cloud的 Agent for SAP 可使用埠 18181。如果其他服務使用通訊埠 18181,您可能需要重新啟動該服務,或重新設定該服務以使用其他通訊埠。

問題:對於 SLES 15 SP4 for SAP 及更新版本的作業系統映像檔, Google Cloud的 Agent for SAP 無法執行

問題:使用 SLES「for SAP」OS 映像檔時,系統會預先為您安裝Google Cloud的 Agent for SAP。不過,對於 SLES 15 SP4 for SAP 及更新版本的 OS 映像檔,預先安裝的 SAP 代理程式不會自行啟動。

如要確認代理程式是否正在執行,請執行下列步驟:

  1. 連線至主機 Compute Engine 執行個體或 Bare Metal 解決方案伺服器。
  2. 請執行下列指令:

    systemctl status google-cloud-sap-agent

    如果代理程式未執行,輸出內容就會包含 inactive (dead)。例如:

    google-cloud-sap-agent.service - Google Cloud Agent for SAP
     Loaded: loaded (/usr/lib/systemd/system/google-cloud-sap-agent.service; disabled; vendor preset: disabled)
     Active: inactive (dead)
    

原因:由於 OS 封裝有問題,Agent for SAP 無法自行啟動。

解決方法:如要解決問題,請執行下列步驟:

  1. 連線至主機 Compute Engine 執行個體或 Bare Metal 解決方案伺服器。
  2. 執行下列指令:

    sudo sed -i 's~ /usr/sap~ -/usr/sap~g' /usr/lib/systemd/system/google-cloud-sap-agent.service
    sudo systemctl restart google-cloud-sap-agent
  3. 確認代理程式是否正在執行:

    systemctl status google-cloud-sap-agent

    畫面會顯示類似以下的輸出:

    google-cloud-sap-agent.service - Google Cloud Agent for SAP
      Loaded: loaded (/usr/lib/systemd/system/google-cloud-sap-agent.service; disabled; vendor preset: disabled)
      Active: active (running) since Wed 2023-07-12 03:07:23 UTC; 7s ago
    Main PID: 6117 (google_cloud_sa)
       Tasks: 6
      Memory: 8.8M (max: 1.0G limit: 1.0G available: 1015.1M)
      CGroup: /system.slice/google-cloud-sap-agent.service
               └─ 6117 /usr/bin/google_cloud_sap_agent startdaemon
    

問題:系統偵測失敗,因為缺少 /usr/sap 目錄的執行權限

問題:在 Google Cloud的 Agent for SAP 記錄中,您會看到警告 No execute permission for /usr/sap directory, some of the discovery operations will fail. Please ensure that the root user has execute permission for /usr/sap directory.

原因:根使用者沒有 /usr/sap/ 目錄的執行權限。這樣做可防止根使用者存取位於 /usr/sap 目錄中的 SAP 系統設定檔和 SAP 工具。這可能會限制代理程式在主機運算執行個體上偵測 SAP 系統,進而限制代理程式功能的預期行為。

解決方法:如要解決這個問題,請確認根使用者具有 /usr/sap/ 目錄的執行權限。如要這麼做,請執行下列指令:

chmod +x /usr/sap

問題:總處理量偏低

問題:傳輸量低於預期。

原因:針對 Google Cloud的 SAP 代理程式,您可能已使用 compress 設定參數啟用壓縮功能。

解決方法:如要解決這個問題,請確認是否已啟用壓縮功能。如要這樣做,請按照下列步驟操作:

  1. 使用 SSH 連線至 SAP HANA 主機。

  2. 開啟 Backint 設定檔:

    /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/parameters.json

    SID 替換為安裝 Backint 相關檔案的系統 SID。

  3. 確認 compress 參數已設為 false

  4. 如有任何變更,請儲存設定檔。

問題:多重串流錯誤

問題:您在多串流資料備份時收到錯誤訊息。

原因:您可能已為 Google Cloud的 SAP 代理程式指定較多的並行串流,以便使用 Backint 功能。

解決方法:如要解決這個問題,請執行下列步驟:

  1. 使用 SSH 連線至 SAP HANA 主機。

  2. 開啟 Backint 設定檔:

    /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/parameters.json

    SID 替換為安裝 Backint 相關檔案的系統 SID。

  3. 如果您已為 parallel_streams 參數設定值,請將其調低至 1

    如果這樣做仍無法解決錯誤,請與客戶服務團隊聯絡。

連線至 Cloud Storage 時發生問題

問題:您遇到 Cloud Storage 值區的連線問題。

原因:可能的原因如下:

  • 暫時性連線問題。
  • Google Cloud的 SAP 代理程式所使用的服務帳戶,沒有存取 Cloud Storage 所需的權限。
  • 你的設定有問題。

解決方法:如要排解 Cloud Storage 值區的連線問題,請檢查下列項目:

  • 請重試失敗的備份或復原作業,確認錯誤並非只是暫時性的連線問題。
  • 如果 Google Cloud的 SAP 代理程式使用您的運算執行個體服務帳戶,請確認運算執行個體具有存取所有雲端範圍的權限。如果您限制存取權,請確認運算執行個體具有存取 storage.googleapis.com 的權限。詳情請參閱「啟用 Cloud API 和中繼資料伺服器的存取權」。
  • 如果您已建立服務帳戶,用於搭配 Google Cloud的 SAP 代理程式,請確認下列事項:
    • 服務帳戶會獲派「Storage Object Admin」角色。
    • 如果您使用客戶管理的加密金鑰來加密 Cloud Storage 中的備份,服務帳戶會指派 Cloud KMS CryptoKey Encrypter/Decrypter 角色。詳情請參閱「備份資料加密」。
  • 請確認您已在 Backint 設定檔 PARAMETERS.json 和 SAP HANA global.ini 檔案中正確指定參數。

您可以使用 Google Cloud的 SAP 代理程式內建的自我診斷功能,測試 Cloud Storage 值區的存取權。詳情請參閱「自我診斷」。

以磁碟快照為基礎的備份或復原作業發生問題

問題:使用代理程式的 hanadiskbackuphanadiskrestore 指令為 SAP HANA 執行備份或復原作業時,作業未成功。

原因:以下任一原因都可能導致這個問題:

  • 代理程式發生錯誤,並退出備份或復原作業。
  • 由於底層Google Cloud 服務發生問題,因此代理程式建立磁碟快照或將快照上傳至 Cloud Storage 的時間比預期要長。
  • 代理程式當機,且沒有明確的錯誤或成功訊息。
  • 備份或復原作業因作業系統層級問題而失敗。
  • 代理程式必須等待的時間比 SAP HANA 資料庫預期的時間長,可能是因為資料庫的工作負載非常繁重。

解決方法:如要解決這個問題,請使用下列資訊:

  • 如果備份作業失敗,請執行下列步驟:

    1. 確認代理程式是否正在執行。如果不是,請重新啟動代理程式,然後重試備份作業。

    2. 如果代理程式運作正常,請檢查快照建立作業的狀態:

      gcloud compute snapshots list
        --filter="sourceDisk:projects/PROJECT_ID/zones/ZONE_ID/disks/DISK_NAME"
      

      更改下列內容:

      • PROJECT_ID:部署來源磁碟的 Google Cloud 專案
      • ZONE_ID:部署來源磁碟的 Compute Engine 區域,例如 us-central1-a
      • DISK_NAME:來源磁碟的名稱

      輸出狀態可以是下列其中一個:CREATINGUPLOADINGREADY

    3. 如果快照建立作業的狀態為 CREATINGUPLOADING,建議您等待這項作業完成,尤其是當您為代管 /hana/data 磁碟分割區的磁碟建立第一個快照時。

      如果這項作業失敗,代理程式會自動退出程序並更新記錄。您可以執行 hanadiskbackup 指令,重試建立備份。代理程式會負責完成 SAP HANA 資料庫中未成功的備份作業,並建立新的快照式備份。

      如果您使用 -confirm-data-snapshot-after-create 引數搭配 hanadiskbackup 指令,但快照上傳作業失敗,則必須手動刪除 SAP HANA 備份目錄中的快照項目,並重試建立快照。如要刪除 SAP HANA 備份目錄中的項目,您可以使用 BACKUP CATALOG DELETE 陳述式。如要瞭解 -confirm-data-snapshot-after-create 引數的相關資訊,請參閱「建立以磁碟快照為基礎的備份」一文中的說明。

    4. 如果快照建立作業的狀態為 READY,但 hanadiskbackup 指令仍顯示為執行中,表示代理程式正在等待 SAP HANA 執行備份程序。

    5. 如果 hanadiskbackup 指令的執行時間似乎比預期的要長,請按照下列步驟操作,讓 SAP HANA 資料庫恢復正常運作:

      1. 解凍包含 /hana/data 磁碟區的 XFS 檔案系統:

        xfs_freeze -u PATH_TO_HANA_DATA_VOLUME
      2. 從 SAP HANA 資料庫中取得失敗儲存空間快照的備份 ID:

        SELECT BACKUP_ID, STATE_NAME, COMMENT FROM M_BACKUP_CATALOG WHERE ENTRY_TYPE_NAME = 'data snapshot' and STATE_NAME = 'prepared'
      3. 在 SAP HANA 中,將失敗的快照更新為失敗的項目:

        BACKUP DATA FOR FULL SYSTEM CLOSE SNAPSHOT BACKUP_ID UNSUCCESSFUL 'Do not use - manually terminated';
        

      BACKUP_ID 替換為您在上一個步驟中擷取的 BACKUP_ID

    6. 如要解決備份作業失敗的問題,請與客戶服務團隊聯絡,並提供服務專員的支援套件

  • 如果是復原作業失敗,請完成下列步驟:

    1. 請確認代管 /hana/data 磁碟區的原始磁碟已連結至主機運算執行個體。如果不是,請使用 gcloud compute instances attach-disk 指令附加。

    2. 重新掃描磁碟區群組和邏輯磁碟區:

      sudo /sbin/dmsetup remove_all
      sudo /sbin/vgscan -v --mknodes
      sudo /sbin/vgchange -ay
      sudo /sbin/lvscan
      sudo mount -av
      
    3. 如果重新掃描失敗,請重新啟動主機運算執行個體。這會讓作業系統重新掃描磁區群組。

    4. 在 SAP HANA 中,確認 /hana/data 磁碟區是否正常運作。

    5. 如果 /hana/data 的音量仍未上線,請與客戶服務團隊聯絡,並提供服務專員的支援套件,以便解決問題。

缺少以 SAP HANA 監控檢視畫面為基礎的指標

問題:系統缺少以 SAP HANA 資料庫中的監控檢視畫面為依據的 SAP HANA 監控指標,您可以在 Google Cloud的 SAP 代理程式記錄檔中看到下列錯誤:

{sql: Scan error on column index 0, name \"MEM_USED\": converting NULL to int64 is unsupported"}

原因:您在代理程式設定檔中為 hana_monitoring_configuration.hana_instances.user 參數指定的 SAP HANA 資料庫使用者,沒有讀取 SAP HANA 資料庫中監控檢視畫面的權限。因此,代理程式傳送至監控檢視畫面的查詢會傳回沒有資料。

解決方法:如要解決這個問題,請授予指定資料庫使用者 SAP HANA 資料庫中的 CATALOG READ 系統權限或 MONITORING 角色。如要授予這項權限,請使用管理員使用者 (例如 SYSTEM) 執行 GRANT 陳述式。例如:

  • 如要授予 MONITORING 角色,請執行以下指令:

    GRANT MONITORING TO DB_USERNAME
  • 如要授予 CATALOG READ 系統權限,請執行下列指令:

    GRANT CATALOG READ TO DB_USERNAME

    DB_USERNAME 替換為您在代理程式設定檔中為 hana_monitoring_configuration.hana_instances.user 參數指定的 SAP HANA 資料庫使用者名稱。如要瞭解這個設定參數,請參閱「設定參數」。

問題:超出 Filtered list cost overhead 配額

問題:您發現在執行 SAP 系統的 Google Cloud 專案中,有下列其中一個配額超出:

  • 「Filtered list cost overhead」
  • Filtered list cost overhead per minute per region

原因: Google Cloud的 Agent for SAP 3.7 以上版本會頻繁呼叫 compute.zoneOperations.list API,以判斷 Compute Engine 執行個體是否已經歷即時遷移事件。在 Google Cloud 操作次數眾多的專案中,這些頻繁的呼叫可能會導致配額用盡。

解決方法:如要解決這個問題,請將代理程式執行個體更新至 3.8 以上版本。從 3.8 版開始,代理程式不再呼叫 compute.zoneOperations.list API 進行即時遷移檢查,因此可避免這個配額問題。

如要瞭解如何更新 Google Cloud的 Agent for SAP,請參閱「更新 Google Cloud的 Agent for SAP」。

取得 Google Cloud的 Agent for SAP 支援

如需協助解決 Google Cloud的 Agent for SAP 問題,請收集必要的診斷資訊,然後與 Cloud Customer Care 團隊聯絡。詳情請參閱 Google Cloud的 SAP 診斷資訊代理程式