推定サービスのパフォーマンスを分析する 🔗
場合によっては、リモートサービスがまだインストルメントされていなかったり、インストルメンテーションが不可能だったりするために、そのトレースが有効になっていないことがあります。Splunk APMは、リモートサービスを呼び出すスパンが必要な情報を持っていれば、リモートサービスまたは推定サービスの存在を推測することができます。
Splunk APMは、推定サービス内で発生している操作を表すために、関連するトレースに推定スパンを追加します。Splunk APMがサービスを推定する方法の詳細については、Splunk APMは推定サービスをどのように識別するのか? を参照してください。
次の表は、一般的な推定サービスのタイプについて説明したものです:
タイプ |
例 |
備考 |
---|---|---|
汎用サービス
(サービスマップ内の点線の円)
|
AWSサービス |
このサービスタイプには、外部サービスプロバイダー、汎用リモートプロシージャコール(RPC)、HTTPサービスが含まれます。各タイプの詳細については、以下のセクションを参照してください:
システムが多数のHTTPサービスとやりとりする場合、HTTPサービスを推定することで、Troubleshooting MetricSets(TMS)のカーディナリティが増加する可能性があります。その場合、過剰なカーディナリティを防ぐために、組織でHTTPサービスの推定を無効にすることができます。詳しくは HTTPサービスの推定を管理する を参照してください。
|
パブリッシャー/サブスクライバーキュー(pub/sub)
(サービスマップ内の点線の矢印)
|
Kafka、Kinesis |
pub/subキューの推定の詳細は、推定パブリッシャー/サブスクライバー(pub/sub)キュー を参照してください。 |
データベース
(サービスマップ内の点線の円柱)
|
MySQL、AWS S3、Redis、MongoDB |
推定サービスについて利用可能な情報は? で説明する詳細に加えて、Splunk APMは推定されたSQLデータベースに対して追加の分析を提供します。Splunk APMのデータベースインサイトの詳細については、Database Query Performanceの監視 を参照してください。 |
推定サービスについて利用可能な情報は? 🔗
Because inferred services are not instrumented, Splunk APM only has access to spans from instrumented services that call inferred services. Splunk APM places inferred services in their inferred locations in the service map and provides Troubleshooting MetricSets (TMS), or request, error, and duration (RED) metrics, based on the associated client-side spans. You can continue to troubleshoot with these metrics in Tag Spotlight. If the inferred service is servicing other uninstrumented services, these reported RED metrics might not provide a complete picture of the inferred service’s interactions.
サービスマップ内での推定サービスの表示 🔗
推定サービス、pub/sub、およびデータベースは、サービスマップ内の推定された場所に表示されます。サービスマップで推定サービスを選択すると、そのサービスタイプ、サービス名、およびリクエスト、エラーおよびレイテンシ(RED)メトリクスを表示できます。メトリクスは、インストルメントされたサービスからの参照スパンに基づいており、推定サービスのインタラクションの全体像を提供しない場合があります。
トレースビュー内での推定サービスの表示 🔗
推定サービス、pub/sub、およびデータベースは、トレースウォーターフォールビューでもスパンとして表示されます。以下のスクリーンショットのように、グレーのボックスにイタリック体で表示されます:
トレースウォーターフォールで推定スパンを選択すると、対応する親スパンのメタデータが表示されます。ウォーターフォール視覚エフェクトでグレーのストライプのバーとして表示される操作の長さも、親スパンから継承されたものであり、推定サービスでの操作時間を正確に表していない可能性があります。
Create Monitoring MetricSets to chart and alert on inferred services 🔗
注釈
Monitoring MetricSetsでサポートされるのは、サードパーティまたは未インストルメントのHTTPサービスのみです。
推定サービスに対してMonitoring MetricSet(MMS)を作成することができます。MMSを使用して、ダッシュボード内で推定サービスのメトリクスをチャート化し、推定サービスに対するアラートを発するディテクターを作成することができます。Create a Monitoring MetricSet with a custom dimension for an inferred service を参照してください。
Splunk APMは推定サービスをどのように識別するのか? 🔗
クライアントスパンまたはプロデューサースパンに対応するサーバースパンがない場合、Splunk APMは、対をなさないスパンに、未インストルメントのサービスとのインタラクションを示すタグが含まれているかどうかをチェックします。
To identify an inferred service, Splunk APM first checks for tags that indicate the type
of the inferred service, and then checks for tags that indicate the service name
. After Splunk APM identifies a client or producer span with a tag or tags that indicate interaction with 1 of these service types, it creates an inferred span to represent the operation in the uninstrumented service.
推定サービスのタイプと推定の方法 の表は、推定サービスのタイプと、Splunk APMが各タイプの推定サービスを識別するために使用するタグおよび推定メソッドの一覧です。pub/sub推定サービスの場合、推定スパンは対応するクライアントスパンまたはプロデューサースパンからメタデータを継承し、そのスパンに直接添付されます。
For inferred service types other than pub/sub, Splunk APM applies additional logic to ensure it captures only the most important application-level information. If there are multiple client spans without a corresponding server span, the inferred span inherits the metadata from the parent-most of these client spans. The inferred service span is then attached to the most recent of these client spans. Otherwise, if there is a single client span without a corresponding server span, the inferred span inherits the metadata from that client span and is attached to that same span.
HTTPサービスの推定を管理する 🔗
HTTPサービスの推定を設定することで、推定サービスがサービスマップに表示され、Troubleshooting MetricSetsを生成するように制御することができます。
HTTPサービスを推定することの利点は、推定サービスのインストルメント済みサービスとのインタラクションを可視化できることです。考えられるデメリットは、システムから呼び出されるHTTPサービスがたくさんある場合、サービスマップが混雑してTMSのカーディナリティが増える可能性があることです。
Splunk APMの管理者は、推定HTTPサービスを APM Configuration で管理し、個別のシステムに基づいて柔軟性を提供することができます。
前提条件 🔗
推定HTTPサービスを構成するには、adminロールが必要です。
HTTPサービスを推定するためのSplunk APMの設定 🔗
以下の手順に従って、Splunk APMで推定HTTP サービスを設定します:
Splunk APMのランディングページから APM Configuration を選択し、メニューから APM Service & Traces を選択します。APM Services & Traces ページが開きます。
Inferred services で、Inferred HTTP service の行を探し、Configure を選択します。設定ダイアログボックスが開きます。
Configure Inferred HTTP Services の設定ダイアログボックスで、HTTPサービスの推定 を選択します。
変更を Save します。
注釈
HTTPサービスを推定すると、新しい推定サービスごとにTroubleshooting MetricSetsが生成されるため、Troubleshooting MetricSetのカーディナリティが増加します。Subscription Usage を選択すると、現在のカーディナリティの使用状況が表示されます。カーディナリティの管理については、Monitoring MetricSetsでのカーディナリティのトラブルシューティング を参照してください。
推定サービスのタイプと推定の方法 🔗
次の表は、推定サービスのタイプおよびタグと、Splunk APMが各推定サービスのタイプを識別するために使用する推定のメソッドの一覧です。これらの推定ルールで使用されるスパンタグは、OpenTelemetryのセマンティック規約に基づいています。
Splunk APMは、以下のタイプのサービスを推定します:
推定HTTPサービス 🔗
Splunk APMがHTTPサービスを推定する場合、インストルメント済みのサービスがリモートのHTTPエンドポイントと通信しているということを意味します。
推定HTTPサービスにサービス名を割り当てるために、Splunk APMは以下のことを行います:
Verifies that the
span.kind
of the referring span is equal toCLIENT
.- To ensure that the
peer.service
is an HTTP service, applies the following logic: peer.service
が存在し、かつ、以下のうち1つ以上が存在する場合、peer.service
からサービス名が抽出されます。http.host
http.url
in libraries that support OpenTelemetry semantic conventions version 1.16.0 or lower orurl.full
in libraries that support OpenTelemetry semantic conventions version 1.17.0 or highernet.peer.name
in libraries that support OpenTelemetry semantic conventions version 1.16.0 or lower orserver.address
in libraries that support OpenTelemetry semantic conventions version 1.17.0 or higher
- To ensure that the
- If step 2 is not true, looks for the service name in the following tags, in order. If any of these tags are found, infers the service name from the first appearing tag. If none of these tags are found, Splunk APM does not consider the span to be related to an inferred HTTP service.
http.host
:ホスト名はそのまま抽出peer.hostname
:ホスト名はそのまま抽出peer.address
:ホスト名はURLから抽出For libraries that support OpenTelemetry semantic conventions version 1.16.0 or lower, host name is extracted from
http.url
. For libraries that support OpenTelemetry semantic conventions version 1.17.0 or higher, host name is extracted fromurl.full
.For libraries that support OpenTelemetry semantic conventions version 1.16.0 or lower, host name extracted as-is from
net.peer.name
. For libraries that support OpenTelemetry semantic conventions version 1.17.0 or higher, host name is extracted fromserver.address
.
注釈
サービスマップのノイズを減らし、カーディナリティを管理するために、Splunk APMはホスト名のないサービスやIPアドレスをホスト名として使用しているサービスを除外します。IPアドレスを有効にする必要がある場合は、営業担当者にお問い合わせください。
Inferred remote procedure call (RPC) services 🔗
Splunk APMがRPCサービスを推定する場合、インストルメント済みのサービスがリモートプロシージャコールを行っているということを意味します。
RPCサービスを推定するために、Splunk APMは以下のことを行います:
Verifies that the
span.kind
of the referring span is equal toCLIENT
.Verifies that the referring span contains the
rpc.system
span tag. This tag is used to identify the remote system, such asgrpc
,java_rmi
, orwcf
.- Looks for the service name in the following tags, in the following order. If any of these tags are found, infers the service name from the first appearing tag. If none of these tags are found, Splunk APM does not consider the span to be related to an inferred RPC service.
rpc.service
For libraries that support OpenTelemetry semantic conventions version 1.16.0 or lower,
net.peer.name
. For libraries that support OpenTelemetry semantic conventions version 1.17.0 or higher,server.address
.rpc.system
推定汎用サービス 🔗
これは、peer.service
スパンタグを使用して汎用サービスを推定するためのキャッチオールレイヤーです。
クライアントスパンから汎用サービスを推定するために、Splunk APMは以下のことを行います:
参照スパンの
span.kind
がCLIENT
と等しいことを確認します。peer.service
タグからサービス名を探します。peer.service
タグが存在する場合、そのタグからサービス名を推定します。peer.service
タグが存在しない場合、そのスパンは推定汎用サービスに関連していないものと見なされます。
AWSサービスに関する注意事項: AWSサービスを識別するには、スパンに http.url
が含まれている必要があります。Splunk APMはこのタグの値にヒューリスティックな手法を適用して、URLからAWSサービスのタイプを判断します。
推定パブリッシャー/サブスクライバー(pub/sub)キュー 🔗
Splunk APMがパブリッシャー/サブスクライバーキューを推定する場合、それはインストルメント済みのサービスが未インストルメントのpub/subとやりとりしているということを意味します。推定pub/subを識別するために、Splunk APMは以下のことを行います:
参照スパンの
span.kind
がPRODUCER
またはCLIENT
と等しいことを確認します。スパンが
messaging.destination
(OpenTelemetryのセマンティック規約バージョン1.16.0以下をサポートするライブラリ内)またはmessaging.destination.name
(OpenTelemetryのセマンティック規約バージョン1.17.0以上をサポートするライブラリ内)のいずれかを含んでいることを確認します。以下のタグの値が、メッセージの送信先のトピックやチャネルの名前を指定するために使用されます。If both
messaging.system
andmessaging.destination.name
exist, the inferred service name is equal to <Value ofmessaging.system
tag>:<Value ofmessaging.destination.name
tag>.messaging.system
がNULLの場合、推定サービス名は<messaging.destination.name
タグの値>と等しくなる。messaging.destination.name
がNULLの場合、推定サービス名は<messaging.system
タグの値>と等しくなる。
推定データベース 🔗
Splunk APMがデータベースを推定する場合、インストルメント済みのサービスが未インストルメントのデータベースを呼び出していることを意味します。
データベースを識別するには、参照スパンの kind
が client
と等しく、スパンに以下のタグのうち少なくとも1つが含まれている必要があります:
db.system
db.name
db.type
db.instance
推定データベースの name
を決定するために、Splunk APMは、以下の順序で以下のロジックを適用します:
db.system
タグが存在する場合、その値は、mysql
やredis
などのように、照会されるデータベースのタイプを指定するために使用されます。このタグのみが存在する場合、その値は推定データベースのservice.name
としても使用されます。db.name
タグが存在する場合、その値はdb.system
と連結されて推定サービス名:db.system:db.name
を形成します(例:mysql:sql_db_1
)。If the
db.connection_string
tag is present and its value conforms to a known format such as Java database connectivity (JDBC), Splunk APM extracts the database name portion of the URL and concatenates it with the value ofdb.system
to form the database name, such asmysql:dbname
. If the value ofdb.connection_string
does not conform to a known format or the database portion cannot be extracted anddb.name
also does not exist, Splunk APM uses the raw value ofdb.connection_string
as the database name. Ifdb.system
also exists, the 2 values are concatenated.
Splunk APMは、サポートされているSQLデータベースの追加分析も提供します。詳しくは Database Query Performanceの監視 を参照してください。