モニタリング方法

Edge for Private Cloud バージョン 4.17.05

このドキュメントでは、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 認証を有効にするために、各コンポーネントには 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: password
    • -e: y(有効)または n(dsiable)
  • 構成ファイルには次のものが含まれます。
    • JMX_USERNAME=ユーザー名
    • JMX_ENABLED=y/n (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 属性(MBeans)をモニタリングします。

service:jmx:rmi:///jndi/rmi://<ip address>:<port>/jmxrmi

<ip address> は、Management Server(または各サーバーの)の IP アドレスです。Management Server のデフォルトのポートは 1099 です。

次の表に、一般的な JMX 統計情報を示します。

JMX MBeans

JMX 属性

メモリ

HeapMemoryUsage

NonHeapMemoryUsage

使用法

注: 属性値は、commit、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. サーバーにログインして次のコマンドを実行します。
    /<inst_root>/apigee/apigee-service/bin/apigee-service edge-management-server status
  2. サービスが実行されていない場合は、サービスを開始します。
    /<inst_root>/apigee/apigee-service/bin/apigee-service edge-management-server start

エッジ アプリケーションの使用 - ユーザー、組織、デプロイのチェック

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

すべての呼び出しで「デプロイ済み」ステータスが表示されます。失敗した場合は、次の操作を行います。

  1. Management Server のログ(<inst_root>/apigee/var/log/edge-management-server)でエラーを確認します。
  2. Management Server を呼び出して、正常に機能しているかどうかを確認します。
  3. ELB からサーバーを削除してから、Management Server を再起動します。
    /<inst_root>/apigee/apigee-service/bin/apigee-service edge-management-server restart

ルーター

Router(または任意のサーバー)で API チェックを実行するには、次の CURL コマンドを実行します。

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 チェックの使用

Router について上記の説明と同じ手順を行います。

: ポート「8082」を使用してください。

JMX メッセージ フロー チェックの使用

Management Server について上記の説明と同じ操作を行います。

: ポート – 1101 を使用してください。

Qpid サーバー

JConsole を使用したシステムのヘルスチェックと処理情報のモニタリング

Management Server について上記の説明と同じ操作を行います。

: ポート – 1102 を使用してください。

Edge アプリケーション API チェックの使用

Management Server について上記の説明と同じ操作を行います。

: ポート「8083」を使用してください。Qpid Server では、次の CURL コマンドもサポートされています。

curl http://<qpid_IP>:8083/v1/servers/self

Postgres サーバー

JConsole を使用したシステムのヘルスチェックと処理情報のモニタリング

Management Server について上記の説明と同じ操作を行います。

: ポート – 1103 を使用してください。

Edge アプリケーション API チェックの使用

Management Server について上記の説明と同じ操作を行います。

: ポート「8084」を使用してください。Postgres Server では、次の CURL コマンドもサポートされています。

curl http://<postgres_IP>:8084/v1/servers/self

Edge アプリケーションの組織チェックと環境チェックの使用

Postgres サーバーにオンボーディングされている組織名と環境名を確認するには、次の CURL コマンドを実行します。

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

すべての分析サーバーの 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. perl-Time-HiRes.x86_64 がインストールされていることを確認します。これは、高精度のアラーム、スリープ、gettimeofday、インターバル タイマーを実装する Perl モジュールです。たとえば、次のコマンドを使用してインストールできます。
    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 backend
  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 --analytics%' and table_tables like --analytics%f

: 上記のコマンドの使用についてサポートが必要な場合は、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 属性(MBeans)をモニタリングします。

service:jmx:rmi:///jndi/rmi://<ip address>:7199/jmxrmi

ここで、<ip address> は Cassandra サーバーの IP です。

Cassandra では JMX がデフォルトで有効になっており、Cassandra へのリモート JMX アクセスにパスワードは必要ありません。

JMX 認証を有効にしてパスワードを追加するには:

  1. /<inst_root>/apigee/customer/application/cassandra.properties を編集します。ファイルが存在しない場合は作成します。
  2. ファイルに以下を追加します。
    conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
  3. ファイルを保存します。
  4. 次のファイルを $JAVA_HOME ディレクトリから /<inst_root>/apigee/data/apigee-cassandra/ にコピーします。
    cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/data/apigee-cassandra/jmxremote.password}

    cp
  5. jmxremote.password を編集して、ユーザー名とパスワードをファイルに追加します。
    cassandra パスワード

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

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

  1. /<inst_root>/apigee/customer/application/cassandra.properties を編集します。
  2. ファイルから次の行を削除します。
    conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
  3. Cassandra で config を実行します。
    > /<inst_root>/apigee/apigee-service/bin/apigee-service apigee-cassandra Configure
  4. Cassandra を再起動します。
    > /<inst_root>/apigee/apigee-service/bin/apigee-service apigee-cassandra restart

Cassandra JMX 統計情報

JMX MBeans

JMX 属性

ColumnFamilies/apprepo/environments

ColumnFamilies/apprepo/organizations

ColumnFamilies/apprepo/apiproxy_revisions

ColumnFamilies/apprepo/apiproxies

ColumnFamilies/監査/監査

ColumnFamilies/audit/audits_ref

PendingTasks

MemtableColumnsCount

MemtableDataSize

ReadCount

RecentReadLatencyMicros

TotalReadLatencyMicros

WriteCount

RecentWriteLatencyMicros

TotalWriteLatencyMicros

TotalDiskSpaceUsed

LiveDiskSpaceUsed

LiveSSTableCount

BloomFilterFalsePositives

RecentBloomFilterFalseRatio

BloomFilterFalseRatio

nodetool ユーティリティを使用したクラスタノードの管理

Cassandra のコマンドライン インターフェースである nodetool ユーティリティを使用して、クラスタノードを管理します。このユーティリティは <inst_root>/apigee/apigee-cassandra/bin にあります。

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

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

  1. 一般的なリング情報(単一の Cassandra ノードでも可能): すべてのノードで「稼働中」と「標準」を探します。
    [host]# nodetool -h localhost ring

    上記のコマンドの出力は次のようになります。
    Address DC Rack Status 1 2 5 2 5 2 1 1 1 2 1 1 1 2 1 1 2 1 1 2 3 1 8 1 1 1.67 MB 192.168.124.201 dc1 ra1 1.67 MB


  2. ノードに関する一般的な情報(ノードごとの呼び出し)
    nodetool -h localhost info

    上記のコマンドの出力は次のようになります。
    Token : 0
    Gossip active : true
    Load : 1.67 MB
    Generation No : 1361968765

    ap 6,8765
    Uptime (seconds) 8,
    Uptime (seconds) : 7
  3. Thrift サーバーのステータス(サービス提供クライアント API)
    host]# nodetool -h localhost statusthrift

    上記のコマンドの出力にはステータスが「running」と表示されます。
  4. アクティブ データ ストリーミング オペレーションのステータス: cassandra ノードのトラフィックを観察します。
    nodetool -h localhost netstats 192.168.124.203

    上記のコマンドの出力は次のようになります。
    Mode: NORMAL
    Nothing /192.168.124 stream.
    Nothing /192.168.124.20


Cassandra のモニタリング(UI)

Datastax opscenter の URL(http://www.datastax.com/products/opscenter)を参照してください。

Cassandra リソース

http://www.datastax.com/docs/1.0/operations/monitoring をご覧ください。

Apache ZooKeeper

ZooKeeper のステータスを確認する

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

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

    戻り値:
    imok
  2. 4 文字のコマンド stat を実行して、サーバーのパフォーマンスと接続しているクライアントの統計情報を一覧表示します。
    echo stat | nc <host> 2181

    1, 1,0,1,1,1,1,1,1,1,1,1,1/2














  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.0.0.1)





OpenLDAP

LDAP レベルのテスト

OpenLDAP をモニタリングして、特定のリクエストが適切に処理されているかどうかを確認できます。つまり、適切な結果を返す特定の検索を探してください。

  1. ldapsearchyum 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 -H















  2. 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)を表示して、キャッシュに関する情報を取得できます。