Edge for Private Cloud v. 4.16.05
このドキュメントでは、Apigee Edge のオンプレミス デプロイでサポートされているコンポーネントのモニタリング手法について説明します。
JMX 認証を有効にして JMX パスワードを設定する
Management Server、Message Processor、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-router、edge-qpid-server、または edge-postgres-server のいずれかです。
- 次のいずれかを選択できます。
- -u: ユーザー名
- -p: パスワード
- -e: y(有効)または n(無効)
- 構成ファイルには次のものが含まれます。
- JMX_USERNAME=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 を使用すると、Management Server(または任意のサーバー)によって公開された JMX 統計情報を取得し、グラフィカル インターフェースに表示できます。JConsole の使用方法の詳細については、http://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.html をご覧ください。
JConsole と次のサービス URL を使用して、JMX 経由で提供される JMX 属性(MBean)をモニタリングします。
service:jmx:rmi:///jndi/rmi://<ip address>:<port>/platform
ここで、<ip address> は Management Server(またはそれぞれのサーバー)の IP アドレスです。デフォルトでは、Management Server のポートは 1099 です。
次の表に、一般的な JMX 統計情報を示します。
|
JMX MBean |
JMX 属性 |
|---|---|
|
メモリ |
HeapMemoryUsage |
|
NonHeapMemoryUsage |
|
|
用途 |
|
|
注: 属性値は、committed、init、max、used の 4 つの値で表示されます。 |
|
Edge Application API チェックの使用
Management Server(または任意のサーバー)で API チェックを実行するには、次の CURL コマンドを呼び出します。
curl http://<host>:8080/v1/servers/self/up
ここで、<host> は Management Server の 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
Edge Application の使用 - ユーザー、組織、デプロイのチェック
Management Server は、各オンプレミス インストールで他のすべてのパーセルをまとめる重要な役割を果たします。次のコマンドを実行すると、管理サーバーでユーザー、組織、デプロイのステータスを確認できます。
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
すべての呼び出しで「deployed」ステータスが表示されます。これらが失敗した場合は、次の操作を行います。
- Management Server のログ(<inst_root>/apigee/var/log/edge-management-server)でエラーを確認します。
- Management Server に対して呼び出しを行い、正常に機能しているかどうかを確認します。
- ELB からサーバーを削除し、Management Server を再起動します。
/<inst_root>/apigee/apigee-service/bin/apigee-service edge-management-server restart
ルーター
次の CURL コマンドを呼び出すことで、Router(または任意のサーバー)で API チェックを実行できます。
curl http://<host>:8081/v1/servers/self/up
ここで、host は Router の IP アドレスです。
この呼び出しは「true」と「false」を返します。true の場合、ノードが稼働しており、Java サービスが実行されていることを意味します。
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 - サービスが実行されている場合は、サービスが機能していることをテストします。クラスタのステータスをモニタリングするには、memberCount と reachableCount を比較し、「memberCount != reachableCount」となっているすべてのインスタンスにアラートを送信します。
curl -v -u <userEmail>:<password> http://localhost:port/v1/cluster
ここで、port は Router の場合は 8081、Message Processor の場合は 8082 です。上記の CURL コマンドの出力は次のようになります。
{
"memberCount" : 12,
"pod" : "rea1gw001",
"reachableCount" : 12,
"region" : "us-east-1",
"types" : [ "management-server" ]
* Connection #0 to host ms05apigee left intact
* Closing connection #0
} - 機能していない場合は、次のコマンドを実行して障害を調査するか、問題のあるメンバーを見つけます。
curl http://localhost:port/v1/cluster/members
ここで、port は Router の場合は 8081、Message Processor の場合は 8082 です。上記の CURL コマンドの出力は次のようになります。
{
"lastChange" : 0,
"latency" : 0,
"state" : "CONNECTED",
"uuid" : "9c4c8bde-0015-4dc5-82d2-59fb326c4074"
}, {
"address" : "/192.168.5.209:4526",
"clusterType" : "router,message-processor",
"lastChange" : 1350658037228,
"latency" : 3,
"pod" : "rea1gw001",
"region" : "us-east-1",
"serverType" : "message-processor",
"state" : "CONNECTED",
"uuid" : "f1c663a1-2bb8-469f-b5fd-69a5c5aa91c5"
}, {
"address" : "/192.168.5.29:4526",
"clusterType" : "router,message-processor",
"lastChange" : 1350623005057,
"latency" : 1,
"pod" : "rea1gw001",
"region" : "us-east-1",
"serverType" : "message-processor",
"state" : " DISCONNECTED ",
"uuid" : "4cfe932b-f644-4581-b1ae-df338af9c7ce"
}, {
"address" : "/192.168.4.182:4526",
"clusterType" : "router,message-processor",
"lastChange" : 1350657730535,
"latency" : 1,
"pod" : "rea1gw001",
"region" : "us-east-1",
"serverType" : "message-processor",
"state" : "CONNECTED",
"uuid" : "cba063d5-b8a4-409f-9e0b-f5d403e02091"
} - IP アドレス 192.168.5.29 が切断されていることがわかります。サーバーを再起動します。
/<inst_root>/apigee/apigee-service/bin/apigee-service edge-router restart
注: ルーターが切断状態になっている場合は、ELB からルーターを削除して再起動します。 - 再起動後、機能していることを確認します。
curl -v http://localhost:port/v1/cluster
ここで、port は Router の場合は 8081、Message Processor の場合は 8082 です。
Message Processor
JConsole を使用してシステム ヘルスチェックとプロセス情報をモニタリングする
Management Server の場合と同じ手順を行います。
注: ポート 1101 を使用してください。
Edge Application API チェックの使用
ルーターの場合と同じ手順を行います。
注: ポート 8082 を使用してください。
JMX メッセージ フロー チェックの使用
Management Server の場合と同じ手順を行います。
注: ポート 1101 を使用してください。
Qpid サーバー
JConsole を使用してシステム ヘルスチェックとプロセス情報をモニタリングする
Management Server の場合と同じ手順を行います。
注: ポート 1102 を使用してください。
Edge Application API チェックの使用
Management Server の場合と同じ手順を行います。
注: ポート 8083 を使用していることを確認してください。Qpid Server では、次の CURL コマンドもサポートされています。
curl http://<qpid_IP>:8083/v1/servers/self
Postgres サーバー
JConsole を使用してシステム ヘルスチェックとプロセス情報をモニタリングする
Management Server の場合と同じ手順を行います。
注: ポート 1103 を使用してください。
Edge Application API チェックの使用
Management Server の場合と同じ手順を行います。
注: ポート 8084 を使用してください。Postgres Server では、次の CURL コマンドもサポートされています。
curl http://<postgres_IP>:8084/v1/servers/self
Edge Application の組織と環境のチェックを使用する
Postgres サーバーにオンボーディングされている組織名と環境名を確認するには、次の CURL コマンドを実行します。
curl http:// <postgres_IP>:8084/v1/servers/self/organizations
注: ポート 8084 を使用してください。
組織名と環境名が表示されます。
Edge Application の axstatus チェックの使用
次の CURL コマンドを発行して、分析サーバーのステータスを確認できます。
curl -u userEmail:password http://<host>:<port>/v1/organizations/<orgname>/environments/<envname>/provisioning/axstatus
すべての分析サーバーのステータスが SUCCESS と表示されます。上記の 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 で入手できます。
注: スクリプト check_postgres.pl は、各 Postgres ノードにインストールする必要があります。
スクリプトを実行する前に:
- 高解像度のアラーム、スリープ、gettimeofday、インターバル タイマーを実装する Perl モジュールである perl-Time-HiRes.x86_64 がインストールされていることを確認します。たとえば、次のコマンドを使用してインストールできます。
yum install perl-Time-HiRes.x86_64
スクリプト 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
注: 上記のコマンドの使用方法についてサポートが必要な場合は、http://bucardo.org/check_postgres/check_postgres.pl.html をご覧ください。
DB チェック
PostgreSQL データベースに適切なテーブルが作成されていることを確認できます。次のコマンドを使用して PostgreSQL データベースにログインします。
psql -h /opt/apigee/var/run/apigee-postgresql/ -U apigee -d apigee
次のコマンドを実行します。
\d analytics."<org>.<env>.fact"
postgres プロセスのヘルス ステータスを確認する
postgres マシンで API チェックを実行するには、次の CURL コマンドを呼び出します。
http://<postgres_IP>:8084/v1/servers/self/health/
注: ポート 8084 を使用していることを確認してください。
postgres プロセスがアクティブな場合は、「ACTIVE」ステータスを返します。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 と次のサービス URL を使用して、JMX 経由で提供される JMX 属性(MBean)をモニタリングします。
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.password
cp ${JAVA_HOME}/lib/management/jmxremote.access $APIGEE_ROOT/data/apigee-cassandra/jmxremote.access - 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 configure - 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 で configure を実行します。
> /<inst_root>/apigee/apigee-service/bin/apigee-service apigee-cassandra configure - Cassandra を再起動します。
> /<inst_root>/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
Cassandra JMX の統計情報
|
JMX MBean |
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 のコマンドライン インターフェースであり、クラスタノードの管理に使用されます。このユーティリティは <inst_root>/apigee/apigee-cassandra/bin にあります。
nodetool ユーティリティの詳細については、http://www.datastax.com/docs/1.0/references/nodetool をご覧ください。
すべての Cassandra クラスタノードで次の呼び出しを行うことができます。
- 一般的なリング情報(単一の Cassandra ノードでも可能): すべてのノードで「Up」と「Normal」を探します。
[host]# nodetool -h localhost ring
上記のコマンドの出力は次のようになります。
Address DC Rack Status State Load Owns Token
192.168.124.201 dc1 ra1 Up Normal 1.67 MB 33,33% 0
192.168.124.202 dc1 ra1 Up Normal 1.68 MB 33,33% 56713727820156410577229101238628035242
192.168.124.203 dc1 ra1 Up Normal 1.67 MB 33,33% 113427455640312821154458202477256070484 - ノードに関する一般的な情報(ノードごとに呼び出し)
nodetool -h localhost info
上記のコマンドの出力は次のようになります。
Token : 0
Gossip active : true
Load : 1.67 MB
Generation No : 1361968765
Uptime (seconds) : 78108
Heap Memory (MB) : 46,80 / 772,00
データセンター : dc1
Rack : ra1
Exceptions : 0 - Thrift サーバーのステータス(クライアント API を提供)
host]# nodetool -h localhost statusthrift
上記のコマンドの出力には、ステータスが「running」と表示されます。 - データ ストリーミング オペレーションのステータス: Cassandra ノードのトラフィックを監視します。
nodetool -h localhost netstats 192.168.124.203
上記のコマンドの出力は次のようになります。
Mode: NORMAL
Nothing streaming to /192.168.124.203
Nothing streaming from /192.168.124.203
Pool Name Active Pending Completed
Commands n/a 0 1688
Responses n/a 0 292277
Cassandra Monitoring(UI)
datastax opscenter の URL(http://www.datastax.com/products/opscenter)を参照してください。
Cassandra リソース
次の URL を参照してください。http://www.datastax.com/docs/1.0/operations/monitoring
Apache ZooKeeper
ZooKeeper のステータスの確認
- ZooKeeper プロセスが実行されていることを確認します。ZooKeeper は、<inst_root>/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid に 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 status
ZooKeeper の 4 文字コマンドの使用
ZooKeeper は、netcat(nc)または telnet を使用してポート 2181 に送信される一連の短いコマンド(4 文字の単語)でモニタリングできます。
ZooKeeper コマンドの詳細については、http://zookeeper.apache.org/doc/r3.1.2/zookeeperAdmin.html#sc_zkCommands をご覧ください。
次に例を示します。
- srvr: サーバーの詳細を一覧表示します。
- stat: サーバーと接続されているクライアントの簡単な詳細を一覧表示します。
ZooKeeper ポートに対して次のコマンドを発行できます。
- 4 文字のコマンド ruok を実行して、サーバーがエラー状態でないことをテストします。成功すると、「imok」が返されます。
echo ruok | nc <host> 2181
戻り値:
imok - 4 文字のコマンド 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
注: ZooKeeper が Mode: leader、follower、observer のいずれであるかを確認することが重要になる場合があります。 - 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
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 管理者パスワードの入力を求められます。
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@apigee.com - Management Server が LDAP に接続されているかどうかを確認します。
curl -u <userEMail>:<password> http://localhost:8080/v1/users/<ADMIN>
戻り値:
{
"emailId" : <ADMIN>,
"firstName" : "admin",
"lastName" : "admin"
}
OpenLDAP キャッシュをモニタリングすることもできます。これにより、ディスク アクセスの数を減らし、システムのパフォーマンスを向上させることができます。OpenLDAP サーバーのキャッシュ サイズをモニタリングして調整すると、ディレクトリ サーバーのパフォーマンスに大きな影響を与える可能性があります。ログファイル(<inst_root>/apigee/var/log)を表示して、キャッシュに関する情報を取得できます。