このドキュメントでは、Apigee Edge for Private Cloud のオンプレミス デプロイでサポートされているコンポーネントのモニタリング手法について説明します。
概要
Edge では、サービスに関する詳細情報を取得したり、ステータスを確認したりするための方法がいくつかサポートされています。次の表に、対象となる各サービスで実行できるチェックの種類を示します。
| Mgmt API | |||||||
| コンポーネント | メモリ使用量 [JMX*] | Service Check | ユーザー/組織/ デプロイ ステータス | axstatus | データベース チェック | apigee-service のステータス |
apigee-monit** |
| 管理サーバー | |||||||
| Message Processor | |||||||
| ルーター | |||||||
| Qpid | |||||||
| Postgres | |||||||
| 詳細 | 詳細 | 詳細 | 詳細 | 詳細 | 詳細 | 詳細 | |
|
* JMX を使用する前に、JMX を有効にするで説明されているように、JMX を有効にする必要があります。 ** |
|||||||
ポートと構成ファイルのモニタリング
各コンポーネントは、異なるポートで Java Management Extensions(JMX)と Management API Monitoring 呼び出しをサポートしています。次の表に、各タイプのサーバーの JMX ポートと Management API ポート、構成ファイルの場所を示します。
| コンポーネント | JMX ポート | Management API ポート | 構成ファイルの場所 |
|---|---|---|---|
| 管理サーバー | 1099 | 8080 | $APIGEE_ROOT/customer/application/management-server.properties |
| Message Processor | 1101 | 8082 | $APIGEE_ROOT/customer/application/message-processor.properties |
| ルーター | 1100 | 8081 | $APIGEE_ROOT/customer/application/router.properties |
| Qpid | 1102 | 8083 | $APIGEE_ROOT/customer/application/qpid-server.properties |
| Postgres | 1103 | 8084 | $APIGEE_ROOT/customer/application/postgres-server.properties |
JMX を使用してコンポーネントをモニタリングする
以降のセクションでは、JMX を使用して Edge コンポーネントをモニタリングする方法について説明します。
JMX を有効にする
認証または SSL ベースの通信なしで JMX を有効にするには、次の手順を行います。注: 本番環境システムでは、セキュリティを確保するために、暗号化された認証と SSL の両方を有効にする必要があります。
- 適切な構成ファイルを編集します(
構成ファイルのリファレンスを参照)。構成ファイルが存在しない場合は作成します。
conf_system_jmxremote_enable=true
- 構成ファイルを保存し、オーナーが
apigee:apigeeであることを確認します。 - 適切な Edge コンポーネントを再起動する
apigee-service edge-management-server restart
JMX を無効にするには、プロパティ conf_system_jmxremote_enable を削除するか、値を false に変更します。次に、適切な Edge コンポーネントを再起動します。
JMX での認証
Edge for Private Cloud は、ファイルに保存されている詳細情報を使用したパスワード ベースの認証をサポートしています。セキュリティを強化するために、パスワードをハッシュとして保存できます。
- edge-* コンポーネントで JMX 認証を有効にするには、適切な構成ファイルを編集します(
構成ファイルのリファレンスを参照)。構成ファイルが存在しない場合は作成します。
構成ファイルを保存し、オーナーがconf_system_jmxremote_enable=true conf_system_jmxremote_authenticate=true conf_system_jmxremote_encrypted_auth=true conf_system_jmxremote_access_file=/opt/apigee/customer/application/management-server/jmxremote.access conf_system_jmxremote_password_file=/opt/apigee/customer/application/management-server/jmxremote.password
apigee:apigeeであることを確認します。 - パスワードの SHA256 ハッシュを作成します。
echo -n '
' | openssl dgst -sha256 - JMX ユーザー認証情報を含む
jmxremote.passwordファイルを作成します。- 次のファイルを
$JAVA_HOMEディレクトリから/opt/apigee/customer/application/<component>/ディレクトリにコピーします。cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/customer/application/management-server/jmxremote.password - ファイルを編集し、次の構文を使用して JMX ユーザー名とパスワードを追加します。
USERNAME <HASH-PASSWORD>
- ファイルのオーナーが
apigeeで、ファイルモードが 400 であることを確認します。chown apigee:apigee $APIGEE_ROOT/customer/application/management-server/jmxremote.password chmod 400 $APIGEE_ROOT/customer/application/management-server/jmxremote.password
- 次のファイルを
- JMX ユーザー権限を持つ
jmxremote.accessファイルを作成します。- $JAVA_HOME ディレクトリから
/opt/apigee/customer/application/<component>/ディレクトリに次のファイルをコピーします。cp ${JAVA_HOME}/lib/management/jmxremote.access $APIGEE_ROOT/customer/application/management-server/jmxremote.access - ファイルを編集し、JMX ユーザー名と権限(READONLY/READWRITE)を追加します。
USERNAME READONLY
- ファイルのオーナーが
apigeeで、ファイルモードが 400 であることを確認します。chown apigee:apigee $APIGEE_ROOT/customer/application/management-server/jmxremote.access chmod 400 $APIGEE_ROOT/customer/application/management-server/jmxremote.access
- $JAVA_HOME ディレクトリから
- 適切な Edge コンポーネントを再起動します。
apigee-service edge-management-server restart
JMX 認証を無効にするには、プロパティ conf_system_jmxremote_authenticate を削除するか、値を false に変更して、適切な Edge コンポーネントを再起動します。
JMX での SSL
edge-* コンポーネントで SSL ベースの JMX を有効にするには:
- 適切な構成ファイルを編集します(
構成ファイル リファレンスをご覧ください)。構成ファイルが存在しない場合は作成します。
構成ファイルを保存し、所有者がconf_system_jmxremote_enable=true conf_system_jmxremote_ssl=true conf_system_javax_net_ssl_keystore=/opt/apigee/customer/application/management-server/jmxremote.keystore conf_system_javax_net_ssl_keystorepassword=<keystore-password>
apigee:apigeeであることを確認します。 - サーバーキーを含むキーストアを準備し、上記の構成
conf_system_javax_net_ssl_keystoreで指定したパスに配置します。キーストア ファイルがapigee:apigeeで読み取り可能であることを確認します。 - 適切な Edge コンポーネントを再起動します。
apigee-service edge-management-server restart
SSL ベースの JMX を無効にするには、プロパティ conf_system_jmxremote_ssl を削除するか、値を false に変更します。適切な Edge コンポーネントを再起動します。
JConsole でモニタリングする
JConsole(JMX 準拠のツール)を使用して、ヘルスチェックとプロセス統計を管理、モニタリングします。JConsole を使用すると、サーバーによって公開された JMX 統計情報を取得し、グラフィカル インターフェースに表示できます。詳細については、JConsole の使用をご覧ください。
JMX で SSL が有効になっている場合は、トラストストアとトラストストアのパスワードを指定して JConsole を起動する必要があります。 JConsole の使用をご覧ください。
JConsole は、次のサービス URL を使用して、JMX を介して提供される JMX 属性(MBean)をモニタリングします。
service:jmx:rmi:///jndi/rmi://IP_address:port_number/jmxrmi
ここで
- IP_address は、モニタリングするサーバーの IP アドレスです。
- port_number は、モニタリングするサーバーの JMX ポート番号です。
たとえば、Management Server をモニタリングするには、次のようなコマンドを実行します(サーバーの IP アドレスが 216.3.128.12 であると仮定します)。
service:jmx:rmi:///jndi/rmi://216.3.128.12:1099/jmxrmi
この例では、Management Server の JMX ポートであるポート 1099 を指定しています。その他のポートについては、JMX と Management API のモニタリング ポートをご覧ください。
次の表に、一般的な JMX 統計情報を示します。
| JMX MBean | JMX 属性 |
|---|---|
|
メモリ |
HeapMemoryUsage |
|
NonHeapMemoryUsage |
|
|
用途 |
|
構成ファイル リファレンス
以降のセクションでは、JMX 関連の構成のために Edge コンポーネント構成ファイルに加える必要がある変更について説明します。詳細については、モニタリング ポートと構成ファイルをご覧ください。
適切なコンポーネントの構成ファイルに追加する JMX 構成
- edge-component で JMX エージェントを有効にします。デフォルトは false です。
conf_system_jmxremote_enable=true
パスワード ベースの認証の構成
- パスワード ベースの認証を有効にします。デフォルトは false です。
conf_system_jmxremote_authenticate=true
- アクセス ファイルのパス。Apigee ユーザーのみが所有し、読み取り可能である必要があります。
conf_system_jmxremote_access_file=/opt/apigee/customer/application/management-server/jmxremote.access
- パスワード ファイルへのパス。Apigee ユーザーのみが所有し、読み取り可能である必要があります。
conf_system_jmxremote_password_file=/opt/apigee/customer/application/management-server/jmxremote.password
- パスワードを暗号化形式で保存することを有効にします。デフォルトは false です。
conf_system_jmxremote_encrypted_auth=true
SSL ベースの JMX の構成
- JMX 通信で SSL を有効にします。デフォルトは False です。
conf_system_jmxremote_ssl=true
- キーストアへのパス。Apigee ユーザーのみが所有し、読み取り可能である必要があります。
conf_system_javax_net_ssl_keystore=/opt/apigee/customer/application/management-server/jmxremote.keystore
- キーストアのパスワード:
conf_system_javax_net_ssl_keystorepassword=changeme
オプションの JMX 構成
記載されている値はデフォルト値であり、変更可能です。
- JMX ポート。デフォルト値は、次の表に記載されています。
conf_system_jmxremote_port=
- JMX RMI ポート。デフォルトでは、Java プロセスはランダムなポートを選択します。
conf_system_jmxremote_rmi_port=
- リモート スタブのホスト名。localhost のデフォルトの IP アドレス。
conf_system_java_rmi_server_hostname=
- SSL で JMX レジストリを保護します。デフォルト: false。SSL が有効になっている場合にのみ適用されます。
conf_system_jmxremote_registry_ssl=false
Management API でモニタリングする
Edge には、サーバーのサービス チェック、ユーザー、組織、デプロイのチェックに使用できる API がいくつか用意されています。このセクションでは、これらの API について説明します。
サービス チェックを実行する
Management API には、サービスのモニタリングと問題の診断に使用できるエンドポイントがいくつか用意されています。これらのエンドポイントには、次のものが含まれます。
| エンドポイント | 説明 |
|---|---|
/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 と 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)の Message Processor に関する情報を取得します。
curl http://216.3.128.12:8082/v1/servers/self -u sysAdminEmail:password -H "Accept: application/xml"
ユーザー、組織、デプロイのステータスをモニタリングする
Management API を使用して、Management Server と Message Processor でプロキシのユーザー、組織、デプロイのステータスをモニタリングするには、次のコマンドを実行します。
curl http://host:port_number/v1/users -u sysAdminEmail:passwordcurl http://host:port_number/v1/organizations -u sysAdminEmail:passwordcurl http://host:port_number/v1/organizations/orgname/deployments -u sysAdminEmail:password
ここで、port_number は Management Server の場合は 8080、Message Processor の場合は 8082 です。
この呼び出しでは、システム管理者のユーザー名とパスワードを使用して認証する必要があります。
サーバーは、すべての呼び出しに対して「deployed」ステータスを返す必要があります。これらの操作が失敗した場合は、次の操作を行います。
- サーバーログでエラーを確認します。ログは次の場所にあります。
- 管理サーバー:
opt/apigee/var/log/edge-management-server - Message Processor:
opt/apigee/var/log/edge-message-processor
- 管理サーバー:
- サーバーに対して呼び出しを行い、サーバーが正常に機能しているかどうかを確認します。
- ELB からサーバーを削除して再起動します。
/opt/apigee/apigee-service/bin/apigee-service service_name restart
ここで、service_name は次のようになります。
edge-management-serveredge-message-processor
apigee-service コマンドでステータスを確認する
サービスを実行しているサーバーにログインしている場合は、apigee-service コマンドを使用して Edge サービスのトラブルシューティングを行うことができます。
apigee-service を使用してサービスのステータスを確認するには:
- サーバーにログインして、次のコマンドを実行します。
/opt/apigee/apigee-service/bin/apigee-service service_name status
ここで、service_name は次のいずれかです。
- 管理サーバー:
edge-management-server - Message Processor:
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 Server にオンボーディングされている組織名と環境名を確認するには、次の curl コマンドを発行します。
curl -v http://postgres_IP:8084/v1/servers/self/organizations
組織名と環境名が表示されます。
アナリティクスのステータスを確認する
次の curl コマンドを発行して、Postgres と Qpid の分析サーバーのステータスを確認できます。
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 スクリプトをインストールする必要があります。
- 高解像度のアラーム、スリープ、gettimeofday、インターバル タイマーを実装する Perl モジュールである
perl-Time-HiRes.x86_64がインストールされていることを確認します。たとえば、次のコマンドを使用してインストールできます。yum install perl-Time-HiRes.x86_64
- CentOS 7: CentOS v7 で check_postgres.pl を使用する前に、
perl-Data-Dumper.x86_64RPM をインストールします。
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 プロセスのヘルス ステータスを確認する
Postgres マシンで API チェックを実行するには、次の curl コマンドを呼び出します。
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 がデフォルトで有効になっており、Cassandra へのリモート JMX アクセスにパスワードは必要ありません。
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}/customer/application/apigee-cassandra/jmxremote.password conf_cassandra_env_com.sun.management.jmxremote.access.file=${APIGEE_ROOT}/customer/application/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/customer/application/apigee-cassandra/にコピーします。cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.password jmxremote.passwordファイルを編集し、次の構文を使用して JMX ユーザー名とパスワードを追加します。JMX_USERNAME JMX_PASSWORD
ここで、JMX_USERNAME と JMX_PASSWORD は、以前に設定した JMX のユーザー名とパスワードです。
- ファイルのオーナーが「apigee」で、ファイルモードが 400 であることを確認します。
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/jmxremote.password
chmod 400 /opt/apigee/customer/application/apigee-cassandra/jmxremote.password
- 次のファイルを
jmxremote.accessファイルをコピーして編集します。- 次のファイルを
$JAVA_HOMEディレクトリから/opt/apigee/customer/application/apigee-cassandra/にコピーします。cp ${JAVA_HOME}/lib/management/jmxremote.access$APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.access jmxremote.accessファイルを編集して、次のロールを追加します。JMX_USERNAME readwrite
- ファイルの所有者が「apigee」で、ファイルモードが 400 であることを確認します。
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/jmxremote.access
chmod 400 /opt/apigee/customer/application/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ファイルを開きます。cassandra.propertiesファイルを作成して編集します。/opt/apigee/customer/application/cassandra.propertiesファイルを編集します。ファイルが存在しない場合は作成します。- ファイルに以下を追加します。
conf_cassandra_env_com.sun.management.jmxremote.encrypted.authenticate=true
- cassandra.properties ファイルを保存します。
- 次の例に示すように、ファイルのオーナーを apigee:apigee に変更します。
chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
- コマンドラインで、
echo -n 'Secret' | openssl dgst -sha1と入力して、目的のパスワードの SHA1 ハッシュを生成します。 $APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.password(前のセクションで作成)のユーザー名に対してパスワードを設定します。- Cassandra で configure を実行します。
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Cassandra を再起動します。
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- 他のすべての Cassandra ノードでこのプロセスを繰り返します。
Cassandra で SSL を使用して JMX を有効にする
SSL で JMX を有効にすると、Cassandra との JMX ベースの通信にセキュリティと暗号化が追加されます。SSL で JMX を有効にするには、SSL ベースの JMX 接続を受け入れるように Cassandra に鍵と証明書を提供する必要があります。また、SSL 用に nodetool(および JMX 経由で Cassandra と通信するその他のツール)を構成する必要もあります。
SSL 対応の JMX は、平文と暗号化された JMX パスワードの両方をサポートしています。
Cassandra で SSL を使用して JMX を有効にするには、次の操作を行います。
- JMX を有効にします。必要に応じて、パスワードの暗号化を有効にします。
- Cassandra の JMX 認証を有効にします。上記のとおりです。nodetool が構成済みのユーザー名とパスワードで動作していることを確認します。
/opt/apigee/apigee-cassandra/bin/nodetool -u <JMX_USER> -pw <JMX_PASS> ring
キーストアとトラストストアを準備します。
キーストアには鍵と証明書が含まれている必要があります。これは、Cassandra サーバーの構成に使用されます。キーストアに複数の鍵ペアが含まれている場合、Cassandra は最初の鍵ペアを使用して SSL を有効にします。
キーストアと鍵のパスワードは同じにする必要があります(keytool を使用して鍵を生成する際のデフォルト)。
- トラストストアには証明書のみが含まれ、クライアント(apigee-service ベースのコマンドまたは nodetool)が JMX 経由で接続するために使用されます。
上記の要件を確認したら、次の手順を行います。
- キーストア ファイルを
/opt/apigee/customer/application/apigee-cassandra/に配置します。 - キーストア ファイルが Apigee ユーザーのみが読み取り可能であることを確認するには、次のように入力します。
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/keystore.node1
chmod 400 /opt/apigee/customer/application/apigee-cassandra/keystore.node1
- 次の手順で、SSL を使用して JMX 用に Cassandra を構成します。
- 次のコマンドを入力して Cassandra ノードを停止します。
apigee-service apigee-cassandra stop
/opt/apigee/customer/application/cassandra.propertiesファイルを開き、次の行を追加して、Cassandra で SSL を有効にします。conf_cassandra_env_com.sun.management.jmxremote.ssl=true conf_cassandra_env_javax.net.ssl.keyStore=/opt/apigee/customer/application/apigee-cassandra/keystore.node1 conf_cassandra_env_javax.net.ssl.keyStorePassword=keystore-password
- 次の例に示すように、ファイルのオーナーを apigee:apigee に変更します。
chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
- Cassandra で configure を実行します。
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Cassandra を再起動します。
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- 他のすべての Cassandra ノードでこのプロセスを繰り返します。
- 次のコマンドを入力して、Cassandra ノードを起動します。
apigee-service apigee-cassandra start
- 次のコマンドを入力して Cassandra ノードを停止します。
apigee-serviceCassandra コマンドを構成します。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 認証と SSL の
apigee-serviceを構成するには、いくつかのオプションがあります。ユーザビリティとセキュリティ プラクティスに基づいてオプションを選択します。オプション 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 -Djavax.net.ssl.trustStoreType=PKCS12
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> # If you are using a non standard truststore type, export truststore type as well # Possible values are JKS, PKCS12, BCFKS export CASS_JMX_TRUSTSTORE_TYPE=PKCS12
次の
apigee-serviceコマンドを実行します。エラーなしで実行された場合、構成は正しいです。apigee-service apigee-cassandra ring
オプション 3(SSL 引数を
apigee-serviceに直接渡す)次のような
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> CASS_JMX_TRUSTSTORE_TYPE=PKCS12 /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra ring
nodetool を設定します。Nodetool では、JMX パラメータを渡す必要があります。SSL 対応の JMX で実行するように nodetool を構成するには、次の 2 つの方法があります。
これらのオプションは、SSL 関連の構成を nodetool に渡す方法が異なります。どちらの場合も、nodetool を実行するユーザーには、トラストストア ファイルに対する読み取り権限が必要です。使いやすさとセキュリティ対策に基づいて、適切なオプションを選択します。
nodetool パラメータの詳細については、 Apache Cassandra nodetool のドキュメントをご覧ください。
構成オプション 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 -Djavax.net.ssl.trustStoreType=PKCS12
上記で指定したトラストストアのパスには、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 -Djavax.net.ssl.trustStoreType=PKCS12 -Dssl.enable=true -u <jmx-user-name> -pw <jmx-user-password> -h localhost ring
SSL 構成を元に戻す
上記の手順で説明した SSL 構成を元に戻す必要がある場合は、次の手順を行います。
apigee-cassandraを停止するには、次のように入力します。apigee-service apigee-cassandra stop
- ファイル
/opt/apigee/customer/application/cassandra.propertiesから行conf_cassandra-env_com.sun.management.jmxremote.ssl=trueを削除します。 /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
ring、stop、backupなどのapigee-serviceベースのコマンドが機能していることを確認します。- nodetool で
--sslスイッチの使用を停止する
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 で configure を実行します。
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- Cassandra を再起動します。
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- 他のすべての Cassandra ノードでこのプロセスを繰り返します。
JConsole を使用する: タスクの統計情報をモニタリングする
JConsole と次のサービス URL を使用して、JMX 経由で提供される JMX 属性(MBean)をモニタリングします。
service:jmx:rmi:///jndi/rmi://IP_address:7199/jmxrmi
ここで、IP_address は Cassandra サーバーの IP です。
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 のコマンドライン インターフェースです。このユーティリティは /opt/apigee/apigee-cassandra/bin にあります。
すべての Cassandra クラスタノードで次の呼び出しを行うことができます。
- 一般的なリング情報(単一の Cassandra ノードの場合も可能): すべてのノードで「Up」と「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
- Thrift サーバーのステータス(クライアント 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 リソース
次の URL を参照してください。 Cassandra のモニタリング。
Apache Qpid Broker-J のモニタリング
Qpid Broker-J は、Qpid 管理コンソールからモニタリングできます。このセクションでは、コンソールにアクセスして基本的なモニタリング機能を使用する方法について説明します。管理コンソールの使用方法の詳細については、Apache Qpid ドキュメントの Web Management Console をご覧ください。
管理コンソールにアクセスする
デフォルトの管理コンソール ポートは 8090 です。このデフォルト ポートでコンソールにアクセスするには、ウェブブラウザで次の URL にアクセスします。
http://QPID_NODE_IP:8090
コンソールにログインするには、Apigee によって設定されたデフォルトの認証情報、または Edge 構成ファイルで設定された認証情報を使用します。詳細については、Edge 構成ファイル リファレンスをご覧ください。
キューとメッセージをモニタリングする
左側のナビゲーション パネルで、[Java-Broker] > [virtualhosts] > [queues] に移動します。キューを選択すると、UI のメイン部分に詳細が表示されます。詳細ビューには、キューの属性と統計情報(配信されたメッセージ、キューに格納されたメッセージ、メッセージ レートなど)が表示されます。
ログファイルを表示、ダウンロードする
左側のナビゲーション パネルで、[Java-Broker] > [brokerloggers] > [logfile] に移動します。メイン UI の詳細ビューでは、ログファイルの詳細を表示して、ログファイルをダウンロードできます。
Qpid 管理 API の使用
Apache Qpid Broker-J REST API を使用して、管理タスクを自動化し、ブローカーをモニタリングできます。詳細については、 Apache Qpid Broker REST API のドキュメントをご覧ください。
コマンドライン ツールを使用してブローカーをモニタリングすることもできます。次に例を示します。
curl "QPID_NODE_IP":"8090"/api/latest/broker -u "USERNAME":"PASSWORD"
Qpid の SSL でモニタリングを有効にする
モニタリングと管理のセキュリティを強化するには、Qpid の管理ポータルと Qpid の Management API で SSL を有効にします。鍵と証明書を指定するには、以下のガイドラインに沿って対応してください。
Qpid には、Apigee で有効になっているファイル キーストアのオプションが用意されています。このタイプは、Java と Java ツール(keytool など)で認識される標準の JKS キーストア形式を受け入れます。また、PKCS12 キーストアも受け入れることができます。これは、OpenSSL などのツールを使用して生成できます。
キーストアの準備
キーストアの生成については、Java Keytool のドキュメントをご覧ください。
PKCS12 キーストアの生成については、OpenSSL のドキュメントをご覧ください。
要件の確認後
- キーストア ファイルを
/opt/apigee/customer/application/apigee-qpiddに配置します。 - キーストア ファイルが Apigee ユーザーのみ読み取り可能であることを確認します。
chown apigee:apigee /opt/apigee/customer/application/apigee-qpidd/qpidd.keystore chmod 400 /opt/apigee/customer/application/apigee-qpidd/qpidd.keystore
Qpid で SSL を有効にする
次の手順を一度に 1 つの Qpid ノードで実行します。
/opt/apigee/customer/application/qpidd.properties ファイルを開き、次の行を追加します。
conf_qpidd_qpid_management.https.enabled=true conf_qpidd_qpid.keystore.storeUrl=/opt/apigee/customer/application/apigee-qpidd/qpidd.keystore conf_qpidd_qpid.keystore.password=keystore-password conf_qpidd_qpid.keystore.certificateAlias=certificate-alias ## If you are using a PKCS12 keystore, specify the keystore type conf_qpidd_qpid.keystore.keyStoreType=PKCS12
- ファイルのオーナーを apigee:apigee に変更します。
chown apigee:apigee /opt/apigee/customer/application/qpidd.properties
- Qpidd を構成します。
apigee-service apigee-qpidd configure
- Qpidd を再起動します。
apigee-service apigee-qpidd restart
- wait_for_ready でステータスを確認します。
apigee-service apigee-qpidd wait_for_ready
SSL 構成を元に戻す
/opt/apigee/customer/application/qpidd.properties ファイルからプロパティを削除するか、コメントアウトします。
conf_qpidd_qpid_management.https.enabled=true conf_qpidd_qpid.keystore.storeUrl=/opt/apigee/customer/application/apigee-qpidd/keystore
- Qpidd を構成します。
apigee-service apigee-qpidd configure
- Qpidd を再起動します。
apigee-service apigee-qpidd restart
- wait_for_ready でステータスを確認します。
apigee-service apigee-qpidd wait_for_ready
Apache ZooKeeper
ZooKeeper のステータスを確認する
- ZooKeeper プロセスが実行されていることを確認します。ZooKeeper は PID ファイルを
opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pidに書き込みます。 - ZooKeeper ポートをテストして、すべての ZooKeeper サーバーのポート 2181 と 3888 への TCP 接続を確立できることを確認します。
- ZooKeeper データベースから値を読み取れることを確認します。ZooKeeper クライアント ライブラリ(または
/opt/apigee/apigee-zookeeper/bin/zkCli.sh)を使用して接続し、データベースから値を読み取ります。 - ステータスを確認します。
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper status
ZooKeeper の 4 文字の単語を使用する
ZooKeeper は、netcat(nc)または telnet を使用してポート 2181 に送信される一連のコマンド(4 文字の単語)でモニタリングできます。
ZooKeeper コマンドの詳細については、 Apache ZooKeeper コマンド リファレンスをご覧ください。
次に例を示します。
srvr: サーバーの詳細をすべて一覧表示します。stat: サーバーと接続されているクライアントの簡単な詳細を一覧表示します。
次のコマンドを ZooKeeper ポートに発行できます。
- 4 文字のコマンド ruok を実行して、サーバーがエラー状態でないことをテストします。成功すると、「imok」が返されます。
echo ruok | nc host 2181
戻り値:
imok
- 4 文字のコマンド
statを実行して、サーバーのパフォーマンスと接続されているクライアントの統計情報を一覧表示します。echo stat | nc host 2181
戻り値:
Zookeeper version: 3.8.5-19f1842d4b6ee1f82cc8b05284959b26c6ae507d, built on 2025-09-18 17:23 UTC 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 レベルのテスト
SymasLDAP をモニタリングして、特定のリクエストが適切に処理されているかどうかを確認できます。つまり、正しい結果を返す特定の検索を確認します。
ldapsearch(yum install symasldap-clients)を使用して、システム管理者のエントリをクエリします。このエントリは、すべての API 呼び出しを認証するために使用されます。/opt/symas/bin/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" }
SymasLDAP キャッシュをモニタリングすることもできます。これにより、ディスク アクセスの数を減らし、システムのパフォーマンスを向上させることができます。SymasLDAP サーバーのキャッシュ サイズをモニタリングして調整すると、ディレクトリ サーバーのパフォーマンスに大きな影響を与える可能性があります。ログファイル(opt/apigee/var/log)を表示して、キャッシュに関する情報を取得できます。