私有雲的邊緣 4.16.09 版
本文說明 Apigee Edge 的內部部署部署所支援的元件監控技術。
啟用 JMX
根據預設,Cassandra 會啟用 JMX,所有其他 Edge 元件則預設為停用。因此,您必須分別為每個元件啟用 JMX。
每個元件均可支援不同通訊埠的 JMX。下表列出 JMX 通訊埠和您在該通訊埠啟用 JMX 而修改的檔案:
元件 | JMX 通訊埠 | 檔案 |
---|---|---|
管理伺服器 | 1099 | /opt/apigee/edge-management-server/bin/start |
訊息處理器 | 1101 | /opt/apigee/edge-mesage-processor/bin/start |
Qpid | 1102 | /opt/apigee/edge-qpid-server/bin/start |
Postgres | 1103 | /opt/apigee/edge-postgres-server/bin/start |
舉例來說,如要在管理伺服器上啟用 JMX,請在編輯器中開啟 /opt/apigee/edge-management-server/bin/start。您應該會看到下列用於啟動管理伺服器的程式碼:
exec $JAVA -classpath "$classpath" -Xms$min_mem -Xmx$max_mem $xx_opts -Djava.security.auth.login.config=$conf_path/jaas.config -Dinstallation.dir=$install_dir $sys_props -Dconf.dir=$conf_path -Ddata.dir=$data_dir $* $debug_options com.apigee.kernel.MicroKernel
編輯這一行程式碼,加入下列內容:
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
請注意,這一行將管理伺服器的 JMX 通訊埠號碼指定為 1099。按照上表定義,設定每個元件的通訊埠號碼。例如:
exec $JAVA -classpath "$classpath" -Xms$min_mem -Xmx$max_mem $xx_opts -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.security.auth.login.config=$conf_path/jaas.config -Dinstallation.dir=$install_dir $sys_props -Dconf.dir=$conf_path -Ddata.dir=$data_dir $* $debug_options com.apigee.kernel.MicroKernel
儲存檔案,然後重新啟動元件。舉例來說,如要重新啟動管理伺服器:
> /opt/apigee/apigee-service/bin/ apigee-service edge-management-server restart
啟用 JMX 驗證並設定 JMX 密碼
管理伺服器、訊息處理器、Qpid 和 Postgres 的監控程序全都使用 JMX。系統預設啟用 JMX,因此遠端 JMX 存取權不需要密碼。
如要啟用 JMX 驗證,每個元件都有 change_jmx_auth 動作,可用於啟用/停用驗證功能,以及設定 JMX 憑證。
如要啟用 JMX 驗證,請使用下列指令:
> /<inst_root>/apigee/apigee-service/bin/apigee-service comp change_jmx_auth optionsOrConfigFile
其中:
- comp 可以是 edge-management-server、edge-message-processor、edge-qpid-server 或 Edge-postgres-server。
- 選項如下:
- -u:使用者名稱
- -p:密碼
- -e:y (啟用) 或 n (必要)
- 設定檔包括:
- JMX_USERNAME=<使用者名稱>
- JMX_ENABLED=y/n
- JMX_PASSWORD=password (如未設定或未以 -p 傳入,系統會提示您)
例如在指令列中使用選項:
> /<inst_root>/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -u foo -p bar -e y
如果有設定檔:
> /<inst_root>/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -f configFile
如要在多個節點上執行 Edge,請在所有節點上執行這個指令,並指定相同的使用者名稱和密碼。
日後如要停用 JMX 驗證,請使用以下指令:
> /<inst_root>/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -e n
管理伺服器
使用 JConsole 監控系統健康狀態檢查和程序資訊
使用 JConsole (與 JMX 相容的工具) 管理及監控健康狀態檢查和處理統計資料。透過 JConsole,您可以使用管理伺服器 (或任何伺服器) 公開的 JMX 統計資料,並在圖形介面中顯示。如要進一步瞭解 JConsole 的使用方式,請參閱 http://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.html。
使用 JConsole 和下列服務網址,監控透過 JMX 提供的 JMX 屬性 (MBeans)。
service:jmx:rmi:///jndi/rmi://<ip address>:<port>/platform
其中 <ip address> 是管理伺服器 (或個別伺服器的 IP 位址)。管理伺服器的通訊埠預設為 1099。
下表顯示一般 JMX 統計資料:
JMX MBeans |
JMX 屬性 |
---|---|
記憶體容量 |
HeapMemoryUsage |
NonHeapMemoryUsage |
|
使用方式 |
|
注意事項:屬性值會以四種值顯示:修訂版、init、max 和 used。 |
使用 Edge Application API 檢查功能
您可以叫用下列 CURL 指令,在管理伺服器 (或任何伺服器) 上執行 API 檢查:
curl http://<host>:8080/v1/servers/self/up
其中 <host> 是管理伺服器的 IP 位址。
這個呼叫會傳回「true」和「false」。如果為 true,表示節點已啟動,且 Java 服務正在執行。
如果您沒有收到 HTTP 200 (OK) 回應,Edge 無法回應通訊埠 8080 要求。
疑難排解
- 登入伺服器並執行下列指令:
/<inst_root>/apigee/apigee-service/bin/apigee-service Edge-management-server status - 如果服務並未執行啟動服務:
/<inst_root>/apigee/apigee-service/bin/apigee-service Edge-management-server start
使用邊緣應用程式 – 使用者、機構和部署作業檢查
在每個地端部署系統安裝作業中,管理伺服器扮演了重要的角色。您可以發出下列指令,檢查管理伺服器上的使用者、機構與部署狀態:
curl -u userEmail:password http://localhost:8080/v1/users curl -u userEmail:password http://localhost:8080/v1/organizations curl -u userEmail:password http://localhost:8080/v1/organizations/orgname/deployments
系統應會在所有呼叫中顯示「部署」狀態。如果這些失敗,請執行下列步驟:
- 檢查管理伺服器記錄檔 (位於 <inst_root>/apigee/var/log/edge-management-server) 是否有任何錯誤。
- 請對管理伺服器發出呼叫,確認其是否正常運作。
- 從 ELB 中移除伺服器,然後重新啟動管理伺服器。
/<inst_root>/apigee/apigee-service/bin/apigee-service Edge-management-server restart
路由器
您可以叫用下列 CURL 指令,在路由器 (或任何伺服器) 上執行 API 檢查:
curl http://<host>:8081/v1/servers/self/up
其中,主機是路由器的 IP 位址。
這個呼叫會傳回「true」和「false」。如果為 true,表示節點已啟動,且路由器服務正在執行。
如未收到 HTTP 200 (OK) 回應,Edge 無法回應通訊埠 8081 要求。
疑難排解
- 登入伺服器並執行下列指令:
/<inst_root>/apigee/apigee-service/bin/apigee-service Edge-router status - 如果該服務並未執行,則無法啟動服務
/<inst_root>/apigee/apigee-service/bin/apigee-service Edge-router start - 重新啟動後,檢查是否可正常運作
curl -v http://localhost:port/v1/servers/self/up
其中,路由器的通訊埠為 8081,訊息處理器則為 8082。
訊息處理器
使用 JConsole 監控系統健康狀態檢查和程序資訊
請同樣按照上述的管理伺服器設定操作。
注意:請務必使用通訊埠 1101。
使用 Edge Application API 檢查功能
按照上述的路由器設定步驟操作。
注意:請務必使用通訊埠 8082。
使用 JMX 郵件流程檢查
請同樣按照上述的管理伺服器設定操作。
注意:請務必使用通訊埠 1101。
Qpid 伺服器
使用 JConsole 監控系統健康狀態檢查和程序資訊
請同樣按照上述的管理伺服器設定操作。
注意:請務必使用通訊埠 1102。
使用 Edge Application API 檢查
請同樣按照上述的管理伺服器設定操作。
注意:請務必使用通訊埠 8083。Qpid 伺服器也支援下列 CURL 指令:
curl http://<qpid_IP>:8083/v1/servers/self
Postgres 伺服器
使用 JConsole 監控系統健康狀態檢查和程序資訊
請同樣按照上述的管理伺服器設定操作。
注意:請務必使用通訊埠 1103。
使用 Edge Application API 檢查
請同樣按照上述的管理伺服器設定操作。
注意:請務必使用通訊埠 8084。Postgres 伺服器也支援下列 CURL 指令:
curl http://<postgres_IP>:8084/v1/servers/self
使用 Edge 應用程式整理和環境檢查功能
您可以發出下列 CURL 指令,查看是否已在 Postgres 伺服器上啟用的機構和環境名稱:
curl http:// <postgres_IP>:8084/v1/servers/self/organizations
注意:請務必使用通訊埠 8084。
系統應會顯示機構和環境名稱。
使用 Edge 應用程式的 axstatus 檢查
您可以發出下列 CURL 指令來驗證分析伺服器的狀態。
curl -u userEmail:password http://<host>:<port>/v1/organizations/<orgname>/environments/<envname>/provisioning/axstatus
系統應顯示所有分析伺服器的「成功」狀態。上述 CURL 指令的輸出內容如下所示:
{ "environments" : [ { "components" : [ { "message" : "success at Thu Feb 28 10:27:38 CET 2013", "name" : "pg", "status" : "SUCCESS", "uuid" : "[c678d16c-7990-4a5a-ae19-a99f925fcb93]" }, { "message" : "success at Thu Feb 28 10:29:03 CET 2013", "name" : "qs", "status" : "SUCCESS", "uuid" : "[ee9f0db7-a9d3-4d21-96c5-1a15b0bf0adf]" } ], "message" : "", "name" : "prod" } ], "organization" : "acme", "status" : "SUCCESS" }
PostgreSQL 資料庫
使用 check_postgres.pl 指令碼
如要監控 PostgreSQL 資料庫,您可以使用標準監控指令碼 check_postgres.pl。該指令碼位於 http://bucardo.org/wiki/Check_postgres。
注意:每個 Postgres 節點中都必須安裝 check_postgres.pl 指令碼。
執行指令碼之前:
- 請確認您已安裝 perl-Time-HiRes.x86_64,這個 Perl 模組可實作高解析度鬧鐘、睡眠、取得時間和間隔計時器。舉例來說,您可以使用以下指令完成安裝:
yum install perl-Time-HiRes.x86_64
使用指令碼的 API 呼叫預設輸出內容 (check_postgres.pl) 與 Nagios 相容。安裝指令碼後,請進行下列檢查:
- 資料庫大小 - 檢查資料庫大小:
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -include=apigee -action database_size --warning='800 GB' --Critical='900 GB' - 資料庫的連入連線 - 檢查資料庫的傳入連線數,並與允許的連線數量上限進行比較:
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action Backend - 資料庫可用性和效能 - 檢查資料庫是否正在運作和可用:
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action connection - 磁碟空間 - 檢查磁碟空間:
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -actiondisk_space --warning='80%' --Critical='90%' - 加入的組織/環境 – 檢查在 Postgres 節點中加入的機構與環境數量:
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action=custom_query --query="select count(*) as pg_counter'as data-0 pg_資料來源,例如
注意:如需使用上述指令的相關說明,請參閱 http://bucardo.org/check_postgres/check_postgres.pl.html。
資料庫檢查
您可以驗證在 PostgreSQL 資料庫中建立適當的資料表。使用以下方式登入 PostgreSQL 資料庫:
psql -h /opt/apigee/var/run/apigee-postgresql/ -U apigee -d apigee
然後執行:
\d analytics."<org>.<env>.fact"
查看 Postgres 程序的健康狀態
您可以叫用下列 CURL 指令,在 Postgres 機器上執行 API 檢查:
http://<postgres_IP>:8084/v1/servers/self/health/
注意:請務必使用通訊埠 8084。
Postgres 程序生效時會傳回「有效」狀態。如果 Postgres 程序未啟動且正在執行,則會傳回「INACTIVE」狀態。
Postgres 資源
- http://www.postgresql.org/docs/9.0/static/monitoring.html
- http://www.postgresql.org/docs/9.0/static/diskusage.html
- http://bucardo.org/check_postgres/check_postgres.pl.html
Apache Cassandra
使用 JConsole – 監控工作統計資料
使用 JConsole 和下列服務網址,監控透過 JMX 提供的 JMX 屬性 (MBeans)。
service:jmx:rmi:///jndi/rmi://<ip address>:7199/jmxrmi
其中 <ip address> 是 Cassandra 伺服器的 IP。
根據預設,Cassandra 會啟用 JMX,而 Cassandra 的遠端 JMX 存取權則不需要密碼。
如要啟用 JMX 驗證來新增密碼,請按照下列步驟操作:
- 編輯 /<inst_root>/apigee/customer/application/cassandra.properties。 如果檔案不存在,請建立一個。
- 在檔案中加入以下內容:
conf_cassandra-env_com.sun.management.jmxremote.authenticate=true - 儲存檔案。
- 將下列檔案從 $JAVA_HOME 目錄複製到 /<inst_root>/apigee/data/apigee-cassandra/:
cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/data/apigee-cassandra/jmxremote.passwordAPI $APIGEE_ROOT/data/apigee-cassandra/jmxremote.passwordAPI - 編輯 jmxremote.password,並將使用者名稱和密碼新增至檔案:
cassandra password
其中 password 是 JMX 密碼。 - 編輯 jmxremote.access 並新增下列角色:
cassandra readwrite - 確認檔案是否屬於「apigee」,且檔案模式為 400:
> chown apigee:apigee /<inst_root>/apigee/data/apigee-cassandra/jmxremote。*
> chmod 400 /<inst_root>/apigee/data/apigee-cassandra/jmxremote。* - 在 Cassandra 上執行 configure:
> /<inst_root>/apigee/apigee-service/bin/apigee-service apigee-cassandra 設定 - 重新啟動 Cassandra:
> /<inst_root>/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
日後如何停用驗證功能:
- 編輯 /<inst_root>/apigee/customer/application/cassandra.properties。
- 移除檔案中的下列這一行:
conf_cassandra-env_com.sun.management.jmxremote.authenticate=true - 在 Cassandra 上執行設定:
> /<inst_root>/apigee/apigee-service/bin/apigee-service apigee-cassandra 設定 - 重新啟動 Cassandra:
> /<inst_root>/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
Cassandra JMX 統計資料
JMX MBeans |
JMX 屬性 |
---|---|
ColumnFamilies/apprepo/環境 ColumnFamilies/apprepo/機構 ColumnFamilies/apprepo/apiproxy_revisions 資料欄系列/apprepo/apiproxies 資料欄系列/稽核/稽核 資料欄 Families/audit/audits_ref |
PendingTasks |
MemtableColumnsCount |
|
MemtableDataSize |
|
ReadCount |
|
RecentReadLatencyMicros |
|
TotalReadLatencyMicros |
|
WriteCount |
|
RecentWriteLatencyMicros |
|
TotalWriteLatencyMicros |
|
TotalDiskSpaceUsed |
|
LiveDiskSpaceUsed |
|
LiveSSTableCount |
|
BloomFilterFalsePositives |
|
RecentBloomFilterFalseRatio |
|
BloomFilterFalseRatio |
使用 nodetool 公用程式管理叢集節點
nodetool 公用程式是 Cassandra 的指令列介面,可用來管理叢集節點。您可以在 <inst_root>/apigee/apigee-cassandra/bin 找到這個公用程式。
如要進一步瞭解 nodetool 公用程式,請參閱 http://www.datastax.com/docs/1.0/references/nodetool。
下列呼叫可以對所有 Cassandra 叢集節點發出:
- 一般環資訊 (對於單一 Cassandra 節點也可以):找出所有節點的「向上」和「一般」狀態。
[host]# nodetool -h localhost ring
上述指令的輸出內容如下:
Address DC Rack Status Load Owns Token
192.168.124.201 dc1 ra1 Up Normal 1.67 MB 33,33% 0. - 節點一般資訊 (每個節點呼叫)
nodetool -h localhost 資訊
上述指令的輸出內容如下所示:
符記 : 0
Gossip Active : true
載入:1.67 MB
產生編號:1361968765
運作時間 (秒) 2 - 二手伺服器狀態 (服務用戶端 API)
host]# nodetool -h localhost statusthrift
上述指令的輸出內容將顯示「執行中」狀態。 - 資料串流作業狀態:觀察 cassandra 節點的流量
nodetool -h localhost netstats 192.168.124.203
上述指令的輸出內容如下所示:
Mode: NORMAL
無串流至 /192.168.129.
Cassandra 監控 (UI)
請參閱 datastax Opscenter 網址:http://www.datastax.com/products/opscenter。
Cassandra 資源
請參考下列網址:http://www.datastax.com/docs/1.0/operations/monitoring。
Apache ZooKeeper
檢查 ZooKeeper 狀態
- 確保 ZooKeeper 程序正在執行。ZooKeeper 將 PID 檔案寫入 <inst_root>/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid。
- 測試 ZooKeeper 通訊埠,確保您可以在每個 ZooKeeper 伺服器上與通訊埠 2181 和 3888 之間建立 TCP 連線。
- 確認可以讀取 ZooKeeper 資料庫中的值。使用 ZooKeeper 用戶端程式庫 (或 /<inst_root>/apigee/apigee-zookeeper/bin/zkCli.sh) 連線,並讀取資料庫中的值。
- 檢查狀態:
> /<inst_root>/apigee/apigee-service/bin/apigee-service apigee-zookeeper 狀態
使用 ZooKeeper 四個字母
您可以透過一組使用 netcat (nc) 或 telnet 傳送至通訊埠 2181 的一組指令 (四個字母的字詞),藉此監控 ZooKeeper。
如要進一步瞭解 ZooKeeper 指令,請參閱 http://zookeeper.apache.org/doc/r3.1.2/zookeeperAdmin.html#sc_zkCommands。
例如:
- srvr:列出伺服器的完整詳細資料。
- stat:列出伺服器和已連線用戶端的簡短詳細資料。
下列指令可發出至 ZooKeeper 通訊埠:
- 執行四個字母的指令 ruok,測試伺服器是否處於非錯誤狀態。成功的回應會傳回「imok」。
echo ruok | nc <host> 2181
傳回:
imok - 執行四個字母組成的指令統計資料,列出伺服器效能和已連線的用戶端統計資料。
echo stat | nc <host <host> 2181,
ked=03 kve=020202999999999999」。
Zookeeper version: 3.4.5-1392090, 建構在 09/30/2012 17:52 GMT
/0:0:0 - 如果無法使用 netcat (nc),可將 Python 做為替代方案。建立名為 zookeeper.py 的檔案,其中包含以下內容:
import time, socket,
sys c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
c.connect((sys.argv[1], 2181))
c.connect.argv.Python on 信賴.
OpenLDAP
LDAP 等級測試
您可以監控 OpenLDAP,確認特定要求是否正確提供。換句話說,請檢查是否有特定搜尋傳回正確的結果。
- 使用 ldapsearch (yum install Openldap-clients) 查詢系統管理員的項目。這個項目可以用來驗證所有 API 呼叫。
ldapsearch -b "uid=admin,ou=users,ou=global,dc=apigee,dc=com" -x -W -D "cn=manager,dc=apigee,dc=com" -H ldap://localhost:10389 -LLL:
輸入 LDAP 管理員密碼,網址為 - 檢查管理伺服器是否仍連線至 LDAP 問題:
curl -u <userEMail>:<password> http://localhost:8080/v1/users/<ADMIN>
傳回:
{
"emailId" : <ADMIN>,
"firstName" : "admin",
"lastName"
"
您也可以監控 OpenLDAP 快取,這有助於減少磁碟存取次數,進而提升系統效能。監控並調整 OpenLDAP 伺服器中的快取大小,可能會大幅影響目錄伺服器的效能。您可以查看記錄檔 (<inst_root>/apigee/var/log),取得快取相關資訊。