Skip to main content
This document outlines the various options available for configuring Doku. For ease of use and clarity, we recommend naming the configuration file doku.yml

Properties

ingester_port
String
The ingesterPort specifies the network port that the Ingestion Server will listen to for incoming data. You can set this to any available port on your system.Example:
ingesterPort: 9044

Pricing Information Source

Doku supports using either a local file or a URL to retrieve LLM Pricing data. Comment out the option you do not wish to use.
We strongly recommend using the url method with the value set as https://raw.githubusercontent.com/dokulabs/ingester/main/assets/pricing.json.This ensures that you automatically retrieve the latest pricing information upon each startup, as the developers at Doku consistently refresh the pricing file with current data from OpenAI, Cohere and Anthropic.
local_file
Object
Local File containing the Pricing Information JSONExample:
pricingInfo:
  localFile:
    path: "/assets/pricing.json"
url
String
Provide the URL where the pricing data JSON file can be downloaded. Ensure the given URL is accessible.Example:
pricingInfo:
  url: "https://raw.githubusercontent.com/dokulabs/ingester/main/assets/pricing.json"

Database Configuration

dbConfig
Object
Configure the database connection details to connect Doku with TimescaleDB (or another Postgres compatible DB).Example:
dbConfig:
  name: "mydatabase"
  username: "myusername"
  password: "mypassword"
  host: "mydbhost.example.com"
  port: 5432
  sslMode: "require"
  maxOpenConns: 15
  maxIdleConns: 10
  dataTable: "llm_data"
  apiKeyTable: "api_keys"

Observability Platform Configuration

observabilityPlatform
Object
Choose the external platform you wish to use for exporting observability data from Doku and set enabled to true. Fill in the required fields for the chosen platform. Only one platform can be selected at a time.The following sections show example configurations for different platforms - Grafana Cloud, New Relic, and DataDog. You will need to uncomment the applicable section and provide necessary credentials such as URLs, User IDs, and API Keys corresponding to your account on the observability platform.
Ensure that the file is correctly formatted in YAML and all necessary fields are populated based on your deployment needs. Save the file and restart the Doku service to apply the new configuration.

Example Configuration File

doku.yml
ingesterPort: 9044                            # Port to run the Ingestion Server on, Example: 9044

# Comment out either 'localFile' or 'url' to use only one at a time.  
pricingInfo:
  # localFile:
  #   path: "/assets/pricing.json" # Path to local JSON file with LLM Pricing data
  url: "https://raw.githubusercontent.com/dokulabs/ingester/main/assets/pricing.json" # URL to download Pricing data file

# Configuration for the Doku Backend Database (TimescaleDB)
dbConfig:
  name: "DBNAME"                              # Name of the database, Example: "postgres"
  username: "USERNAME"                        # Username to connect to the database, Example: "admin"
  password: "PASSWORD"                        # Password to connect to the database, Example: "DOKU"
  host: "HOSTURL"                             # Hostname of the database, Example: "174.21.1.2"
  port: DBPORT                                # Port of the database, Example: 5432
  sslMode: SSLMODE                            # SSL Mode of the database, Example: "require"
  maxOpenConns: MAXOPENCONNS                  # Maximum number of open connections to the database, Example: 15
  maxIdleConns: MAXOPENCONNS                  # Maximum number of idle connections to the database, Example: 15
  dataTable: DATATABLE                        # Name of the table to store LLM Data, Example: "DOKU"
  apiKeyTable: APIKEYTABLE                    # Name of the table to store API Keys, Example: "APIKEYS"

# Configure Platform to export LLM Observability Data from Doku
# Only one platform can be enabled at a time, To enable a platform, set enabled to true and fill in the required fields for that platform.
observabilityPlatform:
  enabled: false                                                 # Enable or Disable the Observability Platform, Example: true
  # grafanaCloud:
  #   promUrl: "influx-line-proxy-url"                           # URL to the Influx Line Proxy URL of the Grafana Cloud Prometheus Instance
  #   promUsername: "prometheus-userid"                          # Prometheus User ID of the Grafana Cloud Prometheus Instance
  #   lokiUrl: "loki-push-url"                                   # URL to the Loki Push URL of the Grafana Cloud Loki Instance
  #   lokiUsername: "loki-username"                              # Loki Username of the Grafana Cloud Loki Instance
  #   accessToken: "grafana-cloud-access-token"                  # Access Token of the Grafana Cloud Instance

  # newRelic:
  #   metricsUrl: "https://metric-api.newrelic.com/metric/v1"    # URL to the New Relic Metric API
  #   logsUrl: "https://log-api.newrelic.com/log/v1"             # URL to the New Relic Log API
  #   key: "newrelic-api-key"                                    # Ingest API Key of the New Relic Account

  # datadog:
  #   metricsUrl: "https://api.datadoghq.com/api/v1/series"        # URL to the DataDog Metrics API
  #   logsUrl: "https://http.logs.datadoghq.com/api/v2/logs"       # URL to the DataDog Logs API
  #   apiKey: "datadog-api-key"                                    # API Key of the DataDog Account