APMを利用するにあたって、対象のアプリへのエージェントの計装(インストルメンテーション)という作業が必要となります。
この作業について、何をすべきか、アプリへのどのような変更が必要か、ということについて特に関心があります。
Splunk Observability Cloudが採用しているOpenTelemetryでは、各言語に応じた計装方法が用意されています。まずそちらを解説し、更にSplunkはどのような追加機能を提供しているかを解説したいと思います。
OpenTelemetryにおける計装には主に以下の二種類(+複合)があります。
コードに手を入れる必要がなく、アプリの起動オプションなのでAPMエージェントを指定することで自動的に標準的なトレース、スパンデータ(主に外部アプリやサービスへの通信)を取得します。
対応言語:Java、Node.js、.NET、Python、Ruby、PHP
例えばJavaの場合は、`java -javaagent:./splunk-otel-javaagent.jar -jar <myapp>.jar`のように、`-javaagent`のオプションでAPMエージェントのパスを指定します。
詳細はこちらをご参照ください。
また、自動計装であっても、データに共通的に属性付与させたい場合(サービス名やアプリバージョンなど)もコードに手を入れる必要はなく、OpenTelemetry Collectorでの設定で可能です。
APMエージェントのSDK・APIを使用し、コードにトレース、スパンのデータを生成するためのロジックを追加します。
対応言語:上記の自動計装対応言語に加え、Go、C++、etc
Goの例はこちらをご参照ください。
自動計装が対応している言語について、自動計装をしつつ、追加のデータを生成したい場合にはピンポイントにコードを追加します。
自動計装が対応している言語は、一般的にはまず自動計装を試し、必要に応じて手動計装してデータを追加します。「必要に応じて」というのは、例えば標準では取得できないデータ、つまり追加で任意の関数に対してトレースを取得したい場合や、ビジネスロジック上のデータや別アプリに通信を行う場合に渡される引数を追加取得したい場合などです。
SplunkはOpenTelemetry Collectorに対して機能追加したSplunk Distribution of OpenTelemetry Collectorを提供しています。いくつか拡張されており、その中の一つにAutomatic discovery and configuration(以下、Auto Discovery)という機能があります。
これは、自動計装の自動化を更に一歩先に進めたものです。
OpenTelemetryの自動計装では、アプリの実行時の引数に設定が必要など、場合によっては起動スクリプトの変更などが必要になるものでしたが、Auto Discoveryでは、ホスト上に動作しているアプリの起動を自動的に検出し自動計装を行います。これによりAPMの利用開始が更に容易になります。
※対応言語はJava、.Net、Node.js(2024年9月時点)で、拡張が続けられています。
この機能を利用するためのステップを見ていきたいと思います。
Auto Discoveryの高度な設定などについてはドキュメントページを参照ください。
本題からはそれますが、Auto Discoveryにはアプリへの計装以外にもミドルウェアの自動検出も可能です。
Supported third-party applicationをチェックすることで、ホストやコンテナ上で動作しているミドルウェア(MySQLやNginxなど)を検出し、そのメトリクスを取得することもできます。
詳細はこちらを参照ください。
本記事ではSplunk Observability CloudでAPMをクイックに開始するためのアプリの自動計装について解説しました。
Splunk Distribution of OpenTelemetry Collectorを使用することで、グローバルスタンダードであるOpenTelemetryを使用しつつ、利用の利便性を更に高めることができます。Auto DiscoveryによりAPMの利用も非常に簡単であることがお伝え出来たかと思います。
オブザーバビリティにご関心のある方は無料トライアルを始めてみませんか?是非ご連絡ください!
Splunkプラットフォームは、データを行動へとつなげる際に立ちはだかる障壁を取り除いて、オブザーバビリティチーム、IT運用チーム、セキュリティチームの能力を引き出し、組織のセキュリティ、レジリエンス(回復力)、イノベーションを強化します。
Splunkは、2003年に設立され、世界の21の地域で事業を展開し、7,500人以上の従業員が働くグローバル企業です。取得した特許数は1,020を超え、あらゆる環境間でデータを共有できるオープンで拡張性の高いプラットフォームを提供しています。Splunkプラットフォームを使用すれば、組織内のすべてのサービス間通信やビジネスプロセスをエンドツーエンドで可視化し、コンテキストに基づいて状況を把握できます。Splunkなら、強力なデータ基盤の構築が可能です。