# =============================================================================
# LOKI CONFIGURATION
# =============================================================================
# Single-process mode with local filesystem storage.
# Suitable for single-node clusters; for HA, switch to S3-backed storage.
apiVersion: v1
kind: ConfigMap
metadata:
  name: loki-config
  labels:
    app: vibecarbon-loki
    component: observability
data:
  loki-config.yaml: |
    auth_enabled: false

    server:
      http_listen_port: 3100
      grpc_listen_port: 9096

    common:
      path_prefix: /loki
      storage:
        filesystem:
          chunks_directory: /loki/chunks
          rules_directory: /loki/rules
      replication_factor: 1
      ring:
        instance_addr: 127.0.0.1
        kvstore:
          store: inmemory

    query_range:
      results_cache:
        cache:
          embedded_cache:
            enabled: true
            max_size_mb: 100

    schema_config:
      configs:
        - from: "2024-01-01"
          store: tsdb
          object_store: filesystem
          schema: v13
          index:
            prefix: index_
            period: 24h

    storage_config:
      tsdb_shipper:
        active_index_directory: /loki/tsdb-index
        cache_location: /loki/tsdb-cache

    limits_config:
      reject_old_samples: true
      reject_old_samples_max_age: 168h    # 7 days
      max_query_series: 5000
      max_query_parallelism: 2

    compactor:
      working_directory: /loki/compactor
      compaction_interval: 10m
      retention_enabled: true
      retention_delete_delay: 2h
      retention_delete_worker_count: 150
      # Loki 3.x requires delete_request_store when retention_enabled is true,
      # else the container crash-loops with "CONFIG ERROR: invalid compactor
      # config". Mirrors the compose fix (volumes/loki/loki-config.yml);
      # filesystem matches object_store above.
      delete_request_store: filesystem

    analytics:
      reporting_enabled: false
