service_flow
Trace a service's downstream calls, databases and hosts to see which dependency adds the most response time and where slow or failing requests spend their time.
Instructions
Shows what a service calls (Dynatrace service flow): the downstream call tree of services, databases and external hosts as an indented tree. Each node has its contribution to the response time of the analysed service, the share of requests that make the call, calls per calling request, average time per call, call count and failed calls.
Use it to see which dependency a slow or failing service spends its time in. Pass service as an id or a name; max_depth limits how many call levels are followed. The shared trace filters (response_time_min_ms, response_time_max_ms, http_code, failed, http_method, request, request_group_id, url_contains, request_kind, raw_filters) narrow the analysed requests.
Follow up with analyze_response_time or service_flow on a downstream id, top_database_statements on a database node, or service_backtrace for the opposite direction.
This tool runs through the Dynatrace Bridge browser extension in the user's logged-in browser. If it fails, report the error to the user; do not try to open browser tabs or use browser automation instead.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of tree nodes to print. Default 40, at most 300. The output says how many were omitted. | |
| failed | No | true = only failed requests, false = only successful requests. Omit for both. | |
| request | No | One request (endpoint, SQL statement, job) of `service`: its name or a part of the name (e.g. '/cart/checkout'), or its SERVICE_METHOD-… id. A name is looked up among the requests of `service` (one extra request), so it needs `service`; several matches return the candidates instead of guessing. An id works without a lookup. | |
| service | Yes | The service, as an entity id (SERVICE-1234567890ABCDEF) or a name. A name that matches several entities returns the candidates instead of guessing. | |
| time_to | No | Absolute end time, ISO 8601; without a zone it is read as UTC. Without time_from, the window starts minutes_lookback before this. Must not be in the future. | |
| http_code | No | HTTP response code filter: one code ('404'), a class ('4xx', '5xx') or a range ('400-599'). | |
| max_depth | No | How many call levels below the service to show. Default 3, at most 20. | |
| time_from | No | Absolute start time, ISO 8601 (e.g. '2026-09-23T10:28:00Z'). A timestamp without a zone (Z or ±hh:mm) is read as UTC. Without time_to, the window runs from here to now. Must not be in the future. | |
| environment | No | Which Dynatrace environment to query, as named in the Dynatrace Bridge extension popup. Omit it for the default, the first environment configured there. The names are not listed here because the extension had not connected yet when this description was built; `dynatrace_bridge_status` lists them. | |
| http_method | No | HTTP method of the request. | |
| raw_filters | No | Escape hatch for servicefilter types without a dedicated argument. Each entry is {type, values}; type is a numeric id or one of CPU_TIME, CALL_INSTANCE_ID, CALL_TREE, CALL_URI, CALL_TAG, WAIT_TIME, SYNC_TIME, SUSPENSION_TIME, CALLEE, CALLER, PROXY, SERVICE_ID, EXCEPTION, DATABASE_STATEMENT, DATABASE_TABLE, FLAWS, DISK_IO_TIME, NETWORK_IO_TIME, NUMBER_OF_DB_CALLS, NUMBER_OF_NON_DB_CALLS, TIME_SPENT_IN_DB_CALLS, TIME_SPENT_IN_NON_DB_CALLS, TRACE_ID, THREAD_NAME, PROCESSING_TIME, DATABASE_VENDOR, DATABASE_NAME, ENTITY_TAG, PG_NAME, PG_TAG, DATABASE_ROW_COUNT, DATABASE_FETCH_COUNT, WEBREQUEST_HOSTNAME, KEY_REQUEST, RELEASE, BUILD, STAGE, PRODUCT, SPAN_NAME, SPAN_ATTRIBUTE, ENTRY_POINT. Value formats of these types are not verified; time values are microseconds. | |
| request_kind | No | web = only requests of web request and web services (HTTP endpoints, including calls to unmonitored hosts); database = only SQL statements. Omit for every kind (also background activity, custom and messaging services). | |
| url_contains | No | Only web requests whose URL contains this text. The quick way to filter by a URL path fragment (e.g. '/checkout') without knowing the service or the request: it works with or without `service`. It matches nothing for non-web requests (SQL statements, cron jobs, messaging, custom services), which have no URL; use `request` for those. | |
| minutes_lookback | No | Window length in minutes. Default 120. With neither time_from nor time_to it means the last N minutes up to now; with only time_to it means the N minutes ending at time_to; ignored when time_from is given. The response header always shows the resolved absolute UTC window. | |
| request_group_id | No | A request type as a SERVICE_METHOD_GROUP-… id. For a 'Requests to unmonitored hosts' service this id is the target host (printed by list_service_requests; there the host name can also be passed as `request`). | |
| request_group_name | No | Display name belonging to request_group_id, exactly as printed next to the id. Pass it together with request_group_id. | |
| response_time_max_ms | No | Only requests whose response time is at most this many milliseconds. | |
| response_time_min_ms | No | Only requests whose response time is at least this many milliseconds. |