# 問題を診断するための情報の収集

この項ではDgraphやDgraph Gatewayで問題が発生した場合に収集する必要がある情報について説明します。

問題をOracleサポートに報告するときに、Oracleの技術者が問題を診断し、解決するのに役立つ次の情報を提供するように要請されることがあります。

## Dgraph Gatewayの情報

Dgraph Gatewayの問題のために収集する情報には4つの領域があります。

1: WebLogicの標準ログ

次のログのすべての内容を取得します。

- WebLogic管理サーバーのサーバー・ログ
- WebLogic管理サーバーのドメイン・ログ
- WebLogic管理対象サーバーのログ
- Dgraph Gatewayアプリケーション・ログ

ログの名前については、「Big Data Discoveryログのリスト」を参照してください。

2: 構成ファイル

$BDD_DOMAIN/configディレクトリにあるconfig.xmlを取得します。

3: スレッド・ダンプ

スレッド・ダンプを取得するための最初の手順は、WebLogic ServerのJVMプロセスPIDの取得です。jpsツール(LinuxおよびWindowsの両方で使用可能)により、必要なPIDを取得できます。

jps -mlvコマンドは実行中のすべてのJVMをリストします。次の形式を使用してWebLogic PIDを取得できます。

    jps -mlv | fgrep weblogic

WebLogicプロセスのjps出力の開始を次の例で示します。

    jps -mlv | fgrep weblogic
    7769 weblogic.Server -Xms1024m -Xmx4096m -XX:MaxPermSize=1024m -Dweblogic.Name=AdminServer
    ...

この例で7769はWebLogic JVM PIDです。

PIDを取得した後、jstackツールを使用してスレッド・ダンプを生成し、それをファイルに保存します(次の構文を使用)。

    jstack -l <pid> <filename>

次に例を示します。

    jstack -l 7769 jstack.weblogic.outIt

JVMの応答がない場合は、`-F`フラグを追加します。

    jstack -F -l <pid> <filename>

数分ずれた2、3のスレッド・ダンプを、順番を示すファイル名を付けて取得すればたいへん役に立ちます。

jpsツールもjstackツールもJAVA_HOME/binディレクトリにあることに注意してください。

4: ヒープ・ダンプ

jmapツールを使用してヒープ・ダンプを生成します。jstack同様、まず、jpsコマンドを使用してPIDを取得する必要があります。

その後、次の構文を使用してjmapを実行します。

    jmap -dump:format-b,file=<filename>.hprof <pid>

ここでも、JVMの応答がない場合は、`-F`フラグを追加します。

jmapツールはJAVA_HOME/binディレクトリにあることに気を付けてください。

## Dgraphの情報

問題がパフォーマンス上のものなのかクラッシュなのかに応じて、必要なログ・セットは異なります。また、ZooKeeperのログを送信する必要がある場合もあります。

1: パフォーマンス問題のログ

次の情報を収集します。

- $BDD_HOME/logsディレクトリのdgraph.reqlogログ
- WebLogicのaccess.log
- Dgraphブラックボックス・ファイル、`bdd-admin get-blackbox`コマンドで取得
- Dgraph統計出力、`bdd-admin get-stats`コマンドで取得
- BDDバージョン、`bdd-admin --version`コマンドで取得
- Dgraphバージョン、`dgraph --version`コマンドで取得

2: Dgraphクラッシュのログ

Dgraphクラッシュを診断するには、次の情報を収集します。

- $BDD_HOME/logsディレクトリのdgraph.outログ
- Dgraphコア・ダンプ・ファイル

3: その他の正確性の問題に関するログ

Dgraphクラッシュが関与しない、正確性に関する問題(予期しないSOAP障害、問合せで誤った結果が返されるなど)を調査するために、次のデータを収集します。

- データ・セットのDgraphデータベース(Dgraphデータベースはbdd.confファイルの`DGRAPH_INDEX_DIR`プロパティで指定されたディレクトリに格納されます)
- $BDD_HOME/logsディレクトリのdgraph.reqlogログ
- $BDD_HOME/logsディレクトリのdgraph.outログ
- Dgraphバージョン、`dgraph --version`コマンドで取得

4: ZooKeeperログ

ZooKeeperログとZooKeeperトランザクション・ログは、リーダー/フォロワ問題に起因する可能性のあるDgraph問題の診断に重宝します。これらのログはbdd-adminの`get-logs`コマンド出力の一部として取得できます。

5: Dgraphフラグの変更

より完全なログ・エントリを生成するために、Dgraphにフラグを追加するよう、依頼される場合もあります。たとえば、Dgraphの`-v`フラグではより詳細なエントリが出力されるので、たいへん役に立ちます(このフラグには、通常は2つ付くダッシュのかわりに1つしか付かないことに注意してください)。

Dgraphフラグはbdd.confファイルの様々なプロパティによって設定されます。たとえば、`DGRAPH_THREADS`プロパティはDgraphのスレッド数を設定します。`DGRAPH_ADDITIONAL_ARG`プロパティは、`-v`フラグなど、新しいフラグを追加できるので、特に役立ちます。これらのプロパティの変更の詳細は、「変更できるプロパティの構成」を参照してください。

## トポロジ情報

上記にリストしたログ・ファイルとシステム情報に加えて、BDDデプロイメントに関する情報も提供する必要があります。こうした情報には次のものがあります。

- マシンのハードウェアの仕様および構成
- Dgraph GatewayトポロジおよびDgraphトポロジの説明(BDDクラスタ内のサーバーの数および名前、Dgraphノードの数)。
- 影響を受けるDgraph GatewayノードおよびDgraphノードに関する説明。
- ネットワーク・トポロジ。