确保正确配置Docker和Airflow,并在EC2实例上安装所需的库和依赖项。
在Docker容器中定义正确的日志目录,并将DAG文件和日志文件挂载到Docker容器中。
示例:
version: '3'
services:
airflow:
image: apache/airflow:2.1.4-python3.8
user: "${UID:-0}:${GID:-0}"
environment:
- AIRFLOW__CORE__EXECUTOR=LocalExecutor
- AIRFLOW__CORE__SQL_ALCHEMY_CONN=postgresql+psycopg2://airflow:airflow@postgres/airflow
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./dags:/opt/airflow/dags # mount dags folder to docker container
- ./logs:/opt/airflow/logs # mount logs folder to docker container
ports:
- 8080:8080
通过将Docker容器中的"log"参数指向"DAGS_FOLDER/logs",可以将Docker和Airflow与EC2实例的日志文件链接起来。
LOG_FILENAME = os.path.join(settings.DAGS_FOLDER, 'logs/my_dag.log')
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2022, 1, 1),
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
'log_filename': LOG_FILENAME, # set log file name
}
dag = DAG(
'my_dag',
default_args=default_args,
catchup=False,
schedule_interval='*/5 * * * *',
)
这使得Airflow DAG与Docker容器中的日志文件链接,并在容器内的logs文件夹中生成日志文件。这些日志也可以在EC2实例上查看。
在Airflow DAG文件中引用日志模块,可以