モニタリング方法

Edge for Private Cloud v. 4.17.01

このドキュメントでは、Apigee Edge のオンプレミス デプロイでサポートされているコンポーネントのモニタリング手法について説明します。

JMX の有効化

JMX は、Cassandra ではデフォルトで有効になっており、他のすべての Edge コンポーネントではデフォルトで無効になっています。そのため、コンポーネントごとに JMX を個別に有効にする必要があります。

各コンポーネントは、異なるポートで JMX をサポートしています。次の表に、JMX ポートと、そのポートで JMX を有効にするために変更するファイルを示します。

コンポーネント JMX ポート ファイル
管理サーバー 1099 /opt/apigee/edge-management-server/bin/start
Message Processor 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

たとえば、Management Server で JMX を有効にするには、エディタで /opt/apigee/edge-management-server/bin/start を開きます。Management Server の起動に使用される次の行が表示されます。

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 

この行では、Management Server の 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

ファイルを保存して、コンポーネントを再起動します。たとえば、Management Server を再起動するには、次のコマンドを実行します。

> /opt/apigee/apigee-service/bin/ apigee-service edge-management-server restart

JMX 認証を有効にして JMX パスワードを設定する

Management Server、Message Processor、Qpid、Postgres のモニタリング プロセスはすべて JMX を使用します。JMX はデフォルトで有効になっており、リモート JMX アクセスにパスワードは必要ありません。

JMX 認証を有効にするには、各コンポーネントに change_jmx_auth アクションがあります。これを使用して、認証の有効化/無効化と JMX 認証情報の設定を行います。

JMX 認証を有効にするには、次のコマンドを使用します。

>  /opt/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=username
    • JMX_ENABLED=y/n
    • JMX_PASSWORD=password(設定されていない場合、または -p で渡されていない場合は、入力を求められます)

たとえば、コマンドラインでオプションを使用するには、次のようにします。

> /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 configFile

複数のノードで Edge を実行している場合は、すべてのノードでこのコマンドを実行し、同じユーザー名とパスワードを指定します。

後で JMX 認証を無効にするには、次のコマンドを使用します。

> /opt/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>/jmxrmi

ここで、<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 のリクエストに応答できません。

トラブルシューティング

  1. サーバーにログインして、次のコマンドを実行します。
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server status
  2. サービスが実行されていない場合は、サービスを開始します。
    /opt/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」ステータスが表示されます。これらが失敗した場合は、次の操作を行います。

  1. Management Server のログ(opt/apigee/var/log/edge-management-server)でエラーを確認します。
  2. Management Server に対して呼び出しを行い、正常に機能しているかどうかを確認します。
  3. ELB からサーバーを削除し、Management Server を再起動します。
    /opt/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 の場合、ノードが稼働しており、Router サービスが実行されていることを意味します。

HTTP 200(OK)レスポンスが返されない場合、Edge はポート 8081 のリクエストに応答できません。

トラブルシューティング

  1. サーバーにログインして、次のコマンドを実行します。
    /<inst_root>/apigee/apigee-service/bin/apigee-service edge-router status
  2. サービスが実行されていない場合は、サービスを開始します。
    /<inst_root>/apigee/apigee-service/bin/apigee-service edge-router start
  3. 再起動後、機能していることを確認します。
    curl -v http://localhost:port/v1/servers/self/up

    ここで、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 ノードにインストールする必要があります。

スクリプトを実行する前に:

  1. 高解像度のアラーム、スリープ、gettimeofday、インターバル タイマーを実装する Perl モジュールである perl-Time-HiRes.x86_64 がインストールされていることを確認します。たとえば、次のコマンドを使用してインストールできます。
    yum install perl-Time-HiRes.x86_64

スクリプト check_postgres.pl を使用した API 呼び出しのデフォルト出力は、Nagios と互換性があります。スクリプトをインストールしたら、次のチェックを行います。

  1. データベース サイズ - データベース サイズを確認します。
    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'
  2. データベースへの受信接続 - データベースへの受信接続の数を確認し、許可されている最大接続数と比較します。
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action backends
  3. データベースの可用性とパフォーマンス - データベースが実行中で、使用可能かどうかを確認します。
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action connection
  4. ディスク容量 - ディスク容量を確認します。
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action disk_space --warning='80%' --critical='90%'
  5. オンボーディングされた組織/環境 - 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 のリソース

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 認証を有効にしてパスワードを追加するには:

  1. /opt/apigee/customer/application/cassandra.properties を編集します。 ファイルが存在しない場合は作成します。
  2. ファイルに以下を追加します。
    conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
  3. ファイルを保存します。
  4. $JAVA_HOME ディレクトリから /opt/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
  5. jmxremote.password を編集し、ユーザー名とパスワードをファイルに追加します。
    cassandra password

    ここで、password は JMX パスワードです。
  6. jmxremote.access を編集して、次のロールを追加します。
    cassandra readwrite
  7. ファイルの所有者が「apigee」であり、ファイルモードが 400 であることを確認します。
    > chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.*
    > chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.*
  8. Cassandra で configure を実行します。
    > /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
  9. Cassandra を再起動します。
    > /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart

後で認証を無効にするには:

  1. opt/apigee/customer/application/cassandra.properties を編集します。
  2. ファイル内の次の行を削除します。
    conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
  3. Cassandra で configure を実行します。
    > /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
  4. Cassandra を再起動します。
    > /opt/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 のコマンドライン インターフェースであり、クラスタノードの管理に使用されます。このユーティリティは opt/apigee/apigee-cassandra/bin にあります。

nodetool ユーティリティの詳細については、http://www.datastax.com/docs/1.0/references/nodetool をご覧ください。

すべての Cassandra クラスタノードで次の呼び出しを行うことができます。

  1. 一般的なリング情報(単一の 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
  2. ノードに関する一般的な情報(ノードごとに呼び出し)
    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
  3. Thrift サーバーのステータス(クライアント API を提供)
    host]# nodetool -h localhost statusthrift

    上記のコマンドの出力には、ステータスが「running」と表示されます。
  4. データ ストリーミング オペレーションのステータス: 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 のステータスの確認

  1. ZooKeeper プロセスが実行されていることを確認します。ZooKeeper は、PID ファイルを opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid に書き込みます。
  2. ZooKeeper ポートをテストして、すべての ZooKeeper サーバーのポート 2181 と 3888 への TCP 接続を確立できることを確認します。
  3. ZooKeeper データベースから値を読み取れることを確認します。ZooKeeper クライアント ライブラリ(または /opt/apigee/apigee-zookeeper/bin/zkCli.sh)を使用して接続し、データベースから値を読み取ります。
  4. ステータスを確認します。
    > /opt/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 ポートに対して次のコマンドを発行できます。

  1. 4 文字のコマンド ruok を実行して、サーバーがエラー状態でないことをテストします。成功すると、「imok」が返されます。
    echo ruok | nc <host> 2181

    戻り値:
    imok
  2. 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 のいずれであるかを確認することが重要になる場合があります。
  3. 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 をモニタリングして、特定のリクエストが適切に処理されているかどうかを確認できます。つまり、適切な結果を返す特定の検索を確認します。

  1. 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
  2. Management Server が LDAP に接続されているかどうかを確認します。
    curl -u <userEMail>:<password> http://localhost:8080/v1/users/<ADMIN>

    戻り値:
    {
    "emailId" : <ADMIN>,
    "firstName" : "admin",
    "lastName" : "admin"
    }

OpenLDAP キャッシュをモニタリングすることもできます。これにより、ディスク アクセスの数を減らし、システムのパフォーマンスを向上させることができます。OpenLDAP サーバーのキャッシュ サイズをモニタリングして調整すると、ディレクトリ サーバーのパフォーマンスに大きな影響を与える可能性があります。ログファイル(opt/apigee/var/log)を表示して、キャッシュに関する情報を取得できます。