Ruby のモニター

Instana Observability を使用すると、 Ruby アプリケーションを包括的に監視し、ボトルネックを特定してパフォーマンスを最適化できます。

まず、お使いの環境に Instana のホストエージェントをインストールしてください。 次に、アプリケーションに gem instana を追加します。 このGemは、 Ruby インスタンスからメトリクスとトレースを自動的に収集し、それらを Instana のUIで確認することができます。

この instana gemは、 対応するテクノロジー 向けの自動コードインスツルメンテーション、 Ruby インスタンスのセットアップ不要なヘルスモニタリング、および全システムにわたるリクエストのエンドツーエンドトレースを提供します。

ランタイム・メトリック

この instana gemは、 Ruby インスタンスから以下の実行時メトリクスを収集します:

  • Ruby のバージョン
  • ランタイム引数
  • フレームワーク
  • Gem バンドル
  • GC に費やした時間
  • メモリー使用率
  • ヒープ・スロット
  • スレッド数

インストール

この instana Gemは RubyGems で入手可能です。 インストールするには、アプリケーションの Gemfile の 終わり に以下の行を追加します。

gem 'instana'

続いて、次のコマンドを実行します。

bundle

または、以下のように自分でインストールします。

gem install instana
注: コマンド bundle を実行した際に または Gem::RemoteFetcher::UnknownHostError timed out エラー Bundler::HTTPError Could not fetch specs from # https://rubygems.org/ が発生した場合は、 IPv6 を無効にしてエラーを修正してみてください。

トレーサー・ログ

必要に応じて、ライブラリーは以下のように出力します。

Stan is on the scene.  Starting Instana instrumentation version X.X.X.

エージェントは、ホスト・エージェントに接続すると、以下のように出力します。

Host agent available. We're in business.

エラー状態を示す他のログ・メッセージが表示される場合があります。 詳しくは、「 トラブルシューティング 」セクションを参照してください。

プラットフォーム

以下のプラットフォームでは、 Instana を使用して Ruby アプリケーションを監視できます

Kubernetes

Instana ( AutoTrace )のWebhookは、 Kubernetes のMutating Webhook Admission Controllerを実装したものであり、 Kubernetes クラスタ全体において、 Instana を使用して Ruby アプリケーションを監視するために必要なすべての設定を自動的に行います。

Instana AutoTrace WebHook を Kubernetes クラスターにインストールする場合は、これらのクラスターで実行する Ruby アプリケーションをトレースするための手動ステップを実行する必要がなくなります。

Kubernetes (およびその他のコンテナー・ベースのデプロイメント) では、Instana Ruby gem で ip バイナリー (iproute2 OS パッケージに含まれているものなど) が使用可能でなければなりません。 この要件は今後のバージョンで削除されます。

構成

gem には、すぐに使用可能なメトリックや分散トレースに必要な構成はありませんが、必要に応じて個々のコンポーネントを構成できます。 詳細については、 Ruby の設定ページをご覧ください。

トラブルシューティング

Instana を使用して Ruby アプリケーションを監視する際、次のような問題が発生する可能性があります:

Ruby センサーがインストールされない

監視対象の種類: ruby_sensor_not_installed

Instana ( AutoTrace )のWebhookがインストールされていないか、 Ruby プロセスに Ruby instana gemが含まれていないか、あるいは Ruby センサーが Instana のホストエージェントと通信できない状態です。

Ruby で「 Instana 」の監視機能を有効にするには、 「インストール 」のセクションを参照してください。 Instana AutoTrace の Webhook または Ruby gem のいずれかが正しくインストールされていることが確認できている場合は、 Ruby の手順に従って、 Instana Ruby センサーのダッシュボードにプロセスが表示されないという問題をトラブルシューティングしてください。

プロセスがインスツルメントされていることを確認する

Instana ( AutoTrace )のWebhookを使用しており、 Ruby センサーが有効になっている場合、アプリケーションのログに次のような行が表示されます:

AutoTracing for Ruby is starting on version #<version>

アプリケーションのログにこの行が表示されない場合は、セットアップが正しくありません。 正しい設定に関する詳細については、 Instana AutoTrace webhook を参照してください。

手動でインスツルメンテーションを行う場合は、 instana gem がアプリケーションにインストールされており、アクティブになっていることを確認してください。 Ruby センサーがアクティブな場合、アプリケーションのログに以下の項目が表示されます。

Stan is on the scene.  Starting Instana instrumentation version #<version>

このログが表示されない場合は、セットアップが正しくありません。 インストール の資料を参照してください。

このログメッセージが表示された場合は、ホストエージェントのネットワーク接続に問題がある可能性が非常に高いです。次のセクションを参照してください。

トレーサーがホスト・エージェントに接続できることを確認する

Ruby トレーサーがインストールされている場合 (前のセクションを参照)、Ruby プロセスがポート 42699 でホスト・エージェントと 同じホスト上 に接続できることを確認します。 必要なネットワーク可視性に関する詳細については、 Instana ホストエージェントの 「ネットワーク要件 」ドキュメントを参照してください。

多くの場合、コンテナー化されたプラットフォームでは、トレース対象のアプリケーションを含むコンテナーと Instana ホスト・エージェントのコンテナーの間にネットワーク可視性の問題があります。また、オーバーレイ・ネットワークのセットアップが原因で、トレース対象のアプリケーションのコンテナーが Instana エージェント・コンテナーと 同じホスト上に接続しないという問題もあります。

多くの場合、問題は、Ruby トレーサーが 正しくない IP アドレスまたは DNS 名を使用して Instana エージェントと通信していることです。 INSTANA_AGENT_HOST 環境変数を使用して特定のネットワーク・アドレスを使用するように Ruby トレーサーに指示できます。

ごく一部のケースでは、問題がネットワーク・アドレスではなく、トレーサーが使用する ポート であるようにネットワーキングをセットアップするお客様を見たことがあります。 ホスト・エージェントがポート 42699 ではなく、別のポートで listen するためにポートの再マッピングが必要な場合は、INSTANA_AGENT_PORT 環境変数を使用して、別のポートを使用するようにトレーサーに指示できます。

これらのトラブルシューティングの手順で問題が解決しない場合は、 サポートチケットをご提出ください。

他のインスツルメンテーションおよびモニタリング・ライブラリーとの対話

194 リリース以降、instana gem は、別名チェーニングの代わりに prepend を使用して、インスツルメンテーションおよびモニタリング・ライブラリーと連携して機能できるようになりました。 つまり、複数のライブラリーの前にターゲット・メソッドに対するインスツルメンテーションを付加すると、そのインスツルメンテーションがシーケンスを起動するということです。

instana gem によってインスツルメンテーションされているメソッドを明示的に別名チェーンする必要がある場合、または別名チェーニングを実行するライブラリーを使用している場合は、 instana gem のロード後に、明示的な別名チェーニングまたは別名チェーニングを実行するライブラリーのロードを行う必要があります。 そうしないと、instana のインスツルメンテーションが機能しません。