端点

端点定义服务的 API ,并提供有关服务公开的操作的细颗粒度视图。 对服务的每次调用都发生在单个端点上。 每个端点都具有单个自动发现的类型: BATCHSHELLDATABASEHTTPMESSAGINGRPC。 与服务一样,可以通过应用程序透视图来查看端点。

端点可以静态声明,也可以基于调用标记,与服务相反,通常使用基础结构标记(例如 SpringBoot 名称)确定。 例如,{call.http.method} {call.http.path}的组合将是 HTTP 服务的典型端点。

为服务定义单独端点的另一个好处是,主要使用“monoliths”,服务可以包含许多不同的框架和技术;HTTP/REST API,数据库访问,消息总线集成等。 通过为每种类型的 API 创建至少一个端点,并可能进一步细分(例如协议详细信息),按 API 类型捕获度量和统计信息。

Instana 根据缺省规则自动映射端点。 有关更多信息,请参阅端点映射

预定义规则

Instana 根据一组预定义规则自动映射端点。 以下规则将按降序进行考虑。 当规则匹配时,将创建相应的端点。

规则 标记
定制端点规则 用户定义的标记 (请参阅 定制端点映射)
用户通过 HTTP 头定义的端点名称 {call.http.header.x-instana-endpoint}
sdk 范围数据中的用户定义端点名称 {call.tag.endpoint}
OpenTelemetry 定义的操作名称 {otel.operation}
Jaeger 定义的操作名称 {call.tag.jaeger.operation}
Zipkin 定义的操作名称 {call.tag.zipkin.operation}
SOAP 操作 HTTP 头 {call.http.header.soapaction}
具有 WSDL 名称空间的 RPC {call.rpc.method-1}
RPC {call.rpc.method}
GraphQL {call.graphql.operationType?} {call.graphql.operationName?}
代替十六进制模式的批处理石英类型 {call.batch.jobType}
批处理石英类型 (而不是截止期限) {call.batch.jobType}
具有前缀的批处理十六进制 {call.batch.job-1}
批处理石英数字后缀 {call.batch.job-1}
Spring 批处理作业 {call.batch.job-1}
批处理 {call.batch.job}
Prisma 模型 {call.database.statement-1}
Prisma 模型回退 普里斯马
JDBC 解析的语句 {call.database.statement-1}
JDBC 存储过程语句结果 {call.database.statement-1}
Neo4j 解析的语句 {call.database.statement-1}
Cassandra 解析的语句 {call.database.statement-1}
Cosmos non-sql 命令 {call.database.schema-1}
ElasticSearch 多个索引 {call.database.schema-1}
ElasticSearch 单一索引 {call.database.schema}
ElasticSearch 操作 {call.database.commandType}
ElasticSearch 其他 API 端点 其他 API 端点
从查询解析的 MongoDB 集合 {call.database.schema-1}.{call.database.statement-2}
无法从查询解析 MongoDB 集合 {call.database.schema-1}
从名称空间解析的 MongoDB 集合 {call.database.schema}
DynamoDB 表 {call.database.schema}
Redis 命令 {call.database.statement}
AWS S3 存储区 {call.database.schema}
AWS S3 操作 其他 API 端点
GCS 存储区 {call.database.schema}
GCS 操作 其他 API 端点
Azure 存储容器 {call.database.schema}
Azure 存储操作 其他 API 端点
Memcache/ Memcached / EhCache 操作 {call.database.commandType}
Couchbase 存储区 {call.database.schema}
数据网格高速缓存 {call.database.schema}
Couchbase 解析的语句 {call.database.statement-1}
气刺语句 {call.database.statement}
带有语句的 IMS DB {call.database.statement}
不带语句的 IMS DB IMS DB
数据库后备 {call.database.commandType}
临时消息传递队列 临时队列
使用地址的 IBM MQ 范围 {call.messaging.address-1}
使用地址的 IBM ACE 范围 {call.messaging.address-1}
AzureQueue 的消息传递缺省交换 {call.messaging.exchangeType}
Apache RocketMQ span (使用地址) {call.messaging.address-1}
消息传递通用 {call.messaging.address}
RabbitMQ 的消息传递缺省交换 缺省交换
临时消息传递队列 临时队列
z/OS 连接应用程序接口 {call.zcee.apiName}
带路径模板的 HTTP {call.http.method?} /{call.http.pathTemplate-1}
带有路由 ID 的 HTTP {call.http.routeId}
在 API 版本之后的第一个 HTTP 路径段(如果有的话 {call.http.method?} {call.http.path-1}
带根路径的 HTTP 方法 {call.http.method} /
HTTP 根路径 {call.http.method?} /
事件通用 {call.event.source}
获取不带参数的 shell 二进制名称和不带参数的脚本名称 {call.shell.command-1} {call.shell.command-2}
获取不带自变量的 shell 二进制名称 {call.shell.command}
用作具有名称和版本的服务 {faas.functionname}:{faas.functionversion}
功能为仅具有名称的服务 {faas.functionname}
作为具有标识的服务的功能 {cloud.id}
SDK.name {call.sdk.name}

端点映射

根据端点类型自动映射端点。

例如,Instana 根据路径模板(如果可访问)自动对 HTTP 端点进行分组。

/hospital/1948/patient/291148
/hospital/728/patient/924892
/hospital/47/patient/25978
/hospital/108429/patient/1847

在前面的示例中,前面的端点由相同的应用程序代码提供服务,因此具有共享的性能配置文件,这些端点将被分组并一起报告:

/hospital/{hid}/patient/{pid}

这是自动完成的,对于已知的框架,用户无需采取任何步骤。

当路径模板不可用时,端点会映射到第一个路径段,也可根据需要进行配置

以下是路径模板不可用时的几个示例:

  • 未在受监视服务中使用路径模板。
  • 跟踪器不支持路径模板。
  • 在某些边缘情况下 (例如,认证失败) ,跟踪器无法访问路径模板信息。
  • 未监视目标服务,并且来自客户机的出口范围不知道路径模板。

如果您正在编写自己的跟踪代码,请参阅我们的定制跟踪最佳实践以了解如何实现相同的结果。

自定义端点映射

对于每个服务, Instana 允许使用一个配置来控制如何抽取服务端点。 要访问配置,请浏览至服务仪表板,转至“端点”选项卡并单击“配置端点”。

应用程序依赖关系映射概述

请注意,自定义端点配置仅适用于HTTP服务。

自定义端点规则

Instana 自带三个默认 HTTP 规则,它们始终是提取链的一部分:

  • 检测到的框架:抽取检测到的框架中指定的端点(如果可访问)。
  • /*: 根据第一个路径参数抽取端点。
  • 未指定:与先前规则不匹配的调用将分配给此端点

要指定其他配置,您可以定义多个定制规则。 为此,请从任何 HTTP 服务访问自定义端点配置对话框,然后选择添加自定义 HTTP 规则。 即将出现的对话框使您能够定义特定路径(实际规则)和多个测试用例,以检查已定义的路径是否按预期工作。 对于路径,您可以使用静态段(如 /api/myShopEndpoint )、路径参数(如 /{productId} )或与任何段匹配的 /*

在对话框的规则测试程序部分中,您可以定义多个测试用例验证规则。 例如,给定查询/api/*/{version},以下测试用例/api/anyName/123将匹配,而/otherApi/anyName/123将不匹配。

应用程序依赖关系映射概述

顺序评估

规则按从先到后的顺序应用,呼叫分配给第一个匹配规则。 更改顺序,仅对规则进行重新排序,而仅进行拖放。 可以禁用实例缺省规则,但不能对其进行重新排序。

应用程序依赖关系映射概述

合成端点

仅接收合成流量的端点 (例如,对运行状况检查端点的调用) 可能会偏差应用程序和服务的 KPI。 Instana 会自动检测这些端点并将其标记为合成,以防止它们影响应用程序和服务 KPI。

在 Instana 中如何使用合成端点

在 "合成" 端点下归档的每个调用在 "无界分析" 中都标记为 "合成" ,并且不计入 "应用程序透视图" , "服务" 和 "端点" 视图的 KPI。

合成端点

尽管他们的调用不计入 Application Perspectives 和 Services 的 KPI,但各个合成端点与非合成端点一样具有自己的仪表板。

合成端点

默认合成端点

默认情况下,合成端点由以下 URL 模式标识:

您可以禁用内置规则并指定自定义规则,将其他端点标记为合成。 更多信息,请参阅合成端点自定义规则文档。 内置和自定义端点规则的配置可通过服务列表上的配置服务按钮进行访问。

合成端点的自定义规则

自定义规则适用于全球所有服务。

为了帮助进行配置,将显示受影响的端点和服务。

合成端点配置

合成电话

除了可以将整个端点标记为 "合成" 之外,还可以将个别调用标记为 "合成"。 这在您的合成检查使用“生产”API(通常是优秀构想)时特别有用。

合成呼叫规则

如果满足以下一个或多个条件,那么在 Instana 中将调用标记为 "合成":

无界分析中的合成调用

缺省情况下,合成调用在无界分析中处于隐藏状态,因为仅当它们发生 非常错误时,它们才会对性能分析感兴趣。 要使 Unbounded Analytics 查询也具有合成调用,您必须通过隐藏调用 -> 合成调用开关选择性加入。

在无界分析中选择性加入合成调用

未指定的终点

当没有足够的信息来自动映射对端点的调用时 (例如, 手动检测的端点而不提供足够的数据) ,这些调用将映射到特殊的 "未指定" 端点。

其他终点

在给定服务上检测到太多端点时,将在特殊 "其他" 端点下对调用进行分组。 此保护措施旨在将端点集保持在合理大小。

这种情况通常发生在 Instana 预定义规则自定义规则之一将呼叫分组到大量端点时,而这些端点每个都接收到一个呼叫。

例如,其中一个 Instana 预定义规则是将 HTTP 调用映射到其名称来自 URL 中找到的第一个路径段的端点。 如果这些分段是根据动态值 (例如 "GET /blue-item" , "GET /red-item" ...) 构建的, 应用这一规则会导致端点数量过多,而这是没有用的。

在处理 HTTP 端点时,可以通过更改端点抽取规则的配置改进此情况。

内部触发端点

Instana 自动捕获的跟踪通常以对服务的入局调用开始。 不过,在使用 Instana SDK 时,可以通过服务的外呼启动跟踪。 在这种情况下,Instana 将创建对该服务的合成父调用(映射到“内部触发器”端点)以提高可读性。

内部触发器端点

端点流程图

端点流映射显示端点的上游和下游端点。

终端流量图限制

端点流映射当前仅显示在 20 秒内完成的短运行同步跟踪的准确数据。 在其他每种情况下,端点流映射都可能显示不准确的数据。