-
Notifications
You must be signed in to change notification settings - Fork 2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
OTEL collector/prometheus/aspire-dashboard stack for testing purposes
Signed-off-by: Christopher Petito <[email protected]>
- Loading branch information
Showing
4 changed files
with
90 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# Sample stack for testing OTEL functionality with the CLI | ||
|
||
To test the OTEL functionality present in the CLI, you can spin up a small demo compose stack that includes: | ||
- an OTEL collector container; | ||
- a Prometheus container; | ||
- an Aspire Dashboard container | ||
|
||
The `hack/otel` directory contains the compose file with the services configured, along with 2 basic configuration files: one for the OTEL collector and one for Prometheus. | ||
|
||
## How can I use it? | ||
|
||
1) Start the compose stack by running `docker compose up -d` in the `hack/otel/` directory; | ||
2) Export the env var used to override the OTLP endpoint: | ||
`export DOCKER_CLI_OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317` (if running the CLI in a devcontainer or in other ways, you might have to change how you pass this env var); | ||
3) Run the CLI to send some metrics to the endpoint; | ||
4) Browse Prometheus at `http://localhost:9091/graph` or the Aspire Dashboard at `http://localhost:18888/metrics`; | ||
5) In Prometheus, query `command_time_milliseconds_total` to see some metrics. In Aspire, select the resource in the dropdown. | ||
|
||
> **Note**: The precise steps may vary based on how you're working on the codebase (buiding a binary and executing natively, running/debugging in a devcontainer, running the normal CLI as usual, etc... ) | ||
## Cleanup? | ||
|
||
Run `docker compose down` in the `hack/otel/` directory. | ||
|
||
You can also run `unset DOCKER_CLI_OTEL_EXPORTER_OTLP_ENDPOINT` to get rid of the OTLP override from your environment. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
name: cli-otel | ||
|
||
services: | ||
|
||
prometheus: | ||
image: prom/prometheus:latest | ||
command: | ||
- "--config.file=/etc/prometheus/prom.yaml" | ||
ports: | ||
# Publish the Prometheus frontend on localhost:9091 | ||
- 9091:9090 | ||
restart: always | ||
volumes: | ||
# Store Prometheus data in a volume: | ||
- prom_data:/prometheus | ||
# Mount the prom.yml config file | ||
- ./prom.yaml:/etc/prometheus/prom.yaml | ||
|
||
aspire-dashboard: | ||
image: mcr.microsoft.com/dotnet/nightly/aspire-dashboard:8.0-preview | ||
ports: | ||
- 18888:18888 | ||
environment: | ||
DOTNET_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS: 'true' | ||
|
||
otelcol: | ||
image: otel/opentelemetry-collector:latest | ||
restart: always | ||
depends_on: | ||
- prometheus | ||
- aspire-dashboard | ||
ports: | ||
- 4317:4317 | ||
volumes: | ||
# Mount the otelcol.yml config file | ||
- ./otelcol.yaml:/etc/otelcol/config.yaml | ||
|
||
volumes: | ||
prom_data: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
# Receive signals over gRPC and HTTP | ||
receivers: | ||
otlp: | ||
protocols: | ||
grpc: | ||
http: | ||
|
||
# Establish an endpoint for Prometheus to scrape from | ||
exporters: | ||
prometheus: | ||
endpoint: "0.0.0.0:8889" | ||
otlp/aspire: | ||
endpoint: aspire-dashboard:18889 | ||
tls::insecure: true | ||
|
||
service: | ||
pipelines: | ||
metrics: | ||
receivers: [otlp] | ||
exporters: [prometheus, otlp/aspire] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# Configure Prometheus to scrape the OTel collector endpoint | ||
scrape_configs: | ||
- job_name: "otel-collector" | ||
scrape_interval: 1s | ||
static_configs: | ||
- targets: ["otelcol:8889"] |