Ruby のトラブルシューティング

Instana を使用して Ruby アプリケーションを監視する際に発生する可能性のある問題を特定するには、以下の手順を実行してください。 Instana gemは完全に自動化されていますが、万が一問題が発生した場合は、 サポートチケットを開いてください

問題領域

次のような問題が発生する可能性があります:

Ruby そのプロセスがダッシュボードに表示されない

この問題を解決するには、以下の手順を実行してください

  1. お使いの環境がサポート対象であることを確認し、サポート対象の Ruby のバージョンを実行していることを確認してください。

    問題の特定に時間をかけすぎる前に、まず対象のコンポーネントと環境がサポートされていることを確認してください。 サポートされているすべてのコンポーネントの一覧は、 Ruby の「サポート対象バージョン」 に記載されています。

  2. インストール手順を確認してください。

    インストール・ステップ が適切に実行されていることを確認します。

  3. アプリケーションのバンドルに、 Instana Ruby gem がインストールされていることを確認してください。

    アプリケーション内で gem "instana" を確認し Gemfile ファイル Gemfile.lock 内の instana に関する記述を確認することで、検証できます。 または、Ruby アプリケーション・ディレクトリーからbundle exec gem list を実行することもできます。 このコマンドは、アプリケーションのバンドル内にあるすべての Ruby gemを一覧表示します。 Instana Ruby gem がそのリストに含まれていることを確認します。

  4. Instana gemが最新バージョンであることを確認してください。

    最新バージョンは、 RubyGems でご覧いただけます。 では Gemfile.lock、 Instana Ruby の最新バージョンが、名前(例: instana (x.x.x))の横に表示されていることを確認してください。

  5. アプリケーションログの出力に「 Instana 」という記述があることを確認してください。

    アプリケーションまたはコンテナのログには、常に次のような起動メッセージが含まれている必要があります。 Stan is on the scene. Starting Instana instrumentation version x.x.x

  6. デバッグ出力を有効にし、アプリケーションまたはコンテナのログを再度確認してください。

    Ruby プロセスに対して環境変数 INSTANA_DEBUG=true を設定し、アプリケーション・ログまたはコンテナー・ログを再確認します (ステップ 3 と同じ)。 Instana に関連するエラーメッセージが表示されていないか、特に注意して確認してください。

  7. Instana のホストエージェントのログを確認し、この Ruby プロセスに関連するメッセージがないか確認してください。

  8. コンソールから、 Ruby アプリケーションを詳細モードで起動してみてください。

    さらに詳しくは、 「アプリケーションでのテスト」 のセクションをご覧ください。 「 Ruby 」アプリケーションの出力に、 Instana に関連するエラーメッセージが表示されていないか、特に注意して確認してください。

  9. サポートチケットを送信してください。

    上記の手順をすべて確認しても、「 Ruby 」のプロセスが「 Instana 」ダッシュボードに表示されない場合は、詳細な調査のためサポートケースを開いてください

    サポートチケットには、以下の内容を記載してください:

    1. 環境の詳細:プラットフォーム、 Ruby のバージョン、および使用中のフレームワーク
    2. これまでのすべての検証の概要。

Ruby アプリケーションでトレースが行われていない

「 Instana 」 Ruby アプリケーションが「 Instana 」ダッシュボードに表示されているにもかかわらず、そのアプリケーションからのトレースが確認できない場合は、以下の手順を実行してください:

  1. お使いのアプリケーションフレームワークがサポートされているか確認してください。

    Ruby アプリケーションで使用しているコンポーネントがサポートされているか確認してください。

  2. ミドルウェア ::Instana::Rack が有効になっているか確認してください。

    Ruby on Rails などの Rack ベースのフレームワークを使用している場合は、ミドル ::Instana::Rack ウェアが正しくインストールされていることを確認してください。 通常の環境では、さまざまなフレームワーク用にこのミドルウェアが自動的にインストールされます。

    Ruby on Rails で検証を行うには、次のコマンドを実行します:

    bundle exec rake middleware
    

    の項目が必ず表示される ::Instana::Rackはずです。 インストールが必要な場合は、 手動でインストールできます。

  3. Gemfile require => false 内で、 Instana gemの読み込みが遅れていないか確認してください。

    さまざまなスタックでのブート・プロセスは、厳密かつ順序に依存することが多いため、Instana Ruby gem の遅延ロードは推奨されません。 レイトローディングの一般的な症状として、着信リクエストのトレースを開始する役割を担う「Rack」 ::Instana::Rack ミドルウェアが存在しないことが挙げられます。

    何らかの理由で、 Instana Ruby gem を遅延読み込みしたい場合は、 Instana Rack ミドルウェアのインストールに関する手動の手順 (必要な場合)を必ず実行してください。

  4. デバッグ出力を有効にし、アプリケーションまたはコンテナのログを再度確認してください。

    Ruby プロセスに対して環境変数 INSTANA_DEBUG=true を設定し、アプリケーション・ログまたはコンテナー・ログを再確認します (ステップ 3 と同じ)。 Instana に関連するエラーメッセージが表示されていないか、特に注意して確認してください。

  5. アプリケーションコンソールから、カスタムトレースを生成します。

    それでも解決しない場合は、アプリケーションコンソールを開き、次のコマンドを実行してカスタムトレースを生成することができます:

    require "instana"
    
    Instana.tracer.in_span(:my_custom_trace) do
      sleep 1
    end
    

    処理が正常に完了し、デバッグ出力が有効になっている場合(前の手順で説明した通り)、アプリケーションログに次の行が表示されるはずです:

    Instana:: Reporting 1 spans
    

    次に、 Instana のダッシュボードを確認してください([Query Analyze] の下にある [ call.span_type ] を確認してください SDK)。 「my_custom_trace」という名前のトレースが表示されているはずです。

  6. Instana のホストエージェントのログを確認し、この Ruby プロセスに関連するメッセージがないか確認してください。

  7. サポートチケットを送信してください。

    すべての手順を確認しても、 Instana ダッシュボードに Ruby のトレースが表示されない場合は、詳細な調査のためサポートチケットを発行してください。

    サポートチケットには、以下の内容を記載してください:

    1. 環境の詳細:プラットフォーム、 Ruby のバージョン、および使用中のフレームワーク
    2. これまでのすべての検証の概要。

コンテナー化環境でのエージェントの CPU 使用量の増加

Ruby プロセスが並行処理のプリミティブとしてを使用するコンテナ化環境では、エージェントが新しく作成されたプロセスの追跡を試みることで fork 、過負荷になる可能性があります。

  1. エージェントがリクエストを処理するのに十分なリソースを確保してください

    エージェントが必要とする CPUおよびメモリの使用量を制限する措置を講じた場合は、設定された制限値が、エージェントがすべての必要なタスクを完了するのに十分なリソースを確保できるものであることを確認してください。

  2. プロセス・ルックアップの無効化

    エージェント構成に以下を追加することで、エージェントの「ファスト・パス」を無効にすることもできます。 この設定により、エージェントが消費するリソースを削減できますが、プロセスがエージェントにデータを送信する前に終了した場合、トレースが破棄される可能性があります。 この問題は、一般的に、短命な子プロセスを伴う並行処理プリミティブとして fork を使用するアプリケーションで発生します。

    com.instana.processlookup:
      enabled: false
    

ログと環境変数

デフォルトでは、このgemは問題が発生したかどうかを示すメッセージのみをログに記録します。 より詳細なロギング出力が必要な場合は、INSTANA_DEBUG 環境変数を設定します。 Instana gem でデバッグレベルのロギングを有効にします。

次の画像は、 Instana のコンソール出力を示しています:

Instana コンソールの出力

前の例では、ホストエージェントが利用できないことがわかります(実行されていないか、インストールされていないかのいずれかです)。 ホストエージェントが利用可能になると、 Instana gemは手動での操作なしに自動的に再接続を行います。

ログ出力の制御方法の詳細については、 Ruby の設定ページを参照してください。

アプリケーションでのテスト

アプリケーションから Instana gemの動作を診断するには、多くの場合、詳細ログ設定でアプリケーションコンソールを開くだけで、問題を特定できることがあります。

次の画像は、Railsコンソールの出力結果を示しています: Railsコンソール

前の例では、 Instana Ruby というGemが初期化され、一部のコンポーネントが計測され、成功通知が表示される様子を確認できます。 Host agent available. We're in business

個々のコンポーネントの無効化

gem の特定部分 (インスツルメンテーションなど) が原因で問題が発生している場合は、そのコンポーネントのみ無効にすることで、その問題を一時的に回避できます。 個々のコンポーネントの有効化および無効化の方法の詳細については、 「 Ruby の設定 」ページを参照してください。