Files
FastDeploy/docs/observability

Observability Example Configuration (examples/observability)

This directory provides a complete, Docker Composebased 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:

Notes:

  • Update the Prometheus scrape targets to match your actual application endpoints.
  • Map Grafanas 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:


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 4317 or 4318)

    • gRPC: 4317
    • HTTP: 4318
  • 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 applications 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

  1. Add the new dashboard JSON file to:
grafana/dashboards/json/
  1. Register the dashboard so Grafana can load it automatically by editing:
grafana/dashboards/config/dashboard.yaml