Skip to content

Instantly share code, notes, and snippets.

@cyrille-leclerc
Created July 23, 2020 08:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cyrille-leclerc/116a04511c38c5e6460a2b9cd5d265a8 to your computer and use it in GitHub Desktop.
Save cyrille-leclerc/116a04511c38c5e6460a2b9cd5d265a8 to your computer and use it in GitHub Desktop.
Sample APM Span invoking a PostgreSQL database from a Spring Boot application
{
"_index": "apm-7.8.0-span-000001",
"_type": "_doc",
"_id": "DizOenMBfU2mhA8uCamL",
"_version": 1,
"_score": null,
"_source": {
"parent": {
"id": "7a2d30add01713e6"
},
"observer": {
"hostname": "cyrille-laptop",
"id": "c6806dda-7615-4d01-bc3f-aeb7ca9aa2f2",
"ephemeral_id": "eee70781-1067-4da2-a1aa-7232a0dbc15c",
"type": "apm-server",
"version": "7.8.0",
"version_major": 7
},
"agent": {
"name": "java",
"ephemeral_id": "65d033ed-304f-412f-bb3c-6b2ac7004e2b",
"version": "1.16.0"
},
"trace": {
"id": "f94e7382fa04f75f0fbf843b98ffa5cf"
},
"@timestamp": "2020-07-23T08:33:08.267Z",
"ecs": {
"version": "1.5.0"
},
"service": {
"environment": "staging",
"name": "com-shoppingcart_anti-fraud"
},
"destination": {
"address": "localhost",
"port": 5432
},
"processor": {
"name": "transaction",
"event": "span"
},
"transaction": {
"id": "7a2d30add01713e6"
},
"span": {
"duration": {
"us": 121296
},
"stacktrace": [
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "HikariProxyStatement.java",
"classname": "com.zaxxer.hikari.pool.HikariProxyStatement",
"line": {
"number": -1
},
"module": "com.zaxxer.hikari.pool",
"function": "execute"
},
{
"library_frame": false,
"exclude_from_grouping": false,
"filename": "AntiFraudController.java",
"classname": "com.mycompany.antifraud.AntiFraudController",
"line": {
"number": 95
},
"function": "checkOrder",
"module": "com.mycompany.antifraud"
},
{
"exclude_from_grouping": false,
"library_frame": true,
"filename": "InvocableHandlerMethod.java",
"classname": "org.springframework.web.method.support.InvocableHandlerMethod",
"line": {
"number": 190
},
"module": "org.springframework.web.method.support",
"function": "doInvoke"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "InvocableHandlerMethod.java",
"classname": "org.springframework.web.method.support.InvocableHandlerMethod",
"line": {
"number": 138
},
"module": "org.springframework.web.method.support",
"function": "invokeForRequest"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "ServletInvocableHandlerMethod.java",
"classname": "org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod",
"line": {
"number": 105
},
"module": "org.springframework.web.servlet.mvc.method.annotation",
"function": "invokeAndHandle"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "RequestMappingHandlerAdapter.java",
"classname": "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter",
"line": {
"number": 879
},
"module": "org.springframework.web.servlet.mvc.method.annotation",
"function": "invokeHandlerMethod"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "RequestMappingHandlerAdapter.java",
"classname": "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter",
"line": {
"number": 793
},
"module": "org.springframework.web.servlet.mvc.method.annotation",
"function": "handleInternal"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "AbstractHandlerMethodAdapter.java",
"classname": "org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter",
"line": {
"number": 87
},
"module": "org.springframework.web.servlet.mvc.method",
"function": "handle"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "DispatcherServlet.java",
"classname": "org.springframework.web.servlet.DispatcherServlet",
"line": {
"number": 1040
},
"module": "org.springframework.web.servlet",
"function": "doDispatch"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "DispatcherServlet.java",
"classname": "org.springframework.web.servlet.DispatcherServlet",
"line": {
"number": 943
},
"module": "org.springframework.web.servlet",
"function": "doService"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "FrameworkServlet.java",
"classname": "org.springframework.web.servlet.FrameworkServlet",
"line": {
"number": 1006
},
"function": "processRequest",
"module": "org.springframework.web.servlet"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "FrameworkServlet.java",
"classname": "org.springframework.web.servlet.FrameworkServlet",
"line": {
"number": 898
},
"module": "org.springframework.web.servlet",
"function": "doGet"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "HttpServlet.java",
"classname": "javax.servlet.http.HttpServlet",
"line": {
"number": 634
},
"module": "javax.servlet.http",
"function": "service"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "FrameworkServlet.java",
"classname": "org.springframework.web.servlet.FrameworkServlet",
"line": {
"number": 883
},
"function": "service",
"module": "org.springframework.web.servlet"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "HttpServlet.java",
"classname": "javax.servlet.http.HttpServlet",
"line": {
"number": 741
},
"function": "service",
"module": "javax.servlet.http"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "ApplicationFilterChain.java",
"classname": "org.apache.catalina.core.ApplicationFilterChain",
"line": {
"number": 231
},
"module": "org.apache.catalina.core",
"function": "internalDoFilter"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "ApplicationFilterChain.java",
"classname": "org.apache.catalina.core.ApplicationFilterChain",
"line": {
"number": 166
},
"module": "org.apache.catalina.core",
"function": "doFilter"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "WsFilter.java",
"classname": "org.apache.tomcat.websocket.server.WsFilter",
"line": {
"number": 53
},
"module": "org.apache.tomcat.websocket.server",
"function": "doFilter"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "ApplicationFilterChain.java",
"classname": "org.apache.catalina.core.ApplicationFilterChain",
"line": {
"number": 193
},
"function": "internalDoFilter",
"module": "org.apache.catalina.core"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "ApplicationFilterChain.java",
"classname": "org.apache.catalina.core.ApplicationFilterChain",
"line": {
"number": 166
},
"module": "org.apache.catalina.core",
"function": "doFilter"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "RequestContextFilter.java",
"classname": "org.springframework.web.filter.RequestContextFilter",
"line": {
"number": 100
},
"module": "org.springframework.web.filter",
"function": "doFilterInternal"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "OncePerRequestFilter.java",
"classname": "org.springframework.web.filter.OncePerRequestFilter",
"line": {
"number": 119
},
"module": "org.springframework.web.filter",
"function": "doFilter"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "ApplicationFilterChain.java",
"classname": "org.apache.catalina.core.ApplicationFilterChain",
"line": {
"number": 193
},
"module": "org.apache.catalina.core",
"function": "internalDoFilter"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "ApplicationFilterChain.java",
"classname": "org.apache.catalina.core.ApplicationFilterChain",
"line": {
"number": 166
},
"module": "org.apache.catalina.core",
"function": "doFilter"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "FormContentFilter.java",
"classname": "org.springframework.web.filter.FormContentFilter",
"line": {
"number": 93
},
"module": "org.springframework.web.filter",
"function": "doFilterInternal"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "OncePerRequestFilter.java",
"classname": "org.springframework.web.filter.OncePerRequestFilter",
"line": {
"number": 119
},
"module": "org.springframework.web.filter",
"function": "doFilter"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "ApplicationFilterChain.java",
"classname": "org.apache.catalina.core.ApplicationFilterChain",
"line": {
"number": 193
},
"module": "org.apache.catalina.core",
"function": "internalDoFilter"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "ApplicationFilterChain.java",
"classname": "org.apache.catalina.core.ApplicationFilterChain",
"line": {
"number": 166
},
"module": "org.apache.catalina.core",
"function": "doFilter"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "WebMvcMetricsFilter.java",
"classname": "org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter",
"line": {
"number": 93
},
"module": "org.springframework.boot.actuate.metrics.web.servlet",
"function": "doFilterInternal"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "OncePerRequestFilter.java",
"classname": "org.springframework.web.filter.OncePerRequestFilter",
"line": {
"number": 119
},
"module": "org.springframework.web.filter",
"function": "doFilter"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "ApplicationFilterChain.java",
"classname": "org.apache.catalina.core.ApplicationFilterChain",
"line": {
"number": 193
},
"function": "internalDoFilter",
"module": "org.apache.catalina.core"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "ApplicationFilterChain.java",
"classname": "org.apache.catalina.core.ApplicationFilterChain",
"line": {
"number": 166
},
"module": "org.apache.catalina.core",
"function": "doFilter"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "CharacterEncodingFilter.java",
"classname": "org.springframework.web.filter.CharacterEncodingFilter",
"line": {
"number": 201
},
"module": "org.springframework.web.filter",
"function": "doFilterInternal"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "OncePerRequestFilter.java",
"classname": "org.springframework.web.filter.OncePerRequestFilter",
"line": {
"number": 119
},
"module": "org.springframework.web.filter",
"function": "doFilter"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "ApplicationFilterChain.java",
"classname": "org.apache.catalina.core.ApplicationFilterChain",
"line": {
"number": 193
},
"module": "org.apache.catalina.core",
"function": "internalDoFilter"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "ApplicationFilterChain.java",
"classname": "org.apache.catalina.core.ApplicationFilterChain",
"line": {
"number": 166
},
"module": "org.apache.catalina.core",
"function": "doFilter"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "StandardWrapperValve.java",
"classname": "org.apache.catalina.core.StandardWrapperValve",
"line": {
"number": 202
},
"module": "org.apache.catalina.core",
"function": "invoke"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "StandardContextValve.java",
"classname": "org.apache.catalina.core.StandardContextValve",
"line": {
"number": 96
},
"module": "org.apache.catalina.core",
"function": "invoke"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "AuthenticatorBase.java",
"classname": "org.apache.catalina.authenticator.AuthenticatorBase",
"line": {
"number": 541
},
"function": "invoke",
"module": "org.apache.catalina.authenticator"
},
{
"exclude_from_grouping": false,
"library_frame": true,
"filename": "StandardHostValve.java",
"classname": "org.apache.catalina.core.StandardHostValve",
"line": {
"number": 139
},
"module": "org.apache.catalina.core",
"function": "invoke"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "ErrorReportValve.java",
"classname": "org.apache.catalina.valves.ErrorReportValve",
"line": {
"number": 92
},
"module": "org.apache.catalina.valves",
"function": "invoke"
},
{
"exclude_from_grouping": false,
"library_frame": true,
"filename": "StandardEngineValve.java",
"classname": "org.apache.catalina.core.StandardEngineValve",
"line": {
"number": 74
},
"module": "org.apache.catalina.core",
"function": "invoke"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "CoyoteAdapter.java",
"classname": "org.apache.catalina.connector.CoyoteAdapter",
"line": {
"number": 343
},
"module": "org.apache.catalina.connector",
"function": "service"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "Http11Processor.java",
"classname": "org.apache.coyote.http11.Http11Processor",
"line": {
"number": 373
},
"module": "org.apache.coyote.http11",
"function": "service"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "AbstractProcessorLight.java",
"classname": "org.apache.coyote.AbstractProcessorLight",
"line": {
"number": 65
},
"module": "org.apache.coyote",
"function": "process"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "AbstractProtocol.java",
"classname": "org.apache.coyote.AbstractProtocol$ConnectionHandler",
"line": {
"number": 868
},
"module": "org.apache.coyote",
"function": "process"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "NioEndpoint.java",
"classname": "org.apache.tomcat.util.net.NioEndpoint$SocketProcessor",
"line": {
"number": 1590
},
"module": "org.apache.tomcat.util.net",
"function": "doRun"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "SocketProcessorBase.java",
"classname": "org.apache.tomcat.util.net.SocketProcessorBase",
"line": {
"number": 49
},
"module": "org.apache.tomcat.util.net",
"function": "run"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "ThreadPoolExecutor.java",
"classname": "java.util.concurrent.ThreadPoolExecutor",
"line": {
"number": 1130
},
"module": "java.util.concurrent",
"function": "runWorker"
},
{
"library_frame": true,
"exclude_from_grouping": false,
"filename": "ThreadPoolExecutor.java",
"classname": "java.util.concurrent.ThreadPoolExecutor$Worker",
"line": {
"number": 630
},
"module": "java.util.concurrent",
"function": "run"
}
],
"subtype": "postgresql",
"destination": {
"service": {
"resource": "postgresql",
"name": "postgresql",
"type": "db"
}
},
"name": "SELECT",
"action": "query",
"id": "ad83a5a6b16cd351",
"type": "db",
"db": {
"statement": "select pg_sleep(0.05)",
"type": "sql",
"user": {
"name": "test"
}
}
},
"timestamp": {
"us": 1595493188267279
}
},
"fields": {
"file.created": [],
"process.parent.start": [],
"event.end": [],
"file.ctime": [],
"tls.client.not_after": [],
"event.ingested": [],
"@timestamp": [
"2020-07-23T08:33:08.267Z"
],
"file.mtime": [],
"event.created": [],
"file.accessed": [],
"tls.server.not_before": [],
"package.installed": [],
"tls.client.not_before": [],
"event.start": [],
"tls.server.not_after": [],
"process.start": []
},
"highlight": {
"span.id": [
"@kibana-highlighted-field@ad83a5a6b16cd351@/kibana-highlighted-field@"
]
},
"sort": [
1595493188267
]
}
{
"_index": "apm-7.8.0-transaction-000001",
"_type": "_doc",
"_id": "CyzOenMBfU2mhA8uCamL",
"_version": 1,
"_score": null,
"_source": {
"parent": {
"id": "a4d7f0a0e4b209bb"
},
"agent": {
"name": "java",
"ephemeral_id": "65d033ed-304f-412f-bb3c-6b2ac7004e2b",
"version": "1.16.0"
},
"process": {
"pid": 2527,
"title": "/Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdk/Contents/Home/bin/java",
"ppid": 2477
},
"source": {
"ip": "127.0.0.1"
},
"processor": {
"name": "transaction",
"event": "transaction"
},
"url": {
"path": "/fraud/checkOrder",
"scheme": "http",
"port": 80,
"query": "totalPrice=200.0&customerIpAddress=127.0.0.1&shippingCountry=FR",
"domain": "localhost",
"full": "http://localhost/fraud/checkOrder?totalPrice=200.0&customerIpAddress=127.0.0.1&shippingCountry=FR"
},
"labels": {
"fraudScore": -67,
"totalPrice": 200,
"shippingCountry": "FR",
"customerIpAddress": "127.0.0.1"
},
"observer": {
"hostname": "cyrille-laptop",
"id": "c6806dda-7615-4d01-bc3f-aeb7ca9aa2f2",
"ephemeral_id": "eee70781-1067-4da2-a1aa-7232a0dbc15c",
"type": "apm-server",
"version": "7.8.0",
"version_major": 7
},
"trace": {
"id": "f94e7382fa04f75f0fbf843b98ffa5cf"
},
"@timestamp": "2020-07-23T08:33:08.267Z",
"ecs": {
"version": "1.5.0"
},
"service": {
"node": {
"name": "cyrille-laptop"
},
"environment": "staging",
"name": "com-shoppingcart_anti-fraud",
"runtime": {
"name": "Java",
"version": "14.0.1"
},
"language": {
"name": "Java",
"version": "14.0.1"
},
"version": "1.0-SNAPSHOT"
},
"host": {
"hostname": "cyrille-laptop",
"os": {
"platform": "Mac OS X"
},
"ip": "127.0.0.1",
"name": "cyrille-laptop",
"architecture": "x86_64"
},
"http": {
"request": {
"headers": {
"Accept": [
"text/plain, application/json, application/*+json, */*"
],
"User-Agent": [
"Java/14.0.1"
],
"Connection": [
"close"
],
"X-Forwarded-For": [
"127.0.0.1"
],
"Host": [
"localhost"
],
"Elastic-Apm-Traceparent": [
"00-f94e7382fa04f75f0fbf843b98ffa5cf-a4d7f0a0e4b209bb-01"
],
"X-Real-Ip": [
"127.0.0.1"
],
"Traceparent": [
"00-f94e7382fa04f75f0fbf843b98ffa5cf-a4d7f0a0e4b209bb-01"
]
},
"method": "get",
"socket": {
"encrypted": false,
"remote_address": "127.0.0.1"
}
},
"response": {
"headers": {
"Connection": [
"close"
],
"Content-Length": [
"2"
],
"Date": [
"Thu, 23 Jul 2020 08:33:08 GMT"
],
"Content-Type": [
"text/plain;charset=UTF-8"
]
},
"status_code": 200,
"finished": true,
"headers_sent": true
},
"version": "1.0"
},
"client": {
"ip": "127.0.0.1"
},
"event": {
"ingested": "2020-07-23T08:33:10.026246Z"
},
"user_agent": {
"original": "Java/14.0.1",
"name": "Java",
"device": {
"name": "Spider"
},
"version": "0.1."
},
"transaction": {
"duration": {
"us": 330601
},
"result": "HTTP 2xx",
"name": "checkOrder",
"span_count": {
"dropped": 0,
"started": 1
},
"id": "7a2d30add01713e6",
"type": "request",
"sampled": true
},
"timestamp": {
"us": 1595493188267001
}
},
"fields": {
"file.created": [],
"process.parent.start": [],
"event.end": [],
"file.ctime": [],
"tls.client.not_after": [],
"event.ingested": [
"2020-07-23T08:33:10.026Z"
],
"@timestamp": [
"2020-07-23T08:33:08.267Z"
],
"file.mtime": [],
"event.created": [],
"file.accessed": [],
"tls.server.not_before": [],
"package.installed": [],
"tls.client.not_before": [],
"event.start": [],
"tls.server.not_after": [],
"process.start": []
},
"highlight": {
"transaction.id": [
"@kibana-highlighted-field@7a2d30add01713e6@/kibana-highlighted-field@"
],
"trace.id": [
"@kibana-highlighted-field@f94e7382fa04f75f0fbf843b98ffa5cf@/kibana-highlighted-field@"
],
"processor.event": [
"@kibana-highlighted-field@transaction@/kibana-highlighted-field@"
]
},
"sort": [
1595493188267
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment