本文件說明內部部署系統支援的元件監控技術 Apigee Edge 的部署作業
總覽
Edge 支援多種取得服務詳細資料及檢查服務 狀態。下表列出每個符合資格的檢查項目類型 服務:
管理 API | |||||||
服務 | 記憶體用量 [JMX*] | 服務檢查 | 使用者/機構/ 部署作業狀態 | axstatus | 資料庫檢查 | apigee-service 狀態 |
apigee-monit ** |
管理伺服器 | |||||||
訊息處理器 | |||||||
Postgres | |||||||
Qpid | |||||||
路由器 | |||||||
更多資訊 | 更多資訊 | 更多資訊 | 更多資訊 | 更多資訊 | 更多資訊 | 更多資訊 | |
* 您必須先啟用 JMX , 詳細說明請參閱啟用 JMX。 ** |
JMX and Management API 監控通訊埠
每個元件都支援不同通訊埠的 JMX and Management API 監控呼叫。 下表列出每種伺服器類型的 JMX and Management API 通訊埠:
元件 | JMX 通訊埠 | Management API 通訊埠 |
---|---|---|
管理伺服器 | 1099 | 8080 |
路由器 | 1100 | 8081 |
訊息處理器 | 1101 | 8082 |
Qpid | 1102 | 8083 |
Postgres | 1103 | 8084 |
使用 JMX 監控
Management Server、Message Processor、Qpid 和 Postgres 的監控程序 請使用 JMX不過,JMX 預設只會針對 Cassandra 啟用,而且所有 其他 Edge 元件因此,您必須先為每個元件分別啟用 JMX 能夠加以監控
預設未啟用 JMX 驗證。您可以為所有使用者啟用 JMX 驗證 元件。如果是 Cassandra,請按照 為 Cassandra 啟用 JMX 驗證。
啟用 JMX
只有 Cassandra 會預設啟用 JMX,其他 Edge 則預設為停用。 元件。本節說明如何為其他 Edge 元件啟用 JMX。
如何啟用 JMX:
- 編輯元件的設定檔。這個檔案位於
opt/apigee/edge-component_name/bin/start
。實際運作中 環境,這些設定檔都位於不同的機器上。請在每個伺服器上的檔案位置中選擇:
- 管理伺服器:
/opt/apigee/edge-management-server/bin/start
- 訊息處理器:
/opt/apigee/edge-message-processor/bin/start
- Postgres:
/opt/apigee/edge-postgres-server/bin/start
- Qpid:
/opt/apigee/edge-qpid-server/bin/start
- 路由器:
/opt/apigee/edge-router/bin/start
舉例來說,管理伺服器伺服器上的設定檔位於
/opt/apigee/edge-management-server/bin/start
。 - 管理伺服器:
- 將下列
com.sun.management.jmxremote
選項新增至exec
啟動元件的一行:-Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=port_number \ -Dcom.sun.management.jmxremote.local.only=false \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.ssl=false
其中 port_number 是服務的 JMX 通訊埠。如要取得服務的 JMX 通訊埠編號,請參閱 JMX and Management API 監控通訊埠。
舉例來說,如要在管理伺服器上啟用 JMX,請將下列字串新增至「管理」應用程式 伺服器的設定檔:
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 \ -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 \ $* $debug_options com.apigee.kernel.MicroKernel
這個範例會指定 Management Server 的通訊埠 1099。如前所述 服務有自己的通訊埠編號
設定檔中編輯的程式碼如下所示:
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 -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 $* $debug_options com.apigee.kernel.MicroKernel
- 儲存設定檔。
- 使用
restart
指令重新啟動元件。舉例來說,如要重新啟動管理伺服器,請執行下列指令:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
根據預設,系統不會啟用 JMX 驗證功能。您可以為所有使用者啟用 JMX 驗證 元件中的操作說明,方法請見啟用 JMX 驗證。啟用 JMX Cassandra 驗證機制,請參閱 為 Cassandra 啟用 JMX 驗證。
啟用 JMX 驗證
預設未啟用 JMX 驗證。您可以為所有使用者啟用 JMX 驗證 元件。如果是 Cassandra,請按照 為 Cassandra 啟用 JMX 驗證
如要啟用 JMX 驗證,請針對所有用戶端執行下列 change_jmx_auth
動作
節點:
/opt/apigee/apigee-service/bin/apigee-service component_name change_jmx_auth [options|-f config_file]
在此情況下:
- component 是下列其中一項:
edge-management-server
edge-message-processor
edge-postgres-server
edge-qpid-server
edge-router
- options 會指定下列內容:
-u username
-p password
-e [y|n]
(啟用或停用)
- config_file 會指定您定義的設定檔位置
包括:
JMX_USERNAME=username
JMX_ENABLED=y|n
JMX_PASSWORD=password
(如果未設定或未在-p
,系統會提示您)
您可以使用指令列選項或設定檔來定義使用者名稱。 以及啟用/停用狀態您無法同時指定選項和設定 檔案。
下列範例使用以下指令為管理伺服器啟用 JMX 驗證 路線選項:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -u foo -p bar -e y
下列範例使用設定檔而非指令列選項:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -f /tmp/my-config-file
如果您在多個節點上執行 Edge,請在所有節點上執行指令,並指定相同的 使用者名稱和密碼
如要透過指令列停用 JMX 驗證,請使用「-e n」選項,如下所示 範例如下所示:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -e n
使用 JConsole 監控
使用 JConsole (與 JMX 相容的工具) 管理及監控健康狀態檢查和程序統計資料。 透過 JConsole,您可以使用伺服器揭露的 JMX 統計資料,並將這些統計資料顯示在 圖形介面。若需更多資訊,請參閲 使用 JConsole。
JConsole 會使用下列服務網址來監控透過 JMX:
service:jmx:rmi:///jndi/rmi://IP_address:port_number/jmxrmi
在此情況下:
- IP_address 是您要監控的伺服器 IP 位址。
- port_number 是您要授予的伺服器 JMX 通訊埠編號 監控功能
舉例來說,若要監控管理伺服器,發出類似如下的指令 (假設 伺服器的 IP 位址為 216.3.128.12):
service:jmx:rmi:///jndi/rmi://216.3.128.12:1099/jmxrmi
請注意,這個範例指定了通訊埠 1099,也就是管理伺服器 JMX 通訊埠。如果您不是 通訊埠,請參閱 JMX and Management API 監控通訊埠。
下表列出一般 JMX 統計資料:
JMX MBeans | JMX 屬性 |
---|---|
記憶體 |
HeapMemoryUsage |
NonHeapMemoryUsage |
|
用量 |
|
使用 Management API 監控
Edge 提供多個 API,可讓您用於在伺服器上執行服務檢查,以及 檢查使用者、機構和部署作業本節將說明這些 API。
執行服務檢查
Management API 提供多個端點,用以監控和診斷 免費 Google Cloud 服務這些端點包括:
端點 | 說明 |
---|---|
/servers/self/up |
檢查服務是否正在執行。您不必執行這項 API 呼叫, 並進行驗證。 如果服務正在執行,此端點會傳回下列回應: <ServerField> <Up>true</Up> </ServerField> 如果服務並未執行,您會收到類似以下的回應 (視服務類型和檢查方式而定): curl: Failed connect to localhost:port_number; Connection refused |
/servers/self |
傳回服務的相關資訊,包括:
這個 API 呼叫需要用 Apigee 管理員憑證進行驗證。 |
如要使用這些端點,請透過使用curl
語法如下:
curl http://host:port_number/v1/servers/self/up -H "Accept: [application/json|application/xml]"
curl http://host:port_number/v1/servers/self -u username:password -H "Accept: [application/json|application/xml]"
在此情況下:
- host 是您要檢查的伺服器 IP 位址。如果您已經登入 伺服器可以使用「localhost」否則,請一併指定伺服器的 IP 位址 做為使用者名稱和密碼
- port_number 是您要檢查伺服器的 Management API 通訊埠。這是 為每個元件類型使用不同的通訊埠舉例來說,管理伺服器的 Management API 通訊埠為 8080。如需要使用的 Management API 通訊埠編號清單,請參閱 JMX and Management API 監控通訊埠
如要變更回應格式,您可以將 Accept
標頭指定為
"application/json"或「application/xml」
以下範例會取得 localhost (通訊埠 8081) 上的路由器狀態:
curl http://localhost:8081/v1/servers/self/up -H "Accept: application/xml"
下列範例會取得 216.3.128.12 (通訊埠) 的訊息處理者資訊 8082):
curl http://216.3.128.12:8082/v1/servers/self -u sysAdminEmail:password -H "Accept: application/xml"
監控使用者、機構及部署狀態
您可以使用 Management API 監控使用者、機構及部署狀態 執行下列指令,管理管理伺服器和訊息處理器上的 Proxy:
curl http://host:port_number/v1/users -u sysAdminEmail:passwordcurl http://host:port_number/v1/organizations -u sysAdminEmail:password
curl http://host:port_number/v1/organizations/orgname/deployments -u sysAdminEmail:password
其中 port_number 為管理伺服器 (管理伺服器) 8080 或 8082 (訊息) 處理器。
這個呼叫需要您透過系統管理使用者名稱進行驗證 密碼。
伺服器應會傳回「已部署」的。如果上述方法失敗,請執行以下操作:
- 查看伺服器記錄,瞭解是否有任何錯誤。記錄位於:
- 管理伺服器:
opt/apigee/var/log/edge-management-server
- 訊息處理器:
opt/apigee/var/log/edge-message-processor
- 管理伺服器:
- 對伺服器發出呼叫,檢查該伺服器是否正常運作。
- 將伺服器從 ELB 中移除,然後重新啟動:
/opt/apigee/apigee-service/bin/apigee-service service_name restart
其中 service_name 為:
edge-management-server
edge-message-processor
使用 apigee-service
指令檢查狀態
您可以在以下情況下使用 apigee-service
指令排解 Edge 服務問題:
使用者登入執行服務的伺服器。
如要使用 apigee-service
查看服務狀態,請按照下列步驟操作:
- 登入伺服器並執行下列指令:
/opt/apigee/apigee-service/bin/apigee-service service_name status
其中 service_name 為下列其中一項:
- 管理伺服器:
edge-management-server
- 訊息處理器:
edge-message-processor
- Postgres:
edge-postgres-server
- Qpid:
edge-qpid-server
- 路由器:
edge-router
例如:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor status
- 管理伺服器:
- 如果服務未執行,請啟動服務:
/opt/apigee/apigee-service/bin/apigee-service service_name start
- 重新啟動服務後,使用
先前使用的
apigee-service status
指令,或透過 Management API 執行 相關說明請參閱「使用 Management API 監控」一文。例如:
curl -v http://localhost:port_number/v1/servers/self/up
其中 port_number 是服務的 Management API 通訊埠。
這個範例假設您已登入伺服器,且可以使用「localhost」作為 主機名稱。如要使用 Management API 遠端檢查狀態,您必須指定 IP 位址 位址,並在 API 中納入系統管理員的使用者名稱和密碼 呼叫。
Postgres 監控
Postgres 支援多種公用程式,可用來查看其狀態。這些公用程式 都會在後續章節中說明。
查看 Postgres 上的機構和環境
您可以查看已加入 Postgres 伺服器的機構和環境名稱
執行下列 curl
指令:
curl -v http://postgres_IP:8084/v1/servers/self/organizations
系統應會顯示機構和環境名稱。
驗證數據分析狀態
您可以發出以下項目,驗證 Postgres 和 Qpid 分析伺服器的狀態
curl
指令:
curl -u userEmail:password http://host:port_number/v1/organizations/orgname/environments/envname/provisioning/axstatus
系統應會顯示所有分析伺服器的成功狀態,如以下範例所示 顯示:
{ "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 資料庫
本節說明您可以專門用於監控 Postgres 的技術 資料庫
使用 check_postgres.pl
指令碼
如要監控 PostgreSQL 資料庫,可以使用標準監控指令碼
check_postgres.pl
。若需更多資訊,請參閲
http://bucardo.org/wiki/Check_postgres.
執行指令碼之前:
- 您必須在每個 Postgres 節點上安裝 check_postgres.pl 指令碼。
- 確認您已安裝
perl-Time-HiRes.x86_64
。 執行高解析度鬧鐘、睡眠、取得時間和間歇計時器。舉例來說, 可以使用以下指令進行安裝:
yum install perl-Time-HiRes.x86_64
- CentOS 7:在 CentOS v7 上使用 check_postgres.pl 前,請先安裝
每分鐘
perl-Data-Dumper.x86_64
轉。
check_postgres.pl 輸出
使用 check_postgres.pl
的 API 呼叫預設輸出內容為 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 backends
- 檢查資料庫是否正在執行並且可供使用:
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 -action disk_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 result from pg_tables where schemaname='analytics' and tablename like '%fact'" --warning='80' --critical='90' --valtype=integer
執行資料庫檢查
您可以驗證是否已在 PostgreSQL 資料庫中建立適當的資料表。登入 PostgreSQL 建立資料庫
psql -h /opt/apigee/var/run/apigee-postgresql/ -U apigee -d apigee
接著執行:
\d analytics."org.env.fact"
查看 postgres 程序的健康狀態
您可以叫用下列 curl
,在 Postgres 機器上執行 API 檢查
指令:
curl -v http://postgres_IP:8084/v1/servers/self/health
這個指令會在 postgres 程序執行時傳回 ACTIVE
狀態。如果
Postgres 程序未執行,會傳回 INACTIVE
狀態。
Postgres 資源
如要進一步瞭解如何監控 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
Cassandra 預設會啟用 JMX,遠端 JMX 存取 Cassandra 不需要 密碼。
為 Cassandra 啟用 JMX 驗證
您可以為 Cassandra 啟用 JMX 驗證。執行完成後,系統會要求您 將使用者名稱和密碼向所有對 nodetool 公用程式的呼叫傳遞。
如何為 Cassandra 啟用 JMX 驗證:
- 建立及編輯
cassandra.properties
檔案:- 編輯
/opt/apigee/customer/application/cassandra.properties
檔案。如果 檔案不存在,請建立該檔案。 - 請將以下內容新增到該檔案:
conf_cassandra-env_com.sun.management.jmxremote.authenticate=true conf_cassandra-env_com.sun.management.jmxremote.password.file=${APIGEE_ROOT}/data/apigee-cassandra/jmxremote.password conf_cassandra-env_com.sun.management.jmxremote.access.file=${APIGEE_ROOT}/data/apigee-cassandra/jmxremote.access
- 儲存
cassandra.properties
檔案。 - 將檔案擁有者變更為
apigee:apigee
,如以下範例所示:chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
如要進一步瞭解如何使用屬性檔案設定符記,請參閱 如何設定 Edge。
- 編輯
- 建立及編輯
jmx_auth.sh
:- 如果檔案不存在,請於以下位置建立檔案:
/opt/apigee/customer/application/jmx_auth.sh
- 在檔案中新增下列屬性:
export CASS_JMX_USERNAME=JMX_USERNAME export CASS_JMX_PASSWORD=JMX_PASSWORD
- 儲存
jmx_auth.sh
檔案。 - 檔案來源:
source /opt/apigee/customer/application/jmx_auth.sh
- 如果檔案不存在,請於以下位置建立檔案:
- 複製並編輯
jmxremote.password
檔案:- 將下列檔案從
$JAVA_HOME
目錄複製到/opt/apigee/data/apigee-cassandra/
:cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/data/apigee-cassandra/jmxremote.password
- 編輯
jmxremote.password
檔案,並新增 JMX 使用者名稱和密碼 使用下列語法:JMX_USERNAME JMX_PASSWORD
其中 JMX_USERNAME 和 JMX_PASSWORD 是 JMX 使用者名稱和 密碼。
- 請確定檔案的擁有者為「apigee」並且檔案模式為 400:
chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.password
chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.password
- 將下列檔案從
- 複製並編輯
jmxremote.access
檔案:- 將下列檔案從
$JAVA_HOME
目錄複製到/opt/apigee/data/apigee-cassandra/
:cp ${JAVA_HOME}/lib/management/jmxremote.access $APIGEE_ROOT/data/apigee-cassandra/jmxremote.access
- 編輯 jmxremote.access 檔案並新增下列角色:
JMX_USERNAME readwrite
- 請確定檔案的擁有者為「apigee」並且檔案模式為 400:
chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.access
chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.access
- 將下列檔案從
- 在 Cassandra 上執行
configure
:/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- 重新啟動 Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- 對所有其他 Cassandra 節點重複這項程序。
啟用 JMX 密碼加密
如要啟用 JMX 密碼加密,請按照下列步驟操作:
- 開啟
source/conf/casssandra-env.sh
檔案。 - 取消註解檔案中的下列幾行:
-
JVM_OPTS="$JVM_OPTS -Djava.security.auth.login.config={T}conf_cassandra-env_java.security.auth.login.config{/T}"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.login.config=ApigeeSecureFileLoginModule"
-
- 在指令列中輸入文字,產生所需密碼的 SHA1 雜湊
echo -n 'Secret' | openssl dgst -sha1
- 根據
jmxremote.password
中的使用者名稱設定密碼。 - 將
cassandra-env.sh
檔案變更回唯讀狀態。
為 Cassandra 啟用具備 SSL 的 JMX
啟用 JMX 搭配 SSL 可為與 Cassandra如要透過 SSL 啟用 JMX,您必須向 Cassandra 提供金鑰和憑證,以便 接受 SSL 型 JMX 連線。另外,您也需要設定 nodetool (以及 以便與 SSL 通訊。
啟用 SSL 的 JMX 支援明文和加密的 JMX 密碼。
如要為 Cassandra 啟用具備 SSL 的 JMX,請按照下列步驟操作:
- 啟用 JMX。 必要時啟用密碼加密。
- 為 Cassandra 啟用 JMX 驗證。
。確保 nodetool 正常運作
使用者名稱和密碼
/opt/apigee/apigee-cassandra/bin/nodetool -u <JMX_USER> -pw <JMX_PASS> ring
準備 KeyStore 和信任儲存庫。
KeyStore 應包含金鑰和憑證。 並用於設定 Cassandra 伺服器如果是 KeyStore 包含多個金鑰組,Cassandra 會使用第一個金鑰組 即可啟用 SSL 功能。
請注意,KeyStore 的密碼和金鑰應相同 (使用 keytool 產生金鑰時的預設值)。
- Truststore 只能包含憑證,並由用戶端使用 (以 Apigee 服務為基礎) 指令或 nodetool) 來透過 JMX 連線。
確認上述規定後:
- 將 KeyStore 檔案放入
/opt/apigee/data/apigee-cassandra
中。 - 藉由輸入
chown apigee:apigee /opt/apigee/data/apigee-cassandra/keystore.node1 chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node1
- 請按照下列步驟為具有 SSL 的 JMX 設定 Cassandra:
- 輸入以停止 Cassandra 節點
apigee-service apigee-cassandra stop
- 透過以下方式在 Cassandra 中啟用安全資料傳輸層 (SSL)
開啟檔案「
/opt/apigee/customer/application/cassandra.properties
」 然後新增下列程式碼:conf_cassandra-env_com.sun.management.jmxremote.ssl=true
這個檔案應由
apigee:apigee
所擁有。 - 在 Cassandra 中啟用 SSL 相關設定,如下所示。
開啟檔案
/opt/apigee/apigee-cassandra/source/conf/cassandra-env.sh
也可以取消註解下列幾行,變更路徑/opt/apigee/data/apigee-cassandra/keystore.node1
以及 KeyStore 密碼 敬上 確認檔案的擁有者為JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStore=/opt/apigee/data/apigee-cassandra/keystore.node1" JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStorePassword=keystore-password" JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.registry.ssl=true"
apigee:apigee
。 - 輸入
apigee-service apigee-cassandra start
- 輸入以停止 Cassandra 節點
- 設定
apigee-service
Cassandra 指令。 您需要在執行期間設定特定環境變數apigee-service
指令,包括下列指令:apigee-service apigee-cassandra stop apigee-service apigee-cassandra wait_for_ready apigee-service apigee-cassandra ring apigee-service apigee-cassandra backup
為 JMX 驗證設定
apigee-service
的方法有很多種 以及 SSL請依據可用性和安全性做法選擇所需選項。選項 1 (儲存在檔案中的 SSL 引數)
設定下列環境變數:
export CASS_JMX_USERNAME=ADMIN # Provide encrypted password here if you have setup JMX password encryption export CASS_JMX_PASSWORD=PASSWORD export CASS_JMX_SSL=Y
在 Apigee 使用者的主目錄 (
/opt/apigee
) 中建立檔案。$HOME/.cassandra/nodetool-ssl.properties
編輯該檔案,並新增下列程式碼:
-Djavax.net.ssl.trustStore=<path-to-truststore.node1> -Djavax.net.ssl.trustStorePassword=<truststore-password> -Dcom.sun.management.jmxremote.registry.ssl=true
確保 Apigee 使用者能夠讀取信任檔案。
執行下列
apigee-service
指令。 如果執行時沒有發生錯誤,就表示您的設定正確無誤。apigee-service apigee-cassandra ring
選項 2 (儲存在環境變數中的 SSL 引數)
設定下列環境變數:
export CASS_JMX_USERNAME=ADMIN # Provide encrypted password here if you have setup JMX password encryption export CASS_JMX_PASSWORD=PASSWORD export CASS_JMX_SSL=Y # Ensure the truststore file is accessible by Apigee user. export CASS_JMX_TRUSTSTORE=<path-to-trustore.node1> export CASS_JMX_TRUSTSTORE_PASSWORD=<truststore-password>
執行下列
apigee-service
指令。如果執行時沒有發生錯誤,就表示您的設定正確無誤。apigee-service apigee-cassandra ring
選項 3 (直接傳遞至
apigee-service
的 SSL 引數)執行任何
apigee-service
指令,如下所示。 您不需要設定任何環境變數。CASS_JMX_USERNAME=ADMIN CASS_JMX_PASSWORD=PASSWORD CASS_JMX_SSL=Y CASS_JMX_TRUSTSTORE=<path-to-trustore.node1> CASS_JMX_TRUSTSTORE_PASSWORD=<trustore-password> /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra ring
設定 nodetool。必須將 JMX 參數傳遞至 Nodetool。與 GCP 互動的方式 您可以將 nodetool 設為在執行時使用已啟用 SSL 的 JMX 環境,詳情請參閱 設定選項如下:
選項與 SSL 相關設定傳送至 nodetool 的方式不同。無論是哪種情況 執行 nodetool 的使用者應擁有信任儲存庫檔案的 READ 權限。 請依據可用性和安全性做法選取適當選項。
如要進一步瞭解 nodetool 參數,請參閱 DataStax 說明文件。
設定選項 1
在執行 nodetool 的使用者主目錄中建立檔案。
$HOME/.cassandra/nodetool-ssl.properties
在檔案中新增下列幾行內容:
-Djavax.net.ssl.trustStore=<path-to-truststore.node1> -Djavax.net.ssl.trustStorePassword=<truststore-password> -Dcom.sun.management.jmxremote.registry.ssl=true
凡是執行上述作業的使用者,都能存取上方指定的信任存放區路徑 nodetool.
使用
--ssl
選項執行nodetool
。/opt/apigee/apigee-cassandra/bin/nodetool --ssl -u <jmx-user-name> -pw <jmx-user-password> -h localhost ring
設定選項 2
使用包含下列額外參數的單一指令執行
nodetool
。/opt/apigee/apigee-cassandra/bin/nodetool -Djavax.net.ssl.trustStore=<path-to-truststore.node1> -Djavax.net.ssl.trustStorePassword=<truststore-password> -Dcom.sun.management.jmxremote.registry.ssl=true -Dssl.enable=true -u <jmx-user-name> -pw <jmx-user-password> -h localhost ring
還原 SSL 設定
如果您需要還原程序中所述的 SSL 設定 ,請按照下列步驟操作:
- 加入即可
apigee-cassandra
停止apigee-service apigee-cassandra stop
- 移除下列位置的
conf_cassandra-env_com.sun.management.jmxremote.ssl=true
行:/opt/apigee/customer/application/cassandra.properties
檔案。 - 將
/opt/apigee/apigee-cassandra/source/conf/cassandra-env.sh
中的下列幾行註解排除# JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStore=/opt/apigee/data/apigee-cassandra/keystore.node0" # JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStorePassword=keypass" # JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.registry.ssl=true”
- 從入場
apigee-cassandra
開始 - 如果已設定環境變數
CASS_JMX_SSL
,請移除該變數。unset CASS_JMX_SSL
- 檢查
apigee-service
的指令,例如ring
、stop
、backup
等都在運作中。 - 停止搭配使用
--ssl
切換器和 nodetool
apigee-service apigee-cassandra start
停用 Cassandra 的 JMX 驗證
如何為 Cassandra 停用 JMX 驗證:
- 編輯
/opt/apigee/customer/application/cassandra.properties
。 - 請在檔案中移除下列這一行:
conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
- 在 Cassandra 上執行設定:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- 重新啟動 Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- 對所有其他 Cassandra 節點重複這項程序。
使用 JConsole:監控工作統計資料
使用 JConsole 和下列服務網址,監控透過 JMX:
service:jmx:rmi:///jndi/rmi://IP_address:7199/jmxrmi
其中 IP_address 是 Cassandra 伺服器的 IP。
Cassandra JMX 統計資料
JMX MBeans | JMX 屬性 |
---|---|
ColumnFamilies/apprepo/environments ColumnFamilies/apprepo/organizations ColumnFamilies/apprepo/apiproxy_revisions ColumnFamilies/apprepo/apiproxies ColumnFamilies/audit/audits ColumnFamilies/audit/audits_ref |
PendingTasks |
MemtableColumnsCount |
|
MemtableDataSize |
|
ReadCount |
|
RecentReadLatencyMicros |
|
TotalReadLatencyMicros |
|
WriteCount |
|
RecentWriteLatencyMicros |
|
TotalWriteLatencyMicros |
|
TotalDiskSpaceUsed |
|
LiveDiskSpaceUsed |
|
LiveSSTableCount |
|
BloomFilterFalsePositives |
|
RecentBloomFilterFalseRatio |
|
BloomFilterFalseRatio |
使用 nodetool 管理叢集節點
nodetool 公用程式是 Cassandra 的指令列介面,
叢集節點您可以在 /opt/apigee/apigee-cassandra/bin
找到這個公用程式。
可以對所有 Cassandra 叢集節點進行下列呼叫:
- 一般環狀資訊 (適用於單一 Cassandra 節點):請找出
「向上」和「Normal」適用於所有節點
nodetool [-u username -pw password] -h localhost ring
只有在下列情況下,您才需要傳送使用者名稱和密碼 為 Cassandra 啟用 JMX 驗證。
上述指令的輸出內容如下所示:
Datacenter: dc-1 ========== Address Rack Status State Load Owns Token 192.168.124.201 ra1 Up Normal 1.67 MB 33,33% 0 192.168.124.202 ra1 Up Normal 1.68 MB 33,33% 5671...5242 192.168.124.203 ra1 Up Normal 1.67 MB 33,33% 1134...0484
- 節點的一般資訊 (每個節點的呼叫)
nodetool [-u username -pw password] -h localhost info
上述指令的輸出內容如下所示:
ID : e2e42793-4242-4e82-bcf0-oicu812 Gossip active : true Thrift active : true Native Transport active: true Load : 273.71 KB Generation No : 1234567890 Uptime (seconds) : 687194 Heap Memory (MB) : 314.62 / 3680.00 Off Heap Memory (MB) : 0.14 Data Center : dc-1 Rack : ra-1 Exceptions : 0 Key Cache : entries 150, size 13.52 KB, capacity 100 MB, 1520781 hits, 1520923 requests, 1.000 recent hit rate, 14400 save period in seconds Row Cache : entries 0, size 0 bytes, capacity 0 bytes, 0 hits, 0 requests, NaN recent hit rate, 0 save period in seconds Counter Cache : entries 0, size 0 bytes, capacity 50 MB, 0 hits, 0 requests, NaN recent hit rate, 7200 save period in seconds Token : 0
- 等待伺服器的狀態 (提供用戶端 API)
nodetool [-u username -pw password] -h localhost statusthrift
上述指令的輸出內容如下所示:
running
- 資料串流作業狀態:觀察 Cassandra 節點的流量:
nodetool [-u username -pw password] -h localhost netstats
上述指令的輸出內容如下所示:
Mode: NORMAL Not sending any streams. Read Repair Statistics: Attempted: 151612 Mismatch (Blocking): 0 Mismatch (Background): 0 Pool Name Active Pending Completed Dropped Commands n/a 0 0 0 Responses n/a 0 0 n/a
如要進一步瞭解 nodetool,請參閱 關於 nodetool 公用程式。
Cassandra 資源
請參閱以下網址:http://www.datastax.com/docs/1.0/operations/monitoring。
Apache ZooKeeper
查看 ZooKeeper 狀態
- 確認 ZooKeeper 程序正在執行。ZooKeeper 會將 PID 檔案寫入
opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid
。 - 測試 ZooKeeper 通訊埠,以確保您可以建立與通訊埠 2181 及 3888 美元。
- 確認您可以從 ZooKeeper 資料庫讀取值。使用 ZooKeeper 連線
用戶端程式庫 (或
/opt/apigee/apigee-zookeeper/bin/zkCli.sh
),並讀取 - 檢查狀態:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper status
使用 ZooKeeper 字母字詞
透過傳送一組命令 (四個字母的單字) 即可監控 ZooKeeper,而指令會傳送至 通訊埠 2181 使用 netcat (nc) 或 telnet
如要進一步瞭解 ZooKeeper 指令,請參閱 Apache ZooKeeper 指令參考資料。
例如:
srvr
:列出伺服器的完整詳細資料。stat
:列出伺服器和已連線用戶端的簡要詳細資料。
您可以對 ZooKeeper 連接埠發出以下指令:
- 只要執行四個字母的指令 ruok,即可測試伺服器是否在非錯誤狀態下執行。A 罩杯
成功的回應會傳回「imok」
echo ruok | nc host 2181
傳回:
imok
- 執行四字母指令
stat
,即可列出伺服器效能並保持連線 客戶統計資料:echo stat | nc host 2181
傳回:
敬上Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT Clients: /0:0:0:0:0:0:0:1:33467[0](queued=0,recved=1,sent=0) /192.168.124.201:42388[1](queued=0,recved=8433,sent=8433) /192.168.124.202:42185[1](queued=0,recved=1339,sent=1347) /192.168.124.204:39296[1](queued=0,recved=7688,sent=7692) Latency min/avg/max: 0/0/128 Received: 26144 Sent: 26160 Connections: 4 Outstanding: 0 Zxid: 0x2000002c2 Mode: follower Node count: 283
- 如果無法使用 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.send(sys.argv[2]) time.sleep(0.1) print c.recv(512)
現在執行下列 Python 程式碼:
python zookeeper.py 192.168.124.201 ruok
python zookeeper.py 192.168.124.201 stat
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 管理員密碼:
Enter LDAP Password:
輸入密碼後,您會在表單中看到回應:
dn: uid=admin,ou=users,ou=global,dc=apigee,dc=com objectClass: organizationalPerson objectClass: person objectClass: inetOrgPerson objectClass: top uid: admin cn: admin sn: admin userPassword:: e1NTSEF9bS9xbS9RbVNXSFFtUWVsU1F0c3BGL3BQMkhObFp2eDFKUytmZVE9PQ= = mail: opdk@google.com
- 請使用以下指令檢查 Management Server 是否仍與 LDAP 連線:
curl -u userEMail:password http://localhost:8080/v1/users/ADMIN
傳回:
{ "emailId" : ADMIN, "firstName" : "admin", "lastName" : "admin" }
您也可以監控 OpenLDAP 快取,進而減少存取磁碟的次數
進而改善系統效能然後調整 Cloud Storage 中的
OpenLDAP 伺服器可能會嚴重影響目錄伺服器的效能。您可以查看記錄檔
檔案 (opt/apigee/var/log
) 來取得快取相關資訊。