Ctrl K
ComunidadGuías…

config.example.yaml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
address: 127.0.0.1:8888

telemetry:
  log:
    level: debug
    # For writing to a file
    exporters:
      # file:
      #   enabled: true
      #   filepath: "./openmeter.log"
      #   prettyprint: true  # optional

termination:
  # checkInterval defines the time period used for updating the readiness check based on the termination status.
  checkInterval: 1s
  # gracefulShutdownTimeout defines the maximum time for the process to gracefully stop on receiving stop signal.
  gracefulShutdownTimeout: 30s
  # propagationTimeout defines how long to block the termination process in order
  # to allow the termination event to be propagated to other systems. e.g. reverse proxy.
  # Its value should be set higher than the failure threshold for readiness probe.
  # In Kubernetes it should be: readiness.periodSeconds * (readiness.failureThreshold + 1) + CheckInterval
  # propagationTimeout must always less than GracefulShutdownTimeout.
  propagationTimeout: 3s

server:
  # readHeaderTimeout is the maximum time allowed to read request headers.
  # Protects against Slowloris attacks. Should be short.
  readHeaderTimeout: 10s
  # readTimeout is the maximum time allowed to read the entire request including the body.
  readTimeout: 60s
  # writeTimeout is the maximum time allowed to write a response.
  # Must be shorter than the ingress gateway's upstream timeout.
  writeTimeout: 90s
  # idleTimeout is the maximum time a keep-alive connection remains idle before being closed.
  idleTimeout: 120s
  responseValidation:
    # mode selects which v3 routes have their response bodies validated against the OpenAPI spec.
    # Violations are logged as warnings; the client response is never affected.
    # Validation buffers the full response body in memory.
    #   off      — validation disabled (default)
    #   unstable — validate only routes marked x-unstable: true in the spec
    #   all      — validate every v3 route (highest overhead)
    mode: "all"
  clientIPMiddleware:
    # source defines how to obtain the client IP address.
    source: "remote-address" # "remote-address" | "header" | "x-forwarded-for"
    # header defines the header name to get the client IP address from if the source is set to "header".
    header: "X-Real-IP"
    # trustedIPPrefixes defines a list of IP prefixes for trusted proxies used to determine the real client IP address from "X-Forwarded-For" HTTP header.
    # Use this setting if source is set to "x-forwarded-for".
    trustedIPPrefixes: [
      "10.0.0.0/8",
      "172.16.0.0/12",
      "192.168.0.0/16",
    ]
    # trustedProxies defines the number of trusted proxies used to determine the real client IP address from "X-Forwarded-For" HTTP header.
    # Use this setting if source is set to "x-forwarded-for" and trustedIPPrefixes is not set (trustedIPPrefixes takes precedence when both are set).
    trustedProxies: 2

#ingest:
#  kafka:
#    # To enable stats reporting set this value to >=5s.
#    # Setting this value to 0 makes reporting explicitly disabled.
#    statsInterval: 5s
#    # Set IP address family used for communicating with Kafka cluster
#    brokerAddressFamily: v4
#    # Use this configuration parameter to define how frequently the local metadata cache needs to be updated.
#    # It cannot be lower than 10 seconds.
#    topicMetadataRefreshInterval: 1m
#    # Use this config parameter to enable TCP keep-alive in order to prevent the Kafka broker to close idle network connection.
#    socketKeepAliveEnabled: true
#    # Set list of debug contexts to enable for librdkafka
#    # See: https://github.com/confluentinc/librdkafka/blob/master/INTRODUCTION.md#debug-contexts
#    debugContexts:
#      - broker
#      - topic
#    topicProvisioner:
#      # The maximum number of entries stored in topic cache at a time which after the least recently used is evicted.
#      # Setting it to 0 makes the cache size unlimited.
#      cacheSize: 250
#      # CacheTTL stores maximum time an entries is kept in cache before being evicted.
#      # Setting it to 0 disables cache entry expiration.
#      cacheTTL: 5m

# dedupe:
#   enabled: true
#   driver: redis
#   config:
#     address: 127.0.0.1:6379
#     database: 0
#     expiration: 768h # 32d

# entitlements:
#   gracePeriod: P1D

billing:
  # Always log invoice sanity failures; also block invoice app calls when true.
  enforceInvoiceSanityChecks: false
  # for production deployments it's recommended to use queued for server only
  # advancementStrategy: foreground
  featureSwitches:
    # 0 collects all eligible pending invoice lines. Positive values cap each
    # collected standard invoice to the earliest N lines by service period start.
    maxLinesPerCollectedInvoice: 0
    subscriptionSyncForceAsyncAdvance: true

credits:
  enabled: true
  enableCreditThenInvoice: false

# unitConfig gates the UnitConfig feature on rate cards (conversion + rounding
# of metered quantities before rating). Off by default: unit_config is rejected
# on create/update and rating is unchanged. Enable per environment during rollout.
unitConfig:
  enabled: false

apps:
  baseURL: https://example.com
  # stripe:
  #   disableWebhookRegistration: true

# System event generation
events:
  enabled: false
# systemEvents:
#   enabled: true
#   topic: om_sys.api_events
#   autoProvision:
#     enabled: true
#     partitions: 4
# ingestEvents:
#   enabled: true
#   topic: om_sys.ingest_events
#   autoProvision:
#     enabled: true
#     partitions: 8

# Consumer portal
# portal:
#   enabled: true
#   tokenSecret: this-isnt-secure

postgres:
  url: postgres://postgres:postgres@localhost:5432/postgres?sslmode=disable
  autoMigrate: migration # Valid values are: migration, migration-job, false
  # Maximum size of the connection pool. When unset, pgx defaults to max(4, NumCPU), which can be
  # exhausted by concurrent API requests. Size it well above the peak number of in-flight requests.
  # See https://github.com/openmeterio/openmeter/pull/5433 (nested acquire fix) and
  # https://github.com/openmeterio/openmeter/pull/5261 (e2e tests use a pool of 64).
  #
  # With `url`, set it in the query string: pool_max_conns=64
  #   url: postgres://postgres:postgres@localhost:5432/postgres?sslmode=disable&pool_max_conns=64
  #
  # With separate fields and no `url`, use `options` (ignored when `url` is set):
  #   host: localhost
  #   port: 5432
  #   user: postgres
  #   password: postgres
  #   database: postgres
  #   options:
  #     poolMaxConns: 64

meters:
  # Sample meter to count API requests
  - slug: api_requests_total        # Unique identifier for the meter
    description: API Requests
    eventType: request              # Filter events by type
    aggregation: COUNT              # Aggregation method: COUNT, SUM, etc.
    groupBy:
      method: $.method              # HTTP Method: GET, POST, etc.
      route: $.route                # Route: /products/:product_id

  # Sample meter to count LLM Token Usage
  - slug: tokens_total
    description: AI Token Usage
    eventType: prompt               # Filter events by type
    aggregation: SUM
    valueProperty: $.tokens         # JSONPath to parse usage value
    groupBy:
      model: $.model                # AI model used: gpt4-turbo, etc.
      type: $.type                  # Prompt type: input, output, system

  # Sample meter to count workload runtime
  - slug: workload_runtime_duration_seconds
    description: Workload runtime duration in seconds
    eventType: workload                       # Filter events by type
    aggregation: SUM
    valueProperty: $.duration_seconds         # JSONPath to parse usage value
    groupBy:
      region: $.region                        # Cloud region: us-east-1, etc.
      zone: $.zone                            # Cloud zone: us-east-1a, etc.
      instance_type: $.instance_type          # Instance type: t2.micro, etc.

notification:
  enabled: true
#  webhook:
#    eventTypeRegistrationTimeout: 30s
#    skipEventTypeRegistrationOnError: false

# Enable the following configuration to use Svix to deliver webhooks.
# The default webhook handler is a noop handler and only logs operations.
# svix:
#   apiKey: secret
#   serverURL: http://localhost:8071

#sink:
#  logDroppedEvents: true
#  kafka:
#    brokers: 127.0.0.1:9092,127.0.0.2:9092
#    securityProtocol: SASL_SSL
#    saslMechanisms: PLAIN
#    saslUsername: user
#    saslPassword: pass
#    # To enable stats reporting set this value to >=5s.
#    # Setting this value to 0 makes reporting explicitly disabled.
#    statsInterval: 5s
#    # Set IP address family used for communicating with Kafka cluster
#    brokerAddressFamily: v4
#    # Use this configuration parameter to define how frequently the local metadata cache needs to be updated.
#    # It cannot be lower than 10 seconds.
#    topicMetadataRefreshInterval: 1m
#    # Use this config parameter to enable TCP keep-alive in order to prevent the Kafka broker to close idle network connection.
#    socketKeepAliveEnabled: true
#    # Set list of debug contexts to enable for librdkafka
#    # See: https://github.com/confluentinc/librdkafka/blob/master/INTRODUCTION.md#debug-contexts
#    debugContexts:
#      - broker
#      - topic
#    # Consumer/Producer identifier
#    clientID: kafka-client-1
#    # Rack identifier (e.g. availability zone) the client is running in.
#    # Enables rack-aware consumer group assignment and fetching from the closest replica.
#    clientRack: use1-az1
#    # Consumer group identifier
#    consumerGroupID: consumer-group
#    # Static membership identifier in consumer group
#    consumerGroupInstanceID: consumer-group-1
#    # Consumer group session and failure detection timeout.
#    # The consumer sends periodic heartbeats (heartbeatInterval) to indicate its liveness to the broker.
#    #	If no hearts are received by the broker for a group member within the session timeout,
#    #	the broker will remove the consumer from the group and trigger a rebalance.
#    sessionTimeout: 5m
#    # Consumer group session keepalive heartbeat interval
#    heartbeatInterval: 3s
#    # Automatically and periodically commit offsets in the background
#    enableAutoCommit: true
#    # Automatically store offset of last message provided to application.
#    # The offset store is an in-memory store of the next offset to (auto-)commit for each partition.
#    enableAutoOffsetStore: false
#    # AutoOffsetReset defines the action to take when there is no initial offset in offset store or the desired offset is out of range:
#    #	* "smallest","earliest","beginning": automatically reset the offset to the smallest offset
#    #	* "largest","latest","end": automatically reset the offset to the largest offset
#    #	* "error":  trigger an error (ERR__AUTO_OFFSET_RESET) which is retrieved by consuming messages and checking 'message->err'.
#    autoOffsetReset: "error"
#    # partitionAssignmentStrategy defines one or more partition assignment strategies.
#    # The elected group leader will use a strategy supported by all members of the group to assign partitions to group members.
#    # If there is more than one eligible strategy, preference is determined by the order of this list (strategies earlier in the list have higher priority).
#    # Cooperative and non-cooperative (eager) strategies must not be mixed.
#    partitionAssignmentStrategy:
#      - range
#      - roundrobin
#      - cooperative-sticky


# progressManager:
#   enabled: true
#   expiration: 5m
#   redis:
#     address: 127.0.0.1:6379
#     database: 0
#     # Other redis options as needed

# taxcode configures the list of tax codes to be auto-provisioned on namespace creation.
# taxcode:
#   seeds:
#     - key: default
#       name: "Provider default"
#       defaultInvoicing: true
#     - key: nontaxable
#       name: "Nontaxable"
#       defaultCreditGrant: true
#       appMappings:
#         - appType: stripe
#           taxCode: "txcd_00000000"