server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yml

clients:
  - url: http://loki:3100/loki/api/v1/push

scrape_configs:
  - job_name: docker
    docker_sd_configs:
      - host: unix:///var/run/docker.sock
        refresh_interval: 15s
    relabel_configs:
      - source_labels: ['__meta_docker_container_name']
        regex: '/(.*)'
        target_label: container
      - source_labels: ['__meta_docker_container_label_com_docker_compose_service']
        target_label: compose_service
      - source_labels: ['__meta_docker_container_label_com_docker_compose_project']
        target_label: compose_project
    pipeline_stages:
      - docker: {}
      - match:
          selector: '{compose_service="server"} |= "Slow API request"'
          stages:
            - metrics:
                ftb_slow_api_log_total:
                  type: Counter
                  description: Slow API request log entries emitted by the NestJS server.
                  config:
                    action: inc
      - match:
          selector: '{compose_service="server"} |= "Slow Prisma query"'
          stages:
            - metrics:
                ftb_slow_prisma_log_total:
                  type: Counter
                  description: Slow Prisma query log entries emitted by the NestJS server.
                  config:
                    action: inc
      - match:
          selector: '{compose_service="server"} |~ "AppData relation sync failed|AI 调用失败|AI 风险解读调用失败"'
          stages:
            - metrics:
                ftb_job_failure_log_total:
                  type: Counter
                  description: Compatibility sync, AI job, or background task failure logs.
                  config:
                    action: inc

