10.2 一般的な問題および処置
この項では、パイプラインが正常に実行されていないかどうかを確認する項目の包括的なリストを提供します。
10.2.2 パイプライン
この項では、パイプラインのデプロイ時に発生する一般的な問題をリストします。
10.2.2.1 パイプラインが期待どおりに実行されない
パイプラインが期待どおりに実行されない場合は、次のことを確認します:
パイプラインが正常にデプロイされていることを確認する
-
Spark Masterコンソール・ユーザー・インタフェースを開きます。
-
ステータスが
「Running」
と表示されている場合、パイプラインは、現在正常にデプロイされて実行されています。
入力ストリームがパイプラインにイベントの連続的なストリームを供給していることを確認する
-
「カタログ」に移動します。
-
トラブルシューティングするストリームを特定してクリックします。
-
ソース・タイプ・パラメータ・セクションのtopicNameプロパティの値を確認します。
-
このトピックはKafka APIを使用して作成されるため、REST APIを使用してこのトピックを消費することはできません。
標準のApache Kafkaインストール環境でホストされているKafkaトピックをリスニングします。
Kafkaインストール環境でユーティリティを使用してKafkaトピックをリスニングできます。
kafka-console-consumer.sh
は、任意のKafkaインストール環境の一部として使用できるユーティリティ・スクリプトです。次のステップを使用して、Kafkaトピックをリスニングします。
-
クラスタに基づくApache Kafkaインストール環境でのZookeeperアドレスを特定します。
- 次のコマンドを使用してKafkaトピックをリスニングします。
./kafka-console-consumer.sh --zookeeper IPAddress:2181 --topicName
-
出力ストリームがモニター・トピックで使用可能であることを確認する
-
「カタログ」に移動します。
-
必要なパイプラインを開きます。
-
パイプライン・エディタが開いたままであることを確認して、「完了」はクリックしないでください。そうしないと、パイプラインがアンデプロイされます。
-
ブラウザ内の任意の場所を右クリックし、「インスペクト」を選択します。
-
「ネットワーク」タブの下の「WS」タブに移動します。
-
ブラウザをリフレッシュします。
新しいWebsocket接続が作成されます。
-
URLに
topic
という名前の入ったパラメータが含まれるWebsocketを見つけます。トピック
param
の値は、このステージの出力(問合せまたはパターン)がプッシュされるKafkaトピックの名前です。トピック名は、
AppName_StageId
です。パイプライン名は、トピック名から_StageID
を削除することで、トピック名から導出できます。前のスナップショットでは、パイプライン名はsx_2_49_12_pipe1_draft
です。
-
Spark Application Master UIに移動します。
-
「Pipeline」タブをクリックしてから「Pipeline Summary」ページを開きます。「Pipeline Summary」ページには、様々なメトリックとともにステージの表が表示されます。
-
ストリームと参照を関連付けているパイプラインの問合せステージに対応するステージIDをクリックします。
-
パイプライン・ステージ詳細ページで、「CQLDStream」ステージをクリックしてCQLエンジン・サマリー・ページを開きます。
-
「CQL Engine Summary」ページで、「External Sources」セクションを見つけます。ステージで使用されている参照のソースIDを書き留めてください。
-
「CQL Engine Detailed Query Analysis」ページを開きます。
-
ソースIDと同じ演算子IDを持つ演算子をクリックして、「CQL Engine Detailed Operator Analysis」ページを開きます。演算子に対応するエントリをクリックします。
-
「Cache Statistics」セクションを見つけます。そのようなセクションが存在しない場合、キャッシングはステージで有効化されていません。「Cache Hits」および「Cache Misses」に0 (ゼロ)以外のエントリが表示されている場合、キャッシングは、パイプライン・ステージに対して有効化され、アクティブになっています。
10.2.2.2 GGSAパイプラインの終了
GGSAパイプラインは、パイプラインで使用されるターゲットおよび参照にアクセスできない場合、またはリソースが使用できない場合に終了することがあります。ログに次の例外が表示されることがあります:
com.tangosol.net.messaging.ConnectionException
SQLException in the Spark logs.
Kafkaソースの場合は、パイプラインを再パブリッシュして、終了する前に処理されていないところからレコードを読み取ります。
10.2.2.3 ライブ表で表のイベントがない状態でListening Events
が表示される
パイプラインのステータスがStarting Pipeline
からListening Events
に変更されない理由は、複数考えられます。次に、このシナリオをトラブルシューティングするステップを示します。
-
ライブ表には、現在選択されているステージのみの出力イベントが表示されます。常に、1つのステージのみが選択されます。別のステージに切り替えてみてください。別のステージのライブ表で出力を確認できる場合、問題は、そのステージに関連している可能性があります。さらにデバッグするには、ステップ5に進んでください。
どのステージでも出力が存在しない場合、ステップ2に進んでください。
-
パイプラインが現在もSparkクラスタで実行されていることを確認します。「パイプラインが正常にデプロイされていることを確認する」を参照してください
-
パイプラインのSparkアプリケーションが中断または強制終了した場合、パイプラインがクラッシュしたことが示唆されます。さらにトラブルシューティングを行うには、アプリケーション・ログを調査することが必要な場合があります。
-
アプリケーションは、ACCEPTED、NEWまたはSUBMITTED状態の場合、クラスタ・リソースを待機しており、まだ開始していません。十分なリソースがない場合、Big Data Cloud Service Spark YarnクラスタのVCORESの数を確認してください。パイプラインの場合、Stream Analyticsでは、少なくとも3つのVCORESが必要です。
-
アプリケーションがRUNNING状態の場合、次のステップを使用してさらにトラブルシューティングを行います。
-
入力ストリームが連続的にイベントをパイプラインにプッシュしていることを確認します。
-
入力ストリームがイベントをプッシュしている場合、各パイプライン・ステージがイベントを処理し、出力を提供していることを確認します。
-
前述の両方のステップの確認に成功した場合、パイプラインが、その対応するモニター・トピックに各ステージの出力イベントをプッシュできることを確認します:
-
ステージの出力のプッシュ先であるステージのモニター・トピックを特定します。「パイプライン・ステージの出力が伝播されているトピックの名前を特定する」を参照してください。
-
モニター・トピックをリスニングして、イベントがトピックに継続的にプッシュされていることを確認します。Kafkaトピックをリスニングするには、トピックが作成されるKafkaクラスタにアクセスできる必要があります。Kafkaインストール環境でユーティリティを使用してKafkaトピックをリスニングできます。
kafka-console-consumer.sh
は、任意のKafkaインストール環境の一部として使用できるユーティリティ・スクリプトです。 -
トピックにイベントが1つも表示されない場合、この問題は、ステージからモニター・トピックに対する出力イベントの書込みに関連している可能性があります。サーバー・ログを確認して例外を検索し、管理者に報告してください。
-
モニター・トピックに出力イベントが表示される場合、この問題は、Webブラウザでの出力イベントの読取りに関連している可能性があります。
-
-
パイプライン・ステージの出力が伝播されているトピックの名前を特定する
次に、ステージのトピック名を見つけるステップを示します。
-
パイプラインの「Pipeline Summary」ページを開きます。このパイプラインに対応するアプリケーション名がわからない場合は、「出力ストリームがモニター・トピックで使用可能であることを確認する」を参照してください。
-
このページでは、パイプライン名と様々なステージIDが提供されます。パイプライン・ステージごとに、表のエントリが表示されます。
-
すべてのステージで、出力トピックIDはPipelineName_StageIDです。
-
パイプライン・エディタで「Done」をクリックし、カタログに戻ってパイプラインを再度開きます。
10.2.2.4 ライブ表に現在もStarting Pipeline
と表示される
パイプラインのステータスがStarting Pipeline
からListening Events
に変更されない理由は、複数考えられます。次に、このシナリオをトラブルシューティングするステップを示します。
-
パイプラインがSparkクラスタに正常にデプロイされていることを確認します。詳細は、「パイプラインが正常にデプロイされていることを確認する」 を参照してください。Sparkクラスタが停止しておらず、使用できることも確認します。
-
デプロイメントに失敗した場合、Jettyログを確認してデプロイメントの失敗に関連する例外を参照し、問題を修正します。
-
デプロイメントに成功している場合、OSA Web層がSparkからパイプライン・デプロイメントを受信していることを確認します。
-
パイプライン・エディタで「Done」をクリックし、カタログに戻ってパイプラインを再度開きます。
パイプライン・ステージが現在もイベントを処理していることを確認する
-
Spark Application Master UIに移動します。
-
「Pipeline」タブをクリックしてから「Pipeline Summary」ページを開きます。「Pipeline Summary」ページには、様々なメトリックとともにステージの表が表示されます。
-
合計出力イベントが0 (ゼロ)以外の値であるかどうかを確認します。ページをリフレッシュして、値が増加するか、同じままであるかを確認します。値が同じままで、長時間変化がない場合、ステージの詳細にドリルダウンします。
10.2.2.5 パイプラインのパブリッシュの取消し時のSparkログでのタイムアウト例外
Jettyのログで次のメッセージを確認します:
OsaSparkMessageQueue:182 - received: oracle.wlevs.strex.spark.client.spi.messaging.AcknowledgeMessage Undeployment Ack: oracle.wlevs.strex.spark.client.spi.messaging.AcknowledgeMessage
アプリケーションの停止中に、パイプラインのパブリッシュが完全に取り消されるまで数分かかることがあります。
したがって、前述のメッセージが表示されない場合は、対応するようにosa.spark.undeploy.timeoutの値を増やす必要があります。
また、高可用性モードでは、パイプラインのパブリッシュを取り消すときに、スナップショット・フォルダが削除されます。
HAモードで、前述のエラー・メッセージがすぐに発生せず、次のエラーが表示されることがあります:
Undeployment couldn't be complete within 60000 the snapshot folder may not be completely cleaned
.
これが意味するのは、処理に影響はないが、一部のディスク領域が使用されるということだけです。
10.2.3 ストリーム
この項では、ストリームで発生する一般的な問題をリストします。
10.2.3.1 トピックのリストで任意のKafkaトピックまたは特定のトピックを参照できない
次のステップを使用して、トラブルシューティングを行います。
-
カタログに移動して、ストリームの作成に使用しているKafka接続を選択します。
-
「次」をクリックして「接続の詳細」タブに移動します。
-
「接続のテスト」をクリックして、接続が現在もアクティブであることを確認します。
-
Kafkaクラスタに1つ以上のトピックが存在することを確認します。トピックが作成されるKafkaクラスタにアクセスできる必要があります。Kafkaインストール環境でユーティリティを使用してKafkaトピックをリストできます。
kafka-console-consumer.sh
は、任意のKafkaインストール環境の一部として使用できるユーティリティ・スクリプトです。 -
前述のコマンドを使用してもトピックを参照できない場合、トピックが作成されていることを確認します。
-
テスト接続に失敗し、
「OSA-01266 ZooKeeperサーバーに接続できません」
などのエラー・メッセージが表示された場合、Kafkaクラスタは使用不可です。Kafkaクラスタが起動して実行中であることを確認します。
10.2.3.2 入力Kafkaトピックはデータを送信しているのにライブ表にイベントが表示されない
これは、受信イベントがストリームの予期される形状に準拠していない場合に発生する可能性があります。形状の不一致によってイベントが削除されたかどうかを確認するため、次のステップを使用してトラブルシューティングを行います。
-
ストリームのソース・タイプ・プロパティでlenientパラメータが選択されているかどうかを確認します。これがFALSEの場合、イベントは、形状の不一致によって削除された可能性があります。これを確認するには、実行中のアプリケーションのアプリケーション・ログを確認します。
-
プロパティがTRUEに設定されている場合、さらにデバッグを行います。
-
Kafkaクラスタが起動して実行中であることを確認します。Sparkクラスタは、Kafkaクラスタにアクセスできる必要があります。
-
Kafkaクラスタが起動して実行中である場合、アプリケーション・ログを取得してさらにデバッグを行います。
-
10.2.4 接続
この項では、接続で発生する一般的な問題をリストします。
10.2.4.1 データベース接続の失敗
データベース接続をテストするには:
-
「カタログ」ページから、テストするデータベース接続を選択します。
-
「次」をクリックします。
-
「接続の詳細」タブで、「接続のテスト」をクリックします。
- テストに成功すると、接続がアクティブであることが示されます。
-
テストが失敗すると、次のエラー・メッセージが表示されます:
-
OSA-01260: データベースへの接続に失敗しました。IOエラー: ネットワーク・アダプタは接続を確立できませんでした
: このエラー・メッセージは、GGSAデザイン・タイムからDBホストにアクセスできないことを示します。 -
OSA-01260: データベースへの接続に失敗しました。ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました
: このエラー・メッセージは、ログイン資格証明が不適切であることを示します。
-
10.2.4.2 Druid接続の失敗
Druid接続をテストするには:
-
「カタログ」ページから、テストするDruid接続を選択します。
-
「次」をクリックします。
-
「接続の詳細」タブで、「接続のテスト」をクリックします。
- テストに成功すると、接続がアクティブであることが示されます。
-
テストが失敗すると、次のエラー・メッセージが表示されます:
OSA-01460: zooKeeperサーバーでdruidサービスへの接続に失敗しました
: このエラーは、druid zookeeperが使用不可であることを示します。druidサービスとZookeeperクラスタが起動して実行中であることを確認します。
10.2.4.3 Coherence接続の失敗
GGSAでは、Coherenceクラスタに「接続のテスト」オプションは提供されません。Coherence接続をテストするには、Oracle Coherenceのドキュメントを参照してユーティリティおよびツールを見つけてください。
10.2.4.4 JNDI接続の失敗
JNDI接続をテストするには:
-
「カタログ」ページから、テストするJNDI接続を選択します。
-
「次」をクリックします。
-
「接続の詳細」タブで、「接続のテスト」をクリックします。
- テストに成功すると、接続がアクティブであることが示されます。
-
テストが失敗すると、次のエラー・メッセージが表示されます:
-
OSA-01707: サーバーとの通信に失敗しました。サーバーが起動しており、サーバーURLが適切に指定されていることを確認してください
: このエラーは、サーバーが停止しているか、サーバーURLが間違って指定されていることを示します。サーバーURLは、host1:port1,host2:port2
の形式にする必要があります。 -
OSA-01706: JNDI接続が失敗しました。ユーザー: weblogic、認証に失敗しました
: このエラーは、ログイン資格証明が正しくないことを示します。
-
10.2.6 ジオフェンス
この項では、ジオフェンスで発生する一般的な問題をリストします。
10.2.7 キューブ
この項では、キューブで発生する一般的な問題をリストします。
10.2.7.1 以前動作していたキューブを探索できない
以前動作していたキューブを探索できない場合、次に記載されたステップを実行します。
-
druid Zookeeperまたはインデクサ、ブローカ、中間マネージャ、オーバーロードの関連サービスが停止しているかどうかを確認します。
-
Druid接続をクリックして次のページに移動します。
-
接続をテストします。このステップにより、サービスが停止して調査が必要かどうかがわかります。
10.2.7.2 キューブに「データソースの準備ができていません」と表示される
キューブの探索時に「データソースの準備ができていません」というメッセージが表示され続ける場合、次に記載されたステップを実行します。
-
druidインデクサ・ログに移動します。通常、これは
http:/DRUID_HOST:3090/console.html
です。 -
実行中のタスクでindex_kafka_<cube-name>_<somehash>というエントリを検索します。実行中のタスクにエントリがない場合、保留中のタスクまたは完了済タスクで同じエントリを検索します。
-
エントリが保留中のタスクに存在する場合、ワーカーは容量を使いはたし、データソースは索引付けに使用可能になるとすぐに取得されることを意味します。
-
このような場合、待機するかワーカーの容量を増やし、druidサービスを再起動するか、既存のデータソース索引付けタスクのいくつかを中断します(それらはしばらくして再起動されます)。
-
エントリが完了済タスクに「失敗」ステータスで存在する場合、索引付けが不適切な収集指定またはリソースの問題のために失敗したことを意味します。
-
「ログ(すべて)」リンクをクリックして例外に移動すると、正確な理由を確認できます。
-
収集が理由の場合は、タイムスタンプ書式の変更を試行してください。(Druidが索引付けに失敗するのは、タイムスタンプがJODA時間フォーマットではない場合、または指定された時間フォーマットがタイムスタンプ値のフォーマットに一致しない場合です)。
10.2.8 ダッシュボード
この項では、ダッシュボードで発生する一般的な問題をリストします。
10.2.8.1 以前表示されていたビジュアライゼーションがダッシュボードで使用できなくなる
次のステップを使用して、トラブルシューティングを行います。
-
ストリーミング・ビジュアライゼーションが欠落した場合、次の理由が考えられます。
-
欠落したビジュアライゼーションに対応するパイプライン/ステージがすでに存在しない
-
ビジュアライゼーションそれ自体がカタログまたはパイプライン・エディタから削除された
-
-
(キューブから作成された)探索ビジュアライゼーションが欠落した場合、キューブまたはビジュアライゼーションがすでに削除されている可能性があります。
10.2.9 ライブ出力
この項では、ライブ出力で発生する一般的な問題をリストします。
10.2.9.1 ライブ出力の問題
パイプラインごとに、Sparkクラスタ上で1つのSparkストリーミング・パイプラインが実行されます。Stream Analyticsパイプラインで1つ以上の問合せステージまたはパターン・ステージを使用する場合、パイプラインでは、それらのステージごとに1つ以上の連続問合せが実行されます。
連続問合せの詳細は、「Oracle CQLの理解」を参照してください。
各問合せステージのCQL問合せが出力を発生させていることを確認する
CQL問合せが出力イベントを発生させているかどうかを確認し、CQLエンジン・メトリックを使用したCQL問合せをモニターするには:
-
「CQL Engine Query Details」ページを開きます。詳細は、「CQLエンジン・メトリックへのアクセス」を参照してください。
-
少なくとも1つのパーティションで、「Execution Statistics」セクションに0 (ゼロ)より大きい「Total Output Events」があることを確認します。
図cql_engine_query_details.pngの説明問合せがエラーなしで実行され、入力データが継続的に受信される場合、「Total Output Events」は増加し続けます。
ステージの出力が使用できることを確認する
-
パイプライン・エディタが開いたままであることを確認して、「完了」はクリックしないでください。そうしないと、パイプラインがアンデプロイされます。
-
ブラウザ内の任意の場所を右クリックし、「インスペクト」をクリックします。
-
最上位タブから「ネットワーク」を選択し、「WS」を選択します。
-
ブラウザをリフレッシュします。
新しいWebsocket接続が作成されます。
-
URLに
topic
という名前の入ったパラメータが含まれるWebsocketを見つけます。トピックparamの値は、このステージの出力がプッシュされるKafkaトピックの名前です。
-
ステージの出力がプッシュされるKafkaトピックをリスニングします。
このトピックはKafka APIを使用して作成されるため、REST APIを使用してこのトピックを消費することはできません。次のステップを使用して、Kafkaトピックをリスニングします。
-
標準のApache Kafkaインストール環境でホストされているKafkaトピックをリスニングします。
Kafkaインストール環境でユーティリティを使用してKafkaトピックをリスニングできます。
kafka-console-consumer.sh
は、任意のKafkaインストール環境の一部として使用できるユーティリティ・スクリプトです。Kafkaのトピックをリスニングするには:
-
クラスタに基づくApache Kafkaインストール環境でのZookeeperアドレスを特定します。
- 次のコマンドを使用してKafkaトピックをリスニングします。
./kafka-console-consumer.sh --zookeeper IPAddress:2181 --topic sx_2_49_12_pipe1_draft_st60
-
-
10.2.9.2 無効データによる欠落イベント
CQLEngineがユーザー定義関数で無効データを検出した場合、無効データを含むイベントの例外がエグゼキュータ・ログに記録され、処理は中断せずに続行されます。
削除されたイベントと例外のログの例:
20/04/02 14:41:42 ERROR spark: Fault in CQL query processing.
Detailed Fault Information [Exception=user defined function(oracle.cep.extensibility.functions.builtin.math.Sqrt@74a5e306)
runtime error while execution,
Service-Name=SparkCQLProcessor, Context=phyOpt:1; queries:sx_SquareRootPipeline_osaadmin_draft1
20/04/02 14:41:42 ERROR spark: Continue on exception by dropping faulty event.
20/04/02 14:41:42 ERROR spark: Dropped event details <TupleValue><ObjectName>sx_SquareRootPipeline_osaadmin_draft_1</ObjectName><Timestamp>1585838502000000000</Timestamp>
<TupleKind>PLUS</TupleKind><IntAttribute name="squareNumber"><Value>-2</Value></IntAttribute><IsTotalOrderGuarantee>true</IsTotalOrderGuarantee></TupleValue>: