Skip to content

Commit

Permalink
fix open-telemetry sample
Browse files Browse the repository at this point in the history
  • Loading branch information
ndr-brt committed Jun 10, 2024
1 parent 9f6f7d0 commit 0fb9eae
Show file tree
Hide file tree
Showing 9 changed files with 143 additions and 37 deletions.
47 changes: 34 additions & 13 deletions advanced/advanced-01-open-telemetry/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,12 @@ is configured to expose a Prometheus metrics endpoint.

To run the consumer, the provider, and Jaeger execute the following commands in the project root folder:

Build the connector
```bash
./gradlew :advanced:advanced-01-open-telemetry:open-telemetry-runtime:build
```

Start the docker compose
```bash
docker compose -f advanced/advanced-01-open-telemetry/docker-compose.yaml up --abort-on-container-exit
```
Expand Down Expand Up @@ -77,40 +83,55 @@ The output will be something like:
"@id": "assetId",
"@type": "dcat:Dataset",
"odrl:hasPolicy": {
"@id": "MQ==:YXNzZXRJZA==:YjI5ZDVkZDUtZWU0Mi00NWRiLWE2OTktYjNmMjlmMWNjODk3",
"@type": "odrl:Set",
"@id": "MQ==:YXNzZXRJZA==:NjdlNDFhM2EtYThjMS00YTBmLWFkNmYtMjk5NzkzNTE2OTE3",
"@type": "odrl:Offer",
"odrl:permission": [],
"odrl:prohibition": [],
"odrl:obligation": [],
"odrl:target": "assetId"
"odrl:obligation": []
},
"dcat:distribution": [
{
"@type": "dcat:Distribution",
"dct:format": {
"@id": "HttpProxy"
"@id": "HttpData-PULL"
},
"dcat:accessService": "06348bca-6bf0-47fe-8bb5-6741cff7a955"
"dcat:accessService": {
"@id": "cb701b36-48ee-4132-8436-dba7b83c606c",
"@type": "dcat:DataService",
"dcat:endpointDescription": "dspace:connector",
"dcat:endpointUrl": "http://provider:19194/protocol",
"dct:terms": "dspace:connector",
"dct:endpointUrl": "http://provider:19194/protocol"
}
},
{
"@type": "dcat:Distribution",
"dct:format": {
"@id": "HttpData"
"@id": "HttpData-PUSH"
},
"dcat:accessService": "06348bca-6bf0-47fe-8bb5-6741cff7a955"
"dcat:accessService": {
"@id": "cb701b36-48ee-4132-8436-dba7b83c606c",
"@type": "dcat:DataService",
"dcat:endpointDescription": "dspace:connector",
"dcat:endpointUrl": "http://provider:19194/protocol",
"dct:terms": "dspace:connector",
"dct:endpointUrl": "http://provider:19194/protocol"
}
}
],
"edc:name": "product description",
"edc:id": "assetId",
"edc:contenttype": "application/json",
"name": "product description",
"id": "assetId",
"contenttype": "application/json",
"@context": {
"dct": "https://purl.org/dc/terms/",
"@vocab": "https://w3id.org/edc/v0.0.1/ns/",
"edc": "https://w3id.org/edc/v0.0.1/ns/",
"dcat": "https://www.w3.org/ns/dcat/",
"dcat": "http://www.w3.org/ns/dcat#",
"dct": "http://purl.org/dc/terms/",
"odrl": "http://www.w3.org/ns/odrl/2/",
"dspace": "https://w3id.org/dspace/v0.8/"
}
}

```

With the `odrl:hasPolicy/@id` we can now replace it in the [negotiate-contract.json](resources/negotiate-contract.json) file
Expand Down
21 changes: 10 additions & 11 deletions advanced/advanced-01-open-telemetry/docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ services:

consumer:
build:
context: ../..
dockerfile: advanced/advanced-01-open-telemetry/open-telemetry-runtime/Dockerfile
context: open-telemetry-runtime
volumes:
- ./:/open-telemetry
- ../../transfer/transfer-00-prerequisites/:/prerequisites
Expand All @@ -14,11 +13,10 @@ services:
- "29194:29194"
environment:
EDC_HOSTNAME: consumer
OTEL_SERVICE_NAME: consumer
OTEL_JAVAAGENT_EXTENSIONS: /app/opentelemetry-exporter-jaeger.jar
OTEL_TRACES_EXPORTER: jaeger
OTEL_SERVICE_NAME: provider
OTEL_LOGS_EXPORTER: none
OTEL_EXPORTER_JAEGER_ENDPOINT: http://jaeger:14250
OTEL_JAVAAGENT_EXTENSIONS: /app/opentelemetry-exporter-otlp.jar
OTEL_EXPORTER_OTLP_ENDPOINT: http://jaeger:4318
OTEL_METRICS_EXPORTER: prometheus
WEB_HTTP_PORT: 29191
WEB_HTTP_PATH: /api
Expand All @@ -44,8 +42,7 @@ services:

provider:
build:
context: ../..
dockerfile: advanced/advanced-01-open-telemetry/open-telemetry-runtime/Dockerfile
context: open-telemetry-runtime
volumes:
- ./:/open-telemetry
- ../../transfer/transfer-00-prerequisites/:/prerequisites
Expand All @@ -56,9 +53,8 @@ services:
EDC_HOSTNAME: provider
OTEL_SERVICE_NAME: provider
OTEL_LOGS_EXPORTER: none
OTEL_JAVAAGENT_EXTENSIONS: /app/opentelemetry-exporter-jaeger.jar
OTEL_TRACES_EXPORTER: jaeger
OTEL_EXPORTER_JAEGER_ENDPOINT: http://jaeger:14250
OTEL_JAVAAGENT_EXTENSIONS: /app/opentelemetry-exporter-otlp.jar
OTEL_EXPORTER_OTLP_ENDPOINT: http://jaeger:4318
WEB_HTTP_PORT: 19191
WEB_HTTP_PATH: /api
WEB_HTTP_PUBLIC_PORT: 19291
Expand All @@ -84,7 +80,10 @@ services:

jaeger:
image: jaegertracing/all-in-one
environment:
- COLLECTOR_OTLP_ENABLED=true
ports:
- "4317:4317"
- "16686:16686"

prometheus:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@
FROM gradle:jdk17 AS build

WORKDIR /home/gradle/project/
COPY --chown=gradle:gradle . /home/gradle/project/
RUN gradle advanced:advanced-01-open-telemetry:open-telemetry-runtime:build

FROM openjdk:17-slim

WORKDIR /app
COPY --from=build /home/gradle/project/advanced/advanced-01-open-telemetry/open-telemetry-runtime/build/libs/opentelemetry-javaagent-*.jar /app/opentelemetry-javaagent.jar
COPY --from=build /home/gradle/project/advanced/advanced-01-open-telemetry/open-telemetry-runtime/build/libs/opentelemetry-exporter-jaeger-*.jar /app/opentelemetry-exporter-jaeger.jar
COPY --from=build /home/gradle/project/advanced/advanced-01-open-telemetry/open-telemetry-runtime/build/libs/connector.jar /app/connector.jar
COPY build/libs/opentelemetry-javaagent-2.4.0.jar /app/opentelemetry-javaagent.jar
COPY build/libs/opentelemetry-exporter-otlp-1.39.0.jar /app/opentelemetry-exporter-otlp.jar
COPY build/libs/connector.jar /app/connector.jar
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ dependencies {
implementation(libs.edc.api.observability)
implementation(libs.edc.auth.tokenbased)

implementation(libs.opentelemetry.exporter.jaeger)
implementation(libs.opentelemetry.exporter.otlp)

runtimeOnly(libs.edc.monitor.jdk.logger)
}
Expand All @@ -68,7 +68,7 @@ tasks.register("copyOpenTelemetryJar", Copy::class) {

dependencies {
openTelemetry(libs.opentelemetry.javaagent)
openTelemetry(libs.opentelemetry.exporter.jaeger)
openTelemetry(libs.opentelemetry.exporter.otlp)
}

from(openTelemetry)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
/*
* Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
*
* This program and the accompanying materials are made available under the
* terms of the Apache License, Version 2.0 which is available at
* https://www.apache.org/licenses/LICENSE-2.0
*
* SPDX-License-Identifier: Apache-2.0
*
* Contributors:
* Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation
*
*/

package org.eclipse.edc.sample.runtime;

import org.eclipse.edc.runtime.metamodel.annotation.Inject;
import org.eclipse.edc.spi.security.Vault;
import org.eclipse.edc.spi.system.ServiceExtension;
import org.eclipse.edc.spi.system.ServiceExtensionContext;

public class SeedVaultExtension implements ServiceExtension {

@Inject
private Vault vault;

private static final String PUBLIC_KEY = """
-----BEGIN CERTIFICATE-----
MIIDazCCAlOgAwIBAgIUZ3/sZXYzW4PjmOXKrZn6WBmUJ+4wDQYJKoZIhvcNAQEL
BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMjAyMjMxNTA2MDNaFw0zMjAy
MjExNTA2MDNaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQDBl6XaJnXTL+6DWip3aBhU+MzmY4d1V9hbTm1tiZ3g
E0VbUrvGO3LoYaxpPv6zFmsg3uJv6JxVAde7EddidN0ITHB9cQNdAfdUJ5njmsGS
PbdQuOQTHw0aG7/QvTI/nsvfEE6e0lbV/0e7DHacZT/+OztBH1RwkG2ymM94Hf8H
I6x7q6yfRTAZOqeOMrPCYTcluAgE9NskoPvjX5qASakBtXISKIsOU84N0/2HDN3W
EGMXvoHUQu6vrij6BwiwxKaw1AKwWENKoga775bPXN3M+JTSaIKE7dZbKzvx0Zi0
h5X+bxc3BJi3Z/CsUBCzE+Y0SFetOiYmyl/2YmnneYoVAgMBAAGjUzBRMB0GA1Ud
DgQWBBTvK1wVERwjni4B2vdH7KtEJeVWFzAfBgNVHSMEGDAWgBTvK1wVERwjni4B
2vdH7KtEJeVWFzAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBn
QHiPA7OBYukHd9gS7c0HXE+fsWcS3GZeLqcHfQQnV3pte1vTmu9//IVW71wNCJ1/
rySRyODPQoPehxEcyHwupNZSzXK//nPlTdSgjMfFxscvt1YndyQLQYCfyOJMixAe
Aqrb14GTFHUUrdor0PyElhkULjkOXUrSIsdBrfWrwLTkelE8NK3tb5ZG8KPzD9Jy
+NwEPPr9d+iHkUkM7EFWw/cl56wka9ryBb97RI7DqbO6/j6OXHMk4GByxKv7DSIR
IvF9/Dw20qytajtaHV0pluFcOBuFc0NfiDvCaQlbTsfjzbc6UmZWbOi9YOJl3VQ/
g3h+15GuzbsSzOCOEYOT
-----END CERTIFICATE-----
""";

private static final String PRIVATE_KEY = """
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDBl6XaJnXTL+6D
Wip3aBhU+MzmY4d1V9hbTm1tiZ3gE0VbUrvGO3LoYaxpPv6zFmsg3uJv6JxVAde7
EddidN0ITHB9cQNdAfdUJ5njmsGSPbdQuOQTHw0aG7/QvTI/nsvfEE6e0lbV/0e7
DHacZT/+OztBH1RwkG2ymM94Hf8HI6x7q6yfRTAZOqeOMrPCYTcluAgE9NskoPvj
X5qASakBtXISKIsOU84N0/2HDN3WEGMXvoHUQu6vrij6BwiwxKaw1AKwWENKoga7
75bPXN3M+JTSaIKE7dZbKzvx0Zi0h5X+bxc3BJi3Z/CsUBCzE+Y0SFetOiYmyl/2
YmnneYoVAgMBAAECggEBAJHXiN6bctAyn+DcoHlsNkhtVw+Jk5bXIutGXjHTJtiU
K//siAGC78IZMyXmi0KndPVCdBwShROVW8xWWIiXuZxy2Zvm872xqX4Ah3JsN7/Q
NrXdVBUDo38zwIGkxqIfIz9crZ4An+J/eq5zaTfRHzCLtswMqjRS2hFeBY5cKrBY
4bkSDGTP/c5cP7xS/UwaiTR2Ptd41f4zTyd4l5rl30TYHpazQNlbdxcOV4jh2Rnp
E0+cFEvEfeagVq7RmfBScKG5pk4qcRG0q2QHMyK5y00hdYvhdRjSgN7xIDkeO5B8
s8/tSLU78nCl2gA9IKxTXYLitpISwZ81Q04mEAKRRtECgYEA+6lKnhn//aXerkLo
ZOLOjWQZhh005jHdNxX7DZqLpTrrfxc8v15KWUkAK1H0QHqYvfPrbbsBV1MY1xXt
sKmkeu/k8fJQzCIvFN4K2J5W5kMfq9PSw5d3XPeDaQuXUVaxBVp0gzPEPHmkKRbA
AkUqY0oJwA9gMKf8dK+flmLZfbsCgYEAxO4Roj2G46/Oox1GEZGxdLpiMpr9rEdR
JlSZ9kMGfddNLV7sFp6yPXDcyc/AOqeNj7tw1MyoT3Ar454+V0q83EZzCXvs4U6f
jUrfFcoVWIwf9AV/J4KWzMIzfqPIeNwqymZKd6BrZgcXXvAEPWt27mwO4a1GhC4G
oZv0t3lAsm8CgYAQ8C0IhSF4tgBN5Ez19VoHpDQflbmowLRt77nNCZjajyOokyzQ
iI0ig0pSoBp7eITtTAyNfyew8/PZDi3IVTKv35OeQTv08VwP4H4EZGve5aetDf3C
kmBDTpl2qYQOwnH5tUPgTMypcVp+NXzI6lTXB/WuCprjy3qvc96e5ZpT3wKBgQC8
Xny/k9rTL/eYTwgXBiWYYjBL97VudUlKQOKEjNhIxwkrvQBXIrWbz7lh0Tcu49al
BcaHxru4QLO6pkM7fGHq0fh3ufJ8EZjMrjF1xjdk26Q05o0aXe+hLKHVIRVBhlfo
ArB4fRo+HcpdJXjox0KcDQCvHe+1v9DYBTWvymv4QQKBgBy3YH7hKz35DcXvA2r4
Kis9a4ycuZqTXockO4rkcIwC6CJp9JbHDIRzig8HYOaRqmZ4a+coqLmddXr2uOF1
7+iAxxG1KzdT6uFNd+e/j2cdUjnqcSmz49PRtdDswgyYhoDT+W4yVGNQ4VuKg6a3
Z3pC+KTdoHSKeA2FyAGnSUpD
-----END PRIVATE KEY-----
""";

@Override
public void initialize(ServiceExtensionContext context) {
vault.storeSecret("public-key", PUBLIC_KEY);
vault.storeSecret("private-key", PRIVATE_KEY);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
org.eclipse.edc.sample.runtime.SeedVaultExtension
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"@vocab": "https://w3id.org/edc/v0.0.1/ns/"
},
"@type": "ContractRequest",
"counterPartyAddress": "http://localhost:19194/protocol",
"counterPartyAddress": "http://provider:19194/protocol",
"protocol": "dataspace-protocol-http",
"policy": {
"@context": "http://www.w3.org/ns/odrl.jsonld",
Expand Down
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ junit-jupiter-params = { module = "org.junit.jupiter:junit-jupiter-params", vers
junit-pioneer = { module = "org.junit-pioneer:junit-pioneer", version.ref = "junit-pioneer" }
okhttp-mockwebserver = { module = "com.squareup.okhttp3:mockwebserver", version.ref = "okhttp-mockwebserver" }
opentelemetry-annotations = { module = "io.opentelemetry:opentelemetry-extension-annotations", version = "1.18.0" }
opentelemetry-exporter-jaeger = { module = "io.opentelemetry:opentelemetry-exporter-jaeger", version = "1.34.1" }
opentelemetry-exporter-otlp = { module = "io.opentelemetry:opentelemetry-exporter-otlp", version = "1.39.0" }
opentelemetry-javaagent = { module = "io.opentelemetry.javaagent:opentelemetry-javaagent", version = "2.4.0" }
restAssured = { module = "io.rest-assured:rest-assured", version.ref = "restAssured" }
testcontainers = { module = "org.testcontainers:testcontainers", version.ref = "testcontainers" }
Expand Down
4 changes: 4 additions & 0 deletions system-tests/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,7 @@ dependencies {
testCompileOnly(project(":policy:policy-01-policy-enforcement:policy-enforcement-consumer"))
testCompileOnly(project(":policy:policy-01-policy-enforcement:policy-functions"))
}

tasks.compileJava {
dependsOn(":advanced:advanced-01-open-telemetry:open-telemetry-runtime:build")
}

0 comments on commit 0fb9eae

Please sign in to comment.