Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change AccountService from Go to DotNet (auto) #1538

Merged
merged 26 commits into from
Jun 27, 2024

Conversation

RassK
Copy link
Contributor

@RassK RassK commented Apr 19, 2024

Changes

Fixes #589

Changes AccountingService from Go to .NET service.
Uses OpenTelemetry .NET Automatic Instrumentation.

NOTE: It's a first preview of demo app that is instrumented with OpenTelemetry .NET Automatic instrumentation. Some parts are still TBD. Please review and add comments about improvements and missing parts / docs.

Merge Requirements

For new features contributions please make sure you have completed the following
essential items:

  • CHANGELOG.md updated to document new feature additions
  • Appropriate documentation updates in the docs
  • Appropriate Helm chart updates in the helm-charts

Maintainers will not merge until the above have been completed. If you're unsure
which docs need to be changed ping the
@open-telemetry/demo-approvers.

src/accountingservice/Dockerfile Outdated Show resolved Hide resolved
src/accountingservice/Dockerfile Outdated Show resolved Hide resolved
Copy link

This PR was marked stale due to lack of activity. It will be closed in 7 days.

@github-actions github-actions bot added the Stale label Apr 30, 2024
@github-actions github-actions bot added the helm-update-required Requires an update to the Helm chart when released label Apr 30, 2024
@RassK
Copy link
Contributor Author

RassK commented Apr 30, 2024

Example Jaeger traces:
image
image

CC: @lachmatt @Kielek Should parentless Kafka consume requests be filtered? Seems without additional context these just trash the output.

@RassK RassK marked this pull request as ready for review April 30, 2024 12:57
@RassK RassK requested review from a team and Kielek April 30, 2024 12:57
@RassK
Copy link
Contributor Author

RassK commented Apr 30, 2024

After removing EOF

image

@RassK RassK changed the title [Draft] Change AccountService from Go to DotNet (auto) Change AccountService from Go to DotNet (auto) Apr 30, 2024
@puckpuck puckpuck added docs-update-required Requires documentation update and removed Stale labels Apr 30, 2024
@puckpuck
Copy link
Contributor

puckpuck commented Apr 30, 2024

@RassK Can you add a Chanlog entry for this? Also, we will need to update docs and the Helm chart for this. If you need help to prep a PR in those areas, please let us know.

Screenshot 2024-05-13 at 10 53 00 AM

@RassK
Copy link
Contributor Author

RassK commented May 6, 2024

@puckpuck thanks for helping to guide the last steps missing. I have updated the changelog. Would be glad to accept some help with other missing parts as well. It's my first PR to this repo.

RassK added 2 commits June 19, 2024 14:57
# Conflicts:
#	CHANGELOG.md
#	src/accountingservice/go.mod
#	src/accountingservice/go.sum
@RassK
Copy link
Contributor Author

RassK commented Jun 19, 2024

Updated solution (OTel Auto 1.7.0) >
image

@RassK RassK marked this pull request as ready for review June 19, 2024 12:20
CHANGELOG.md Outdated Show resolved Hide resolved
Copy link
Member

@julianocosta89 julianocosta89 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @RassK it looks good, before approving would you mind explaining those log entries?

Accounting service started
[CORECLR_ENABLE_PROFILING, 1]
[CORECLR_PROFILER, {918728DD-259F-4A6A-AC2B-B85E1B658318}]
[CORECLR_PROFILER_PATH, /app/OpenTelemetry.AutoInstrumentation.Native.so]
[DOTNET_RUNNING_IN_CONTAINER, true]
[DOTNET_STARTUP_HOOKS, /app/OpenTelemetry.AutoInstrumentation.StartupHook.dll]

@RassK
Copy link
Contributor Author

RassK commented Jun 19, 2024

Hey @RassK it looks good, before approving would you mind explaining those log entries?

Accounting service started
[CORECLR_ENABLE_PROFILING, 1]
[CORECLR_PROFILER, {918728DD-259F-4A6A-AC2B-B85E1B658318}]
[CORECLR_PROFILER_PATH, /app/OpenTelemetry.AutoInstrumentation.Native.so]
[DOTNET_RUNNING_IN_CONTAINER, true]
[DOTNET_STARTUP_HOOKS, /app/OpenTelemetry.AutoInstrumentation.StartupHook.dll]

That's a quick startup diagnostics (by AccountingService.Helpers that filters relevant environment variables). Due automatic instrumentation is configured mostly by envs, then this could be helpful for a quick diagnosis.

Ideally a built in diagnostics (OTEL_LOG_LEVEL=debug) should do the similar but instead logs to the file.

@julianocosta89
Copy link
Member

I've updated the tracetest to reflect the change, hope you don't mind. 😅

This should be good to go, I'll just wait to see if any other maintainer/approver has something to say.

Thanks for taking care of it 🤩

@RassK
Copy link
Contributor Author

RassK commented Jun 20, 2024

Just need to increase mem limit in the helm chart left? Can anyone help / explain where, I have had 0 connections to helm charts so far 😬

@julianocosta89
Copy link
Member

the Helm chart will not be updated till next version release.

If you want to update it, you can do the memory limit here:
https://github.com/open-telemetry/opentelemetry-helm-charts/blob/main/charts/opentelemetry-demo/values.yaml#L165

Then you need to bump a minor version here: https://github.com/open-telemetry/opentelemetry-helm-charts/blob/main/charts/opentelemetry-demo/Chart.yaml#L4

And last you need to run the: make generate-examples CHARTS=opentelemetry-demo.

You could also sync with @rogercoll and add it to his opened PR:
open-telemetry/opentelemetry-helm-charts#1232

Whenever you add it, you will still need to run the make generate command above.

@julianocosta89
Copy link
Member

@puckpuck, @mviitane are you good with this one being merged?

@puckpuck
Copy link
Contributor

I tested again, and all looks fine using a linked span here instead. I will make another PR so the frauddetectionservice goes back to creating a child span instead of a linked span. This will allow us to showcase both examples with a message queue.

@puckpuck puckpuck merged commit 5400099 into open-telemetry:main Jun 27, 2024
29 checks passed
AlexPSplunk pushed a commit to splunk/edu-opentelemetry-demo that referenced this pull request Jul 10, 2024
* Change AccountService from go to dotnet (auto)

* fix path

* fix folder name

* dockerfile and other fixes

* add copyright

* fix encoding and cleanup

* Cleanup dockerfile

* Update OTel Auto

* fix kafka processing issues and otel export

* remove eof

* Update changelog

* Use default CancellationDelayMaxMs

* update packages

* fix merge failure

* Fix tracetest 'accountingservice' is not part of the trace anymore

---------

Co-authored-by: Juliano Costa <juliano.costa@datadoghq.com>
Co-authored-by: Juliano Costa <julianocosta89@outlook.com>
eliasmueller pushed a commit to UST-DeMAF/opentelemetry-demo that referenced this pull request Jul 14, 2024
* Change AccountService from go to dotnet (auto)

* fix path

* fix folder name

* dockerfile and other fixes

* add copyright

* fix encoding and cleanup

* Cleanup dockerfile

* Update OTel Auto

* fix kafka processing issues and otel export

* remove eof

* Update changelog

* Use default CancellationDelayMaxMs

* update packages

* fix merge failure

* Fix tracetest 'accountingservice' is not part of the trace anymore

---------

Co-authored-by: Juliano Costa <juliano.costa@datadoghq.com>
Co-authored-by: Juliano Costa <julianocosta89@outlook.com>
ahealy-newr pushed a commit to ahealy-newr/opentelemetry-demo-ahealy that referenced this pull request Jul 24, 2024
* Change AccountService from go to dotnet (auto)

* fix path

* fix folder name

* dockerfile and other fixes

* add copyright

* fix encoding and cleanup

* Cleanup dockerfile

* Update OTel Auto

* fix kafka processing issues and otel export

* remove eof

* Update changelog

* Use default CancellationDelayMaxMs

* update packages

* fix merge failure

* Fix tracetest 'accountingservice' is not part of the trace anymore

---------

Co-authored-by: Juliano Costa <juliano.costa@datadoghq.com>
Co-authored-by: Juliano Costa <julianocosta89@outlook.com>
eliasmueller added a commit to UST-DeMAF/opentelemetry-demo that referenced this pull request Oct 3, 2024
…d EDMM models (#9)

* [productcatalogservice] Added MongoDB

This adds a MongoDB to the demo instead of parsing the JSON before usage. The implementation is not yet perfect but it works for now. Thus far, only docker compose is supported.

Things that still need more work are:
- The Go application still uses static MongoDB username and password and the hostname and port are also static. This should be changed to use environmental variables instead.
- I wasn't able to check whether the healthcheck of the MongoDB works or not.
- Is the resource limit too generous?
- Should we fix the port inside the MongoDB container to its default value (i.e. change using a secret here to 27017)?

* [productcatalogservice] Changed to use env vars

This changes the productcatalogservice to use environmental variables for the MongoDB username, password, hostname and port.

* [K8s] Added MongoDB

*Disclaimer:* this is not working yet!

* build(deps): bump docker/build-push-action from 6.0.1 to 6.1.0 (open-telemetry#1620)

Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.0.1 to 6.1.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](docker/build-push-action@v6.0.1...v6.1.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mikko Viitanen <74129181+mviitane@users.noreply.github.com>

* fix: emailservice docker compose image (open-telemetry#1630)

Co-authored-by: Pierre Tessier <pierre@pierretessier.com>

* add collector configs as environment variable (open-telemetry#1632)

Co-authored-by: Mikko Viitanen <74129181+mviitane@users.noreply.github.com>

* fix(frontend): Use port 443 as default to connect to flagd if https is in use (open-telemetry#1609)

* fix(frontend): Use port 443 as default to connect to flagd if https is in use

* chore: Update CHANGELOG.md

---------

Co-authored-by: Pierre Tessier <pierre@pierretessier.com>

* Update recommendation flag to match flagd configuration (open-telemetry#1634)

Address open-telemetry#1626

* Change AccountService from Go to DotNet (auto) (open-telemetry#1538)

* Change AccountService from go to dotnet (auto)

* fix path

* fix folder name

* dockerfile and other fixes

* add copyright

* fix encoding and cleanup

* Cleanup dockerfile

* Update OTel Auto

* fix kafka processing issues and otel export

* remove eof

* Update changelog

* Use default CancellationDelayMaxMs

* update packages

* fix merge failure

* Fix tracetest 'accountingservice' is not part of the trace anymore

---------

Co-authored-by: Juliano Costa <juliano.costa@datadoghq.com>
Co-authored-by: Juliano Costa <julianocosta89@outlook.com>

* build(deps): bump docker/build-push-action from 6.1.0 to 6.2.0 (open-telemetry#1636)

Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](docker/build-push-action@v6.1.0...v6.2.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Pierre Tessier <pierre@pierretessier.com>

* [chore] clarify complete release process (open-telemetry#1638)

* clarify complete release process

* clarify complete release process

* clarify complete release process

* clarify complete release process

* clarify complete release process

* update to 1.11.0 release (open-telemetry#1639)

* update to 1.11.0 release (open-telemetry#1640)

* [chore] update demo role memberships (open-telemetry#1649)

* update demo role membership

* update demo role membership

* [otel-col] Add docker stats receiver (open-telemetry#1650)

* Add docker stats receiver

* changelog

* Nit: prevent write access to the Docker socket

Co-authored-by: Roger Coll <roger.coll@elastic.co>

* Add compose minimal

---------

Co-authored-by: Roger Coll <roger.coll@elastic.co>

* add Kafka Dockerfile env variable (open-telemetry#1652)

Co-authored-by: Pierre Tessier <pierre@pierretessier.com>

* build(deps): bump docker/build-push-action from 6.2.0 to 6.3.0 (open-telemetry#1656)

Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](docker/build-push-action@v6.2.0...v6.3.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Simplify error scenario logic (open-telemetry#1657)

* remove fractional config from rule definition

Signed-off-by: Michael Beemer <beeme1mr@users.noreply.github.com>

* add random failure logic to ad service

Signed-off-by: Michael Beemer <beeme1mr@users.noreply.github.com>

* add random failure logic to cart service

Signed-off-by: Michael Beemer <beeme1mr@users.noreply.github.com>

---------

Signed-off-by: Michael Beemer <beeme1mr@users.noreply.github.com>

* [tests] - optimize trace testing (open-telemetry#1659)

* optimize trace testing

* run trace based tests concurrently

* fix lint failures

---------

Co-authored-by: Juliano Costa <julianocosta89@outlook.com>

* [chore] fix build-images workflow (open-telemetry#1661)

* fix build-images workflow

* use consistent naming for workflows

* Set OTLP receiver endpoint (open-telemetry#1662)

* Set OTelCol receiver endpoint

* changelog

* Apply suggestions from code review

Co-authored-by: Roger Coll <roger.coll@elastic.co>

* Add env vars to collector container

---------

Co-authored-by: Roger Coll <roger.coll@elastic.co>

* feat: [K8s] Added MongoDB

*Disclaimer:* this is not working yet!

* feat: ES-9 add EDMM Model (K8s) of otel-shop

* feat: ES-39 add Terrfaform Model of otel-shop

* feat: ES-44 add Ansible Model of otel-shop

* fixed MongoDB not working and removed duplicate MongoDB service

* feat: ES-9 add some refinement and connects_to

* Update otel_store_k8s_translated.yaml

YAML style adjusted to a uniform format.

* Update otel_store_k8s_translated.yaml

YAML style adjusted to a uniform format. Adjusted, of relation_types and components_types (underscore was missing) --> Inconsistency

* Terraform model: Deletetd testing services and fixed image declaration of the email service

* feat: ES-32 minor fix and todo

* Adds missing component types and fixes relations

* fix: ES-56 fix some missing stuff in EDMM

* fix: ES-56 fix some missing stuff in EDMM

* fix: ES-56 fix moore

* fix: ES-56 fix more

* fix: ES-56 lint

* fix: ES-56 add opensearch hosted on

* fix: ES-56 remove duplicate

* fix: ES-56 fix naming

* Added health checks where applicable

some health checks are rather dirty but they work

* fix: auto-formatted K8s file

this enables us to finally parse this example with our plugin!

* chore(ES-80): move and cleanup main.tf (#8)

* chore: ES-80 move .env to k8s folder and cleanup main.tf

* chore: ES-80 remove .env

* ES-59 Fixed main.tf and added linux support

* fix: fix merge issues

* chore(ES-86): keep models up-to-date and add target models for all technologies (#10)

* chore: update versions and memory

* chore: some more adaptions

* chore: add target edmm models

* ci: test build job for productcatalogservice

* ci: try this tag

* ci: now try this tag

* ci: try enhance tagging

* chore: make use of pc-service build, readme, switch to concrete versioning in terraform

* chore: remove branch build

* docs: finalize readme

* chore: mr adaptions

* fix: fix typos from generator

* fix: remove submodules

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Michael Beemer <beeme1mr@users.noreply.github.com>
Co-authored-by: Felix <st157773@stud.uni-stuttgart.de>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mikko Viitanen <74129181+mviitane@users.noreply.github.com>
Co-authored-by: Roger Coll <rogercoll@protonmail.com>
Co-authored-by: Pierre Tessier <pierre@pierretessier.com>
Co-authored-by: Sven Kirschbaum <sven@kirschbaum.me>
Co-authored-by: Steve Flanders <sflanders@splunk.com>
Co-authored-by: Rasmus Kuusmann <rkuusmann@splunk.com>
Co-authored-by: Juliano Costa <juliano.costa@datadoghq.com>
Co-authored-by: Juliano Costa <julianocosta89@outlook.com>
Co-authored-by: Roger Coll <roger.coll@elastic.co>
Co-authored-by: Michael Beemer <beeme1mr@users.noreply.github.com>
Co-authored-by: Arikuma97 <44363150+Arikuma97@users.noreply.github.com>
Co-authored-by: Pascal Schur <pascal@uli-schur.de>
Co-authored-by: Rene Tischler <20995752+365Bit@users.noreply.github.com>
brucearctor added a commit to brucearctor/opentelemetry.io that referenced this pull request Dec 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs-update-required Requires documentation update helm-update-required Requires an update to the Helm chart when released
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add dotnet auto instrumentation
6 participants