Observability Example Configuration (examples/observability)
This directory provides a complete, Docker Compose–based observability example environment, including:
- Prometheus: Metrics collection
- Grafana: Metrics visualization
- OpenTelemetry Collector: Distributed tracing data ingestion and processing
Developers can use this example to launch a local monitoring and tracing system with a single command.
Prerequisites
Please make sure the following components are installed in advance:
- Docker
- Docker Compose (or a newer Docker CLI version that supports
docker compose)
Usage
Start All Services
Enter the directory:
cd examples/observability
Run the following command to start the complete monitoring and tracing stack:
docker compose -f docker-compose.yaml up -d
After startup, you can access:
-
Prometheus: http://localhost:9090
-
Grafana: http://localhost:3000
-
OTLP receiver: Applications should send traces to the default ports of the OTel Collector (usually
4317or4318)- gRPC:
4317 - HTTP:
4318
- gRPC:
-
Jaeger UI: http://localhost:16886
Notes:
- Update the Prometheus scrape targets to match your actual application endpoints.
- Map Grafana’s service port to a port that is accessible on your machine.
- Map the Jaeger UI port to a port that is accessible on your machine.
- When starting the full stack, there is no need to start individual sub-services separately.
Start Metrics Services Only
Enter the directory:
cd examples/observability/metrics
Run the following command:
docker compose -f prometheus_compose.yaml up -d
After startup, you can access:
- Grafana: http://localhost:3000
Start Tracing Services Only
Enter the directory:
cd examples/observability/tracing
Run the following command:
docker compose -f tracing_compose.yaml up -d
After startup, you can access:
-
OTLP receiver: Applications should send traces to the default ports of the OTel Collector (usually
4317or4318)- gRPC:
4317 - HTTP:
4318
- gRPC:
-
Jaeger UI: http://localhost:16886
Directory Structure and File Descriptions
Core Startup File
| File Name | Purpose | Description |
|---|---|---|
docker-compose.yaml |
Main entry | Defines and starts the full observability stack (Prometheus, Grafana, OTel Collector, and Jaeger). This is the single entry point to launch the entire environment. |
Metrics and Monitoring Configuration
| File / Directory | Purpose | Description |
|---|---|---|
metrics |
Metrics root directory | Contains all Prometheus- and metrics-related configurations. |
prometheus.yaml |
Prometheus main config | Defines scrape targets, global scrape parameters, and optional recording rules. All monitored endpoints are defined here. |
prometheus_compose.yaml |
Prometheus Docker config | Defines the Prometheus container, volume mounts, and network settings. |
grafana/datasources/datasource.yaml |
Datasource configuration | Configures how Grafana connects to Prometheus. |
grafana/dashboards/config/dashboard.yaml |
Dashboard provisioning | Specifies the locations of dashboard JSON files to be loaded. |
grafana/dashboards/json/fastdeploy-dashboard.json |
Dashboard definition | Contains visualization layouts and queries for fastdeploy monitoring metrics. |
Distributed Tracing Configuration
| File / Directory | Purpose | Description |
|---|---|---|
tracing |
Tracing root directory | Contains all configurations related to distributed tracing. |
opentelemetry.yaml |
OTel Collector config | Defines the Collector data pipelines: |
| • receivers: receive OTLP data (traces, metrics, logs) | ||
| • processors: data processing and batching | ||
| • exporters: export data to tracing backends (such as Jaeger) or files | ||
| • extensions: health check, pprof, and zpages | ||
| • pipelines: define complete processing flows for traces, metrics, and logs | ||
tracing_compose.yaml |
Tracing Docker config | Defines the container configuration for the OTel Collector and Jaeger. |
Customization
4.1 Modify Metrics Scrape Targets
If your application’s metrics endpoint, port, or path changes, edit:
metrics/prometheus.yaml
4.2 Adjust Tracing Sampling Rate or Processing Logic
Edit:
tracing/opentelemetry.yaml
4.3 Add Custom Grafana Dashboards
- Add the new dashboard JSON file to:
grafana/dashboards/json/
- Register the dashboard so Grafana can load it automatically by editing:
grafana/dashboards/config/dashboard.yaml