5 Oracle Stream Analyticsのトラブルシューティング

Oracle Stream Analyticsでは、イベントのストリームをリアルタイムで分析およびモニターする機能が提供されます。ユーザーは、ストリーム処理ソリューションをモデル化するためのパイプラインを作成できます。通常、Oracle Stream Analyticsパイプラインは、明示的に中断されるか障害が発生するまで、長時間継続的に実行されます。このガイドでは、パイプラインの作成、実行またはデプロイメント時に発生する可能性のある様々な問題をトラブルシューティングするステップについて説明します。

パイプラインのモニタリングおよびデバッグ・メトリック

実行されているOracle Stream Analyticsパイプラインごとに、対応するSparkアプリケーションがSparkクラスタにデプロイされています。Oracle Stream Analyticsパイプラインがドラフト・モードまたはパブリッシュ・モードでデプロイおよび実行されている場合、ユーザーは、Oracle Stream Analyticsによって提供されるリアルタイム・メトリックを使用して、対応するSparkアプリケーションをモニターおよび分析できます。これらのメトリックにより、すべてのパイプライン・ステージに対する詳細な実行時インサイトが提供され、ユーザーは、演算子レベルの詳細までドリルダウンできます。これらのメトリックは、Sparkが提供するメトリックに対して追加されています。

Oracle Stream Analyticsでは、アプリケーションごとに、パイプラインが期待どおりに動作しない場合に分析に使用できる詳細なモニタリング・メトリックが提供されます。

モニタリングおよびデバッグ・メトリックにアクセスするには:

  1. Spark Master UIを開きます。
    「System Settings」からSpark Master URLを取得できます。「Spark Master」ページには、実行中のアプリケーションのリストが表示されます。アプリケーション・リストの各エントリには、アプリケーションID、名前、所有者、現在のステータスなど、アプリケーションの詳細が含まれます。
  2. 「Application Master」ページを開きます。
    ApplicationMasterという見出しの付いたリンクをクリックし、「Application Details」ページを開きます。必ずパイプラインに対応するアプリケーションのリンクをクリックしてください。詳細は、「パイプラインに対応するSparkアプリケーション名を特定する」を参照してください。
  3. 「Pipeline」タブをクリックします。これは、Oracle Stream Analyticsパイプライン内のすべてのステージの詳細が含まれた「Pipeline Summary」ページです。

    このページには、パイプラインに関する次の情報が含まれます。

    • Pipeline ID: Sparkクラスタの一意のパイプラインID

    • Pipeline Name: Oracle Stream Analytics UIでユーザーが指定したOracle Stream Analyticsパイプラインの名前。

    • Pipeline Stages: このセクションには、各パイプライン・ステージの詳細なランタイム・メトリックを含む表が表示されます。表の各エントリは、Oracle Stream Analytics UIのパイプライン・グラフのパイプライン・ステージに対応しています。

    • Pipeline DAG: これは、DAGの形式ですべてのステージをビジュアルに表現したもので、親子関係の様々なパイプライン・ステージが表示されます。このダイアグラムには、各パイプライン・ステージで実行される変換に関する情報も表示されます。パイプライン・ステージ表の任意のステージIDエントリをクリックすると、「Pipeline Stage Details」ページが開きます。

    • Total Number of Transformations: この測定値は、各ステージの計算に適用されたSpark変換の数です。

      Oracle Stream Analyticsでは、問合せステージ、パターン・ステージ、カスタム・ステージなどの様々なタイプのステージがサポートされます。パイプライン・ステージごとに、Oracle Stream Analyticsによって、ステージの入力ストリームに適用される変換のリストが定義されます。最終変換からの出力が、ステージの出力になります。

    • Total Output Partitions: この測定値は、各ステージの出力ストリームに含まれるパーティションの合計数です。

      すべてのパイプライン・ステージには、ステージ構成によって決定される独自のパーティション化要件があります。たとえば、問合せステージでサマリー関数を定義して、グループ化基準列を定義しない場合、使用可能なパーティション化基準が存在しないため、問合せステージには1つのパーティションのみが含まれます。

    • Total Output Events: この測定値は、各ステージで発生した出力イベント(マイクロ・バッチ以外)の合計数です。

    • Average Output Rate: この測定値は、各ステージがこれまでに出力イベントを発生させた割合です。この割合は、これまでの出力イベントの合計数とアプリケーションの合計実行時間の比率です。

      割合が0 (ゼロ)の場合でも、常にステージ処理でのエラーを意味するわけではありません。ステージでレコードが1つも出力されないこともあります(問合せステージのフィルタを通過したイベントが1つもなかった場合など)。これは、出力イベントの割合が、1イベント/秒を下回る場合に発生することがあります。

    • Current Output Rate: この測定値は、各ステージが出力イベントを発生させている割合です。この割合は、メトリック・ページが最後にリフレッシュされて以降の、出力イベントの合計数とアプリケーションの合計実行時間の比率です。現在の出力率をより適切に把握するには、ページのリフレッシュ頻度を増やしてください。

  4. 「Stage Summary」ページでは、ステージのすべての変換の詳細が提供されます。このページには次の情報が含まれます。
    • Pipeline ID: Sparkクラスタの一意のパイプラインID

    • Pipeline Name: Oracle Stream Analytics UIでユーザーが指定したOracle Stream Analyticsパイプラインの名前。

    • Stage ID: Oracle Stream AnalyticsパイプラインのステージのDAGにおける一意のステージID。

    • Stage Transformations: このセクションには、各パイプライン・ステージで実行されているすべての変換に関する詳細を含む表が表示されます。表の各エントリは、ステージの計算に使用される変換操作に対応しています。すべてのステージの最終変換がMonitorDStreamであることを確認できます。その理由は、MonitorDStreamがステージの出力をOracle Stream Analytics UIのライブ表にパイプしているためです。

    • ステージDAG: これは、DAGの形式ですべての変換をビジュアルに表現したもので、親子関係の様々なパイプライン変換が表示されます。

      OfferByAgeは、Oracle Stream Analyticsパイプラインのルール・ステージであることに注意してください。このステージを計算するため、Oracle Stream Analyticsは、CQLDStream変換を計算します。CQLDStream変換内で、入力データは、CQLエンジンの継続実行問合せ(CQL)を使用して変換されます。1つのCQLエンジンは、1つのエグゼキュータに関連付けられます。

  5. 「CQLDStream」をクリックし、変換に対応する「CQL Engine Summary」ページを開きます。
    • Transformation Name: 変換の出力DStreamの名前。Sparkのすべての変換は、出力DStreamに取得されます。

    • Transformation Type: これは、ステージ実行で使用されている各変換のカテゴリ情報です。変換タイプが「Oracle」の場合、これはオラクル社固有の変換アルゴリズムに基づきます。変換タイプが「Native」の場合、変換はApache Spark実装により提供されます。

  6. 「CQL Engine Summary」ページには、ステージのすべての変換の詳細が含まれます。このページには次の情報が含まれます。
    • Pipeline ID: Sparkクラスタの一意のパイプラインID

    • Pipeline Name: Oracle Stream Analytics UIでユーザーが指定したOracle Stream Analyticsパイプラインの名前。

    • Stage ID: Oracle Stream AnalyticsパイプラインのステージのDAGにおける一意のステージID。

    • Running Queries: このセクションには、ステージのCQL変換を計算するために実行されているCQL問合せのリストが表示されます。この表には、システム生成の問合せIDと問合せテキストが表示されます。CQL問合せの構文とセマンティクスについては、Oracle連続問合せ言語リファレンスを参照してください。問合せの詳細を参照するには、表エントリの問合せIDのハイパーリンクをクリックして、「CQL Engine Query Details」ページを開きます。

    • Registered Sources: このセクションには、問合せの基盤となるすべての入力ソースに関する内部CQLメタデータが表示されます。ステージの入力ストリームごとに、1つのエントリがこの表に表示されます。

      各エントリには、ソース名、ソース・タイプ、タイムスタンプ・タイプおよびストリーム属性が含まれます。タイムスタンプ・タイプには、PROCESSINGまたはEVENTのタイムスタンプがあります。ストリームがPROCESSINGのタイムスタンプの場合、各イベントのタイムスタンプは、システムによって定義されます。ストリームがEVENTのタイムスタンプの場合、各イベントのタイムスタンプは、ストリーム属性自体のいずれかによって定義されます。ソースは、ストリームまたはリレーションです。

    • External Sources: このセクションには、入力ストリームが結合されるすべての外部ソースの詳細が表示されます。外部ソースは、データベース表またはCoherenceキャッシュです。

    • CQL Engines: このセクションには、パイプラインによって使用されるCQLエンジンのすべてのインスタンスの詳細を含む表が表示されます。次に、表の各フィールドの詳細を示します。

      • CQLEngine Id: CQLエンジン・インスタンスのシステム生成のID。

      • ExecutorId: CQLエンジンが関連付けられているエグゼキュータID。

      • Executor Host: このCQLエンジンが実行されているクラスタ・ノードのアドレス。

      • Status: CQLエンジンの現在のステータス。ステータスは、ACTIVEまたはINACTIVEのいずれかです。ACTIVEの場合、CQLエンジン・インスタンスは起動して実行中であり、それ以外の場合、CQLエンジンは中断されています。

  7. このページには、Oracle Stream Analyticsパイプライン・ステージに対応する問合せの実行およびHA統計に関する詳細が含まれます。次に、このページに表示される詳細を示します。
    • Query ID: 問合せのシステム生成の識別子

    • Query Text: 問合せ文字列

    • Num Partitions: このフィールドには、問合せの並列度が表示されます。並列度は、問合せで処理される入力パーティションの合計数によって定義されます。

      並列度は、問合せ構文、入力Kafkaパーティションの数、アプリケーションに割り当てられたエグゼキュータの数など、多くの要因に応じて変化します。

    • Execution Statistics: このセクションには、各演算子の詳細な実行統計が表示されます。

      • Partition ID: パーティションの順序ID
      • CQL Engine ID: パーティションが処理されているCQLエンジンの順序ID。

      • Total Output Events: 各パーティションのCQL問合せで発生した出力イベントの数。

      • Total Output Heartbeats: 各パーティションのCQL問合せで発生したハートビート・イベントの数。ハートビートは、Oracle Stream Analyticsパイプラインのタイムスタンプの連続を保証する特別なイベントであることに注意してください。

      • Throughput: 処理されたイベントの合計数と、各パーティションでの処理に要した合計時間の比率。

      • Latency: ストリームのパーティションを処理するためにかかった平均所要時間。

    • HA Statistics: この表には、問合せのHA操作に関するリアルタイム統計が表示されます。時間の単位は、ミリ秒であることに注意してください。

      • Partition ID: パーティションの順序ID

      • CQL Engine ID: パーティションが処理されているCQLエンジンの順序ID。

      • Total Full Snapshots Created: 問合せの完全な状態がシリアライズされて保存された合計回数。

      • Avg Full Snapshot Creation Time: 問合せの完全な状態がシリアライズされて保存されるのに要した平均時間。

      • Total Full Snapshots Loaded: 問合せの完全な状態がデシリアライズされて問合せ計画にロードされた合計回数。

      • Avg Full Snapshot Load Time: 問合せの完全な状態がデシリアライズされてロードされるのに要した平均時間。

      • Total Journal Snapshots Created: 問合せのジャーナル化状態がシリアライズされて保存された合計回数。

      • Avg Journal Snapshot Creation Time: 問合せのジャーナル化状態がシリアライズされて保存されるのに要した平均時間。

      • Total Journal Snapshots Loaded: 問合せのジャーナル化状態がデシリアライズされて問合せ計画にロードされた合計回数。

      • Avg Journal Snapshot Load Time: 問合せのジャーナル化状態がデシリアライズされてロードされるのに要した平均時間。

        完全スナップショットは、問合せの完全な状態です。問合せの状態は、問合せ計画の各演算子の内部データ構造および状態を表します。ジャーナル・スナップショットは、開始時間と終了時間のある部分的かつ増分的なスナップショットです。Oracle Stream Analyticsは、可能であればジャーナル・スナップショットを使用して状態の保存を最適化します。

  8. このページには、パイプラインのステージの特定のパーティションに対するCQL問合せの各実行演算子に関する詳細が含まれます。
    • Query ID: 問合せのシステム生成の識別子

    • Query Text: 問合せ文字列

    • Partition ID: すべての演算子の詳細は、このパーティションIDに対応しています。

    • 演算子の統計:

      • Operator ID: システム生成の識別子

      • Total Input Events: 各演算子が受信した入力イベントの合計数。

      • Total Output Events: 各演算子が生成した出力イベントの合計数。

      • Total Input Heartbeats: 各演算子が受信したハートビート・イベントの合計数。

      • Total Output Heartbeats: 各演算子が生成したハートビート・イベントの合計数。

      • Throughput(events/second): 処理された入力イベントの合計と、各演算子での処理に要した合計時間の比率。

      • Latency(ms): 各演算子のイベントを処理するためにかかった合計所要時間。

    • Operator DAG: これは、問合せ計画をビジュアルに表現したものです。DAGには、各演算子の親子の詳細が表示されます。演算子の実行統計をさらにドリルダウンできます。演算子をクリックして、「CQL Operator Details」ページを開いてください。

  9. 「CQL Engine Query Details」ページでは各演算子のすべての必須メトリックが提供されるのに対し、このページには、各実行演算子のいくつかの追加情報が含まれます。

一般的な問題および処置

このセクションでは、カタログ項目で分類された問題または質問の包括的なリストを提供します。特定のカタログ項目で作業をしている際に困難に直面した場合、そのカタログ項目に対応する一般的な問題または質問のリストを参照してください。

トピック

  • パイプライン

  • ストリーム

  • 参照

  • ジオフェンス

  • 接続

  • ターゲット

  • ダッシュボード

  • キューブ

  • ログ

パイプライン

この項では、パイプラインで発生する一般的な問題をリストします。

パイプラインが正常にデプロイされていることを確認する

パイプラインは、任意のSparkクラスタ(バージョン1.6)にデプロイできます。

次の項のステップに従って、Sparkクラスタにパイプラインが正常にデプロイされて実行されていることを確認してください。

Sparkクラスタに基づくOracle Big Data Cloud Service - Compute Editionへのパイプライン・デプロイメントを確認する

Oracle Big Data Cloud Serviceにサブスクライブしている場合、次のステップを実行します。

  1. PSMユーザー・インタフェースに移動して、Oracle Big Data Cloud Service (BDCSCE)インスタンスのホームページを開きます。

  2. インスタンス名の横にあるハンバーガ・メニューをクリックし、ビッグ・データ・クラスタ・コンソールをクリックします。

    big_data_cluster_home.pngの説明が続きます
    図big_data_cluster_home.pngの説明

  3. ログイン資格証明を入力して、ビッグ・データ・クラスタ・コンソールのホームページを開きます。

  4. 「ジョブ」タブに移動します。

    ジョブのリストが表示されます。各ジョブは、BDCSCEクラスタで実行されているSparkパイプラインに対応しています。

    jobs_logs.pngの説明が続きます
    図jobs_logs.pngの説明

  5. パイプラインに対応するエントリを見つけて、ステータスを確認します。詳細は、「パイプラインに対応するSparkアプリケーション名を特定する」を参照してください。

    ステータスが「Running」と表示されている場合、パイプラインは、現在正常にデプロイされて実行されています。

  6. 必要なジョブに対応するハンバーガ・メニューをクリックしてログをフェッチし、「ログ」をクリックしてコンテナ単位のログを取得します。

    より詳細なデバッグをするためにこれらのファイルをダウンロードできます。

Sparkクラスタに基づくApache Sparkインストール環境へのパイプライン・デプロイメントを確認する

  1. Spark Masterユーザー・インタフェースを開きます。

    spark_master_ui.pngの説明が続きます
    図spark_master_ui.pngの説明

  2. パイプラインに対応するエントリを見つけて、ステータスを確認します。詳細は、「パイプラインに対応するSparkアプリケーション名を特定する」を参照してください。

    ステータスが「Running」と表示されている場合、パイプラインは、現在正常にデプロイされて実行されています。

入力ストリームがパイプラインにイベントの連続的なストリームを供給していることを確認する

入力ストリームからイベントの連続的な供給が行われている必要があります。

  1. 「カタログ」に移動します。

  2. トラブルシューティングするストリームを特定してクリックします。

  3. ソース・タイプ・パラメータ・セクションのtopicNameプロパティの値を確認します。

  4. パイプラインの入力ストリームが受信されるKafkaトピックをリスニングします。

    このトピックはKafka APIを使用して作成されるため、REST APIを使用してこのトピックを消費することはできません。

    1. Oracle Event Hub Cloud ServiceでホストされているKafkaトピックをリスニングします。トピックをリスニングするには、Apache Kafkaユーティリティまたは他の関連ツールを使用する必要があります。

      次のステップを使用して、Kafkaトピックをリスニングします。

      1. Zookeeperアドレスを特定します。Oracle Event Hub Cloud Service Platformのホームページに移動します。ZookeeperのIPアドレスを見つけます。

      2. 次のコマンドを使用してKafkaトピックをリスニングします。
        ./kafka-console-consumer.sh --zookeeper IPAddress:2181 --topic nano
    2. 標準のApache Kafkaインストール環境でホストされているKafkaトピックをリスニングします。

      Kafkaインストール環境でユーティリティを使用してKafkaトピックをリスニングできます。kafka-console-consumer.shは、任意のKafkaインストール環境の一部として使用できるユーティリティ・スクリプトです。

      次のステップを使用して、Kafkaトピックをリスニングします。

      1. クラスタに基づくApache Kafkaインストール環境でのZookeeperアドレスを特定します。

      2. 次のコマンドを使用してKafkaトピックをリスニングします。
        ./kafka-console-consumer.sh --zookeeper IPAddress:2181 --topic nano
パイプラインに対応するSparkアプリケーション名を特定する

次のステップを実行して、モニター・トピックで出力ストリームを使用できるかどうかを確認できます。

  1. 「カタログ」に移動します。

  2. 必要なパイプラインを開きます。

  3. パイプライン・エディタが開いたままであることを確認して、「完了」はクリックしないでください。そうしないと、パイプラインがアンデプロイされます。

  4. ブラウザ内の任意の場所を右クリックし、「インスペクト」を選択します。

  5. 「ネットワーク」タブの下の「WS」タブに移動します。

  6. ブラウザをリフレッシュします。

    新しいWebsocket接続が作成されます。

  7. URLにtopicという名前の入ったパラメータが含まれるWebsocketを見つけます。

    トピックparamの値は、このステージの出力(問合せまたはパターン)がプッシュされるKafkaトピックの名前です。

    ws_network.pngの説明が続きます
    図ws_network.pngの説明

    トピック名は、AppName_StageIdです。パイプライン名は、トピック名から_StageIDを削除することで、トピック名から導出できます。前のスナップショットでは、パイプライン名はsx_2_49_12_pipe1_draftです。

パイプラインがストリームと参照を関連付けている場合にキャッシングが動作していることを確認する

次のステップを実行して、キャッシングがパイプラインで使用されていることを確認します。

  1. Spark Application Master UIに移動します。

  2. 「Pipeline」タブをクリックしてから「Pipeline Summary」ページを開きます。「Pipeline Summary」ページには、様々なメトリックとともにステージの表が表示されます。

  3. ストリームと参照を関連付けているパイプラインの問合せステージに対応するステージIDをクリックします。

  4. 「Pipeline Stage Details」ページで、CQLDStreamステージをクリックして「CQL Engine Summary Details」ページを開きます。

  5. 「CQL Engine Summary Details」ページで、「External Sources」セクションを見つけます。ステージで使用されている参照のソースIDを書き留めてください。

  6. 「CQL Engine Detailed Query Analysis」ページを開きます。

  7. ソースIDと同じ演算子IDを持つ演算子をクリックして、「CQL Engine Detailed Operator Analysis」ページを開きます。演算子に対応するエントリをクリックします。

  8. 「Cache Statistics」セクションを見つけます。そのようなセクションが存在しない場合、キャッシングはステージで有効化されていません。「Cache Hits」および「Cache Misses」に0 (ゼロ)以外のエントリが表示されている場合、キャッシングは、パイプライン・ステージに対して有効化され、アクティブになっています。

ライブ表で表のイベントがない状態でListening Eventsが表示される

パイプラインのステータスがStarting PipelineからListening Eventsに変更されない理由は、複数考えられます。次に、このシナリオをトラブルシューティングするステップを示します。

  1. ライブ表には、現在選択されているただ1つのステージの出力イベントが表示されます。任意の時点で、選択されるステージは1つのみです。別のステージに切り替えてみてください。別のステージのライブ表で出力を確認できる場合、問題は、そのステージのみに関連している可能性があります。さらにデバッグするには、ステップ5に進んでください。

    どのステージでも出力が存在しない場合、ステップ2に進んでください。

  2. パイプラインが現在もSparkクラスタで実行されていることを確認します。詳細は、「パイプラインが正常にデプロイされていることを確認する」を参照してください。

  3. パイプラインのSparkアプリケーションが中断または強制終了した場合、パイプラインがクラッシュしたことが示唆されます。さらにトラブルシューティングを行うには、アプリケーション・ログを調査することが必要な場合があります。

  4. アプリケーションは、ACCEPTED、NEWまたはSUBMITTED状態の場合、クラスタ・リソースを待機しており、まだ開始していません。十分なリソースがない場合、Big Data Cloud Service Spark YarnクラスタのVCORESの数を確認してください。パイプラインの場合、Stream Analyticsでは、少なくとも3つのVCORESが必要です。

  5. アプリケーションがRUNNING状態の場合、次のステップを使用してさらにトラブルシューティングを行います。

    1. 入力ストリームがパイプラインで継続的にイベントをプッシュしていることを確認します。

    2. 入力ストリームがイベントをプッシュしている場合、各パイプライン・ステージがイベントを処理し、出力を発生させていることを確認します。

    3. 前述の両方のステップの確認に成功した場合、アプリケーションが、その対応するモニター・トピックに各ステージの出力イベントをプッシュできることを確認します。そのために、次の手順を実行します。

      1. 「パイプライン・ステージの出力が伝播されているトピックの名前を特定する」に記載された指示に従って、ステージの出力のプッシュ先であるステージのモニター・トピックを特定します。

      2. モニター・トピックをリスニングして、イベントがトピックに継続的にプッシュされていることを確認します。Kafkaトピックをリスニングするには、トピックが作成されるKafkaクラスタにアクセスできる必要があります。Kafkaインストール環境でユーティリティを使用してKafkaトピックをリスニングできます。kafka-console-consumer.shは、任意のKafkaインストール環境の一部として使用できるユーティリティ・スクリプトです。

      3. トピックにイベントが1つも表示されない場合、この問題は、ステージからモニター・トピックに対する出力イベントの書込みに関連している可能性があります。サーバー・ログを確認して例外を検索し、管理者に報告してください。

      4. モニター・トピックに出力イベントが表示される場合、この問題は、Webブラウザでの出力イベントの読取りに関連している可能性があります。

パイプライン・ステージの出力が伝播されているトピックの名前を特定する

パイプライン・ステージ出力のトピック名のフォーマットは、PipelineID_StageIDです。サンプルのトピック名は、sx_TestPipeline_5226CDCB_2F11_4A46_8987_4BFCE6FED617_K60bGBKF_draft_st040800FD_A5B3_4AC2_90D5_ED85EB528F41です。この文字列で、パイプライン名はsx_TestPipeline_5226CDCB_2F11_4A46_8987_4BFCE6FED617_K60bGBKF_draftで、ステージIDはst040800FD_A5B3_4AC2_90D5_ED85EB528F41です。

次に、ステージのトピック名を見つけるステップを示します。

  1. パイプラインの「Pipeline Summary」ページを開きます。このパイプラインの対応するアプリケーション名がわからない場合、手順について「パイプラインに対応するSparkアプリケーション名を特定する」を参照してください。

  2. このページでは、パイプライン名と様々なステージIDが提供されます。パイプライン・ステージごとに、表のエントリが表示されます。

  3. すべてのステージで、出力トピックIDはPipelineName_StageIDです。

  4. パイプライン・エディタで「Done」をクリックし、カタログに戻ってパイプラインを再度開きます。

ライブ表に現在もStarting Pipelineと表示される

パイプラインのステータスがStarting PipelineからListening Eventsに変更されない理由は、複数考えられます。次に、このシナリオをトラブルシューティングするステップを示します。

  1. パイプラインがSparkクラスタに正常にデプロイされていることを確認します。詳細は、「パイプラインが正常にデプロイされていることを確認する」を参照してください。Sparkクラスタが停止しておらず、使用できることも確認します。

  2. デプロイメントに失敗した場合、Jettyログを確認してデプロイメントの失敗に関連する例外を参照し、問題を修正します。

  3. デプロイメントに成功している場合、OSA Web層がSparkからパイプライン・デプロイメントを受信していることを確認します。

  4. パイプライン・エディタで「Done」をクリックし、カタログに戻ってパイプラインを再度開きます。

パイプライン・ステージが現在もイベントを処理していることを確認する

次のステップを実行して、特定のパイプライン・ステージが現在もイベントを処理しているかどうかを確認します。

  1. Spark Application Master UIに移動します。

  2. 「Pipeline」タブをクリックしてから「Pipeline Summary」ページを開きます。「Pipeline Summary」ページには、様々なメトリックとともにステージの表が表示されます。

  3. 合計出力イベントが0 (ゼロ)以外の値であるかどうかを確認します。ページをリフレッシュして、値が増加するか、同じままであるかを確認します。値が同じままで、長時間変化がない場合、ステージの詳細にドリルダウンします。

ストリーム

この項では、ストリームで発生する一般的な問題をリストします。

MapMessageフォーマットを検出できない

このリリースでは、CSVおよびJSONフォーマットのみがファイル・ストリームでサポートされます。Kafkaストリームでは、CSV、JSONおよびAVROフォーマットのみがサポートされます。

AVROフォーマットを検出できない

このリリースでは、CSVおよびJSONフォーマットのみがストリーム(ファイル・ストリーム・タイプ)でサポートされます。そのため、AVROフォーマットは検出できません。

トピックのリストで任意のKafkaトピックまたは特定のトピックを参照できない

次のステップを使用して、トラブルシューティングを行います。

  1. カタログに移動して、ストリームの作成に使用しているKafka接続を選択します。

  2. 「次」をクリックして「接続の詳細」タブに移動します。

  3. 「接続のテスト」をクリックして、接続が現在もアクティブであることを確認します。

  4. Kafkaクラスタに1つ以上のトピックが存在することを確認します。トピックが作成されるKafkaクラスタにアクセスできる必要があります。Kafkaインストール環境でユーティリティを使用してKafkaトピックをリストできます。kafka-console-consumer.shは、任意のKafkaインストール環境の一部として使用できるユーティリティ・スクリプトです。

  5. 前述のコマンドを使用してもトピックを参照できない場合、トピックが作成されていることを確認します。

  6. テスト接続に失敗し、「OSA-01266 ZooKeeperサーバーに接続できません」などのエラー・メッセージが表示された場合、Kafkaクラスタは使用不可です。Kafkaクラスタが起動して実行中であることを確認します。

入力Kafkaトピックはデータを送信しているのにライブ表にイベントが表示されない

これは、受信イベントがストリームの予期される形状に準拠していない場合に発生する可能性があります。形状の不一致によってイベントが削除されたかどうかを確認するため、次のステップを使用してトラブルシューティングを行います。

  1. ストリームのソース・タイプ・プロパティでlenientパラメータを確認します。これがFALSEの場合、イベントは、形状の不一致によって削除された可能性があります。これを確認するには、実行中のアプリケーションのアプリケーション・ログを確認します。

  2. プロパティがTRUEに設定されている場合、さらにデバッグを行います。

    1. Kafkaクラスタが起動して実行中であることを確認します。Sparkクラスタは、Kafkaクラスタにアクセスできる必要があります。

    2. Kafkaクラスタが起動して実行中である場合、アプリケーション・ログを取得してさらにデバッグを行います。

接続

この項では、接続で発生する一般的な問題をリストします。

接続がアクティブであることを確認する

Kafka接続

接続がKafka接続の場合、次のステップを使用します。

  1. カタログに移動して、テストするKafka接続を選択します。

  2. 「次」をクリックして「接続の詳細」タブに移動します。

  3. 「接続のテスト」をクリックします。テストに成功すると、接続がアクティブであることが示されます。

データベース接続

接続がデータベース接続の場合、次のステップを使用します。

  1. カタログに移動して、テストするデータベース接続を選択します。

  2. 「次」をクリックして「接続の詳細」タブに移動します。

  3. 「接続のテスト」をクリックします。テストに成功すると、接続がアクティブであることが示されます。

  4. テストに失敗すると、データベースに接続できないことを示すエラー・メッセージが表示されます。 この問題を解決するには:

    • OSA-01260 データベースへの接続に失敗しました。IOエラー: ネットワーク・アダプタは接続を確立できませんでした - OSAデザイン・タイムからDBホストに接続できないことを示します

    • OSA-01260 データベースへの接続に失敗しました。ORA-01017: ユーザー名/パスワードが無効です; ログインは拒否されました — これは、資格証明が不適切で、それらの資格証明を使用してデータベースにアクセスできないことを示します

Coherence接続

接続がCoherence接続の場合、次のステップを使用します。

OSAには、Coherenceクラスタの接続をテストする機能はありません。これを行うには、Oracle Coherenceのドキュメントを参照してユーティリティおよびツールを見つけてください。

Druid接続

接続がdruid接続の場合、次のステップを使用します。

  1. カタログに移動して、テストするデータベース接続を選択します。

  2. 「次」をクリックして「接続の詳細」タブに移動します。

  3. 「接続のテスト」をクリックします。テストに成功すると、接続がアクティブであることが示されます。

  4. 「OSA-01460 zooKeeperサーバーのdruidサービスへの接続に失敗しました。」などのエラー・メッセージが表示された場合、druid Zookeeperは使用不可です。druidサービスとZookeeperクラスタが起動して実行中であることを確認します。

JNDI接続

接続がJNDI接続の場合、次のステップを使用します。

  1. カタログに移動して、テストするデータベース接続を選択します。

  2. 「次」をクリックして「接続の詳細」タブに移動します。

  3. 「接続のテスト」をクリックします。テストに成功すると、接続がアクティブであることが示されます。

  4. 「OSA-01707 サーバーとの通信に失敗しました。サーバーが起動しており、サーバーURLが適切に指定されていることを確認してください。」などのエラー・メッセージが表示された場合、いずれかのサーバーが停止しているか、サーバーURLが間違って指定されています。サーバーURLは、host1:port1,host2:port2などのフォーマットでのみ指定できます。

  5. 「OSA-01706 JNDI接続に失敗しました。ユーザー: weblogicの認証に失敗しました」などのエラー・メッセージが表示された場合、ユーザー名とパスワードが正しく指定されていることを確認してください。

参照

この項では、参照で発生する一般的な問題をリストします。

参照がキャッシュされていることを確認する

参照のタイプがCOHERENCEの場合、ソース自体がキャッシュのため、キャッシングはサポートされません。

参照のタイプがDATABASEの場合、次のステップを使用して、参照がキャッシュされているかどうかを確認します。

  1. カタログに移動して、必要な参照を開きます。

  2. ソース・タイプ・パラメータ・セクションの「キャッシング有効化」プロパティがTRUEに設定されていることを確認します。TRUEの場合、キャッシングは有効化されています。それ以外の場合、参照を編集してプロパティを有効化します。

ターゲット

この項では、ターゲットで発生する一般的な問題をリストします。

RESTターゲットのAVROおよびMapMessageフォーマットを検出できない

このリリースでは、CSVおよびJSONフォーマットのみがRESTターゲットでサポートされます。

KafkaターゲットのMapMessageフォーマットを検出できない

このリリースでは、CSV、JSONおよびAVROフォーマットのみがKafkaターゲットでサポートされます。

RESTターゲットのRESTエンドポイントにどのイベントも表示されない

パイプラインがドラフト・モードの場合、OSAは、RESTエンドポイントにイベントをプッシュしません。パブリッシュされたアプリケーションのみが、RESTターゲットにイベントをプッシュします。

Kafkaトピックのターゲットにどのイベントも表示されない

パイプラインがドラフト・モードの場合、OSAは、Kafkaトピックにイベントをプッシュしません。パブリッシュされたアプリケーションのみが、出力Kafkaターゲットにイベントをプッシュします。

ジオフェンス

この項では、ジオフェンスで発生する一般的な問題をリストします。

ジオ・フェンスの名前と説明が正しく設定されていることを確認する

データベース・ベース・ジオフェンスの名前と説明のフィールドが表示されない場合、次に記載された確認ステップを実行します。

  1. カタログに移動して、必要なデータベース・ベース・ジオ・フェンスの「編集」をクリックします。

  2. ソース・タイプ・プロパティの「編集」をクリックし、「次」をクリックします。

  3. 「形状」セクションで名前と説明のマッピングが定義されていることを確認します。

  4. これらのマッピングを定義すると、ジオ・フェンスの名前と説明が表示されます。

DBベース・ジオフェンスが動作していることを確認する

データベース・ベース・ジオフェンスが動作していることを確認するには:

  1. カタログに移動して、必要なデータベース・ベース・ジオ・フェンスを開きます。

  2. データベース接続ウィザードの「テスト」ボタンをクリックして、ジオ・フェンスで使用されている接続がアクティブであることを確認します。

  3. ジオ・フェンスで使用されている表が、現在も有効で、DBに存在することを確認します。

  4. ジオ・フェンス・ページに移動して、問題が解決されたことを確認します。

キューブ

この項では、キューブで発生する一般的な問題をリストします。

以前動作していたキューブを探索できない

以前動作していたキューブを探索できない場合、次に記載されたステップを実行します。

  1. druid Zookeeperまたはインデクサ、ブローカ、中間マネージャ、オーバーロードの関連サービスが停止しているかどうかを確認します。

  2. Druid接続をクリックして次のページに移動します。

  3. 接続をテストします。このステップにより、サービスが停止して調査が必要かどうかがわかります。

キューブに「データソースの準備ができていません」と表示される

キューブの探索時に「データソースの準備ができていません」というメッセージが表示され続ける場合、次に記載されたステップを実行します。

  1. druidインデクサ・ログに移動します。通常、これはhttp:/DRUID_HOST:3090/console.htmlです。

  2. 実行中のタスクでindex_kafka_<cube-name>_<somehash>というエントリを検索します。実行中のタスクにエントリがない場合、保留中のタスクまたは完了済タスクで同じエントリを検索します。

  3. エントリが保留中のタスクに存在する場合、ワーカーは容量を使いはたし、データソースは索引付けに使用可能になるとすぐに取得されることを意味します。

  4. このような場合、待機するかワーカーの容量を増やし、druidサービスを再起動するか、既存のデータソース索引付けタスクのいくつかを中断します(それらはしばらくして再起動されます)。

  5. エントリが完了済タスクに「失敗」ステータスで存在する場合、索引付けが不適切な収集指定またはリソースの問題のために失敗したことを意味します。

  6. 「ログ(すべて)」リンクをクリックして例外に移動すると、正確な理由を確認できます。

  7. 収集が理由の場合は、タイムスタンプ書式の変更を試行してください。(Druidが索引付けに失敗するのは、タイムスタンプがJODA時間フォーマットではない場合、または指定された時間フォーマットがタイムスタンプ値のフォーマットに一致しない場合です)。

ダッシュボード

この項では、ダッシュボードで発生する一般的な問題をリストします。

以前表示されていたビジュアライゼーションがダッシュボードで使用できなくなる

次のステップを使用して、トラブルシューティングを行います。

  1. ストリーミング・ビジュアライゼーションが欠落した場合、次の理由が考えられます。

    1. 欠落したビジュアライゼーションに対応するパイプライン/ステージがすでに存在しない

    2. ビジュアライゼーションそれ自体がカタログまたはパイプライン・エディタから削除された

  2. (キューブから作成された)探索ビジュアライゼーションが欠落した場合、キューブまたはビジュアライゼーションがすでに削除されている可能性があります。

ビジュアライゼーションのサイズ変更または移動後にダッシュボード・レイアウトがリセットされる

次のステップを使用して、トラブルシューティングを行います。

  1. これは、ユーザーがビジュアライゼーションの移動またサイズ変更の後にダッシュボードを保存し忘れた場合に発生する可能性があります。

  2. レイアウトを変更した後に、必ず「保存」をクリックします。

ストリーミング・ビジュアライゼーションにデータが表示されない

次のステップを使用して、トラブルシューティングを行います。

  1. パイプライン・エディタでビジュアライゼーションに移動して、ライブ出力表にデータが表示されていることを確認します。

  2. 出力が存在しない場合、パイプラインがクラスタにデプロイされて実行中であることを確認します。ライブ出力表にデータが表示されると、それがストリーミング・ビジュアライゼーションに表示されます。

ライブ出力のトラブルシューティング

パイプラインごとに、Sparkクラスタ上で1つのSparkストリーミング・パイプラインが実行されます。Stream Analyticsパイプラインで1つ以上の問合せステージまたはパターン・ステージを使用する場合、パイプラインでは、それらのステージごとに1つ以上の連続問合せが実行されます。

連続問合せの詳細は、「Oracle CQLの理解」を参照してください。

問合せステージまたはパターン・ステージのライブ出力表に出力イベントが存在しない場合、次のステップを使用して問題を特定するか、絞り込みます。

  1. パイプラインが正常にデプロイされていることを確認する

  2. 入力ストリームがパイプラインにイベントの連続的なストリームを供給していることを確認する

  3. 各問合せステージのCQL問合せが出力を発生させていることを確認する

  4. ステージの出力が使用できることを確認する

各問合せステージのCQL問合せが出力を発生させていることを確認する

CQL問合せが出力イベントを発生させているかどうかを確認し、CQLエンジン・メトリックを使用してCQL問合せをモニターします。

次のステップを使用して、出力イベントを確認します。

  1. 「CQL Engine Query Details」ページを開きます。詳細は、「CQLエンジン・メトリックへのアクセス」を参照してください。

  2. 少なくとも1つのパーティションで、「Execution Statistics」セクションに0 (ゼロ)より大きい「Total Output Events」があることを確認します。

    cql_engine_query_details.pngの説明が続きます
    図cql_engine_query_details.pngの説明

    問合せがエラーなしで実行され、入力データが継続的に受信される場合、「Total Output Events」は増加し続けます。

ステージの出力が使用できることを確認する

パイプラインのトラブルシューティングに必要な重要事項の1つは、ステージの出力がモニター・トピックで使用可能であることを確認することです。

次のステップを使用して、モニター・トピックで出力ストリームを使用できるかどうかを確認します。

  1. パイプライン・エディタが開いたままであることを確認して、「完了」はクリックしないでください。そうしないと、パイプラインがアンデプロイされます。

  2. ブラウザ内の任意の場所を右クリックし、「インスペクト」をクリックします。

  3. 最上位タブから「ネットワーク」を選択し、「WS」を選択します。

  4. ブラウザをリフレッシュします。

    新しいWebsocket接続が作成されます。

  5. URLにtopicという名前の入ったパラメータが含まれるWebsocketを見つけます。

    トピックparamの値は、このステージの出力がプッシュされるKafkaトピックの名前です。

    websocket_network.pngの説明が続きます
    図websocket_network.pngの説明

  6. ステージの出力がプッシュされるKafkaトピックをリスニングします。

    このトピックはKafka APIを使用して作成されるため、REST APIを使用してこのトピックを消費することはできません。次のステップを使用して、Kafkaトピックをリスニングします。

    1. Oracle Event Hub Cloud ServiceでホストされているKafkaトピックをリスニングします。トピックをリスニングするには、Apache Kafkaユーティリティまたは他の関連ツールを使用する必要があります。

      次のステップを使用して、Kafkaトピックをリスニングします。

      1. Zookeeperアドレスを特定します。Oracle Event Hub Cloud Service Platformのホームページに移動します。ZookeeperのIPアドレスを見つけます。

      2. 次のコマンドを使用してKafkaトピックをリスニングします。
        ./kafka-console-consumer.sh --zookeeper IPAddress:2181 --topic sx_2_49_12_pipe1_draft_st60
    2. 標準のApache Kafkaインストール環境でホストされているKafkaトピックをリスニングします。

      Kafkaインストール環境でユーティリティを使用してKafkaトピックをリスニングできます。kafka-console-consumer.shは、任意のKafkaインストール環境の一部として使用できるユーティリティ・スクリプトです。

      次のステップを使用して、Kafkaトピックをリスニングします。

      1. クラスタに基づくApache Kafkaインストール環境でのZookeeperアドレスを特定します。

      2. 次のコマンドを使用してKafkaトピックをリスニングします。
        ./kafka-console-consumer.sh --zookeeper IPAddress:2181 --topic sx_2_49_12_pipe1_draft_st60

CQLエンジン・メトリックへのアクセス

問合せまたはパターン・ステージを含むパイプラインがSparkクラスタにデプロイされている場合、Sparkクラスタ内で稼働するCQLエンジン・メトリックのセットを使用して複合イベント処理を実行できます。

CQL問合せを使用すると、イベントのストリームに対して、集計、関連付け、フィルタおよびパターン一致を行うことができます。Sparkでは、ユーザーが実行中のSparkストリーミング・パイプラインをモニターする際に役立つ即時利用可能なパイプラインUI (通常は<host>:4040で実行)を提供しています。CQL問合せは、Sparkストリーミング・パイプラインの一部としても実行されるため、SparkパイプラインUIは、CQL問合せのモニタリング機能を含めるように拡張されています。

CQLエンジン・メトリックにアクセスするには:

  1. 少なくとも1つの問合せまたはパターン・ステージを含むパイプラインを作成します。

  2. Spark Masterユーザー・インタフェースに移動します。

    application_master.pngの説明が続きます
    図application_master.pngの説明

  3. 「CQL Engine」タブをクリックします。

    cql_engine.pngの説明が続きます
    図cql_engine.pngの説明

    Spark CQLパイプライン内で実行されているすべての問合せの詳細を参照できます。このページには、パイプラインの一部として登録されている様々なストリーム/リレーションおよび外部リレーションも表示されます。

  4. 任意の問合せをクリックすると、その問合せの詳細が表示されます。問合せの詳細ページには、特定の実行中の問合せに関するパーティション単位の詳細が表示されます。

  5. 特定のパーティション・リンクをクリックして、問合せ計画および演算子レベルの詳細をさらに詳しく確認します。このページには、特定のパーティションを処理する問合せの演算子レベルの詳細が表示されます。

    cql_engine_detailed_analysis.pngの説明が続きます
    図cql_engine_detailed_analysis.pngの説明

パイプライン・デプロイメントのトラブルシューティング

パイプライン・デプロイメントは、次の例外とともに失敗することがあります。

Sparkパイプラインは、60000ミリ秒後に正常に開始されませんでした。

この例外は、通常、クラスタに空きリソースがない場合に発生します。

回避策:

外部Sparkクラスタを使用するか、高性能なマシンを入手してより多くのリソースでクラスタを構成します。