Skip to content

Commit 3a8e639

Browse files
committed
Add comments
1 parent 98b7ffc commit 3a8e639

File tree

4 files changed

+19
-17
lines changed

4 files changed

+19
-17
lines changed

opentelemetry/client/src/main/kotlin/opentelemetry/ktor/example/Requests.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,33 @@ import io.ktor.websocket.*
77

88

99
suspend fun doRequests(client: HttpClient) {
10+
// For this request you can see `CUSTOM` method instead of default `HTTP` in the Jaeger UI
1011
client.request("/known-methods") {
1112
method = CUSTOM_METHOD
1213
}
1314

15+
// For this request you can't see `CUSTOM_NOT_KNOWN` method, you can see default `HTTP` in the Jaeger UI
1416
client.request("/known-methods") {
1517
method = CUSTOM_METHOD_NOT_KNOWN
1618
}
1719

20+
// You can see tags `http.request.header.accept` and `http.response.header.content_type` for all requests
21+
// in the Jaeger UI and also `http.response.header.custom_header` for this request
1822
client.get("/captured-headers")
1923

24+
// For this request you can see tag `error=true` and `Error` icon only for server trace in the Jaeger UI
2025
client.get("/span-status-extractor")
2126

27+
// For this request you can see tag `span.kind=producer` only for server trace in the Jaeger UI
2228
client.post("/span-kind-extractor")
2329

30+
// You can see attribute `start-time` and `end-time` in the Jaeger UI for all requests
2431
client.get("/attribute-extractor")
2532

33+
// For this request you can see several spans and events only for server trace in the Jaeger UI
2634
client.get("/opentelemetry/tracer")
2735

36+
// For this request you can see several events only for server trace in the Jaeger UI
2837
client.ws("/opentelemetry/websocket") {
2938
send(Frame.Text("Hello, world!"))
3039
repeat(10) {

opentelemetry/client/src/main/kotlin/opentelemetry/ktor/example/plugins/opentelemetry/setupClientTelemetry.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import opentelemetry.ktor.example.CUSTOM_METHOD
99
import opentelemetry.ktor.example.getOpenTelemetry
1010
import opentelemetry.ktor.example.plugins.opentelemetry.extractions.*
1111

12-
1312
/**
1413
* Install OpenTelemetry on the client.
1514
* You can see usages of new extension functions for [KtorClientTracing].
@@ -22,7 +21,7 @@ fun HttpClientConfig<CIOEngineConfig>.setupClientTelemetry() {
2221
emitExperimentalHttpClientMetrics()
2322

2423
knownMethods(HttpMethod.DefaultMethods + CUSTOM_METHOD)
25-
capturedRequestHeaders(HttpHeaders.UserAgent)
24+
capturedRequestHeaders(HttpHeaders.Accept)
2625
capturedResponseHeaders(HttpHeaders.ContentType, CUSTOM_HEADER)
2726

2827
attributeExtractor {

opentelemetry/server/src/main/kotlin/opentelemetry/ktor/example/plugins/opentelemetry/setupServerTelemetry.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,8 @@ fun Application.setupServerTelemetry(): OpenTelemetry {
2929
capturedResponseHeaders(HttpHeaders.ContentType, CUSTOM_HEADER)
3030

3131
spanStatusExtractor {
32-
val success = response?.status()?.let {
33-
it.isSuccess() || it == HttpStatusCode.SwitchingProtocols
34-
} ?: false
35-
if (!success || error != null) {
32+
val path = response?.call?.request?.path() ?: ""
33+
if (path.contains("/span-status-extractor") || error != null) {
3634
spanStatusBuilder.setStatus(StatusCode.ERROR)
3735
}
3836
}

opentelemetry/server/src/main/kotlin/opentelemetry/ktor/example/plugins/routing/Routing.kt

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
package opentelemetry.ktor.example.plugins.routing
22

3-
import opentelemetry.ktor.example.CUSTOM_HEADER
4-
import opentelemetry.ktor.example.CUSTOM_METHOD
5-
import opentelemetry.ktor.example.CUSTOM_METHOD_NOT_KNOWN
6-
import io.ktor.http.*
73
import io.ktor.server.application.*
84
import io.ktor.server.response.*
95
import io.ktor.server.routing.*
106
import io.ktor.server.websocket.*
117
import io.ktor.websocket.*
128
import io.opentelemetry.api.trace.Span
139
import kotlinx.coroutines.delay
14-
import opentelemetry.ktor.example.plugins.opentelemetry.setupServerTelemetry
10+
import opentelemetry.ktor.example.CUSTOM_HEADER
11+
import opentelemetry.ktor.example.CUSTOM_METHOD
12+
import opentelemetry.ktor.example.CUSTOM_METHOD_NOT_KNOWN
1513
import opentelemetry.ktor.example.plugins.opentelemetry.serviceName
14+
import opentelemetry.ktor.example.plugins.opentelemetry.setupServerTelemetry
1615

1716
fun Application.configureRouting() {
1817
install(WebSockets)
@@ -47,15 +46,12 @@ fun Application.configureRouting() {
4746
call.response.headers.append(CUSTOM_HEADER, "it's a custom value")
4847
call.respondText(
4948
"You can see tags `http.request.header.user_agent` and `http.response.header.content_type` for " +
50-
"all request in the Jaeger UI and also `http.response.header.custom_header` for this request"
49+
"all requests in the Jaeger UI and also `http.response.header.custom_header` for this request"
5150
)
5251
}
5352

5453
get("/span-status-extractor") {
55-
call.respond(
56-
HttpStatusCode.NotFound,
57-
"For this request you can see tag `error=true` and `Error` icon in the Jaeger UI"
58-
)
54+
call.respond("For this request you can see tag `error=true` and `Error` icon in the Jaeger UI")
5955
}
6056

6157
post("/span-kind-extractor") {
@@ -75,7 +71,7 @@ fun Application.configureRouting() {
7571
try {
7672
span.makeCurrent().use { _ ->
7773
Span.current().addEvent("Starting the work")
78-
call.respondText { "For this request you can see several spans in the Jaeger UI" }
74+
call.respondText { "For this request you can see several spans and events in the Jaeger UI" }
7975
Span.current().addEvent("Finished working")
8076
}
8177
} finally {

0 commit comments

Comments
 (0)