Compare commits
No commits in common. "main" and "coreunstable-1.11.2-beta.1" have entirely different histories.
main
...
coreunstab
|
@ -1,4 +0,0 @@
|
|||
# see https://github.com/cncf/clomonitor/blob/main/docs/checks.md#exemptions
|
||||
exemptions:
|
||||
- check: artifacthub_badge
|
||||
reason: "Artifact Hub doesn't support .NET packages"
|
|
@ -10,9 +10,6 @@ indent_size = 2
|
|||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.sh]
|
||||
end_of_line = lf
|
||||
|
||||
[*.{cs,cshtml,htm,html,md,py,sln,xml}]
|
||||
indent_size = 4
|
||||
|
||||
|
@ -163,9 +160,6 @@ dotnet_diagnostic.RS0041.severity = suggestion
|
|||
# CA1515: Disable making types internal for Tests classes. It is required by xunit
|
||||
dotnet_diagnostic.CA1515.severity = none
|
||||
|
||||
# CA2007: Disable Consider calling ConfigureAwait on the awaited task. It is not working with xunit
|
||||
dotnet_diagnostic.CA2007.severity = none
|
||||
|
||||
[**/obj/**.cs]
|
||||
generated_code = true
|
||||
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
*.sh eol=lf
|
|
@ -62,7 +62,7 @@ body:
|
|||
- type: textarea
|
||||
attributes:
|
||||
label: Steps to Reproduce
|
||||
description: Provide a [minimal, reproducible example](https://stackoverflow.com/help/minimal-reproducible-example). We will close the issue if the repro project you share with us is complex or we cannot reproduce the behavior you are reporting. We cannot investigate custom projects, so don't point us to such, please.
|
||||
description: Provide a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example). We will close the issue if the repro project you share with us is complex or we cannot reproduce the behavior you are reporting. We cannot investigate custom projects, so don't point us to such, please.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
|
@ -84,11 +84,3 @@ body:
|
|||
attributes:
|
||||
label: Additional Context
|
||||
description: Any additional information you think may be relevant to this issue.
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Tip
|
||||
description: This element is static, used to render a helpful sub-heading for end-users and community members to help prioritize issues. Please leave as is.
|
||||
options:
|
||||
- "<sub>[React](https://github.blog/news-insights/product-news/add-reactions-to-pull-requests-issues-and-comments/) with :+1: to help prioritize this issue. Please use comments to provide useful context, avoiding `+1` or `me too`, to help us triage it. Learn more [here](https://opentelemetry.io/community/end-user/issue-participation/).</sub>"
|
||||
default: 0
|
||||
|
|
|
@ -53,11 +53,3 @@ body:
|
|||
attributes:
|
||||
label: Additional context
|
||||
description: Any additional information you think may be relevant to this feature request.
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Tip
|
||||
description: This element is static, used to render a helpful sub-heading for end-users and community members to help prioritize issues. Please leave as is.
|
||||
options:
|
||||
- "<sub>[React](https://github.blog/news-insights/product-news/add-reactions-to-pull-requests-issues-and-comments/) with :+1: to help prioritize this issue. Please use comments to provide useful context, avoiding `+1` or `me too`, to help us triage it. Learn more [here](https://opentelemetry.io/community/end-user/issue-participation/).</sub>"
|
||||
default: 0
|
||||
|
|
|
@ -6,54 +6,6 @@ updates:
|
|||
interval: "daily"
|
||||
labels:
|
||||
- "infra"
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/examples/MicroserviceExample/WebApi"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
day: "wednesday"
|
||||
labels:
|
||||
- "infra"
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types:
|
||||
- "version-update:semver-major"
|
||||
- "version-update:semver-minor"
|
||||
- package-ecosystem: "docker"
|
||||
directory: "examples/MicroserviceExample/WorkerService"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
day: "wednesday"
|
||||
labels:
|
||||
- "infra"
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types:
|
||||
- "version-update:semver-major"
|
||||
- "version-update:semver-minor"
|
||||
- package-ecosystem: "docker"
|
||||
directory: "test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/IntegrationTest"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
day: "wednesday"
|
||||
labels:
|
||||
- "infra"
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types:
|
||||
- "version-update:semver-major"
|
||||
- "version-update:semver-minor"
|
||||
- package-ecosystem: "docker"
|
||||
directory: "test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
day: "wednesday"
|
||||
labels:
|
||||
- "infra"
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types:
|
||||
- "version-update:semver-major"
|
||||
- "version-update:semver-minor"
|
||||
- package-ecosystem: "dotnet-sdk"
|
||||
directory: "/"
|
||||
schedule:
|
||||
|
@ -66,10 +18,3 @@ updates:
|
|||
update-types:
|
||||
- "version-update:semver-major"
|
||||
- "version-update:semver-minor"
|
||||
- package-ecosystem: "pip"
|
||||
directory: "test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
day: "wednesday"
|
||||
labels:
|
||||
- "infra"
|
||||
|
|
|
@ -28,9 +28,6 @@ on:
|
|||
required: false
|
||||
type: string
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
build-test:
|
||||
|
||||
|
@ -49,21 +46,15 @@ jobs:
|
|||
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
# Note: By default GitHub only fetches 1 commit. MinVer needs to find
|
||||
# the version tag which is typically NOT on the first commit so we
|
||||
# retrieve them all.
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup previous .NET runtimes
|
||||
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
|
||||
with:
|
||||
dotnet-version: |
|
||||
8.0.x
|
||||
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
|
||||
- name: Setup dotnet
|
||||
uses: actions/setup-dotnet@v4
|
||||
|
||||
- name: dotnet restore ${{ inputs.project-name }}
|
||||
run: dotnet restore ${{ inputs.project-name }} ${{ inputs.project-build-commands }}
|
||||
|
@ -72,18 +63,7 @@ jobs:
|
|||
run: dotnet build ${{ inputs.project-name }} --configuration Release --no-restore ${{ inputs.project-build-commands }}
|
||||
|
||||
- name: dotnet test ${{ inputs.project-name }}
|
||||
run: >
|
||||
dotnet test ${{ inputs.project-name }}
|
||||
--collect:"Code Coverage"
|
||||
--results-directory:TestResults
|
||||
--framework ${{ matrix.version }}
|
||||
--configuration Release
|
||||
--no-restore
|
||||
--no-build
|
||||
--logger:"console;verbosity=detailed"
|
||||
--logger:"GitHubActions;report-warnings=false"
|
||||
--logger:"junit;LogFilePath=TestResults/junit.xml"
|
||||
-- RunConfiguration.DisableAppDomain=true
|
||||
run: dotnet test ${{ inputs.project-name }} --collect:"Code Coverage" --results-directory:TestResults --framework ${{ matrix.version }} --configuration Release --no-restore --no-build --logger:"console;verbosity=detailed" -- RunConfiguration.DisableAppDomain=true
|
||||
|
||||
- name: Install coverage tool
|
||||
run: dotnet tool install -g dotnet-coverage
|
||||
|
@ -92,24 +72,15 @@ jobs:
|
|||
run: dotnet-coverage merge -f cobertura -o ./TestResults/Cobertura.xml ./TestResults/**/*.coverage
|
||||
|
||||
- name: Upload code coverage ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }}
|
||||
uses: codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
|
||||
uses: codecov/codecov-action@v5
|
||||
continue-on-error: true # Note: Don't fail for upload failures
|
||||
env:
|
||||
OS: ${{ matrix.os }}
|
||||
TFM: ${{ matrix.version }}
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
with:
|
||||
files: TestResults/Cobertura.xml
|
||||
file: TestResults/Cobertura.xml
|
||||
env_vars: OS,TFM
|
||||
flags: ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }}
|
||||
name: Code Coverage for ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }} on [${{ matrix.os }}.${{ matrix.version }}]
|
||||
codecov_yml_path: .github/codecov.yml
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
|
||||
- name: Upload test results ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }}
|
||||
if: ${{ !cancelled() && hashFiles('./**/TestResults/junit.xml') != '' }}
|
||||
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
|
||||
with:
|
||||
env_vars: OS,TFM
|
||||
flags: ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }}
|
||||
name: Test results for ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }} on [${{ matrix.os }}.${{ matrix.version }}]
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
|
|
|
@ -7,19 +7,18 @@ on:
|
|||
branches: [ 'main*' ]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
issues: write
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
add-labels-on-issues:
|
||||
permissions:
|
||||
issues: write
|
||||
if: github.event_name == 'issues' && !github.event.issue.pull_request
|
||||
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- name: check out code
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Add labels for package found in bug issue descriptions
|
||||
shell: pwsh
|
||||
|
@ -34,15 +33,13 @@ jobs:
|
|||
ISSUE_BODY: ${{ github.event.issue.body }}
|
||||
|
||||
add-labels-on-pull-requests:
|
||||
permissions:
|
||||
pull-requests: write
|
||||
if: github.event_name == 'pull_request_target'
|
||||
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- name: check out code
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event.repository.default_branch }} # Note: Do not run on the PR branch we want to execute add-labels.psm1 from main on the base repo only because pull_request_target can see secrets
|
||||
|
||||
|
|
|
@ -15,9 +15,6 @@ on:
|
|||
OPENTELEMETRYBOT_GITHUB_TOKEN:
|
||||
required: false
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
resolve-automation:
|
||||
|
||||
|
|
|
@ -9,9 +9,6 @@ on:
|
|||
pull_request:
|
||||
branches: [ 'main*' ]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
lint-misspell-sanitycheck:
|
||||
uses: ./.github/workflows/sanitycheck.yml
|
||||
|
@ -21,8 +18,8 @@ jobs:
|
|||
outputs:
|
||||
changes: ${{ steps.changes.outputs.changes }}
|
||||
steps:
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
- uses: AurorNZ/paths-filter@3b1f3abc3371cca888d8eb03dfa70bc8a9867629 # v4.0.0
|
||||
- uses: actions/checkout@v4
|
||||
- uses: AurorNZ/paths-filter@v4
|
||||
id: changes
|
||||
with:
|
||||
filters: |
|
||||
|
@ -116,7 +113,7 @@ jobs:
|
|||
matrix:
|
||||
version: [ net8.0, net9.0 ]
|
||||
steps:
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
- uses: actions/checkout@v4
|
||||
- name: Run OTLP Exporter docker compose
|
||||
run: docker compose --file=test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/IntegrationTest/docker-compose.yml --file=build/docker-compose.${{ matrix.version }}.yml --project-directory=. up --exit-code-from=tests --build
|
||||
|
||||
|
@ -134,7 +131,7 @@ jobs:
|
|||
matrix:
|
||||
version: [ net8.0, net9.0 ]
|
||||
steps:
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
- uses: actions/checkout@v4
|
||||
- name: Run W3C Trace Context docker compose
|
||||
run: docker compose --file=test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests/docker-compose.yml --file=build/docker-compose.${{ matrix.version }}.yml --project-directory=. up --exit-code-from=tests --build
|
||||
|
||||
|
|
|
@ -1,71 +1,46 @@
|
|||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ 'main' ]
|
||||
pull_request:
|
||||
branches: [ 'main' ]
|
||||
schedule:
|
||||
- cron: '0 0 * * *' # once in a day at 00:00
|
||||
workflow_dispatch:
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
permissions:
|
||||
actions: read # for github/codeql-action/init to get workflow details
|
||||
contents: read # for actions/checkout to fetch code
|
||||
security-events: write # for github/codeql-action/analyze to upload SARIF results
|
||||
name: Analyze
|
||||
runs-on: windows-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: ['actions', 'csharp']
|
||||
language: ['csharp']
|
||||
|
||||
steps:
|
||||
- name: Configure Pagefile
|
||||
if: matrix.language == 'csharp'
|
||||
uses: al-cheb/configure-pagefile-action@a3b6ebd6b634da88790d9c58d4b37a7f4a7b8708 # v1.4
|
||||
- name: configure Pagefile
|
||||
uses: al-cheb/configure-pagefile-action@v1.4
|
||||
with:
|
||||
minimum-size: 8GB
|
||||
maximum-size: 32GB
|
||||
disk-root: "D:"
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
with:
|
||||
filter: 'tree:0'
|
||||
persist-credentials: false
|
||||
show-progress: false
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0
|
||||
uses: github/codeql-action/init@v3
|
||||
with:
|
||||
build-mode: none
|
||||
languages: ${{ matrix.language }}
|
||||
|
||||
- name: Setup dotnet
|
||||
uses: actions/setup-dotnet@v4
|
||||
|
||||
- name: dotnet pack
|
||||
run: dotnet pack ./build/OpenTelemetry.proj --configuration Release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0
|
||||
with:
|
||||
category: '/language:${{ matrix.language }}'
|
||||
|
||||
codeql:
|
||||
if: ${{ !cancelled() }}
|
||||
needs: [ analyze ]
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Report status
|
||||
shell: bash
|
||||
env:
|
||||
SCAN_SUCCESS: ${{ !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') }}
|
||||
run: |
|
||||
if [ "${SCAN_SUCCESS}" == "true" ]
|
||||
then
|
||||
echo 'CodeQL analysis successful'
|
||||
else
|
||||
echo 'CodeQL analysis failed'
|
||||
exit 1
|
||||
fi
|
||||
uses: github/codeql-action/analyze@v3
|
||||
|
|
|
@ -5,9 +5,6 @@ name: Concurrency Tests
|
|||
on:
|
||||
workflow_call:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
run-concurrency-tests:
|
||||
|
||||
|
@ -20,10 +17,10 @@ jobs:
|
|||
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Setup dotnet
|
||||
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
|
||||
uses: actions/setup-dotnet@v4
|
||||
|
||||
- name: Run Coyote Tests
|
||||
shell: pwsh
|
||||
|
@ -31,7 +28,7 @@ jobs:
|
|||
|
||||
- name: Publish Artifacts
|
||||
if: always() && !cancelled()
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.os }}-${{ matrix.project }}-${{ matrix.version }}-coyoteoutput
|
||||
path: '**/*_CoyoteOutput.*'
|
||||
|
|
|
@ -5,19 +5,16 @@ name: Build docfx
|
|||
on:
|
||||
workflow_call:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
run-docfx-build:
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- name: check out code
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup dotnet
|
||||
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
|
||||
uses: actions/setup-dotnet@v4
|
||||
|
||||
- name: install docfx
|
||||
run: dotnet tool install -g docfx
|
||||
|
|
|
@ -5,19 +5,16 @@ name: Lint - dotnet format
|
|||
on:
|
||||
workflow_call:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
run-dotnet-format-stable:
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- name: check out code
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup dotnet
|
||||
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
|
||||
uses: actions/setup-dotnet@v4
|
||||
|
||||
- name: dotnet restore
|
||||
run: dotnet restore OpenTelemetry.sln
|
||||
|
@ -32,10 +29,10 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: check out code
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup dotnet
|
||||
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
|
||||
uses: actions/setup-dotnet@v4
|
||||
|
||||
- name: dotnet restore
|
||||
run: dotnet restore OpenTelemetry.sln
|
||||
|
|
|
@ -12,9 +12,9 @@ jobs:
|
|||
fossa:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
|
||||
- uses: fossas/fossa-action@3ebcea1862c6ffbd5cf1b4d0bd6b3fe7bd6f2cac # v1.7.0
|
||||
- uses: fossas/fossa-action@93a52ecf7c3ac7eb40f5de77fd69b1a19524de94 # v1.5.0
|
||||
with:
|
||||
api-key: ${{secrets.FOSSA_API_KEY}}
|
||||
team: OpenTelemetry
|
||||
|
|
|
@ -5,19 +5,16 @@ name: Lint - Markdown
|
|||
on:
|
||||
workflow_call:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
run-markdownlint:
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- name: check out code
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: run markdownlint
|
||||
uses: DavidAnson/markdownlint-cli2-action@992badcdf24e3b8eb7e87ff9287fe931bcb00c6e # v20.0.0
|
||||
uses: DavidAnson/markdownlint-cli2-action@v19.1.0
|
||||
with:
|
||||
globs: |
|
||||
**/*.md
|
||||
|
|
|
@ -1,47 +0,0 @@
|
|||
name: OSSF Scorecard
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
schedule:
|
||||
- cron: "24 5 * * 0" # once a week
|
||||
workflow_dispatch:
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
analysis:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
# Needed for Code scanning upload
|
||||
security-events: write
|
||||
# Needed for GitHub OIDC token if publish_results is true
|
||||
id-token: write
|
||||
steps:
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2
|
||||
with:
|
||||
results_file: results.sarif
|
||||
results_format: sarif
|
||||
publish_results: true
|
||||
|
||||
# Upload the results as artifacts (optional). Commenting out will disable
|
||||
# uploads of run results in SARIF format to the repository Actions tab.
|
||||
# https://docs.github.com/en/actions/advanced-guides/storing-workflow-data-as-artifacts
|
||||
- name: "Upload artifact"
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
with:
|
||||
name: SARIF file
|
||||
path: results.sarif
|
||||
retention-days: 5
|
||||
|
||||
# Upload the results to GitHub's code scanning dashboard (optional).
|
||||
# Commenting out will disable upload of results to your repo's Code Scanning dashboard
|
||||
- name: "Upload to code-scanning"
|
||||
uses: github/codeql-action/upload-sarif@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0
|
||||
with:
|
||||
sarif_file: results.sarif
|
|
@ -5,15 +5,12 @@ name: Package Validation
|
|||
on:
|
||||
workflow_call:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
run-package-validation-stable:
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
# Note: By default GitHub only fetches 1 commit. MinVer needs to find
|
||||
# the version tag which is typically NOT on the first commit so we
|
||||
|
@ -21,23 +18,16 @@ jobs:
|
|||
fetch-depth: 0
|
||||
|
||||
- name: Setup dotnet
|
||||
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
|
||||
uses: actions/setup-dotnet@v4
|
||||
|
||||
- name: dotnet pack
|
||||
run: dotnet pack ./build/OpenTelemetry.proj --configuration Release /p:EnablePackageValidation=true /p:ExposeExperimentalFeatures=false /p:RunningDotNetPack=true
|
||||
|
||||
- name: Publish stable NuGet packages to Artifacts
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
with:
|
||||
name: packages-stable
|
||||
path: ./artifacts/package/release
|
||||
if-no-files-found: error
|
||||
|
||||
run-package-validation-experimental:
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
# Note: By default GitHub only fetches 1 commit. MinVer needs to find
|
||||
# the version tag which is typically NOT on the first commit so we
|
||||
|
@ -45,14 +35,7 @@ jobs:
|
|||
fetch-depth: 0
|
||||
|
||||
- name: Setup dotnet
|
||||
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
|
||||
uses: actions/setup-dotnet@v4
|
||||
|
||||
- name: dotnet pack
|
||||
run: dotnet pack ./build/OpenTelemetry.proj --configuration Release /p:EnablePackageValidation=true /p:ExposeExperimentalFeatures=true /p:RunningDotNetPack=true
|
||||
|
||||
- name: Publish experimental NuGet packages to Artifacts
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
with:
|
||||
name: packages-experimental
|
||||
path: ./artifacts/package/release
|
||||
if-no-files-found: error
|
||||
|
|
|
@ -16,9 +16,6 @@ on:
|
|||
types:
|
||||
- created
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
automation:
|
||||
uses: ./.github/workflows/automation.yml
|
||||
|
@ -44,7 +41,7 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: check out code
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
|
||||
ref: ${{ github.event.repository.default_branch }}
|
||||
|
@ -78,7 +75,7 @@ jobs:
|
|||
GH_TOKEN: ${{ secrets[needs.automation.outputs.token-secret-name] }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
# Note: By default GitHub only fetches 1 commit. We need all the tags
|
||||
# for this work.
|
||||
|
@ -87,7 +84,7 @@ jobs:
|
|||
token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
|
||||
|
||||
- name: Setup dotnet
|
||||
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
|
||||
uses: actions/setup-dotnet@v4
|
||||
|
||||
- name: Create GitHub Pull Request to update stable build version in props
|
||||
if: |
|
||||
|
|
|
@ -23,9 +23,6 @@ on:
|
|||
types:
|
||||
- created
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
automation:
|
||||
uses: ./.github/workflows/automation.yml
|
||||
|
@ -43,7 +40,7 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: check out code
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
|
||||
|
||||
|
@ -79,7 +76,7 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: check out code
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
|
||||
|
||||
|
@ -113,7 +110,7 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: check out code
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
# Note: By default GitHub only fetches 1 commit which fails the git tag operation below
|
||||
fetch-depth: 0
|
||||
|
@ -152,7 +149,7 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: check out code
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
# Note: By default GitHub only fetches 1 commit which fails the git tag operation below
|
||||
fetch-depth: 0
|
||||
|
@ -191,15 +188,13 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: check out code
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
# Note: By default GitHub only fetches 1 commit which fails the git tag operation below
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
|
||||
|
||||
- name: Update release notes
|
||||
env:
|
||||
COMMENT_BODY: ${{ github.event.comment.body }}
|
||||
shell: pwsh
|
||||
run: |
|
||||
Import-Module .\build\scripts\prepare-release.psm1
|
||||
|
@ -209,6 +204,6 @@ jobs:
|
|||
-pullRequestNumber '${{ github.event.issue.number }}' `
|
||||
-botUserName '${{ needs.automation.outputs.username }}' `
|
||||
-commentUserName '${{ github.event.comment.user.login }}' `
|
||||
-commentBody $Env:COMMENT_BODY `
|
||||
-commentBody '${{ github.event.comment.body }}' `
|
||||
-gitUserName '${{ needs.automation.outputs.username }}' `
|
||||
-gitUserEmail '${{ needs.automation.outputs.email }}'
|
||||
|
|
|
@ -16,9 +16,6 @@ on:
|
|||
schedule:
|
||||
- cron: '0 0 * * *' # once in a day at 00:00
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
automation:
|
||||
uses: ./.github/workflows/automation.yml
|
||||
|
@ -38,7 +35,7 @@ jobs:
|
|||
artifact-id: ${{ steps.upload-artifacts.outputs.artifact-id }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
# Note: By default GitHub only fetches 1 commit. MinVer needs to find
|
||||
# the version tag which is typically NOT on the first commit so we
|
||||
|
@ -46,12 +43,12 @@ jobs:
|
|||
fetch-depth: 0
|
||||
|
||||
- name: Setup dotnet
|
||||
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
|
||||
uses: actions/setup-dotnet@v4
|
||||
|
||||
- name: Install Cosign
|
||||
uses: sigstore/cosign-installer@d58896d6a1865668819e1d91763c7751a165e159 # v3.9.2
|
||||
uses: sigstore/cosign-installer@v3
|
||||
with:
|
||||
cosign-release: v2.5.3
|
||||
cosign-release: v2.4.0
|
||||
|
||||
- name: dotnet restore
|
||||
run: dotnet restore ./build/OpenTelemetry.proj -p:RunningDotNetPack=true
|
||||
|
@ -67,7 +64,7 @@ jobs:
|
|||
foreach ($projectFile in $projectFiles) {
|
||||
$projectName = [System.IO.Path]::GetFileNameWithoutExtension($projectFile)
|
||||
|
||||
Get-ChildItem -Path artifacts/bin/$projectName/release_*/$projectName.dll -File | ForEach-Object {
|
||||
Get-ChildItem -Path src/$projectName/bin/Release/*/$projectName.dll -File | ForEach-Object {
|
||||
$fileFullPath = $_.FullName
|
||||
Write-Host "Signing $fileFullPath"
|
||||
|
||||
|
@ -80,11 +77,10 @@ jobs:
|
|||
|
||||
- name: Publish Artifacts
|
||||
id: upload-artifacts
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ github.ref_name }}-packages
|
||||
path: ./artifacts/package/release
|
||||
if-no-files-found: error
|
||||
path: 'src/**/*.*nupkg'
|
||||
|
||||
- name: Publish MyGet
|
||||
env:
|
||||
|
@ -92,7 +88,7 @@ jobs:
|
|||
if: env.MYGET_TOKEN_EXISTS == 'true' # Skip MyGet publish if run on a fork without the secret
|
||||
run: |
|
||||
nuget setApiKey ${{ secrets.MYGET_TOKEN }} -Source https://www.myget.org/F/opentelemetry/api/v2/package
|
||||
nuget push ./artifacts/package/release/*.nupkg -Source https://www.myget.org/F/opentelemetry/api/v2/package
|
||||
nuget push src/**/*.nupkg -Source https://www.myget.org/F/opentelemetry/api/v2/package
|
||||
|
||||
post-build:
|
||||
runs-on: ubuntu-22.04
|
||||
|
@ -108,7 +104,7 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: check out code
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
|
||||
|
||||
|
|
|
@ -5,16 +5,13 @@ name: Lint - Spelling & Encoding
|
|||
on:
|
||||
workflow_call:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
run-misspell:
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- name: check out code
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: install misspell
|
||||
run: |
|
||||
|
@ -29,7 +26,7 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: check out code
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: detect non-ASCII encoding and trailing space
|
||||
run: python3 ./build/scripts/sanitycheck.py
|
||||
|
|
|
@ -6,17 +6,11 @@ on:
|
|||
schedule:
|
||||
- cron: "12 3 * * *" # arbitrary time not to DDOS GitHub
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
permissions:
|
||||
issues: write # for actions/stale to close stale issues
|
||||
pull-requests: write # for actions/stale to close stale PRs
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9.1.0
|
||||
- uses: actions/stale@v9
|
||||
with:
|
||||
stale-issue-message: 'This issue was marked stale due to lack of activity and will be closed in 7 days. Commenting will instruct the bot to automatically remove the label. This bot runs once per day.'
|
||||
close-issue-message: 'Closed as inactive. Feel free to reopen if this issue is still a concern.'
|
||||
|
@ -28,5 +22,4 @@ jobs:
|
|||
days-before-pr-close: 7
|
||||
days-before-issue-close: 7
|
||||
exempt-all-issue-milestones: true
|
||||
exempt-issue-labels: 'keep-open,needs-triage'
|
||||
exempt-pr-labels: 'keep-open'
|
||||
exempt-issue-labels: needs-triage
|
||||
|
|
|
@ -5,9 +5,6 @@ name: Publish & Verify AOT Compatibility
|
|||
on:
|
||||
workflow_call:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
run-verify-aot-compat:
|
||||
|
||||
|
@ -19,10 +16,10 @@ jobs:
|
|||
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Setup dotnet
|
||||
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
|
||||
uses: actions/setup-dotnet@v4
|
||||
|
||||
- name: publish AOT testApp, assert static analysis warning count, and run the app
|
||||
shell: pwsh
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
x64/
|
||||
x86/
|
||||
bld/
|
||||
[Aa]rtifacts/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
[Ll]og/
|
||||
|
@ -352,6 +351,3 @@ tempo-data/
|
|||
|
||||
# Coyote Rewrite Files
|
||||
rewrite.coyote.json
|
||||
|
||||
# Test results
|
||||
TestResults/
|
||||
|
|
|
@ -10,6 +10,3 @@ MD013:
|
|||
MD033:
|
||||
# Allowed elements
|
||||
allowed_elements: [ 'details', 'summary' ]
|
||||
|
||||
# MD059/link-text-should-be-descriptive : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.38.0/doc/md059.md
|
||||
MD059: false
|
||||
|
|
|
@ -14,33 +14,10 @@ Anyone may contribute but there are benefits of being a member of our community.
|
|||
See the [community membership
|
||||
document](https://github.com/open-telemetry/community/blob/main/community-membership.md)
|
||||
on how to become a
|
||||
[**Member**](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#member),
|
||||
[**Triager**](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#triager),
|
||||
[**Approver**](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#approver),
|
||||
[**Member**](https://github.com/open-telemetry/community/blob/main/community-membership.md#member),
|
||||
[**Approver**](https://github.com/open-telemetry/community/blob/main/community-membership.md#approver)
|
||||
and
|
||||
[**Maintainer**](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#maintainer).
|
||||
|
||||
## Give feedback
|
||||
|
||||
We are always looking for your feedback.
|
||||
|
||||
You can do this by [submitting a GitHub issue](https://github.com/open-telemetry/opentelemetry-dotnet/issues/new).
|
||||
|
||||
You may also prefer writing on [#otel-dotnet Slack channel](https://cloud-native.slack.com/archives/C01N3BC2W7Q).
|
||||
|
||||
### Report a bug
|
||||
|
||||
Reporting bugs is an important contribution. Please make sure to include:
|
||||
|
||||
* Expected and actual behavior;
|
||||
* OpenTelemetry, OS, and .NET versions you are using;
|
||||
* Steps to reproduce;
|
||||
* [Minimal, reproducible example](https://stackoverflow.com/help/minimal-reproducible-example).
|
||||
|
||||
### Request a feature
|
||||
|
||||
If you would like to work on something that is not listed as an issue
|
||||
(e.g. a new feature or enhancement) please create an issue and describe your proposal.
|
||||
[**Maintainer**](https://github.com/open-telemetry/community/blob/main/community-membership.md#maintainer).
|
||||
|
||||
## Find a buddy and get started quickly
|
||||
|
||||
|
@ -323,6 +300,9 @@ types](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-type
|
|||
* Pass [static
|
||||
analysis](https://learn.microsoft.com/dotnet/fundamentals/code-analysis/overview).
|
||||
|
||||
New projects MUST enable static analysis by specifying
|
||||
`<AnalysisLevel>latest-all</AnalysisLevel>` in the project file (`.csproj`).
|
||||
|
||||
> [!NOTE]
|
||||
> There are other project-level features enabled automatically via
|
||||
[Common.props](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/build/Common.props)
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<ArtifactsPath>$([System.IO.Path]::Combine('$(MSBuildThisFileDirectory)', 'artifacts'))</ArtifactsPath>
|
||||
<UseArtifactsOutput>true</UseArtifactsOutput>
|
||||
</PropertyGroup>
|
||||
</Project>
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<PropertyGroup>
|
||||
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
||||
<OTelLatestStableVer>1.12.0</OTelLatestStableVer>
|
||||
<OTelLatestStableVer>1.11.2</OTelLatestStableVer>
|
||||
|
||||
<!--
|
||||
This is typically the latest annual release of .NET. Use this wherever
|
||||
|
@ -31,10 +31,13 @@
|
|||
3) Since version 3.1.0, the .NET runtime team is holding a high bar for backward compatibility on
|
||||
these packages even during major version bumps, so compatibility is not a concern here.
|
||||
-->
|
||||
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="$(LatestRuntimeOutOfBandVer)" />
|
||||
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="$(LatestRuntimeOutOfBandVer)" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Diagnostics.Abstractions" Version="$(LatestRuntimeOutOfBandVer)" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="$(LatestRuntimeOutOfBandVer)" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Logging" Version="$(LatestRuntimeOutOfBandVer)" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Logging.Configuration" Version="$(LatestRuntimeOutOfBandVer)" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Options" Version="$(LatestRuntimeOutOfBandVer)" />
|
||||
|
||||
<!--
|
||||
OTel packages always point to latest stable release.
|
||||
|
@ -57,6 +60,15 @@
|
|||
even during major version bumps, so compatibility is not a concern here.
|
||||
-->
|
||||
<PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="$(LatestRuntimeOutOfBandVer)" />
|
||||
|
||||
<!--
|
||||
We use conservative versions of these packages where an upgrade might
|
||||
introduce breaking changes.
|
||||
-->
|
||||
<PackageVersion Include="Google.Protobuf" Version="[3.22.5,4.0)" />
|
||||
<PackageVersion Include="Grpc" Version="[2.44.0,3.0)" />
|
||||
<PackageVersion Include="Grpc.Core" Version="[2.44.0,3.0)" />
|
||||
<PackageVersion Include="Grpc.Net.Client" Version="[2.52.0,3.0)" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
@ -83,16 +95,11 @@
|
|||
These packages are referenced as "PrivateAssets" or used in tests/examples.
|
||||
-->
|
||||
<ItemGroup>
|
||||
<PackageVersion Include="BenchmarkDotNet" Version="0.15.2" />
|
||||
<PackageVersion Include="BenchmarkDotNet" Version="[0.13.12,0.14)" />
|
||||
<PackageVersion Include="CommandLineParser" Version="[2.9.1,3.0)" />
|
||||
<PackageVersion Include="GitHubActionsTestLogger" Version="2.4.1" />
|
||||
<PackageVersion Include="Grpc.AspNetCore" Version="[2.59.0,3.0)" />
|
||||
<PackageVersion Include="Grpc.AspNetCore.Server" Version="[2.59.0, 3.0)" />
|
||||
<PackageVersion Include="Grpc.Tools" Version="[2.59.0,3.0)" />
|
||||
<PackageVersion Include="Google.Protobuf" Version="[3.22.5,4.0)" />
|
||||
<PackageVersion Include="Grpc" Version="[2.44.0,3.0)" />
|
||||
<PackageVersion Include="Grpc.Net.Client" Version="[2.52.0,3.0)" />
|
||||
<PackageVersion Include="JunitXml.TestLogger" Version="6.1.0" />
|
||||
<PackageVersion Include="Microsoft.CSharp" Version="[4.7.0]" />
|
||||
<PackageVersion Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" Version="[3.11.0-beta1.23525.2]" />
|
||||
<PackageVersion Include="Microsoft.Coyote" Version="1.7.11" />
|
||||
|
@ -103,6 +110,7 @@
|
|||
<PackageVersion Include="Microsoft.Extensions.Telemetry.Abstractions" Version="[9.0.0,)" />
|
||||
<PackageVersion Include="Microsoft.NETFramework.ReferenceAssemblies" Version="[1.0.3,2.0)" />
|
||||
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="[17.13.0,18.0.0)" />
|
||||
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="[8.0.0,9.0)" />
|
||||
<PackageVersion Include="MinVer" Version="[5.0.0,6.0)" />
|
||||
<PackageVersion Include="NuGet.Versioning" Version="6.11.0" />
|
||||
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="[1.9.0,2.0)" />
|
||||
|
|
|
@ -3,14 +3,19 @@
|
|||
<packageSources>
|
||||
<clear />
|
||||
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
|
||||
<add key="dotnet8" value="https://dnceng.pkgs.visualstudio.com/public/_packaging/dotnet8/nuget/v3/index.json" />
|
||||
</packageSources>
|
||||
|
||||
<!-- Define mappings by adding package patterns beneath the target source. -->
|
||||
<!-- *.Tools packages will be restored from ".Net Core Tools", everything else from nuget.org. -->
|
||||
<packageSourceMapping>
|
||||
<!-- key value for <packageSource> should match key values from <packageSources> element -->
|
||||
<packageSource key="NuGet">
|
||||
<package pattern="*" />
|
||||
</packageSource>
|
||||
<packageSource key="dotnet8">
|
||||
<package pattern="Microsoft.CodeAnalysis.PublicApiAnalyzers" />
|
||||
</packageSource>
|
||||
</packageSourceMapping>
|
||||
|
||||
<disabledPackageSources />
|
||||
|
|
|
@ -254,6 +254,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{A49299
|
|||
src\Shared\ExceptionExtensions.cs = src\Shared\ExceptionExtensions.cs
|
||||
src\Shared\Guard.cs = src\Shared\Guard.cs
|
||||
src\Shared\MathHelper.cs = src\Shared\MathHelper.cs
|
||||
src\Shared\PeerServiceResolver.cs = src\Shared\PeerServiceResolver.cs
|
||||
src\Shared\PeriodicExportingMetricReaderHelper.cs = src\Shared\PeriodicExportingMetricReaderHelper.cs
|
||||
src\Shared\PooledList.cs = src\Shared\PooledList.cs
|
||||
src\Shared\ResourceSemanticConventions.cs = src\Shared\ResourceSemanticConventions.cs
|
||||
|
|
47
README.md
47
README.md
|
@ -6,11 +6,6 @@
|
|||
[](https://www.nuget.org/profiles/OpenTelemetry)
|
||||
[](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/ci.yml)
|
||||
|
||||
[](https://scorecard.dev/viewer/?uri=github.com/open-telemetry/opentelemetry-dotnet)
|
||||
[](https://www.bestpractices.dev/projects/10017)
|
||||
[](https://app.fossa.com/projects/custom%2B162%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-dotnet?ref=badge_shield&issueType=license)
|
||||
[](https://app.fossa.com/projects/custom%2B162%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-dotnet?ref=badge_shield&issueType=security)
|
||||
|
||||
The .NET [OpenTelemetry](https://opentelemetry.io/) implementation.
|
||||
|
||||
<details>
|
||||
|
@ -236,38 +231,26 @@ regardless of your experience level. Whether you're a seasoned OpenTelemetry
|
|||
developer, just starting your journey, or simply curious about the work we do,
|
||||
you're more than welcome to participate!
|
||||
|
||||
### Maintainers
|
||||
[Maintainers](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#maintainer)
|
||||
([@open-telemetry/dotnet-maintainers](https://github.com/orgs/open-telemetry/teams/dotnet-maintainers)):
|
||||
|
||||
* [Alan West](https://github.com/alanwest), New Relic
|
||||
* [Rajkumar Rangaraj](https://github.com/rajkumar-rangaraj), Microsoft
|
||||
|
||||
For more information about the maintainer role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#maintainer).
|
||||
|
||||
### Approvers
|
||||
|
||||
* [Cijo Thomas](https://github.com/cijothomas), Microsoft
|
||||
* [Martin Costello](https://github.com/martincostello), Grafana Labs
|
||||
* [Mikel Blanchard](https://github.com/CodeBlanch), Microsoft
|
||||
* [Piotr Kiełkowicz](https://github.com/Kielek), Splunk
|
||||
|
||||
For more information about the approver role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#approver).
|
||||
|
||||
### Triagers
|
||||
|
||||
* [Martin Thwaites](https://github.com/martinjt), Honeycomb
|
||||
* [Timothy "Mothra" Lee](https://github.com/TimothyMothra)
|
||||
|
||||
For more information about the triager role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#triager).
|
||||
|
||||
### Emeritus Maintainers
|
||||
[Emeritus Maintainers](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#emeritus-maintainerapprovertriager):
|
||||
|
||||
* [Mike Goldsmith](https://github.com/MikeGoldsmith)
|
||||
* [Sergey Kanzhelev](https://github.com/SergeyKanzhelev)
|
||||
* [Utkarsh Umesan Pillai](https://github.com/utpilla)
|
||||
|
||||
For more information about the emeritus role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#emeritus-maintainerapprovertriager).
|
||||
[Approvers](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#approver)
|
||||
([@open-telemetry/dotnet-approvers](https://github.com/orgs/open-telemetry/teams/dotnet-approvers)):
|
||||
|
||||
### Emeritus Approvers
|
||||
* [Cijo Thomas](https://github.com/cijothomas), Microsoft
|
||||
* [Mikel Blanchard](https://github.com/CodeBlanch), Microsoft
|
||||
* [Piotr Kiełkowicz](https://github.com/Kielek), Splunk
|
||||
|
||||
[Emeritus Approvers](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#emeritus-maintainerapprovertriager):
|
||||
|
||||
* [Bruno Garcia](https://github.com/bruno-garcia)
|
||||
* [Eddy Nakamura](https://github.com/eddynaka)
|
||||
|
@ -277,14 +260,16 @@ For more information about the emeritus role, see the [community repository](htt
|
|||
* [Robert Pająk](https://github.com/pellared)
|
||||
* [Vishwesh Bankwar](https://github.com/vishweshbankwar)
|
||||
|
||||
For more information about the emeritus role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#emeritus-maintainerapprovertriager).
|
||||
[Triagers](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#triager)
|
||||
([@open-telemetry/dotnet-triagers](https://github.com/orgs/open-telemetry/teams/dotnet-triagers)):
|
||||
|
||||
### Emeritus Triagers
|
||||
* [Martin Thwaites](https://github.com/martinjt), Honeycomb
|
||||
* [Timothy "Mothra" Lee](https://github.com/TimothyMothra), Microsoft
|
||||
|
||||
[Emeritus Triagers](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#emeritus-maintainerapprovertriager):
|
||||
|
||||
* [Victor Lu](https://github.com/victlu)
|
||||
|
||||
For more information about the emeritus role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#emeritus-maintainerapprovertriager).
|
||||
|
||||
### Thanks to all the people who have contributed
|
||||
|
||||
[](https://github.com/open-telemetry/opentelemetry-dotnet/graphs/contributors)
|
||||
|
|
|
@ -4,18 +4,6 @@ This file contains highlights and announcements covering all components.
|
|||
For more details see `CHANGELOG.md` files maintained in the root source
|
||||
directory of each individual package.
|
||||
|
||||
## 1.12.0
|
||||
|
||||
Release details: [1.12.0](https://github.com/open-telemetry/opentelemetry-dotnet/releases/tag/core-1.12.0)
|
||||
|
||||
* **Breaking Change**: `OpenTelemetry.Exporter.OpenTelemetryProtocol` now
|
||||
defaults to using OTLP/HTTP instead of OTLP/gRPC when targeting .NET Framework
|
||||
and .NET Standard. This change may cause telemetry export to fail unless
|
||||
appropriate adjustments are made. Explicitly setting OTLP/gRPC may result in a
|
||||
`NotSupportedException` unless further configuration is applied. See
|
||||
[#6209](https://github.com/open-telemetry/opentelemetry-dotnet/issues/6209) for
|
||||
full details and mitigation guidance. [#6229](https://github.com/open-telemetry/opentelemetry-dotnet/pull/6229)
|
||||
|
||||
## 1.11.1
|
||||
|
||||
Release details: [1.11.1](https://github.com/open-telemetry/opentelemetry-dotnet/releases/tag/core-1.11.1)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<Import Project=".\Common.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<NoWarn>$(NoWarn),CS1574,CS1591</NoWarn>
|
||||
<NoWarn>$(NoWarn),1574,1591</NoWarn>
|
||||
<IsPackable>false</IsPackable>
|
||||
<CodeAnalysisRuleSet>$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), 'OpenTelemetry.sln'))\build\OpenTelemetry.test.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
|
@ -21,18 +21,6 @@
|
|||
</Content>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(IsTestProject)' == 'true'">
|
||||
<PackageReference Include="GitHubActionsTestLogger" />
|
||||
<PackageReference Include="JunitXml.TestLogger" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
||||
<PackageReference Include="xunit" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" PrivateAssets="All" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(IsTestProject)' == 'true'">
|
||||
<Compile Include="$(RepoRoot)\test\Shared\StrongNameTests.cs" Link="StrongNameTests.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<!-- Running unit tests from VSCode does not work with .NET SDK 6.0.200 without ProduceReferenceAssemblyInOutDir -->
|
||||
<!-- Related breaking change: https://docs.microsoft.com/en-us/dotnet/core/compatibility/sdk/6.0/write-reference-assemblies-to-obj -->
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
<PackageProjectUrl>https://opentelemetry.io</PackageProjectUrl>
|
||||
<Authors>OpenTelemetry Authors</Authors>
|
||||
<Copyright>Copyright The OpenTelemetry Authors</Copyright>
|
||||
<PackageOutputPath Condition="$(Build_ArtifactStagingDirectory) != ''">$(Build_ArtifactStagingDirectory)</PackageOutputPath>
|
||||
<IncludeSymbols>true</IncludeSymbols>
|
||||
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
|
||||
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
|
||||
|
@ -35,8 +36,16 @@
|
|||
<ContinuousIntegrationBuild Condition="'$(Deterministic)'=='true'">true</ContinuousIntegrationBuild>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<!-- Note: Disable net6.0 target for package validation because it has been
|
||||
removed. It should be possible to remove this once a stable version has been
|
||||
released to NuGet without net6.0. -->
|
||||
<PackageValidationBaselineFrameworkToIgnore Include="net6.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MinVer" PrivateAssets="All" Condition="'$(IntegrationBuild)' != 'true'" />
|
||||
<PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All" Condition="'$(IntegrationBuild)' != 'true'" />
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" PrivateAssets="All" />
|
||||
</ItemGroup>
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<SignAssembly>true</SignAssembly>
|
||||
<RepoRoot>$([System.IO.Directory]::GetParent($(MSBuildThisFileDirectory)).Parent.FullName)</RepoRoot>
|
||||
<AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)debug.snk</AssemblyOriginatorKeyFile>
|
||||
<DefineConstants>$(DefineConstants);SIGNED</DefineConstants>
|
||||
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<Nullable>enable</Nullable>
|
||||
|
@ -13,11 +14,8 @@
|
|||
<NuGetAuditLevel>low</NuGetAuditLevel>
|
||||
<!-- Suppress warnings for repo code using experimental features -->
|
||||
<NoWarn>$(NoWarn);OTEL1000;OTEL1001;OTEL1002;OTEL1004</NoWarn>
|
||||
<AnalysisLevel>latest-All</AnalysisLevel>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(SignAssembly)' == 'true' ">
|
||||
<StrongNamePublicKey>002400000480000094000000060200000024000052534131000400000100010051C1562A090FB0C9F391012A32198B5E5D9A60E9B80FA2D7B434C9E5CCB7259BD606E66F9660676AFC6692B8CDC6793D190904551D2103B7B22FA636DCBB8208839785BA402EA08FC00C8F1500CCEF28BBF599AA64FFB1E1D5DC1BF3420A3777BADFE697856E9D52070A50C3EA5821C80BEF17CA3ACFFA28F89DD413F096F898</StrongNamePublicKey>
|
||||
<!--temporarily disable. See 3958-->
|
||||
<!--<AnalysisLevel>latest-All</AnalysisLevel>-->
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Label="BuildFlags">
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
version: '3.7'
|
||||
|
||||
services:
|
||||
tests:
|
||||
build:
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
version: '3.7'
|
||||
|
||||
services:
|
||||
tests:
|
||||
build:
|
||||
|
|
|
@ -24,9 +24,10 @@ if ($LastExitCode -ne 0)
|
|||
Write-Host $publishOutput
|
||||
}
|
||||
|
||||
$runtime = $IsWindows ? "win-x64" : ($IsMacOS ? "macos-x64" : "linux-x64")
|
||||
$app = $IsWindows ? "./OpenTelemetry.AotCompatibility.TestApp.exe" : "./OpenTelemetry.AotCompatibility.TestApp"
|
||||
|
||||
Push-Location $rootDirectory/artifacts/publish/OpenTelemetry.AotCompatibility.TestApp/release_$targetNetFramework
|
||||
Push-Location $rootDirectory/test/OpenTelemetry.AotCompatibility.TestApp/bin/Release/$targetNetFramework/$runtime
|
||||
|
||||
Write-Host "Executing test App..."
|
||||
$app
|
||||
|
|
|
@ -1,32 +1,22 @@
|
|||
param(
|
||||
[Parameter()][string]$coyoteVersion="1.7.11",
|
||||
[Parameter()][string]$coyoteVersion="1.7.10",
|
||||
[Parameter(Mandatory=$true)][string]$testProjectName,
|
||||
[Parameter(Mandatory=$true)][string]$targetFramework,
|
||||
[Parameter()][string]$categoryName="CoyoteConcurrencyTests",
|
||||
[Parameter()][string]$configuration="Release"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$env:OTEL_RUN_COYOTE_TESTS = 'true'
|
||||
|
||||
$rootDirectory = Get-Location
|
||||
|
||||
Write-Host "Install Coyote CLI."
|
||||
dotnet tool install --global Microsoft.Coyote.CLI --version $coyoteVersion
|
||||
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Microsoft.Coyote.CLI installation failed with exit code $LASTEXITCODE"
|
||||
}
|
||||
dotnet tool install --global Microsoft.Coyote.CLI
|
||||
|
||||
Write-Host "Build $testProjectName project."
|
||||
dotnet build "$rootDirectory/test/$testProjectName/$testProjectName.csproj" --configuration $configuration
|
||||
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "dotnet build failed with exit code $LASTEXITCODE"
|
||||
}
|
||||
|
||||
$artifactsPath = Join-Path $rootDirectory "artifacts/bin/$testProjectName/$($configuration.ToLowerInvariant())_$targetFramework"
|
||||
$artifactsPath = Join-Path $rootDirectory "test/$testProjectName/bin/$configuration/$targetFramework"
|
||||
|
||||
Write-Host "Generate Coyote rewriting options JSON file."
|
||||
$assemblies = Get-ChildItem $artifactsPath -Filter OpenTelemetry*.dll | ForEach-Object {$_.Name}
|
||||
|
@ -39,13 +29,6 @@ $RewriteOptionsJson | ConvertTo-Json -Compress | Set-Content -Path "$rootDirecto
|
|||
Write-Host "Run Coyote rewrite."
|
||||
coyote rewrite "$rootDirectory/test/$testProjectName/rewrite.coyote.json"
|
||||
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "coyote rewrite failed with exit code $LASTEXITCODE"
|
||||
}
|
||||
|
||||
Write-Host "Execute re-written binary."
|
||||
dotnet test "$artifactsPath/$testProjectName.dll" --framework $targetFramework --filter CategoryName=$categoryName
|
||||
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "dotnet test failed with exit code $LASTEXITCODE"
|
||||
}
|
||||
|
|
|
@ -1,11 +1,8 @@
|
|||
<Project>
|
||||
<Import Project="$([System.IO.Path]::Combine($(MSBuildThisFileDirectory), '..', 'Directory.Build.props'))" />
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), 'OpenTelemetry.sln'))\build\Common.nonprod.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFrameworks>$(TargetFrameworksForDocs)</TargetFrameworks>
|
||||
<!-- Opt-out of Artifacts Output for docs as there are duplicated project names -->
|
||||
<UseArtifactsOutput>false</UseArtifactsOutput>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
// Copyright The OpenTelemetry Authors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
namespace ComplexObjects;
|
||||
|
||||
internal struct FoodRecallNotice
|
||||
public struct FoodRecallNotice
|
||||
{
|
||||
public string? BrandName { get; set; }
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
// Copyright The OpenTelemetry Authors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
using ComplexObjects;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using OpenTelemetry.Logs;
|
||||
|
||||
|
|
|
@ -7,9 +7,7 @@ using OpenTelemetry;
|
|||
using OpenTelemetry.Logs;
|
||||
using OpenTelemetry.Trace;
|
||||
|
||||
namespace Correlation;
|
||||
|
||||
internal sealed class Program
|
||||
public class Program
|
||||
{
|
||||
private static readonly ActivitySource MyActivitySource = new("MyCompany.MyProduct.MyLibrary");
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ using OpenTelemetry.Logs;
|
|||
|
||||
namespace DedicatedLogging;
|
||||
|
||||
internal static class DedicatedLoggingServiceCollectionExtensions
|
||||
public static class DedicatedLoggingServiceCollectionExtensions
|
||||
{
|
||||
public static IServiceCollection AddDedicatedLogging(
|
||||
this IServiceCollection services,
|
||||
|
|
|
@ -3,10 +3,10 @@
|
|||
|
||||
namespace DedicatedLogging;
|
||||
|
||||
internal interface IDedicatedLogger : ILogger
|
||||
public interface IDedicatedLogger : ILogger
|
||||
{
|
||||
}
|
||||
|
||||
internal interface IDedicatedLogger<out TCategoryName> : IDedicatedLogger
|
||||
public interface IDedicatedLogger<out TCategoryName> : IDedicatedLogger
|
||||
{
|
||||
}
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
<PropertyGroup>
|
||||
<NoWarn>$(NoWarn);CA1812;CA2213</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" />
|
||||
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Extensions.Hosting\OpenTelemetry.Extensions.Hosting.csproj" />
|
||||
|
|
|
@ -5,7 +5,7 @@ using System.Text;
|
|||
using OpenTelemetry;
|
||||
using OpenTelemetry.Logs;
|
||||
|
||||
internal sealed class MyExporter : BaseExporter<LogRecord>
|
||||
internal class MyExporter : BaseExporter<LogRecord>
|
||||
{
|
||||
private readonly string name;
|
||||
|
||||
|
@ -59,7 +59,6 @@ internal sealed class MyExporter : BaseExporter<LogRecord>
|
|||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
base.Dispose(disposing);
|
||||
Console.WriteLine($"{this.name}.Dispose({disposing})");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
using OpenTelemetry;
|
||||
using OpenTelemetry.Logs;
|
||||
|
||||
internal sealed class MyProcessor : BaseProcessor<LogRecord>
|
||||
internal class MyProcessor : BaseProcessor<LogRecord>
|
||||
{
|
||||
private readonly string name;
|
||||
|
||||
|
@ -32,7 +32,6 @@ internal sealed class MyProcessor : BaseProcessor<LogRecord>
|
|||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
base.Dispose(disposing);
|
||||
Console.WriteLine($"{this.name}.Dispose({disposing})");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ using OpenTelemetry;
|
|||
|
||||
namespace ExtendingTheSdk;
|
||||
|
||||
internal sealed class Program
|
||||
public class Program
|
||||
{
|
||||
public static void Main()
|
||||
{
|
||||
|
@ -29,16 +29,16 @@ internal sealed class Program
|
|||
// logger.LogInformation($"Hello from potato {0.99}.");
|
||||
|
||||
// structured log with template
|
||||
logger.LogInformation("Hello from {Name} {Price}.", "tomato", 2.99);
|
||||
logger.LogInformation("Hello from {name} {price}.", "tomato", 2.99);
|
||||
|
||||
// structured log with strong type
|
||||
logger.LogInformation("{Food}", new Food { Name = "artichoke", Price = 3.99 });
|
||||
logger.LogInformation("{food}", new Food { Name = "artichoke", Price = 3.99 });
|
||||
|
||||
// structured log with anonymous type
|
||||
logger.LogInformation("{Food}", new { Name = "pumpkin", Price = 5.99 });
|
||||
logger.LogInformation("{food}", new { Name = "pumpkin", Price = 5.99 });
|
||||
|
||||
// structured log with general type
|
||||
logger.LogInformation("{Food}", new Dictionary<string, object>
|
||||
logger.LogInformation("{food}", new Dictionary<string, object>
|
||||
{
|
||||
["Name"] = "truffle",
|
||||
["Price"] = 299.99,
|
||||
|
@ -48,11 +48,11 @@ internal sealed class Program
|
|||
using (logger.BeginScope("[operation]"))
|
||||
using (logger.BeginScope("[hardware]"))
|
||||
{
|
||||
logger.LogError("{Name} is broken.", "refrigerator");
|
||||
logger.LogError("{name} is broken.", "refrigerator");
|
||||
}
|
||||
|
||||
// message will be redacted by MyRedactionProcessor
|
||||
logger.LogInformation("OpenTelemetry {SensitiveString}.", "<secret>");
|
||||
logger.LogInformation("OpenTelemetry {sensitiveString}.", "<secret>");
|
||||
}
|
||||
|
||||
internal struct Food
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<NoWarn>$(NoWarn);CA2000;CA1848;CA1510;CA1305</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry\OpenTelemetry.csproj" />
|
||||
</ItemGroup>
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<NoWarn>$(NoWarn);CA2213;CA1812;CA1307</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" />
|
||||
</ItemGroup>
|
||||
|
|
|
@ -59,7 +59,7 @@ too frequently. `Meter` is fairly expensive and meant to be reused throughout
|
|||
the application. For most applications, it can be modeled as static readonly
|
||||
field (e.g. [Program.cs](./getting-started-console/Program.cs)) or singleton via
|
||||
dependency injection (e.g.
|
||||
[InstrumentationSource.cs](../../examples/AspNetCore/InstrumentationSource.cs)).
|
||||
[Instrumentation.cs](../../examples/AspNetCore/Instrumentation.cs)).
|
||||
|
||||
:heavy_check_mark: You should use dot-separated
|
||||
[UpperCamelCase](https://en.wikipedia.org/wiki/Camel_case) as the
|
||||
|
@ -97,7 +97,7 @@ frequently. Instruments are fairly expensive and meant to be reused throughout
|
|||
the application. For most applications, instruments can be modeled as static
|
||||
readonly fields (e.g. [Program.cs](./getting-started-console/Program.cs)) or
|
||||
singleton via dependency injection (e.g.
|
||||
[InstrumentationSource.cs](../../examples/AspNetCore/InstrumentationSource.cs)).
|
||||
[Instrumentation.cs](../../examples/AspNetCore/Instrumentation.cs)).
|
||||
|
||||
:stop_sign: You should avoid invalid instrument names.
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ using OpenTelemetry.Resources;
|
|||
|
||||
namespace CustomizingTheSdk;
|
||||
|
||||
internal static class Program
|
||||
public class Program
|
||||
{
|
||||
private static readonly Meter Meter1 = new("CompanyA.ProductA.Library1", "1.0");
|
||||
private static readonly Meter Meter2 = new("CompanyA.ProductB.Library2", "1.0");
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<NoWarn>$(NoWarn);CA5394</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" />
|
||||
</ItemGroup>
|
||||
|
|
|
@ -8,9 +8,7 @@ using OpenTelemetry.Exporter;
|
|||
using OpenTelemetry.Metrics;
|
||||
using OpenTelemetry.Trace;
|
||||
|
||||
namespace Exemplars;
|
||||
|
||||
internal static class Program
|
||||
public class Program
|
||||
{
|
||||
private static readonly ActivitySource MyActivitySource = new("OpenTelemetry.Demo.Exemplar");
|
||||
private static readonly Meter MyMeter = new("OpenTelemetry.Demo.Exemplar");
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<NoWarn>$(NoWarn);CA5394</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.OpenTelemetryProtocol\OpenTelemetry.Exporter.OpenTelemetryProtocol.csproj" />
|
||||
</ItemGroup>
|
||||
|
|
|
@ -5,7 +5,7 @@ using System.Text;
|
|||
using OpenTelemetry;
|
||||
using OpenTelemetry.Metrics;
|
||||
|
||||
internal sealed class MyExporter : BaseExporter<Metric>
|
||||
internal class MyExporter : BaseExporter<Metric>
|
||||
{
|
||||
private readonly string name;
|
||||
|
||||
|
@ -52,7 +52,6 @@ internal sealed class MyExporter : BaseExporter<Metric>
|
|||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
base.Dispose(disposing);
|
||||
Console.WriteLine($"{this.name}.Dispose({disposing})");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ using OpenTelemetry.Metrics;
|
|||
|
||||
namespace ExtendingTheSdk;
|
||||
|
||||
internal static class Program
|
||||
public class Program
|
||||
{
|
||||
private static readonly Meter MyMeter = new("MyCompany.MyProduct.MyLibrary", "1.0");
|
||||
private static readonly Counter<long> MyFruitCounter = MyMeter.CreateCounter<long>("MyFruitCounter");
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<NoWarn>$(NoWarn);CA2000;CA1510;CA1305</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry\OpenTelemetry.csproj" />
|
||||
</ItemGroup>
|
||||
|
|
|
@ -5,9 +5,7 @@ using System.Diagnostics.Metrics;
|
|||
using OpenTelemetry;
|
||||
using OpenTelemetry.Metrics;
|
||||
|
||||
namespace GettingStartedConsole;
|
||||
|
||||
internal static class Program
|
||||
public class Program
|
||||
{
|
||||
private static readonly Meter MyMeter = new("MyCompany.MyProduct.MyLibrary", "1.0");
|
||||
private static readonly Counter<long> MyFruitCounter = MyMeter.CreateCounter<long>("MyFruitCounter");
|
||||
|
|
|
@ -6,9 +6,7 @@ using OpenTelemetry;
|
|||
using OpenTelemetry.Exporter;
|
||||
using OpenTelemetry.Metrics;
|
||||
|
||||
namespace GettingStartedPrometheusGrafana;
|
||||
|
||||
internal static class Program
|
||||
public class Program
|
||||
{
|
||||
private static readonly Meter MyMeter = new("MyCompany.MyProduct.MyLibrary", "1.0");
|
||||
private static readonly Counter<long> MyFruitCounter = MyMeter.CreateCounter<long>("MyFruitCounter");
|
||||
|
|
|
@ -8,7 +8,7 @@ using OpenTelemetry.Metrics;
|
|||
|
||||
namespace LearningMoreInstruments;
|
||||
|
||||
internal static class Program
|
||||
public class Program
|
||||
{
|
||||
private static readonly Meter MyMeter = new("MyCompany.MyProduct.MyLibrary", "1.0");
|
||||
private static readonly Histogram<long> MyHistogram = MyMeter.CreateHistogram<long>("MyHistogram");
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<NoWarn>$(NoWarn);CA5394</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry\OpenTelemetry.csproj" />
|
||||
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" />
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
// Copyright The OpenTelemetry Authors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace ExtendingTheSdk;
|
||||
|
||||
internal static partial class LoggerExtensions
|
||||
{
|
||||
[LoggerMessage(LogLevel.Information, "Hello from {Name} {Price}")]
|
||||
public static partial void HelloFrom(this ILogger logger, string name, double price);
|
||||
}
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
using OpenTelemetry.Resources;
|
||||
|
||||
internal sealed class MyResourceDetector : IResourceDetector
|
||||
internal class MyResourceDetector : IResourceDetector
|
||||
{
|
||||
public Resource Detect()
|
||||
{
|
||||
|
|
|
@ -11,7 +11,7 @@ using OpenTelemetry.Trace;
|
|||
|
||||
namespace ExtendingTheSdk;
|
||||
|
||||
internal static class Program
|
||||
public class Program
|
||||
{
|
||||
private static readonly ActivitySource DemoSource = new("OTel.Demo");
|
||||
private static readonly Meter MeterDemoSource = new("OTel.Demo");
|
||||
|
@ -55,6 +55,7 @@ internal static class Program
|
|||
}
|
||||
|
||||
var logger = loggerFactory.CreateLogger("OTel.Demo");
|
||||
logger.HelloFrom("tomato", 2.99);
|
||||
logger
|
||||
.LogInformation("Hello from {Name} {Price}", "tomato", 2.99);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ too frequently. `ActivitySource` is fairly expensive and meant to be reused
|
|||
throughout the application. For most applications, it can be modeled as static
|
||||
readonly field (e.g. [Program.cs](./getting-started-console/Program.cs)) or
|
||||
singleton via dependency injection (e.g.
|
||||
[InstrumentationSource.cs](../../examples/AspNetCore/InstrumentationSource.cs)).
|
||||
[Instrumentation.cs](../../examples/AspNetCore/Instrumentation.cs)).
|
||||
|
||||
:heavy_check_mark: You should use dot-separated
|
||||
[UpperCamelCase](https://en.wikipedia.org/wiki/Camel_case) as the
|
||||
|
|
|
@ -8,7 +8,7 @@ using OpenTelemetry.Trace;
|
|||
|
||||
namespace CustomizingTheSdk;
|
||||
|
||||
internal static class Program
|
||||
public class Program
|
||||
{
|
||||
private static readonly ActivitySource MyLibraryActivitySource = new(
|
||||
"MyCompany.MyProduct.MyLibrary");
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
using System.Diagnostics;
|
||||
using OpenTelemetry;
|
||||
|
||||
internal sealed class MyEnrichingProcessor : BaseProcessor<Activity>
|
||||
internal class MyEnrichingProcessor : BaseProcessor<Activity>
|
||||
{
|
||||
public override void OnEnd(Activity activity)
|
||||
{
|
||||
|
|
|
@ -5,7 +5,7 @@ using System.Diagnostics;
|
|||
using System.Text;
|
||||
using OpenTelemetry;
|
||||
|
||||
internal sealed class MyExporter : BaseExporter<Activity>
|
||||
internal class MyExporter : BaseExporter<Activity>
|
||||
{
|
||||
private readonly string name;
|
||||
|
||||
|
@ -43,7 +43,6 @@ internal sealed class MyExporter : BaseExporter<Activity>
|
|||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
base.Dispose(disposing);
|
||||
Console.WriteLine($"{this.name}.Dispose({disposing})");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
using System.Diagnostics;
|
||||
using OpenTelemetry;
|
||||
|
||||
internal sealed class MyProcessor : BaseProcessor<Activity>
|
||||
internal class MyProcessor : BaseProcessor<Activity>
|
||||
{
|
||||
private readonly string name;
|
||||
|
||||
|
@ -37,7 +37,6 @@ internal sealed class MyProcessor : BaseProcessor<Activity>
|
|||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
base.Dispose(disposing);
|
||||
Console.WriteLine($"{this.name}.Dispose({disposing})");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
using OpenTelemetry.Resources;
|
||||
|
||||
internal sealed class MyResourceDetector : IResourceDetector
|
||||
internal class MyResourceDetector : IResourceDetector
|
||||
{
|
||||
public Resource Detect()
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
using OpenTelemetry.Trace;
|
||||
|
||||
internal sealed class MySampler : Sampler
|
||||
internal class MySampler : Sampler
|
||||
{
|
||||
public override SamplingResult ShouldSample(in SamplingParameters param)
|
||||
{
|
||||
|
|
|
@ -8,7 +8,7 @@ using OpenTelemetry.Trace;
|
|||
|
||||
namespace ExtendingTheSdk;
|
||||
|
||||
internal static class Program
|
||||
public class Program
|
||||
{
|
||||
private static readonly ActivitySource DemoSource = new("OTel.Demo");
|
||||
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<NoWarn>$(NoWarn);CA2000;CA1812;CA1510</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry\OpenTelemetry.csproj" />
|
||||
</ItemGroup>
|
||||
|
|
|
@ -5,9 +5,7 @@ using System.Diagnostics;
|
|||
using OpenTelemetry;
|
||||
using OpenTelemetry.Trace;
|
||||
|
||||
namespace GettingStartedConsole;
|
||||
|
||||
internal static class Program
|
||||
public class Program
|
||||
{
|
||||
private static readonly ActivitySource MyActivitySource = new("MyCompany.MyProduct.MyLibrary");
|
||||
|
||||
|
@ -20,10 +18,9 @@ internal static class Program
|
|||
|
||||
using (var activity = MyActivitySource.StartActivity("SayHello"))
|
||||
{
|
||||
int[] intArray = [1, 2, 3];
|
||||
activity?.SetTag("foo", 1);
|
||||
activity?.SetTag("bar", "Hello, World!");
|
||||
activity?.SetTag("baz", intArray);
|
||||
activity?.SetTag("baz", new int[] { 1, 2, 3 });
|
||||
activity?.SetStatus(ActivityStatusCode.Ok);
|
||||
}
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ using OpenTelemetry.Trace;
|
|||
|
||||
namespace GettingStartedJaeger;
|
||||
|
||||
internal static class Program
|
||||
public class Program
|
||||
{
|
||||
private static readonly ActivitySource MyActivitySource = new("OpenTelemetry.Demo.Jaeger");
|
||||
|
||||
|
@ -33,13 +33,13 @@ internal static class Program
|
|||
{
|
||||
using (var slow = MyActivitySource.StartActivity("SomethingSlow"))
|
||||
{
|
||||
await client.GetStringAsync(new Uri("https://httpstat.us/200?sleep=1000")).ConfigureAwait(false);
|
||||
await client.GetStringAsync(new Uri("https://httpstat.us/200?sleep=1000")).ConfigureAwait(false);
|
||||
await client.GetStringAsync("https://httpstat.us/200?sleep=1000");
|
||||
await client.GetStringAsync("https://httpstat.us/200?sleep=1000");
|
||||
}
|
||||
|
||||
using (var fast = MyActivitySource.StartActivity("SomethingFast"))
|
||||
{
|
||||
await client.GetStringAsync(new Uri("https://httpstat.us/301")).ConfigureAwait(false);
|
||||
await client.GetStringAsync("https://httpstat.us/301");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ namespace LinksAndParentBasedSamplerExample;
|
|||
/// links based sampler. If either of these samplers decide to sample,
|
||||
/// this composite sampler decides to sample.
|
||||
/// </summary>
|
||||
internal sealed class LinksAndParentBasedSampler : Sampler
|
||||
internal class LinksAndParentBasedSampler : Sampler
|
||||
{
|
||||
private readonly ParentBasedSampler parentBasedSampler;
|
||||
private readonly LinksBasedSampler linksBasedSampler;
|
||||
|
|
|
@ -10,7 +10,7 @@ namespace LinksAndParentBasedSamplerExample;
|
|||
/// A non-probabilistic sampler that samples an activity if ANY of the linked activities
|
||||
/// is sampled.
|
||||
/// </summary>
|
||||
internal sealed class LinksBasedSampler : Sampler
|
||||
internal class LinksBasedSampler : Sampler
|
||||
{
|
||||
public override SamplingResult ShouldSample(in SamplingParameters samplingParameters)
|
||||
{
|
||||
|
|
|
@ -7,7 +7,7 @@ using OpenTelemetry.Trace;
|
|||
|
||||
namespace LinksAndParentBasedSamplerExample;
|
||||
|
||||
internal static class Program
|
||||
internal class Program
|
||||
{
|
||||
private static readonly ActivitySource MyActivitySource = new("LinksAndParentBasedSampler.Example");
|
||||
|
||||
|
@ -37,7 +37,7 @@ internal static class Program
|
|||
/// Generates a list of activity links. A linked activity is sampled with a probability of 0.1.
|
||||
/// </summary>
|
||||
/// <returns>A list of links.</returns>
|
||||
private static List<ActivityLink> GetActivityLinks(int seed)
|
||||
private static IEnumerable<ActivityLink> GetActivityLinks(int seed)
|
||||
{
|
||||
var random = new Random(seed);
|
||||
var linkedActivitiesList = new List<ActivityLink>();
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<NoWarn>$(NoWarn);CA5394</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" />
|
||||
</ItemGroup>
|
||||
|
|
|
@ -7,7 +7,7 @@ using OpenTelemetry.Trace;
|
|||
|
||||
namespace LinksCreationWithNewRootActivitiesDemo;
|
||||
|
||||
internal static class Program
|
||||
internal class Program
|
||||
{
|
||||
private static readonly ActivitySource MyActivitySource = new("LinksCreationWithNewRootActivities");
|
||||
|
||||
|
@ -21,7 +21,7 @@ internal static class Program
|
|||
using (var activity = MyActivitySource.StartActivity("OrchestratingActivity"))
|
||||
{
|
||||
activity?.SetTag("foo", 1);
|
||||
await DoFanoutAsync().ConfigureAwait(false);
|
||||
await DoFanoutAsync();
|
||||
|
||||
using (var nestedActivity = MyActivitySource.StartActivity("WrapUp"))
|
||||
{
|
||||
|
@ -77,7 +77,7 @@ internal static class Program
|
|||
}
|
||||
|
||||
// Wait for all tasks to complete
|
||||
await Task.WhenAll(tasks).ConfigureAwait(false);
|
||||
await Task.WhenAll(tasks);
|
||||
|
||||
// Reset to the previous activity now that we are done with the fanout
|
||||
// This will ensure that the rest of the code executes in the context of the original activity.
|
||||
|
|
|
@ -7,7 +7,7 @@ using OpenTelemetry.Trace;
|
|||
|
||||
namespace ReportingExceptions;
|
||||
|
||||
internal static class Program
|
||||
public class Program
|
||||
{
|
||||
private static readonly ActivitySource MyActivitySource = new(
|
||||
"MyCompany.MyProduct.MyLibrary");
|
||||
|
@ -27,7 +27,7 @@ internal static class Program
|
|||
{
|
||||
using (MyActivitySource.StartActivity("Bar"))
|
||||
{
|
||||
throw new InvalidOperationException("Oops!");
|
||||
throw new Exception("Oops!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ using OpenTelemetry.Trace;
|
|||
|
||||
namespace StratifiedSamplingByQueryTypeDemo;
|
||||
|
||||
internal sealed class Program
|
||||
internal class Program
|
||||
{
|
||||
private static readonly ActivitySource MyActivitySource = new("StratifiedSampling.POC");
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ using OpenTelemetry.Trace;
|
|||
|
||||
namespace StratifiedSamplingByQueryTypeDemo;
|
||||
|
||||
internal sealed class StratifiedSampler : Sampler
|
||||
internal class StratifiedSampler : Sampler
|
||||
{
|
||||
// For this POC, we have two groups.
|
||||
// 0 is the group corresponding to user-initiated queries where we want a 100% sampling rate.
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<NoWarn>$(NoWarn);CA5394</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" />
|
||||
</ItemGroup>
|
||||
|
|
|
@ -15,7 +15,7 @@ namespace SDKBasedSpanLevelTailSamplingSample;
|
|||
/// changed later by a span processor based on span attributes (e.g., failure) that become
|
||||
/// available only by the end of the span.
|
||||
/// </summary>
|
||||
internal sealed class ParentBasedElseAlwaysRecordSampler : Sampler
|
||||
internal class ParentBasedElseAlwaysRecordSampler : Sampler
|
||||
{
|
||||
private const double DefaultSamplingProbabilityForRootSpan = 0.1;
|
||||
private readonly ParentBasedSampler parentBasedSampler;
|
||||
|
|
|
@ -7,7 +7,7 @@ using OpenTelemetry.Trace;
|
|||
|
||||
namespace SDKBasedSpanLevelTailSamplingSample;
|
||||
|
||||
internal static class Program
|
||||
internal class Program
|
||||
{
|
||||
private static readonly ActivitySource MyActivitySource = new("SDK.TailSampling.POC");
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ internal sealed class TailSamplingProcessor : BaseProcessor<Activity>
|
|||
}
|
||||
else
|
||||
{
|
||||
IncludeForExportIfFailedActivity(activity);
|
||||
this.IncludeForExportIfFailedActivity(activity);
|
||||
}
|
||||
|
||||
base.OnEnd(activity);
|
||||
|
@ -42,7 +42,7 @@ internal sealed class TailSamplingProcessor : BaseProcessor<Activity>
|
|||
// 2. Traces will not be complete: Since this sampling is at a span level, the generated trace will be partial and won't be complete.
|
||||
// For example, if another part of the call tree is successful, those spans may not be sampled in leading to a partial trace.
|
||||
// 3. If multiple exporters are used, this decision will impact all of them: https://github.com/open-telemetry/opentelemetry-dotnet/issues/3861.
|
||||
private static void IncludeForExportIfFailedActivity(Activity activity)
|
||||
private void IncludeForExportIfFailedActivity(Activity activity)
|
||||
{
|
||||
if (activity.Status == ActivityStatusCode.Error)
|
||||
{
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<NoWarn>$(NoWarn);CA5394;CA2000</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" />
|
||||
</ItemGroup>
|
||||
|
|
|
@ -5,7 +5,6 @@ namespace Examples.AspNetCore.Controllers;
|
|||
|
||||
using System.Diagnostics;
|
||||
using System.Diagnostics.Metrics;
|
||||
using System.Security.Cryptography;
|
||||
using Examples.AspNetCore;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
|
@ -24,24 +23,24 @@ public class WeatherForecastController : ControllerBase
|
|||
private readonly ActivitySource activitySource;
|
||||
private readonly Counter<long> freezingDaysCounter;
|
||||
|
||||
public WeatherForecastController(ILogger<WeatherForecastController> logger, InstrumentationSource instrumentationSource)
|
||||
public WeatherForecastController(ILogger<WeatherForecastController> logger, Instrumentation instrumentation)
|
||||
{
|
||||
this.logger = logger ?? throw new ArgumentNullException(nameof(logger));
|
||||
|
||||
ArgumentNullException.ThrowIfNull(instrumentationSource);
|
||||
this.activitySource = instrumentationSource.ActivitySource;
|
||||
this.freezingDaysCounter = instrumentationSource.FreezingDaysCounter;
|
||||
ArgumentNullException.ThrowIfNull(instrumentation);
|
||||
this.activitySource = instrumentation.ActivitySource;
|
||||
this.freezingDaysCounter = instrumentation.FreezingDaysCounter;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public IEnumerable<WeatherForecast> Get()
|
||||
{
|
||||
using var scope = this.logger.BeginIdScope(Guid.NewGuid().ToString("N"));
|
||||
using var scope = this.logger.BeginScope("{Id}", Guid.NewGuid().ToString("N"));
|
||||
|
||||
// Making a http call here to serve as an example of
|
||||
// Making an http call here to serve as an example of
|
||||
// how dependency calls will be captured and treated
|
||||
// automatically as child of incoming request.
|
||||
var res = HttpClient.GetStringAsync(new Uri("http://google.com")).Result;
|
||||
var res = HttpClient.GetStringAsync("http://google.com").Result;
|
||||
|
||||
// Optional: Manually create an activity. This will become a child of
|
||||
// the activity created from the instrumentation library for AspNetCore.
|
||||
|
@ -53,18 +52,22 @@ public class WeatherForecastController : ControllerBase
|
|||
// a manual activity using Activity.Current?.SetTag()
|
||||
using var activity = this.activitySource.StartActivity("calculate forecast");
|
||||
|
||||
var rng = new Random();
|
||||
var forecast = Enumerable.Range(1, 5).Select(index => new WeatherForecast
|
||||
{
|
||||
Date = DateTime.Now.AddDays(index),
|
||||
TemperatureC = RandomNumberGenerator.GetInt32(-20, 55),
|
||||
Summary = Summaries[RandomNumberGenerator.GetInt32(Summaries.Length)],
|
||||
TemperatureC = rng.Next(-20, 55),
|
||||
Summary = Summaries[rng.Next(Summaries.Length)],
|
||||
})
|
||||
.ToArray();
|
||||
|
||||
// Optional: Count the freezing days
|
||||
this.freezingDaysCounter.Add(forecast.Count(f => f.TemperatureC < 0));
|
||||
|
||||
this.logger.WeatherForecastGenerated(LogLevel.Information, forecast.Length, forecast);
|
||||
this.logger.LogInformation(
|
||||
"WeatherForecasts generated {count}: {forecasts}",
|
||||
forecast.Length,
|
||||
forecast);
|
||||
|
||||
return forecast;
|
||||
}
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
// Copyright The OpenTelemetry Authors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
namespace Examples.AspNetCore.Controllers;
|
||||
|
||||
internal static partial class WeatherForecastControllerLog
|
||||
{
|
||||
private static readonly Func<ILogger, string, IDisposable?> Scope = LoggerMessage.DefineScope<string>("{Id}");
|
||||
|
||||
public static IDisposable? BeginIdScope(this ILogger logger, string id) => Scope(logger, id);
|
||||
|
||||
[LoggerMessage(EventId = 1, Message = "WeatherForecasts generated {Count}: {Forecasts}")]
|
||||
public static partial void WeatherForecastGenerated(this ILogger logger, LogLevel logLevel, int count, WeatherForecast[] forecasts);
|
||||
}
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>$(DefaultTargetFrameworkForExampleApps)</TargetFramework>
|
||||
<NoWarn>$(NoWarn);CA1515</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -11,15 +11,15 @@ using System.Diagnostics.Metrics;
|
|||
/// ActivitySource and Instruments. This avoids possible type collisions
|
||||
/// with other components in the DI container.
|
||||
/// </summary>
|
||||
public sealed class InstrumentationSource : IDisposable
|
||||
public class Instrumentation : IDisposable
|
||||
{
|
||||
internal const string ActivitySourceName = "Examples.AspNetCore";
|
||||
internal const string MeterName = "Examples.AspNetCore";
|
||||
private readonly Meter meter;
|
||||
|
||||
public InstrumentationSource()
|
||||
public Instrumentation()
|
||||
{
|
||||
string? version = typeof(InstrumentationSource).Assembly.GetName().Version?.ToString();
|
||||
string? version = typeof(Instrumentation).Assembly.GetName().Version?.ToString();
|
||||
this.ActivitySource = new ActivitySource(ActivitySourceName, version);
|
||||
this.meter = new Meter(MeterName, version);
|
||||
this.FreezingDaysCounter = this.meter.CreateCounter<long>("weather.days.freezing", description: "The number of days where the temperature is below freezing");
|
|
@ -13,20 +13,20 @@ using OpenTelemetry.Trace;
|
|||
var appBuilder = WebApplication.CreateBuilder(args);
|
||||
|
||||
// Note: Switch between Zipkin/OTLP/Console by setting UseTracingExporter in appsettings.json.
|
||||
var tracingExporter = appBuilder.Configuration.GetValue("UseTracingExporter", defaultValue: "CONSOLE").ToUpperInvariant();
|
||||
var tracingExporter = appBuilder.Configuration.GetValue("UseTracingExporter", defaultValue: "console").ToLowerInvariant();
|
||||
|
||||
// Note: Switch between Prometheus/OTLP/Console by setting UseMetricsExporter in appsettings.json.
|
||||
var metricsExporter = appBuilder.Configuration.GetValue("UseMetricsExporter", defaultValue: "CONSOLE").ToUpperInvariant();
|
||||
var metricsExporter = appBuilder.Configuration.GetValue("UseMetricsExporter", defaultValue: "console").ToLowerInvariant();
|
||||
|
||||
// Note: Switch between Console/OTLP by setting UseLogExporter in appsettings.json.
|
||||
var logExporter = appBuilder.Configuration.GetValue("UseLogExporter", defaultValue: "CONSOLE").ToUpperInvariant();
|
||||
var logExporter = appBuilder.Configuration.GetValue("UseLogExporter", defaultValue: "console").ToLowerInvariant();
|
||||
|
||||
// Note: Switch between Explicit/Exponential by setting HistogramAggregation in appsettings.json
|
||||
var histogramAggregation = appBuilder.Configuration.GetValue("HistogramAggregation", defaultValue: "EXPLICIT").ToUpperInvariant();
|
||||
var histogramAggregation = appBuilder.Configuration.GetValue("HistogramAggregation", defaultValue: "explicit").ToLowerInvariant();
|
||||
|
||||
// Create a service to expose ActivitySource, and Metric Instruments
|
||||
// for manual instrumentation
|
||||
appBuilder.Services.AddSingleton<InstrumentationSource>();
|
||||
appBuilder.Services.AddSingleton<Instrumentation>();
|
||||
|
||||
// Clear default logging providers used by WebApplication host.
|
||||
appBuilder.Logging.ClearProviders();
|
||||
|
@ -45,7 +45,7 @@ appBuilder.Services.AddOpenTelemetry()
|
|||
|
||||
// Ensure the TracerProvider subscribes to any custom ActivitySources.
|
||||
builder
|
||||
.AddSource(InstrumentationSource.ActivitySourceName)
|
||||
.AddSource(Instrumentation.ActivitySourceName)
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddHttpClientInstrumentation()
|
||||
.AddAspNetCoreInstrumentation();
|
||||
|
@ -55,7 +55,7 @@ appBuilder.Services.AddOpenTelemetry()
|
|||
|
||||
switch (tracingExporter)
|
||||
{
|
||||
case "ZIPKIN":
|
||||
case "zipkin":
|
||||
builder.AddZipkinExporter();
|
||||
|
||||
builder.ConfigureServices(services =>
|
||||
|
@ -65,7 +65,7 @@ appBuilder.Services.AddOpenTelemetry()
|
|||
});
|
||||
break;
|
||||
|
||||
case "OTLP":
|
||||
case "otlp":
|
||||
builder.AddOtlpExporter(otlpOptions =>
|
||||
{
|
||||
// Use IConfiguration directly for Otlp exporter endpoint option.
|
||||
|
@ -84,7 +84,7 @@ appBuilder.Services.AddOpenTelemetry()
|
|||
|
||||
// Ensure the MeterProvider subscribes to any custom Meters.
|
||||
builder
|
||||
.AddMeter(InstrumentationSource.MeterName)
|
||||
.AddMeter(Instrumentation.MeterName)
|
||||
.SetExemplarFilter(ExemplarFilterType.TraceBased)
|
||||
.AddRuntimeInstrumentation()
|
||||
.AddHttpClientInstrumentation()
|
||||
|
@ -92,7 +92,7 @@ appBuilder.Services.AddOpenTelemetry()
|
|||
|
||||
switch (histogramAggregation)
|
||||
{
|
||||
case "EXPONENTIAL":
|
||||
case "exponential":
|
||||
builder.AddView(instrument =>
|
||||
{
|
||||
return instrument.GetType().GetGenericTypeDefinition() == typeof(Histogram<>)
|
||||
|
@ -108,10 +108,10 @@ appBuilder.Services.AddOpenTelemetry()
|
|||
|
||||
switch (metricsExporter)
|
||||
{
|
||||
case "PROMETHEUS":
|
||||
case "prometheus":
|
||||
builder.AddPrometheusExporter();
|
||||
break;
|
||||
case "OTLP":
|
||||
case "otlp":
|
||||
builder.AddOtlpExporter(otlpOptions =>
|
||||
{
|
||||
// Use IConfiguration directly for Otlp exporter endpoint option.
|
||||
|
@ -129,7 +129,7 @@ appBuilder.Services.AddOpenTelemetry()
|
|||
|
||||
switch (logExporter)
|
||||
{
|
||||
case "OTLP":
|
||||
case "otlp":
|
||||
builder.AddOtlpExporter(otlpOptions =>
|
||||
{
|
||||
// Use IConfiguration directly for Otlp exporter endpoint option.
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
version: "3"
|
||||
services:
|
||||
|
||||
# OTEL Collector to receive logs, metrics and traces from the application
|
||||
|
|
|
@ -6,9 +6,7 @@ distributor:
|
|||
otlp:
|
||||
protocols:
|
||||
http:
|
||||
endpoint: 0.0.0.0:4318
|
||||
grpc:
|
||||
endpoint: 0.0.0.0:4317
|
||||
|
||||
storage:
|
||||
trace:
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>$(DefaultTargetFrameworkForExampleApps)</TargetFramework>
|
||||
<NoWarn>$(NoWarn),CA1812</NoWarn>
|
||||
<NoWarn>$(NoWarn),CS0618</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -8,7 +8,7 @@ using System.Text;
|
|||
|
||||
namespace Examples.Console;
|
||||
|
||||
internal sealed class InstrumentationWithActivitySource : IDisposable
|
||||
internal class InstrumentationWithActivitySource : IDisposable
|
||||
{
|
||||
private const string RequestPath = "/api/request";
|
||||
private readonly SampleServer server = new();
|
||||
|
@ -27,7 +27,7 @@ internal sealed class InstrumentationWithActivitySource : IDisposable
|
|||
this.server.Dispose();
|
||||
}
|
||||
|
||||
private sealed class SampleServer : IDisposable
|
||||
private class SampleServer : IDisposable
|
||||
{
|
||||
private readonly HttpListener listener = new();
|
||||
|
||||
|
@ -66,7 +66,7 @@ internal sealed class InstrumentationWithActivitySource : IDisposable
|
|||
}
|
||||
|
||||
activity?.SetTag("request.content", requestContent);
|
||||
activity?.SetTag("request.length", requestContent.Length);
|
||||
activity?.SetTag("request.length", requestContent.Length.ToString());
|
||||
|
||||
var echo = Encoding.UTF8.GetBytes("echo: " + requestContent);
|
||||
context.Response.ContentEncoding = Encoding.UTF8;
|
||||
|
@ -88,7 +88,7 @@ internal sealed class InstrumentationWithActivitySource : IDisposable
|
|||
}
|
||||
}
|
||||
|
||||
private sealed class SampleClient : IDisposable
|
||||
private class SampleClient : IDisposable
|
||||
{
|
||||
private CancellationTokenSource? cts;
|
||||
private Task? requestTask;
|
||||
|
@ -114,7 +114,7 @@ internal sealed class InstrumentationWithActivitySource : IDisposable
|
|||
count++;
|
||||
|
||||
activity?.AddEvent(new ActivityEvent("PostAsync:Started"));
|
||||
using var response = await client.PostAsync(new Uri(url, UriKind.Absolute), content, cancellationToken).ConfigureAwait(false);
|
||||
using var response = await client.PostAsync(url, content, cancellationToken).ConfigureAwait(false);
|
||||
activity?.AddEvent(new ActivityEvent("PostAsync:Ended"));
|
||||
|
||||
activity?.SetTag("http.status_code", (int)response.StatusCode);
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue