用途:回答“应用是如何连接起来的”,返回 APM 依赖图,即从调用方服务指向被调用方服务的有向边集合,可附带协议(http、grpc、dns 等)、调用量以及各服务健康度(span 数、延迟、错误)。
前提条件:需要 Elastic APM,且服务经 OTel 埋点并产生 span.destination.service.resource 值;可选 Kubernetes 元数据用于命名空间过滤。若用户只有日志或指标而无 APM,此工具不适用。
主要能力:apm-service-dependencies 获取依赖图(全量或聚焦);配套工具包括 apm-health-summary(先看哪些服务降级)、ml-anomalies(深入异常)、k8s-blast-radius(K8s 影响范围)。
使用方式:聚焦模式最常用,需指定 service、lookback、include_health,例如 {"service": "checkout", "lookback": "1h", "include_health": true};全量模式仅在明确需要整体拓扑或初始环境发现时使用,例如 {"lookback": "1h", "include_health": false}。service 需填部署时的精确 OTel service.name,通常小写连字符,不要拼接空格;名称有歧义时先向用户确认。namespace 仅在用户限定 K8s 命名空间且服务为 K8s 部署时使用。lookback 默认 1h,用户给出明确时间窗口时按其字面值,24h 可平滑瞬时拓扑变化。include_health 默认 true,仅需拓扑时设为 false。
返回内容:services 节点列表(含语言/部署/命名空间元数据与健康统计)、edges 有向边(source、target、protocol、port、call_count、avg_latency_us)、聚焦模式下的 focal_service 与 upstream/downstream、service_count/edge_count,以及 data_coverage_note(聚焦服务有入边但无出边时提示可能的埋点缺口)。
适用场景:排查服务依赖、评估故障级联影响、定位高调用量或高延迟的关键路径。
限制与注意:优先使用聚焦模式;方向含义不同,upstream 是调用本服务的方(故障向上扩散),downstream 是本服务依赖的方(问题向内级联);空图或极小图是信号,可能因时间窗口过窄、未埋点或名称错误,不应直接报告“无依赖”;每轮只调用一个工具,先叙述拓扑再继续;后续建议按顺序链式提出而非并列选项。