diff --git a/docs/docs/deployment/graphql-engine-flags/reference.mdx b/docs/docs/deployment/graphql-engine-flags/reference.mdx index 81f23fe3322..95d141a87ea 100644 --- a/docs/docs/deployment/graphql-engine-flags/reference.mdx +++ b/docs/docs/deployment/graphql-engine-flags/reference.mdx @@ -1229,9 +1229,9 @@ This sets transaction isolation. | **Default** | `read-committed` | | **Supported in** | Deprecated in versions > `v2.0.0` | -### Trace SQL Queries +### Trace SQL and GraphQL Queries -Add SQL queries to the OTLP traces. +Add SQL and GraphQL queries to the OTLP traces. | | | | ------------------- | ---------------------------------------- | diff --git a/server/src-lib/Hasura/GraphQL/Transport/HTTP.hs b/server/src-lib/Hasura/GraphQL/Transport/HTTP.hs index 3870ea7c2ac..90ac257685d 100644 --- a/server/src-lib/Hasura/GraphQL/Transport/HTTP.hs +++ b/server/src-lib/Hasura/GraphQL/Transport/HTTP.hs @@ -95,7 +95,7 @@ import Hasura.Server.Prometheus recordGraphqlOperationMetric, ) import Hasura.Server.Telemetry.Counters qualified as Telem -import Hasura.Server.Types (HeaderPrecedence, ModelInfoLogState (..), MonadGetPolicies (..), ReadOnlyMode (..), RemoteSchemaResponsePriority (..), RequestId (..), TraceQueryStatus) +import Hasura.Server.Types (HeaderPrecedence, ModelInfoLogState (..), MonadGetPolicies (..), ReadOnlyMode (..), RemoteSchemaResponsePriority (..), RequestId (..), TraceQueryStatus (TraceQueryEnabled)) import Hasura.Services import Hasura.Session (SessionVariable, SessionVariableValue, SessionVariables, UserInfo (..), filterSessionVariables) import Hasura.Tracing (MonadTrace, attachMetadata) @@ -360,6 +360,8 @@ runGQ env sqlGenCtx sc enableAL readOnlyMode remoteSchemaResponsePriority header for_ maybeOperationName $ \nm -> -- https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/instrumentation/graphql/ attachMetadata [("graphql.operation.name", G.unName nm)] + when (traceQueryStatus == TraceQueryEnabled) + $ attachMetadata [("graphql.query", _unGQLQueryText (_grQuery reqUnparsed))] (parameterizedQueryHash, execPlan, modelInfoList) <- E.getResolvedExecPlan env diff --git a/server/src-lib/Hasura/GraphQL/Transport/WebSocket.hs b/server/src-lib/Hasura/GraphQL/Transport/WebSocket.hs index 22682232fc1..0bc0bcd5f60 100644 --- a/server/src-lib/Hasura/GraphQL/Transport/WebSocket.hs +++ b/server/src-lib/Hasura/GraphQL/Transport/WebSocket.hs @@ -105,7 +105,7 @@ import Hasura.Server.Prometheus recordGraphqlOperationMetric, ) import Hasura.Server.Telemetry.Counters qualified as Telem -import Hasura.Server.Types (GranularPrometheusMetricsState (..), HeaderPrecedence, ModelInfoLogState (..), MonadGetPolicies (..), RemoteSchemaResponsePriority, RequestId, TraceQueryStatus, getRequestId) +import Hasura.Server.Types (GranularPrometheusMetricsState (..), HeaderPrecedence, ModelInfoLogState (..), MonadGetPolicies (..), RemoteSchemaResponsePriority, RequestId, TraceQueryStatus (TraceQueryEnabled), getRequestId) import Hasura.Services.Network import Hasura.Session import Hasura.Tracing qualified as Tracing @@ -504,6 +504,8 @@ onStart enabledLogTypes agentLicenseKey serverEnv wsConn shouldCaptureVariables for_ maybeOperationName $ \nm -> -- https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/instrumentation/graphql/ Tracing.attachMetadata [("graphql.operation.name", unName nm)] + when (traceQueryStatus == TraceQueryEnabled) + $ Tracing.attachMetadata [("graphql.query", _unGQLQueryText (_grQuery q))] execPlanE <- runExceptT $ E.getResolvedExecPlan