與 Apigee-monit 一起自我修復

Apigee Edge for Private Cloud 包含 apigee-monit,這是以開放原始碼為基礎的工具 monit 公用程式。定期apigee-monit 輪詢 Edge 服務如果某項服務無法使用,則 apigee-monit 會嘗試重新啟動。

如要使用 apigee-monit,您必須手動安裝。但不屬於 標準安裝

根據預設,apigee-monit 每 60 秒會檢查 Edge 服務的狀態。

快速入門

本節說明如何快速開始使用 apigee-monit

如果您使用的是 Amazon Linux 或 Oracle-Linux-7.X,請先 安裝 Monit。否則 可以略過這個步驟。

sudo yum install -y https://kojipkgs.fedoraproject.org/packages/monit/5.25.1/1.el6/x86_64/monit-5.25.1-1.el6.x86_64.rpm

如要安裝 apigee-monit,請按照下列步驟操作:

  安裝「apigee-monit
/opt/apigee/apigee-service/bin/apigee-service apigee-monit install
/opt/apigee/apigee-service/bin/apigee-service apigee-monit configure
/opt/apigee/apigee-service/bin/apigee-service apigee-monit start

在預設情況下,系統會安裝 apigee-monit 並開始監控節點中的所有元件。

  停止監控元件
/opt/apigee/apigee-service/bin/apigee-service apigee-monit unmonitor -c component_name
/opt/apigee/apigee-service/bin/apigee-service apigee-monit unmonitor -c all
  開始監控元件
/opt/apigee/apigee-service/bin/apigee-service apigee-monit monitor -c component_name
/opt/apigee/apigee-service/bin/apigee-service apigee-monit monitor -c all
  取得摘要狀態資訊
/opt/apigee/apigee-service/bin/apigee-service apigee-monit report
/opt/apigee/apigee-service/bin/apigee-service apigee-monit summary
  查看 apigee-monit 記錄檔
cat /opt/apigee/var/log/apigee-monit/apigee-monit.log

以下各節將詳細說明這些主題和其他資訊。

Apigee-monit 簡介

apigee-monit 可確保節點上的所有元件都能正常運作。做法是 提供服務,包括:

  • 重新啟動失敗的服務
  • 顯示摘要資訊
  • 記錄監控狀態
  • 傳送通知
  • 監控非邊緣服務

Apigee 建議您監控 apigee-monit,確保它正在執行。如需更多資訊 請參閱監控 apigee-monit

Apigee-monit 架構

在 Apigee Edge for Private Cloud 安裝和設定期間,您可以選擇安裝個別執行個體 叢集內每個節點的 apigee-monit 權限。這些獨立的 apigee-monit 執行個體獨立於 1 個執行個體中運作 另一個:容器不會將其元件狀態傳送給其他節點,也不會 將監控公用程式本身的故障狀態傳送到任何中央服務。

下圖顯示 5 節點叢集中的 apigee-monit 架構:

建築
  的 Apigee Monit 叢集 (位於 5 個節點叢集中)
圖 1:apigee-monit 的獨立執行個體會在叢集中的每個節點獨立執行 叢集

元件設定

apigee-monit 會根據元件設定判斷要監控的元件, 要檢查的元件各方面,以及發生錯誤時要採取的行動。

根據預設,apigee-monit 會使用預先定義的元件監控節點上的所有 Edge 元件 儲存空間設定如要查看預設設定,您可以查看 apigee-monit 元件設定 檔案。您無法變更預設元件設定。

apigee-monit 會根據元件檢查的元件,檢查元件的不同面向。 下表列出 apigee-monit 會檢查每個元件的項目,並列出元件的位置 每個元件都有各自的特性請注意,某些元件是以單一設定定義 檔案,其他電腦則有自己的設定。

元件 設定位置 監控的內容
管理伺服器 /opt/apigee/edge-management-server/monit/default.conf apigee-monit 檢查:
  • 指定的通訊埠處於開放狀態並接受要求
  • 支援指定的通訊協定
  • 回應狀態

此外,針對這些元件 apigee-monit

  • 要求在指定週期內多次失敗後,您才能採取行動
  • 設定自訂要求路徑
訊息處理器 /opt/apigee/edge-message-processor/monit/default.conf
Postgres 伺服器 /opt/apigee/edge-postgres-server/monit/default.conf
Qpid 伺服器 /opt/apigee/edge-qpid-server/monit/default.conf
路由器 /opt/apigee/edge-router/monit/default.conf
Cassandra
Edge UI
OpenLDAP
Postgres
Qpid
動物守護者
/opt/apigee/data/apigee-monit/monit.conf apigee-monit 檢查:
  • 服務執行中

以下範例顯示 edge-router 的預設元件設定 元件:

check host edge-router with address localhost
  restart program = "/opt/apigee/apigee-service/bin/apigee-service edge-router monitrestart"
  if failed host 10.1.1.0 port 8081 and protocol http
    and request "/v1/servers/self/uuid"
    with timeout 15 seconds
    for 2 times within 3 cycles
  then restart

  if failed port 15999 and protocol http
    and request "/v1/servers/self"
    and status < 600
    with timeout 15 seconds
    for 2 times within 3 cycles
  then restart

以下範例顯示傳統版 UI (edge-ui) 的預設設定 元件:

check process edge-ui
 with pidfile /opt/apigee/var/run/edge-ui/edge-ui.pid
 start program = "/opt/apigee/apigee-service/bin/apigee-service edge-ui start" with timeout 55 seconds
 stop program = "/opt/apigee/apigee-service/bin/apigee-service edge-ui stop"

這適用於傳統版 UI,不適用於元件名稱如下的新版 Edge UI edge-management-ui

您無法變更任何 Apigee Edge for Private Cloud 元件的預設元件設定。你可以 但是,新增您自己的外部服務元件設定,如您的目標端點 或 httpd 服務。若需更多資訊,請參閲 非 Apigee 元件設定

根據預設,apigee-monit 會監控執行節點的所有元件。您可以選擇啟用或 並為所有元件或個別元件停用這項功能。如需詳細資訊,請參閱:

安裝 apigee-monit

預設未安裝「apigee-monit」。可以在升級或安裝完成後,手動安裝 適用於 Private Cloud 的 Apigee Edge 4.19.01 以上版本。

本節說明如何安裝 apigee-monit

如要瞭解如何解除安裝 apigee-monit,請參閱 解除安裝 apigee-monit

安裝 apigee-monit

本節說明如何安裝 apigee-monit

如何安裝 apigee-monit

  1. 使用下列指令安裝 apigee-monit
    /opt/apigee/apigee-service/bin/apigee-service apigee-monit install
  2. 使用下列指令設定 apigee-monit
    /opt/apigee/apigee-service/bin/apigee-service apigee-monit configure
  3. 使用下列指令啟動 apigee-monit
    /opt/apigee/apigee-service/bin/apigee-service apigee-monit start
  4. 對叢集中的每個節點重複這項程序。

停止及開始監控元件

當服務因故停止,apigee-monit 會嘗試重新啟動服務。

如果您要「刻意」停止元件,這可能會造成問題。舉例來說 在需要備份或升級元件時。 如果 apigee-monit 在備份或升級期間重新啟動服務,你的維護程序可能會 也可能因此失敗

下列各節說明停止監控元件的選項。

停止並取消監控元件

如要停止並取消監控元件,請執行下列指令:

/opt/apigee/apigee-service/bin/apigee-service apigee-monit stop-component -c component_name
component_name 可以是下列其中一項:
  • apigee-cassandra (Cassandra)
  • apigee-openldap (OpenLDAP)
  • apigee-postgresql (PostgreSQL 資料庫)
  • apigee-qpidd (魁北克)
  • apigee-sso (邊緣單一登入)
  • apigee-zookeeper (ZooKeeper)
  • edge-management-server (管理伺服器)
  • edge-management-ui (新版 Edge UI)
  • edge-message-processor (訊息處理器)
  • edge-postgres-server (Postgres 伺服器)
  • edge-qpid-server (快速伺服器)
  • edge-router (邊緣路由器)
  • edge-ui (傳統版 UI)

請注意,「all」「stop-component」不是有效選項。您可以停止並 使用 stop-component 一次取消監控一個元件。

如要重新啟動元件並繼續監控,請執行下列指令:

/opt/apigee/apigee-service/bin/apigee-service apigee-monit start-component -c component_name

請注意,「all」「start-component」不是有效選項。

如需停止和取消監控所有元件的操作說明,請參閱 停止所有元件並取消監控

取消監控元件 (但不要停止)

如要取消監控元件 (但不要停止),請執行下列指令:

/opt/apigee/apigee-service/bin/apigee-service apigee-monit unmonitor -c component_name
component_name 可以是下列其中一項:
  • apigee-cassandra (Cassandra)
  • apigee-openldap (OpenLDAP)
  • apigee-postgresql (PostgreSQL 資料庫)
  • apigee-qpidd (魁北克)
  • apigee-sso (邊緣單一登入)
  • apigee-zookeeper (ZooKeeper)
  • edge-management-server (管理伺服器)
  • edge-management-ui (新版 Edge UI)
  • edge-message-processor (訊息處理器)
  • edge-postgres-server (Postgres 伺服器)
  • edge-qpid-server (快速伺服器)
  • edge-router (邊緣路由器)
  • edge-ui (傳統版 UI)

如要繼續監控元件,請執行下列指令:

/opt/apigee/apigee-service/bin/apigee-service apigee-monit monitor -c component_name

取消監控所有元件 (但不要停止這些元件)

如要取消監控所有元件 (但不停止元件),請執行下列指令:

/opt/apigee/apigee-service/bin/apigee-service apigee-monit unmonitor -c all

如要繼續監控所有元件,請執行下列指令:

/opt/apigee/apigee-service/bin/apigee-service apigee-monit monitor -c all

停止所有元件並取消監控

如要停止所有元件並取消監控元件,請執行下列指令:

/opt/apigee/apigee-service/bin/apigee-service apigee-monit unmonitor -c all
/opt/apigee/apigee-service/bin/apigee-all stop

如要重新啟動所有元件並繼續監控,請執行下列指令:

/opt/apigee/apigee-service/bin/apigee-all start
/opt/apigee/apigee-service/bin/apigee-service apigee-monit monitor -c all

如要停止監控所有元件,您也可以停用 apigee-monit,如下所述 停止、啟動及停用 apigee-monit

停止、啟動及停用 apigee-monit

與任何服務一樣,您可以使用 apigee-service 停止及啟動 apigee-monit。 指令此外,apigee-monit 支援 unmonitor 指令,可讓您 暫時停止監控元件

停止 apigee-monit

如要停止 apigee-monit,請使用下列指令:

/opt/apigee/apigee-service/bin/apigee-service apigee-monit stop

啟動 Apigee-monit

如要啟動 apigee-monit,請使用下列指令:

/opt/apigee/apigee-service/bin/apigee-service apigee-monit start

停用 apigee-monit

您可以使用下列指令,暫停監控節點上的所有元件:

/opt/apigee/apigee-service/bin/apigee-service apigee-monit unmonitor -c all

或者,您也可以按照所述,永久停用 apigee-monit,將其從節點中解除安裝 請參閱「解除安裝 apigee-monit」一文。

解除安裝 apigee-monit

如何解除安裝 apigee-monit

    conf_monit_httpd_port httpd Daemon 的通訊埠。apigee-monit 使用 httpd 做為資訊主頁 及啟用報告/摘要。預設值為 2812。 conf_monit_httpd_allow 對傳送至 httpd Daemon 的要求限制。apigee-monit 使用 httpd 執行其資訊主頁應用程式並啟用報告/摘要。這個值必須 指向 localhost (執行 httpd 的主機)。

    如要規定要求必須包含使用者名稱和密碼,請使用以下語法:

    conf_monit_httpd_allow=allow username:"password"\nallow 127.0.0.1

    新增使用者名稱和密碼時,請插入「\n」。禁止事項 在值中插入實際的換行符號或回車字元。

    conf_monit_monit_datadir 儲存事件詳細資料的目錄。 conf_monit_monit_delay_time apigee-monit 在第一次載入記憶體後等待的時間長度 或任何可執行 Knative 的環境中這只會影響第 apigee-monit 項程序檢查。 conf_monit_monit_logdir apigee-monit 記錄檔的位置。 conf_monit_monit_retry_time apigee-monit 嘗試檢查每個程序的頻率。預設值為 60 秒內請求驗證碼。 conf_monit_monit_rundir PID 和狀態檔案的位置,apigee-monit 會用來檢查程序。

    如何自訂預設的 apigee-monit 控制項設定:

    1. 編輯下列檔案:
      /opt/apigee/customer/application/monit.properties

      如果檔案不存在,請建立該檔案,並將擁有者設為「apigee」使用者:

      chown apigee:apigee /opt/apigee/customer/application/monit.properties

      請注意,如果檔案已存在,可能需定義其他設定屬性 。除了 以上列出的各種信號

    2. 請使用新的值設定或替換屬性值。

      舉例來說,如要將記錄檔的位置變更為 /tmp,請新增或編輯 屬性:

      conf_monit_monit_logdir=/tmp/apigee-monit.log

    3. 將變更儲存至 monit.properties 檔案。
    4. 使用下列指令重新載入 apigee-monit
      /opt/apigee/apigee-service/bin/apigee-service apigee-monit reload

      如果 apigee-monit 未重新啟動,請按照 存取 apigee-monit 記錄檔

    5. 針對叢集中的每個節點重複執行這項程序。

    請注意,這僅適用於非邊緣元件。您無法自訂元件設定 適用於 Edge 元件

    存取 Apigee-monit 記錄檔

    apigee-monit 會記錄所有活動,包括事件、重新啟動、設定變更和快訊 檔案。

    記錄檔的預設位置為:

    /opt/apigee/var/log/apigee-monit/apigee-monit.log

    您可以透過自訂 apigee-monit 控制項,變更預設位置 設定

    記錄檔項目格式如下:

    'edge-message-processor' trying to restart
    [UTC Dec 14 16:20:42] info     : 'edge-message-processor' trying to restart
    'edge-message-processor' restart: '/opt/apigee/apigee-service/bin/apigee-service edge-message-processor monitrestart'

    您無法自訂 apigee-monit 記錄檔項目的格式。

    透過 Apigee-monit 查看匯總狀態

    apigee-monit 包含下列指令,可提供針對 執行節點:

    指令 用量
    report
    /opt/apigee/apigee-service/bin/apigee-service apigee-monit report
    summary
    /opt/apigee/apigee-service/bin/apigee-service apigee-monit summary

    我們會在下文各節中詳細說明上述每個指令。

    報表

    report 指令會提供所包含元件的匯總摘要。 當機、目前正在初始化,或目前在節點上未受監控。 下列範例叫用 report 指令:

    /opt/apigee/apigee-service/bin/apigee-service apigee-monit report

    以下範例顯示 AIO (全方位功能) 上的 report 輸出內容 設定:

    /opt/apigee/apigee-service/bin/apigee-service apigee-monit report
    up:            11 (100.0%)
    down:           0 (0.0%)
    initialising:   0 (0.0%)
    unmonitored:    1 (8.3%)
    total:         12 services

    在這個例子中,「apigee-monit」回報 12 項服務中有 11 項處於「當機」狀態,一項服務 監控資源

    首次執行Connection refused report 指令。在這種情況下,請等待 conf_monit_monit_delay_time 屬性,然後再試一次。

    摘要

    summary 指令會列出每個元件並提供其狀態。下列 範例叫用 summary 指令:

    /opt/apigee/apigee-service/bin/apigee-service apigee-monit summary

    以下範例顯示 AIO (全方位功能) 上的 summary 輸出內容 設定:

    /opt/apigee/apigee-service/bin/apigee-service apigee-monit summary
    Monit 5.25.1 uptime: 4h 20m
     Service Name                     Status                      Type
     host_name                        OK                          System
     apigee-zookeeper                 OK                          Process
     apigee-cassandra                 OK                          Process
     apigee-openldap                  OK                          Process
     apigee-qpidd                     OK                          Process
     apigee-postgresql                OK                          Process
     edge-ui                          OK                          Process
     edge-qpid-server                 OK                          Remote Host
     edge-postgres-server             OK                          Remote Host
     edge-management-server           OK                          Remote Host
     edge-router                      OK                          Remote Host
     edge-message-processor           OK                          Remote Host

    如果您在首次執行Connection refused summary 指令,請嘗試等待 conf_monit_monit_delay_time 屬性,然後再試一次。

    監控 Apigee-monit

    最佳做法是定期檢查 apigee-monit 是否在每個節點上執行。

    如要檢查 apigee-monit 是否正在執行,請使用下列指令:

    /opt/apigee/apigee-service/bin/apigee-service apigee-monit monitor_monit

    Apigee 建議您定期在執行 apigee-monit 的每個節點上發出這個指令。 其中一種方法是利用 cron 等公用程式,在以下時間執行排定的工作: 預先定義的間隔

    如何使用 cron 監控 apigee-monit

    1. 複製 apigee-monit.cron 來新增 cron 支援 目錄複製到 /etc/cron.d 目錄,如以下範例所示:
      cp /opt/apigee/apigee-monit/cron/apigee-monit.cron /etc/cron.d/
    2. 開啟 apigee-monit.cron 檔案進行編輯。

      apigee-monit.cron 檔案會定義要執行的 cron 工作 以及執行工作的頻率以下範例顯示預設 值:

      # Cron entry to check if monit process is running. If not start it
      */2 * * * * root /opt/apigee/apigee-service/bin/apigee-service apigee-monit monitor_monit

      此檔案使用下列語法,其中前五個欄位定義了 apigee-monit 會執行其動作:

      min hour day_of_month month day_of_week task_to_execute

      例如,預設的執行時間為 */2 * * * *,會指示 cron 每隔 2 分鐘檢查 apigee-monit 程序。

      每分鐘無法執行超過一次 cron 工作。

      如要進一步瞭解如何使用 cron,請參閱伺服器 OS 的說明文件或管理人員 網頁。

    3. 請根據貴機構的政策變更 cron 設定。舉例來說 請將執行頻率變更為每 5 分鐘一次,並將工作定義設為:
      */5 * * * * root /opt/apigee/apigee-service/bin/apigee-service apigee-monit monitor_monit
    4. 儲存 apigee-monit.cron 檔案。
    5. 針對叢集中的每個節點重複執行這項程序。

    如果 cron 並未開始觀看 apigee-monit,請檢查以下事項:

    • cron 工作定義後方有空白行。
    • 檔案中只定義一項 cron 工作。(加註行不可 count.)

    如要停止或暫時停用 apigee-monit,您必須停用這項 cron 工作。 也會使 cron 重新啟動 apigee-monit

    如要停用 cron,請執行下列其中一項操作:

    • 刪除 /etc/cron.d/apigee-monit.cron 檔案:
      sudo rm /etc/cron.d/apigee-monit.cron

      如果您執行以下動作,必須重新複製副本: 稍後,您想要重新啟用「cron」才能觀看「apigee-monit」。

    • 編輯 /etc/cron.d/apigee-monit.cron 檔案,為工作加上註解 方法是在結尾加上「#」行開頭;例如:
      # 10 * * * * root /opt/apigee/apigee-service/bin/apigee-service apigee-monit monitor_monit