Skip to content

Commit 87c0c67

Browse files
authoredFeb 16, 2024
Merge branch 'main' into prepFor18
2 parents 5dd4cb0 + 816ee5a commit 87c0c67

File tree

12 files changed

+85
-43
lines changed

12 files changed

+85
-43
lines changed
 

‎.env

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ IMAGE_NAME=ghcr.io/open-telemetry/demo
88
COLLECTOR_CONTRIB_IMAGE=otel/opentelemetry-collector-contrib:0.93.0
99
GRAFANA_IMAGE=grafana/grafana:10.3.1
1010
JAEGERTRACING_IMAGE=jaegertracing/all-in-one:1.53
11+
# must also update version field in /src/grafana/provisioning/datasources/opensearch.yml
1112
OPENSEARCH_IMAGE=opensearchproject/opensearch:2.11.1
1213
POSTGRES_IMAGE=postgres:16.1
1314
PROMETHEUS_IMAGE=quay.io/prometheus/prometheus:v2.49.1

‎CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ the release.
5656
([#1363](https://github.com/open-telemetry/opentelemetry-demo/pull/1363))
5757
* [tests] update trace based tests for semantic conventions
5858
([#1377](https://github.com/open-telemetry/opentelemetry-demo/pull/1377))
59+
* [currencyservice] Add OTLP logs
60+
([#1378](https://github.com/open-telemetry/opentelemetry-demo/pull/1378))
61+
* [cartservice] update .NET to .NET 8.0.2
62+
([#1380](https://github.com/open-telemetry/opentelemetry-demo/pull/1380))
5963

6064
## 1.7.2
6165

‎README.md

+11-9
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,16 @@ keeping it up to date for you.
5656

5757
| | | |
5858
|-----------------------------------------|-----------------------------|----------------------------------------------------------------|
59-
| [AlibabaCloud LogService][AlibabaCloud] | [Elastic][Elastic] | [OpenSearch][OpenSearch] |
60-
| [AppDynamics][AppDynamics] | [Grafana Labs][GrafanaLabs] | [Sentry][Sentry] |
61-
| [Aspecto][Aspecto] | [Guance][Guance] | [ServiceNow Cloud Observability][ServiceNowCloudObservability] |
62-
| [Axiom][Axiom] | [Helios][Helios] | [Splunk][Splunk] |
63-
| [Axoflow][Axoflow] | [Honeycomb.io][Honeycombio] | [Sumo Logic][SumoLogic] |
64-
| [Azure Data Explorer][Azure] | [Instana][Instana] | [TelemetryHub][TelemetryHub] |
65-
| [Coralogix][Coralogix] | [Kloudfuse][Kloudfuse] | [Teletrace][Teletrace] |
66-
| [Datadog][Datadog] | [Logz.io][Logzio] | [Tracetest][Tracetest] |
67-
| [Dynatrace][Dynatrace] | [New Relic][NewRelic] | [Uptrace][Uptrace] |
59+
| [AlibabaCloud LogService][AlibabaCloud] | [Google Cloud][GoogleCloud] | [Sentry][Sentry] |
60+
| [AppDynamics][AppDynamics] | [Grafana Labs][GrafanaLabs] | [ServiceNow Cloud Observability][ServiceNowCloudObservability] |
61+
| [Aspecto][Aspecto] | [Guance][Guance] | [Splunk][Splunk] |
62+
| [Axiom][Axiom] | [Helios][Helios] | [Sumo Logic][SumoLogic] |
63+
| [Axoflow][Axoflow] | [Honeycomb.io][Honeycombio] | [TelemetryHub][TelemetryHub] |
64+
| [Azure Data Explorer][Azure] | [Instana][Instana] | [Teletrace][Teletrace] |
65+
| [Coralogix][Coralogix] | [Kloudfuse][Kloudfuse] | [Tracetest][Tracetest] |
66+
| [Datadog][Datadog] | [Logz.io][Logzio] | [Uptrace][Uptrace] |
67+
| [Dynatrace][Dynatrace] | [New Relic][NewRelic] | |
68+
| [Elastic][Elastic] | [OpenSearch][OpenSearch] | |
6869

6970
## Contributing
7071

@@ -114,6 +115,7 @@ Emeritus:
114115
[Datadog]: https://github.com/DataDog/opentelemetry-demo
115116
[Dynatrace]: https://www.dynatrace.com/news/blog/opentelemetry-demo-application-with-dynatrace/
116117
[Elastic]: https://github.com/elastic/opentelemetry-demo
118+
[GoogleCloud]: https://github.com/GoogleCloudPlatform/opentelemetry-demo
117119
[GrafanaLabs]: https://github.com/grafana/opentelemetry-demo
118120
[Guance]: https://github.com/GuanceCloud/opentelemetry-demo
119121
[Helios]: https://otelsandbox.gethelios.dev

‎docker-compose.minimal.yml

+1-3
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,6 @@ services:
129129
context: ./src/currencyservice
130130
cache_from:
131131
- ${IMAGE_NAME}:${IMAGE_VERSION}-currencyservice
132-
args:
133-
- GRPC_VERSION=1.46.0
134-
- OPENTELEMETRY_VERSION=1.5.0
135132
deploy:
136133
resources:
137134
limits:
@@ -141,6 +138,7 @@ services:
141138
- "${CURRENCY_SERVICE_PORT}"
142139
environment:
143140
- CURRENCY_SERVICE_PORT
141+
- VERSION=${IMAGE_VERSION}
144142
- OTEL_EXPORTER_OTLP_ENDPOINT
145143
- OTEL_RESOURCE_ATTRIBUTES=${OTEL_RESOURCE_ATTRIBUTES},service.name=currencyservice # The C++ SDK does not support OTEL_SERVICE_NAME
146144
depends_on:

‎docker-compose.yml

+1-3
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,6 @@ services:
160160
context: ./src/currencyservice
161161
cache_from:
162162
- ${IMAGE_NAME}:${IMAGE_VERSION}-currencyservice
163-
args:
164-
- GRPC_VERSION=1.46.0
165-
- OPENTELEMETRY_VERSION=1.5.0
166163
deploy:
167164
resources:
168165
limits:
@@ -172,6 +169,7 @@ services:
172169
- "${CURRENCY_SERVICE_PORT}"
173170
environment:
174171
- CURRENCY_SERVICE_PORT
172+
- VERSION=${IMAGE_VERSION}
175173
- OTEL_EXPORTER_OTLP_ENDPOINT
176174
- OTEL_RESOURCE_ATTRIBUTES=${OTEL_RESOURCE_ATTRIBUTES},service.name=currencyservice # The C++ SDK does not support OTEL_SERVICE_NAME
177175
depends_on:

‎src/cartservice/src/Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
# limitations under the License.
1616

1717
# https://mcr.microsoft.com/v2/dotnet/sdk/tags/list
18-
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0.101 AS builder
18+
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0.200 AS builder
1919
ARG TARGETARCH
2020

2121
WORKDIR /usr/src/app/
@@ -30,7 +30,7 @@ RUN dotnet publish ./src/cartservice.csproj -v d -r linux-musl-$TARGETARCH --no-
3030
# -----------------------------------------------------------------------------
3131

3232
# https://mcr.microsoft.com/v2/dotnet/runtime-deps/tags/list
33-
FROM mcr.microsoft.com/dotnet/runtime-deps:8.0.1-alpine3.18
33+
FROM mcr.microsoft.com/dotnet/runtime-deps:8.0.2-alpine3.18
3434

3535
WORKDIR /usr/src/app/
3636
COPY --from=builder /cartservice/ ./

‎src/cartservice/src/cartservice.csproj

+5-5
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
<PackageReference Include="Grpc.AspNetCore.HealthChecks" Version="2.60.0" />
1515
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.7.0" />
1616
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.7.0" />
17-
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.7.0" />
18-
<PackageReference Include="OpenTelemetry.Instrumentation.GrpcNetClient" Version="1.6.0-beta.3" />
19-
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.7.0" />
17+
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.7.1" />
18+
<PackageReference Include="OpenTelemetry.Instrumentation.GrpcNetClient" Version="1.7.0-beta.1" />
19+
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.7.1" />
2020
<PackageReference Include="OpenTelemetry.Instrumentation.Process" Version="0.5.0-beta.4" />
2121
<PackageReference Include="OpenTelemetry.Instrumentation.StackExchangeRedis" Version="1.0.0-rc9.13" />
2222
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" Version="1.7.0" />
23-
<PackageReference Include="OpenTelemetry.ResourceDetectors.Container" Version="1.0.0-beta.5" />
24-
<PackageReference Include="StackExchange.Redis" Version="2.7.10" />
23+
<PackageReference Include="OpenTelemetry.ResourceDetectors.Container" Version="1.0.0-beta.6" />
24+
<PackageReference Include="StackExchange.Redis" Version="2.7.17" />
2525
</ItemGroup>
2626

2727
<ItemGroup>

‎src/cartservice/tests/cartservice.tests.csproj

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66

77
<ItemGroup>
88
<PackageReference Include="Grpc.Net.Client" Version="2.60.0" />
9-
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="8.0.1" />
10-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
11-
<PackageReference Include="xunit" Version="2.6.5" />
9+
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="8.0.2" />
10+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
11+
<PackageReference Include="xunit" Version="2.6.6" />
1212
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.6">
1313
<PrivateAssets>all</PrivateAssets>
1414
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#include "opentelemetry/exporters/otlp/otlp_grpc_exporter_factory.h"
5+
#include "opentelemetry/logs/provider.h"
6+
#include "opentelemetry/sdk/logs/logger.h"
7+
#include "opentelemetry/sdk/logs/logger_provider_factory.h"
8+
#include "opentelemetry/sdk/logs/simple_log_record_processor_factory.h"
9+
#include "opentelemetry/sdk/logs/logger_context_factory.h"
10+
#include "opentelemetry/exporters/otlp/otlp_grpc_log_record_exporter_factory.h"
11+
12+
using namespace std;
13+
namespace nostd = opentelemetry::nostd;
14+
namespace otlp = opentelemetry::exporter::otlp;
15+
namespace logs = opentelemetry::logs;
16+
namespace logs_sdk = opentelemetry::sdk::logs;
17+
18+
namespace
19+
{
20+
void initLogger() {
21+
otlp::OtlpGrpcLogRecordExporterOptions loggerOptions;
22+
auto exporter = otlp::OtlpGrpcLogRecordExporterFactory::Create(loggerOptions);
23+
auto processor = logs_sdk::SimpleLogRecordProcessorFactory::Create(std::move(exporter));
24+
std::vector<std::unique_ptr<logs_sdk::LogRecordProcessor>> processors;
25+
processors.push_back(std::move(processor));
26+
auto context = logs_sdk::LoggerContextFactory::Create(std::move(processors));
27+
std::shared_ptr<logs::LoggerProvider> provider = logs_sdk::LoggerProviderFactory::Create(std::move(context));
28+
opentelemetry::logs::Provider::SetLoggerProvider(provider);
29+
}
30+
31+
nostd::shared_ptr<opentelemetry::logs::Logger> getLogger(std::string name){
32+
auto provider = logs::Provider::GetLoggerProvider();
33+
return provider->GetLogger(name + "_logger", name, OPENTELEMETRY_SDK_VERSION);
34+
}
35+
}

‎src/currencyservice/src/meter_common.h

+1-9
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,14 @@ namespace otlp_exporter = opentelemetry::exporter::otlp;
1616

1717
namespace
1818
{
19-
std::string version{ "1.3.0" };
20-
std::string name{ "app_currency" };
21-
std::string schema{ "https://opentelemetry.io/schemas/1.2.0" };
22-
2319
void initMeter()
2420
{
2521
// Build MetricExporter
2622
otlp_exporter::OtlpGrpcMetricExporterOptions otlpOptions;
27-
// Configuration via environment variable not supported yet
28-
//otlpOptions.aggregation_temporality = otlp_exporter::PreferredAggregationTemporality::kCumulative;
2923
auto exporter = otlp_exporter::OtlpGrpcMetricExporterFactory::Create(otlpOptions);
3024

3125
// Build MeterProvider and Reader
3226
metric_sdk::PeriodicExportingMetricReaderOptions options;
33-
//options.export_interval_millis = std::chrono::milliseconds(60000);
34-
//options.export_timeout_millis = std::chrono::milliseconds(30000);
3527
std::unique_ptr<metric_sdk::MetricReader> reader{
3628
new metric_sdk::PeriodicExportingMetricReader(std::move(exporter), options) };
3729
auto provider = std::shared_ptr<metrics_api::MeterProvider>(new metric_sdk::MeterProvider());
@@ -40,7 +32,7 @@ namespace
4032
metrics_api::Provider::SetMeterProvider(provider);
4133
}
4234

43-
nostd::unique_ptr<metrics_api::Counter<uint64_t>> initIntCounter()
35+
nostd::unique_ptr<metrics_api::Counter<uint64_t>> initIntCounter(std::string name, std::string version)
4436
{
4537
std::string counter_name = name + "_counter";
4638
auto provider = metrics_api::Provider::GetMeterProvider();

‎src/currencyservice/src/server.cpp

+19-8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright The OpenTelemetry Authors
22
// SPDX-License-Identifier: Apache-2.0
33

4+
#include <cstdlib>
45
#include <iostream>
56
#include <math.h>
67
#include <demo.grpc.pb.h>
@@ -11,6 +12,7 @@
1112
#include "opentelemetry/trace/span_context_kv_iterable_view.h"
1213
#include "opentelemetry/baggage/baggage.h"
1314
#include "opentelemetry/nostd/string_view.h"
15+
#include "logger_common.h"
1416
#include "meter_common.h"
1517
#include "tracer_common.h"
1618

@@ -80,7 +82,11 @@ namespace
8082
{"ZAR", 16.0583},
8183
};
8284

85+
std::string version = std::getenv("VERSION");
86+
std::string name{ "currencyservice" };
87+
8388
nostd::unique_ptr<metrics_api::Counter<uint64_t>> currency_counter;
89+
nostd::shared_ptr<opentelemetry::logs::Logger> logger;
8490

8591
class HealthServer final : public grpc::health::v1::Health::Service
8692
{
@@ -127,10 +133,11 @@ class CurrencyService final : public oteldemo::CurrencyService::Service
127133

128134
span->AddEvent("Currencies fetched, response sent back");
129135
span->SetStatus(StatusCode::kOk);
136+
137+
logger->Info(std::string(__func__) + " successful");
138+
130139
// Make sure to end your spans!
131140
span->End();
132-
133-
std::cout << __func__ << " successful" << std::endl;
134141
return Status::OK;
135142
}
136143

@@ -203,14 +210,18 @@ class CurrencyService final : public oteldemo::CurrencyService::Service
203210
// End the span
204211
span->AddEvent("Conversion successful, response sent back");
205212
span->SetStatus(StatusCode::kOk);
206-
std::cout << __func__ << " conversion successful" << std::endl;
213+
214+
logger->Info(std::string(__func__) + " conversion successful");
215+
207216
span->End();
208217
return Status::OK;
209218

210219
} catch(...) {
211220
span->AddEvent("Conversion failed");
212221
span->SetStatus(StatusCode::kError);
213-
std::cout << __func__ << " conversion failure" << std::endl;
222+
223+
logger->Error(std::string(__func__) + " conversion failure");
224+
214225
span->End();
215226
return Status::CANCELLED;
216227
}
@@ -237,7 +248,7 @@ void RunServer(uint16_t port)
237248
builder.AddListeningPort(address, grpc::InsecureServerCredentials());
238249

239250
std::unique_ptr<Server> server(builder.BuildAndStart());
240-
std::cout << "Currency Server listening on port: " << address << std::endl;
251+
logger->Info("Currency Server listening on port: " + address);
241252
server->Wait();
242253
server->Shutdown();
243254
}
@@ -252,11 +263,11 @@ int main(int argc, char **argv) {
252263

253264
uint16_t port = atoi(argv[1]);
254265

255-
std::cout << "Port: " << port << "\n";
256-
257266
initTracer();
258267
initMeter();
259-
currency_counter = initIntCounter();
268+
initLogger();
269+
currency_counter = initIntCounter(name, version);
270+
logger = getLogger(name);
260271
RunServer(port);
261272

262273
return 0;

‎src/grafana/provisioning/datasources/opensearch.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@ datasources:
1616
logLevelField: severity
1717
logMessageField: body
1818
pplEnabled: true
19-
timeField: "@timestamp"
19+
timeField: observedTimestamp
20+
version: 2.11.1

0 commit comments

Comments
 (0)