Dagster Instance การกำหนดค่า config ใน dagster.yaml

Dagster Instance การกำหนดค่า config ใน dagster.yaml

Overview

DagsterInstance คือตัวกำหนดค่าที่ Dagster ต้องการ โดยจะ config ทำใน dagster.yaml ตัวอย่างเช่น ตำแหน่งที่จะจัดเก็บ history การรันที่ผ่านมาและบันทึกที่เกี่ยวข้อง การสตรีม raw logs จากฟังก์ชันการคำนวณของ solid วิธีจัดเก็บ local artifacts ในเครื่องและวิธีเปิดใช้การ runs

Processes และ Services ทั้งหมดที่เกิดขึ้นใน Dagster ควรแชร์ไฟล์ config ไว้ใน instance เดียว เพื่อให้แต่ละส่วนสามารถแบ่งปันข้อมูลได้อย่างมีประสิทธิภาพ

** สำหรับการกำหนดค่าที่สำคัญบางอย่าง เช่น การ execution แบบขนาน จะถูกตั้งค่าแบบ per-pipeline-run มากกว่าบน instance ดู Pipeline Runs สำหรับการกำหนดค่า pipeline **

Default local behavior

เมื่อเริ่มใช้งาน Dagster process เช่น ใน Dagit หรือ Dagster CLI commands ตัว Dagster จะพยายามโหลด instance ถ้าได้กำหนด environment variable ที่ชื่อ DAGSTER_HOME ไว้ Dagster จะมองหา config file ที่ $DAGSTER_HOME/dagster.yaml ไฟล์นี้จะมีการกำหนดค่าแต่ละรายการที่ประกอบขึ้นเป็น instance

โดยปกติแล้ว ถ้าหากไม่มี dagster.yaml หรือไม่มีการระบุไฟล์ในนั้น Dagster จะเก็บข้อมูลตามด่านล่างนี้ใน local filesystem ตามนี้

$DAGSTER_HOME
├── dagster.yaml
├── history
│   ├── runs
│   │   ├── 00636713-98a9-461c-a9ac-d049407059cd.db
│   │   └── ...
│   └── runs.db
└── storage
    ├── 00636713-98a9-461c-a9ac-d049407059cd
    │   └── compute_logs
    │       ├── my_solid.compute.complete
    │       ├── my_solid.compute.err
    │       ├── my_solid.compute.out
    │       └── ...
    └── ...

runs.db และ {run_id}.db files คือ SQLite database files ที่จะเก็บข้อมูลเกี่ยวกับ pipeline runs และ per-run event logs ตามลำดับ ใน compute_logs directories (หนึ่งรายการต่อการทำงานของไปป์ไลน์) จะเก็บ stdout และ stderr logs จากการ execution ของ compute functions ของแต่ละ solid ใน pipeline

ถ้า DAGSTER_HOME ไม่ถูกกำหนดไว้ ตัว Dagster tools จะสร้าง instance ชั่วคราวขึ้นมาเพื่อใช้ทำงาน ในกรณีนี้ การจัดเก็บบันทึกการทำงาน (run) และ event log storages จะถูกเก็บอยู่ในหน่วยความจำแทนที่จะเก็บไว้ในดิสก์ และ filesystem storage จะถูกเก็บใน directory ชั่วคราว ซึ่งจะถูกลบออกเมื่อจบกระบวนการ การทำงานแบบนี้เหมาะกับการ test และเป็นค่า default เมื่อเรียกใช้ Python API เช่น execute_pipeline โดยตรง

Instance Configuration YAML

ในการปรับใช้ Dagster แบบ deployment โดยทั่วไปจะต้องการกำหนดค่าส่วนประกอบต่างๆ หลายค่าบน instance ตัวอย่างเช่น ต้องการใช้ Postgres instance เพื่อจัดเก็บการรันและบันทึก event logs ที่เกี่ยวข้อง และเพื่อสตรีมบันทึกการคำนวณไปยัง S3 bucket

ในการทำงานแบบนี้ ให้ระบุไฟล์ $DAGSTER_HOME/dagster.yaml Dagit และ Dagster tools ทั้งหมดจะค้นหาไฟล์นี้เมื่อเริ่มต้นการทำงาน ใน dagster.yaml file คุณสามารถกำหนดค่าต่างๆ ของ Dagster Instance ของคุณได้ ซึ่งทั้งหมดมีรายละเอียดด้านล่างนี้

Dagster รองรับการดึงค่าอินสแตนซ์ YAML จากตัวแปร environment variables โดยใช้คีย์ env: ตามด้วย ชื่อตัวแปลที่มี value ตามที่กำหนด

Run Storage

configures  นี้จะเป็นการกำหนดค่า history ของการ runs จะบอกว่า run อะไรไปบ้าง ซึ่งรวมถึงข้อมูล metadata ของสถานะการ run,  timestamps ที่เกี่ยวข้อง และข้อมูลที่เป็นประโยชน์อื่นๆ เพื่อตรวจสอบประวัติการ run

ในการกำหนดค่า Run Storage คุณควรตั้งค่าแอตทริบิวต์ run_storage ใน dagster.yaml ของคุณ มีสามตัวเลือกที่ใช้ได้ตามนี้:

SqliteRunStorage (Default)

SqliteRunStorage เป็นการใช้ Sqlite DB เป็นที่เก็บข้อมูล

# there are two ways to set run_storage to SqliteRunStorage

# this config manually sets the directory (`base_dir`) for Sqlite to store run information in:
run_storage:
  module: dagster.core.storage.runs
  class: SqliteRunStorage
  config:
    base_dir: /path/to/dir

# and this config grabs the directory from an environment variable
run_storage:
  module: dagster.core.storage.runs
  class: SqliteRunStorage
  config:
    base_dir:
      env: SQLITE_RUN_STORAGE_BASE_DIR

PostgresRunStorage

PostgresRunStorage เป็นการใช้ Postgres DB เป็นที่เก็บข้อมูล

# There are three ways to set run_storage to PostgresRunStorage

# this config manually sets the Postgres credentials
run_storage:
  module: dagster_postgres.run_storage
  class: PostgresRunStorage
  config:
    postgres_db:
      username: { DAGSTER_PG_USERNAME }
      password: { DAGSTER_PG_PASSWORD }
      hostname: { DAGSTER_PG_HOSTNAME }
      db_name: { DAGSTER_PG_DB }
      port: 5432

# and this config grabs the database credentials from environment variables
run_storage:
  module: dagster_postgres.run_storage
  class: PostgresRunStorage
  config:
    postgres_db:
      username:
        env: DAGSTER_PG_USERNAME
      password:
        env: DAGSTER_PG_PASSWORD
      hostname:
        env: DAGSTER_PG_HOST
      db_name:
        env: DAGSTER_PG_DB
      port: 5432

# and this config sets the credentials via DB connection string / url:
run_storage:
  module: dagster_postgres.run_storage
  class: PostgresRunStorage
  config:
    postgres_url: { PG_DB_CONN_STRING }

# This config gets the DB connection string / url via environment variables:
run_storage:
  module: dagster_postgres.run_storage
  class: PostgresRunStorage
  config:
    postgres_url:
      env: PG_DB_CONN_STRING

MySQLRunStorage

MySQLRunStorage เป็นการใช้ MySQL DB เป็นที่เก็บข้อมูล

# There are three ways to set run_storage to MySQLRunStorage

# this config manually sets the MySQL credentials
run_storage:
  module: dagster_mysql.run_storage
  class: MySQLRunStorage
  config:
  mysql_db:
    username: { DAGSTER_MYSQL_USERNAME }
    password: { DAGSTER_MYSQL_PASSWORD }
    hostname: { DAGSTER_MYSQL_HOSTNAME }
    db_name: { DAGSTER_MYSQL_DB }
    port: 3306


# and this config grabs the database credentials from environment variables
run_storage:
  module: dagster_mysql.run_storage
  class: MySQLRunStorage
  config:
    mysql_db:
      username:
        env: DAGSTER_MYSQL_USERNAME
      password:
        env: DAGSTER_MYSQL_PASSWORD
      hostname:
        env: DAGSTER_MYSQL_HOSTNAME
      db_name:
        env: DAGSTER_MYSQL_DB
      port: 3306

# and this config sets the credentials via DB connection string / url:
run_storage:
  module: dagster_mysql.run_storage
  class: MySQLRunStorage
  config:
    mysql_url: { MYSQL_DB_CONN_STRING }

# this config grabs the MySQL connection string from environment variables
run_storage:
  module: dagster_mysql.run_storage
  class: MySQLRunStorage
  config:
    mysql_url:
      env: MYSQL_DB_CONN_STRING

Event Log Storage

ส่วนนี้จะทำหน้าที่ควบคุมโครงสร้างของ event logs ที่เกิดขึ้นในการ run แต่ละครั้ง ซึ่งรวมถึงเหตุการณ์ที่เกี่ยวข้องกับ solids starting/running/completing, pipeline events, และ event ที่เกี่ยวกับข้อมูล

ในการกำหนดค่า Event Log Storage คุณควรตั้งค่าแอตทริบิวต์ event_log_storage ใน dagster.yaml ของคุณ มีสี่ตัวเลือกที่ใช้ได้:

SqliteEventLogStorage (Default)

SqliteEventLogStorage ใช้ฐานข้อมูล Sqlite เป็นที่เก็บข้อมูลสำหรับ event logs อย่างไรก็ตาม ในแต่ละครั้งของการ run ใช้ฐานข้อมูล Sqlite แยกต่างหาก (เช่น ไดเร็กทอรี) สำหรับการรันแต่ละครั้ง ที่เก็บข้อมูลคือ _run-sharded_ ซึ่งหมายความว่าคุณลักษณะที่มีประโยชน์บางอย่าง เช่น Assets page จะไม่สามารถใช้งานได้ เนื่องจาก Dagster ไม่สามารถดำเนินการสืบค้นข้ามการทำงานได้

โปรดทราบว่าเมื่อปล่อยแอตทริบิวต์ event_log_storage ว่างไว้ Run Storage จะถูกตั้งค่าเป็น Sqlite โดยค่าเริ่มต้น หากคุณต้องการระบุ event_log_storage ด้วยตนเอง ให้เพิ่มข้อมูลโค้ดต่อไปนี้ใน dagster.yaml ของคุณ:

# there are two ways to set `event_log_storage` to SqliteEventLogStorage

# the first manually sets the directory (`base_dir`) to write event log data to:
event_log_storage:
  module: dagster.core.storage.event_log
  class: SqliteEventLogStorage
  config:
    base_dir: /path/to/dir

# and the second grabs the directory from an environment variable
event_log_storage:
  module: dagster.core.storage.event_log
  class: SqliteEventLogStorage
  config:
    base_dir:
      env: SQLITE_EVENT_LOG_STORAGE_BASE_DIR

ConsolidatedSqliteEventLogStorage (Experimental)

ConsolidatedSqliteEventLogStorage มีขึ้นเพื่อเลียนแบบพฤติกรรมของการจัดเก็บบันทึกเหตุการณ์บน Postgres หรือ MySQL เนื่องจากไม่ใช่ _run sharded_ กล่าวคือ การรันทั้งหมดจะคงอยู่ใน Sqlite DB เดียวกัน ซึ่งช่วยให้สามารถสืบค้นข้ามการ run ได้ (& ดังนั้นจึงใช้คุณลักษณะ Dagster บางอย่าง เช่น Assets page)

# there are two ways to set `event_log_storage` to ConsolidatedSqliteEventLogStorage

# the first manually sets the directory (`base_dir`) to write event log data to:
event_log_storage:
  module: dagster.core.storage.event_log
  class: ConsolidatedSqliteEventLogStorage
  config:
    base_dir: /path/to/dir

# and the second grabs the directory from an environment variable
event_log_storage:
  module: dagster.core.storage.event_log
  class: ConsolidatedSqliteEventLogStorage
  config:
    base_dir:
      env: CONSOLIDATED_SQLITE_EVENT_LOG_STORAGE_BASE_DIR

PostgresEventLogStorage

PostgresEventLogStorage ใช้ฐานข้อมูล Postgres ในการจัดเก็บ Event Log Storage

# There are four ways to set event_log_storage to PostgresEventLogStorage

# this config manually sets the Postgres credentials
event_log_storage:
  module: dagster_postgres.event_log
  class: PostgresEventLogStorage
  config:
    postgres_db:
      username: { DAGSTER_PG_USERNAME }
      password: { DAGSTER_PG_PASSWORD }
      hostname: { DAGSTER_PG_HOSTNAME }
      db_name: { DAGSTER_PG_DB }
      port: 5432

# and this config grabs the database credentials from environment variables
event_log_storage:
  module: dagster_postgres.event_log
  class: PostgresEventLogStorage
  config:
    postgres_db:
      username:
        env: DAGSTER_PG_USERNAME
      password:
        env: DAGSTER_PG_PASSWORD
      hostname:
        env: DAGSTER_PG_HOST
      db_name:
        env: DAGSTER_PG_DB
      port: 5432

# and this config sets the credentials via DB connection string / url:
event_log_storage:
  module: dagster_postgres.event_log
  class: PostgresEventLogStorage
  config:
    postgres_url: { PG_DB_CONN_STRING }

# This config gets the DB connection string / url via environment variables:
event_log_storage:
  module: dagster_postgres.event_log
  class: PostgresEventLogStorage
  config:
    postgres_url:
      env: PG_DB_CONN_STRING

MySQLEventLogStorage

MySQLEventLogStorage ใช้ฐานข้อมูล MySQL ในการจัดเก็บ Event Log Storage

# There are four ways to set event_log_storage to MySQLRunStorage

# this config manually sets the MySQL credentials
event_log_storage:
  module: dagster_mysql.event_log
  class: MySQLEventLogStorage
  config:
  mysql_db:
    username: { DAGSTER_MYSQL_USERNAME }
    password: { DAGSTER_MYSQL_PASSWORD }
    hostname: { DAGSTER_MYSQL_HOSTNAME }
    db_name: { DAGSTER_MYSQL_DB }
    port: 3306


# and this config grabs the database credentials from environment variables
event_log_storage:
  module: dagster_mysql.event_log_storage
  class: MySQLEventLogStorage
  config:
    mysql_db:
      username:
        env: DAGSTER_MYSQL_USERNAME
      password:
        env: DAGSTER_MYSQL_PASSWORD
      hostname:
        env: DAGSTER_MYSQL_HOSTNAME
      db_name:
        env: DAGSTER_MYSQL_DB
      port: 3306

# and this config sets the credentials via DB connection string / url:
event_log_storage:
  module: dagster_mysql.event_log_storage
  class: MySQLEventLogStorage
  config:
    mysql_url: { MYSQL_DB_CONN_STRING }

# this config grabs the MySQL connection string from environment variables
event_log_storage:
  module: dagster_mysql.event_log_storage
  class: MySQLEventLogStorage
  config:
    mysql_url:
      env: MYSQL_DB_CONN_STRING

Schedule Storage

ตัวเลือกนี้ใช้เก็บข้อมูลเพื่อให้ scheduler ใช้จัดการ state ของ schedules (เช่น การติดตามการทำงานในคิว) และบันทึกข้อมูลที่เกี่ยวข้องกับการทำนของส่วนนี้

การกำหนดค่าของ Schedule Storage คุณควรตั้งค่า key schedule_storage ใน dagster.yaml ซึ่งมีสามตัวเลือกที่ใช้ได้:

SqliteScheduleStorage (Default)

SqliteScheduleStorage ใช้ Sqlite DB เป็นโซลูชันการจัดเก็บข้อมูล Schedule

# there are two ways to set `schedule_storage` to SqliteScheduleStorage

# the first manually sets the directory (`base_dir`) to write schedule-related data to:
schedule_storage:
  module: dagster.core.storage.schedules
  class: SqliteScheduleStorage
  config:
    base_dir: /path/to/dir

# the second grabs the directory from an environment variable
schedule_storage:
  module: dagster.core.storage.schedules
  class: SqliteScheduleStorage
  config:
    base_dir:
      env: SQLITE_SCHEDULE_STORAGE_DIRECTORY

PostgreScheduleStorage

PostgresScheduleStorage ใช้ Postgres DB เป็นโซลูชันการจัดเก็บข้อมูล Schedule

# There are three ways to set schedule_storage to PostgresScheduleStorage

# this config manually sets the Postgres credentials
schedule_storage:
  module: dagster_postgres.schedule_storage
  class: PostgresScheduleStorage
  config:
    postgres_db:
      username: { DAGSTER_PG_USERNAME }
      password: { DAGSTER_PG_PASSWORD }
      hostname: { DAGSTER_PG_HOSTNAME }
      db_name: { DAGSTER_PG_DB }
      port: 5432

# and this config grabs the database credentials from environment variables
schedule_storage:
  module: dagster_postgres.schedule_storage
  class: PostgresScheduleStorage
  config:
    postgres_db:
      username:
        env: DAGSTER_PG_USERNAME
      password:
        env: DAGSTER_PG_PASSWORD
      hostname:
        env: DAGSTER_PG_HOST
      db_name:
        env: DAGSTER_PG_DB
      port: 5432

# and this config sets the credentials via DB connection string / url:
schedule_storage:
  module: dagster_postgres.schedule_storage
  class: PostgresScheduleStorage
  config:
    postgres_url: { PG_DB_CONN_STRING }

# This config gets the DB connection string / url via environment variables:
schedule_storage:
  module: dagster_postgres.schedule_storage
  class: PostgresScheduleStorage
  config:
    postgres_url:
      env: PG_DB_CONN_STRING

MySQLScheduleStorage

MySQLScheduleStorage ใช้ MySQL DB เป็นโซลูชันการจัดเก็บข้อมูล Schedule

# There are three ways to set schedule_storage to MySQLScheduleStorage

# this config manually sets the MySQL credentials
schedule_storage:
  module: dagster_mysql.schedule_storage
  class: MySQLScheduleStorage
  config:
  mysql_db:
    username: { DAGSTER_MYSQL_USERNAME }
    password: { DAGSTER_MYSQL_PASSWORD }
    hostname: { DAGSTER_MYSQL_HOSTNAME }
    db_name: { DAGSTER_MYSQL_DB }
    port: 3306


# and this config grabs the database credentials from environment variables
schedule_storage:
  module: dagster_mysql.schedule_storage
  class: MySQLScheduleStorage
  config:
    mysql_db:
      username:
        env: DAGSTER_MYSQL_USERNAME
      password:
        env: DAGSTER_MYSQL_PASSWORD
      hostname:
        env: DAGSTER_MYSQL_HOSTNAME
      db_name:
        env: DAGSTER_MYSQL_DB
      port: 3306

# and this config sets the credentials via DB connection string / url:
schedule_storage:
  module: dagster_mysql.schedule_storage
  class: MySQLScheduleStorage
  config:
    mysql_url: { MYSQL_DB_CONN_STRING }

# this config grabs the MySQL connection string from environment variables
schedule_storage:
  module: dagster_mysql.schedule_storage
  class: MySQLScheduleStorage
  config:
    mysql_url:
      env: MYSQL_DB_CONN_STRING

Run Launcher

ส่วนนี้จะเป็นการกำหนดว่าจะ execute การ run ที่ไหน

มีสองตัวเลือกที่ Dagster จัดเตรียมให้สำหรับ Run Launcher; ผู้ใช้ยังสามารถเขียน custom run launchers เองได้ ตรวจสอบหน้า Run Launcher page สำหรับข้อมูลเพิ่มเติม

ในการกำหนดค่า Run Launcher ตั้งค่า run_launcher ใน dagster.yaml ด้วยวิธีใดวิธีหนึ่งต่อไปนี้

DefaultRunLauncher (Default)

DefaultRunLauncher จะเรียก new process ใน node เดียวกันกับตำแหน่ง pipeline โปรดดูที่ Run Launcher Docs สำหรับข้อมูลเพิ่มเติม

run_launcher:
  module: dagster.core.launcher
  class: DefaultRunLauncher

K8sRunLauncher

K8sRunLauncher จะจัดสรร Kubernetes Job ต่อการ run โปรดดูที่ Run Launcher Docs สำหรับข้อมูลเพิ่มเติม

# there are multiple ways to configure the K8sRunLauncher

# you can set the follow configuration values directly
run_launcher:
  module: dagster_k8s.launcher
  class: K8sRunLauncher
  config:
    service_account_name: pipeline_run_service_account
    job_image: my_project/dagster_image:latest
    instance_config_map: dagster-instance
    postgres_password_secret: dagster-postgresql-secret

# alternatively, you can grab any of these config values from environment variables:
run_launcher:
  module: dagster_k8s.launcher
  class: K8sRunLauncher
  config:
    service_account_name:
      env: PIPELINE_RUN_SERVICE_ACCOUNT
    job_image:
      env: DAGSTER_IMAGE_NAME
    instance_config_map:
      env: DAGSTER_INSTANCE_CONFIG_MAP
    postgres_password_secret:
      env: DAGSTER_POSTGRES_SECRET

Run Coordinator

ส่วนนี้จะเป็นการกำหนดนโยบายที่ใช้ในการกำหนดกฎการจัดลำดับความสำคัญและขีดจำกัดการทำงานพร้อมกัน โปรดดูที่ Run Coordinator Docs สำหรับข้อมูลเพิ่มเติมและความช่วยเหลือในการแก้ปัญหา

ในการกำหนดค่า Run Coordinator ให้กำหนดค่าคีย์ run_coodinator ใน dagster.yaml ของคุณ มีสองตัวเลือก:

DefaultRunCoordinator (Default)

DefaultRunCoordinator จะส่งการรันไปยังตัวเรียกใช้งานทันที (ไม่มีการรัน Queued)

ดูข้อมูลเพิ่มเติมใน Run Coordinator Docs

# Since DefaultRunCoordinator is the default option, omitting the `run_coordinator` key will also suffice,
# but if you would like to set it explicitly:
run_coordinator:
  module: dagster.core.run_coordinator
  class: DefaultRunCoordinator

QueuedRunCoordinator

QueuedRunCoordinator ช่วยให้คุณสามารถกำหนดขีดจำกัดจำนวนการรันที่สามารถดำเนินการได้ในครั้งเดียว สิ่งนี้จะส่งงานที่ต้อง run ไปยัง Dequeuer process (เช่น Scheduler / Daemon) ผ่าน run storage โปรดทราบว่าการดำเนินการนี้ต้องใช้ daemon process เพื่อเปิดใช้งานการทำงานจริง

ตัวเลือกนี้มีความเป็นไปได้หลายอย่างในการกำหนดค่า ซึ่งทำให้ทั้ง Scheduler และ Daemon สามารถจำกัดจำนวนการรันได้พร้อมกันทั้งหมด และขีดจำกัดที่กำหนดได้มากขึ้นตาม run tags - เช่น ในบริการคลาวด์อาจสามารถรองรับการทำงานพร้อมกันได้ 4 ตัวเท่านั้น ดังนั้นจึงต้องมีการควบคุมปริมาณ เพื่อหลีกเลี่ยงปัญหาที่อาจเกิดขึ้นได้

ดูรายละเอียดเพิ่มเติมได้ที่ Run Coordinator Docs

# There are a few ways to configure the QueuedRunCoordinator:

# this first option has concurrency limits set to default values
run_coordinator:
  module: dagster.core.run_coordinator
  class: QueuedRunCoordinator

# this second option manually specifies limits:
run_coordinator:
  module: dagster.core.run_coordinator
  class: QueuedRunCoordinator
  config:
    max_concurrent_runs: 25
    tag_concurrency_limits:
      - key: "database"
        value: "redshift"
        limit: 4
      - key: "dagster/backfill"
        limit: 10

# as always, some or all of these values can be obtained from environment variables:
run_coordinator:
  module: dagster.core.run_coordinator
  class: QueuedRunCoordinator
  config:
    max_concurrent_runs:
      env: DAGSTER_OVERALL_CONCURRENCY_LIMIT
    tag_concurrency_limits:
      - key: "database"
        value: "redshift"
        limit:
          env: DAGSTER_REDSHIFT_CONCURRENCY_LIMIT
      - key: "dagster/backfill"
        limit:
          env: DAGSTER_BACKFILL_CONCURRENCY_LIMIT

Compute Log Storage

Compute log storage จะทำหน้าที่ควบคุมการ capture และสถานะความคงอยู่ของ stdout & stderr text logs

ในการกำหนดค่า Compute Log Storage ให้ตั้งค่าคีย์ compute_logs ใน dagster.yaml ของคุณ

LocalComputeLogManager (Default)

LocalComputeLogManager จะทำหน้าที่เขียน stdout & stderr logs ไปยังดิสก์

# there are two ways to set the directory that the LocalComputeLogManager writes
# stdout & stderr logs to

# You could directly set the `base_dir` key
compute_logs:
  module: dagster.core.storage.local_compute_log_manager
  class: LocalComputeLogManager
  config:
    base_dir: /path/to/directory

# Alternatively, you could set the `base_dir` key to an environment variable
compute_logs:
  module: dagster.core.storage.local_compute_log_manager
  class: LocalComputeLogManager
  config:
    base_dir:
      env: LOCAL_COMPUTE_LOG_MANAGER_DIRECTORY

AzureBlobComputeLogManager

AzureBlobComputeLogManager จะทำหน้าที่เขียน stdout & stderr logs ไปยัง Azure Blob Storage

# there are multiple ways to configure the AzureBlobComputeLogManager

# you can set the necessary configuration values directly:
compute_logs:
  module: dagster_azure.blob.compute_log_manager
  class: AzureBlobComputeLogManager
  config:
    storage_account: mycorp-dagster
    container: compute-logs
    secret_key: foo
    local_dir: /tmp/bar
    prefix: dagster-test-

# alternatively, you can obtain any of these config values from environment variables
compute_logs:
  module: dagster_azure.blob.compute_log_manager
  class: AzureBlobComputeLogManager
  config:
    storage_account:
      env: MYCORP_DAGSTER_STORAGE_ACCOUNT_NAME
    container:
      env: CONTAINER_NAME
    secret_key:
      env: SECRET_KEY
    local_dir:
      env: LOCAL_DIR_PATH
    prefix:
      env: DAGSTER_COMPUTE_LOG_PREFIX

S3ComputeLogManager

S3ComputeLogManager จะทำหน้าที่เขียน stdout & stderr logs ไปยัง AWS S3

# there are multiple ways to configure the S3ComputeLogManager

# you can set the config values directly:
compute_logs:
  module: dagster_aws.s3.compute_log_manager
  class: S3ComputeLogManager
  config:
    bucket: "mycorp-dagster-compute-logs"
    prefix: "dagster-test-"

# or grab some or all of them from environment variables
compute_logs:
  module: dagster_aws.s3.compute_log_manager
  class: S3ComputeLogManager
  config:
    bucket:
      env: MYCORP_DAGSTER_COMPUTE_LOGS_BUCKET
    prefix:
      env: DAGSTER_COMPUTE_LOG_PREFIX

Local Artifact Storage

ใช้เพื่อกำหนดค่าการจัดเก็บข้อมูลสำหรับ artifacts ใดๆ ที่ต้องใช้ดิสก์ภายในเครื่อง เช่น schedules หรือเมื่อใช้ filesystem IO manager เพื่อจัดการตัวกลาง

โปรดทราบว่า pipeline มี artifacts ที่ต้องส่งผ่าน IO manager ซึ่งไม่ได้กำหนดค่าด้วยวิธีนี้ แต่มีการกำหนดค่าในระดับ pipeline แทน (เช่น ผ่าน IO Managers)

ในการกำหนดค่า Local Artifact Storage ให้ตั้งค่า local_artifact_storage ดังต่อไปนี้ใน dagster.yaml ของคุณ:

LocalArtifactStorage (Default)

LocalArtifactStorage เป็นเพียงทางเลือกเดียวสำหรับ Local Artifact Storage ส่วนนี้กำหนดค่าไดเร็กทอรีที่ใช้โดย default filesystem IO Manager เช่นเดียวกับทุก schedule ที่เกี่ยวกับ artifacts ที่ require จะใช้ local disk

# there are two possible ways to configure LocalArtifactStorage

# example local_artifact_storage setup pointing to /var/shared/dagster directory
local_artifact_storage:
  module: dagster.core.storage.root
  class: LocalArtifactStorage
  config:
    base_dir: "/path/to/dir"

# alternatively, `base_dir` can be set to an environment variable
local_artifact_storage:
  module: dagster.core.storage.root
  class: LocalArtifactStorage
  config:
    base_dir:
      env: DAGSTER_LOCAL_ARTIFACT_STORAGE_DIR

Telemetry

This allows opting in/out (set to true by default) of Dagster collecting anonymized usage statistics.

To configure Telemetry, set the telemetry key in your dagster.yaml.

For more information on how and why we use telemetry, please visit the Telemetry Docs.

# Allows opting out of Dagster collecting usage statistics.
telemetry:
  enabled: false