# OpenTelemetry Plugin Configuration
# This file configures the OpenTelemetry metrics and logs ingestion for Netdata
#
# To customize, run: edit-config otel.yaml
# Only include the fields you want to change — missing fields keep their defaults.

endpoint:
  # gRPC endpoint to listen on for OpenTelemetry data
  path: "127.0.0.1:4317"

  # Path to TLS certificate file (enables TLS when provided)
  tls_cert_path: null

  # Path to TLS private key file (required when TLS certificate is provided)
  tls_key_path: null

  # Path to TLS CA certificate file for client authentication (optional)
  tls_ca_cert_path: null

metrics:
  # Directory with configuration files for mapping OTEL metrics to Netdata charts
  chart_configs_dir: /etc/netdata/otel.d/v1/metrics

  # Collection interval in seconds (1–3600). Defines the Netdata chart update frequency.
  interval_secs: 10

  # Grace period in seconds. After the last data point, the plugin waits this long
  # before gap-filling. When interval_secs is overridden, this auto-derives as
  # 5 * interval_secs unless explicitly set.
  grace_period_secs: 60

  # Expiry duration in seconds. Charts with no data for this long are removed.
  expiry_duration_secs: 900

  # Maximum number of new charts that can be created per gRPC request.
  # Limits cardinality explosion from high-cardinality label combinations.
  max_new_charts_per_request: 100

# Directory where OpenTelemetry logs and traces are stored.
# Must be an absolute path.
base_dir: /var/log/netdata/otel/v2

remote_storage:
  # Upload data to remote object storage, in addition to keeping it on local
  # disk. One backend is shared by logs and traces.
  enabled: false

  # NEVER put credentials in this file or in the URI below. Credentials are
  # read from the netdata process environment and the standard cloud
  # locations — for S3: AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY,
  # ~/.aws/credentials, or an attached instance role (nothing to configure).
  # To pass environment variables to the netdata service, use a root-only
  # systemd EnvironmentFile.

  # Remote storage location. The scheme selects the backend (fs, s3);
  # non-secret backend options go in the query string. Examples:
  #   fs:///var/lib/netdata/otel/remote
  #   s3://bucket/prefix?region=us-east-1
  #   s3://bucket/prefix?region=us-east-1&endpoint=https://minio.example:9000
  uri: "fs:///var/log/netdata/otel/v2/remote"

  # Data deleted from local disk by retention but still in remote storage is
  # fetched back into a bounded local cache when a query needs it. Cap for
  # that cache:
  read_cache_max_size: "1GB"

auth:
  # Require senders to identify a tenant via the X-Scope-OrgID gRPC header.
  # When disabled, all data belongs to a single "default" tenant.
  # Applies to logs and traces; metrics have no tenants.
  enabled: false

logs:
  rotation:
    # Incoming logs are appended to a current file; a new file starts when
    # any of these limits is reached.
    default:
      max_file_size: "25MB"
      max_entries: 50000

    # Per-tenant overrides (any subset of the fields above):
    # my-tenant:
    #   max_file_size: "100MB"

  retention:
    # How much log data to keep on local disk; the oldest files are deleted
    # when any of these limits is exceeded.
    default:
      max_files: 100000
      max_total_size: "1GB"
      max_age: "7 days"

    # Per-tenant overrides (any subset of the fields above):
    # my-tenant:
    #   max_age: "30 days"
