Некоторые DAG воздушного потока записывают журналы в S3, некоторые нет - PullRequest
0 голосов
/ 30 января 2020

Большинство моих групп доступности баз данных в Airflow (версии 1.10.6 и 1.10.7) могут успешно загружать журналы на S3, и я могу просматривать эти удаленные журналы в интерфейсе Airflow просто отлично. Однако у меня есть несколько групп DAG, которые не будут загружать журналы DAG на S3 после завершенных прогонов DAG (успешно или нет). Это те же группы обеспечения доступности баз данных, которые демонстрируют такое поведение, но я не могу найти никаких расхождений в коде, которые бы препятствовали загрузке журналов группы доступности баз данных по сравнению с группами обеспечения доступности баз данных, которые могут загружать журналы в S3.

Я заметил, что группы обеспечения доступности баз данных, которые не загружают журналы в S3, всегда имеют записи о конечном запуске, например:

2020-01-29 20:12:06,763 - INFO - Task exited with return code 0 - None

В то время как группы обеспечения доступности баз данных, которые загружают журналы в S3, не имеют таких записей журнала. Я также вижу записи, подобные приведенной ниже, во всех группах обеспечения доступности баз данных, но я вижу примерно в 2 раза больше этих сообщений в группах обеспечения доступности баз данных, которые не загружают журналы на S3:

DEBUG - The s3 config key is not a dictionary type, ignoring its value of: None

Кроме того, группы обеспечения доступности баз данных, загружающие на S3, имеют Пул соединений воздушного потока / AWS ссылки, относящиеся к S3, как показано ниже:

[2020-01-29 20:41:32,852] {{connectionpool.py:203}} INFO - Starting new HTTP connection (1): <IP>
[2020-01-29 20:41:32,895] {{connectionpool.py:735}} INFO - Starting new HTTPS connection (1): <BUCKET>.s3.amazonaws.com
[2020-01-29 20:41:32,932] {{connectionpool.py:735}} INFO - Starting new HTTPS connection (2): <BUCKET>.s3.amazonaws.com
[2020-01-29 20:41:32,949] {{connectionpool.py:735}} INFO - Starting new HTTPS connection (1): <BUCKET>.s3.<REGION>.amazonaws.com
[2020-01-29 20:41:32,984] {{connectionpool.py:735}} INFO - Starting new HTTPS connection (2): <BUCKET>.s3.<REGION>.amazonaws.com
[2020-01-29 20:41:33,040] {{connectionpool.py:203}} INFO - Starting new HTTP connection (1): <IP>
[2020-01-29 20:41:33,065] {{connectionpool.py:735}} INFO - Starting new HTTPS connection (1): <BUCKET>.s3.amazonaws.com
[2020-01-29 20:41:33,084] {{connectionpool.py:735}} INFO - Starting new HTTPS connection (1): <BUCKET>.s3.<REGION>.amazonaws.com

Однако группы DAG, которые не загружаются на S3, не имеют таких записей. Вместо этого у них есть следующее, чего нет в группах обеспечения доступности баз данных, которые могут загружать журналы на S3:

2020-01-29 20:12:06,763 - INFO - Task exited with return code 0 - None
2020-01-29 20:12:06,942 - ERROR - Exception during reset or similar - None
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 693, in _finalize_fairy
    fairy._reset(pool)
  File "/usr/local/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 880, in _reset
    pool._dialect.do_rollback(self)
  File "/usr/local/lib/python3.7/site-packages/sqlalchemy/engine/default.py", line 538, in do_rollback
    dbapi_connection.rollback()
psycopg2.OperationalError: SSL error: decryption failed or bad record mac

Exception ignored in: <function _ConnectionRecord.checkout.<locals>.<lambda> at 0x7f94e04fa3b0>
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 503, in <lambda>
  File "/usr/local/lib/python3.7/site-packages/sqlalchemy/pool/base.py", line 702, in _finalize_fairy
  File "/usr/local/lib/python3.7/logging/__init__.py", line 1407, in error
  File "/usr/local/lib/python3.7/logging/__init__.py", line 1514, in _log
  File "/usr/local/lib/python3.7/logging/__init__.py", line 1524, in handle
  File "/usr/local/lib/python3.7/logging/__init__.py", line 1586, in callHandlers
  File "/usr/local/lib/python3.7/logging/__init__.py", line 894, in handle
  File "/usr/local/lib/python3.7/logging/__init__.py", line 1126, in emit
  File "/usr/local/lib/python3.7/logging/__init__.py", line 1116, in _open
NameError: name 'open' is not defined

Я не совсем уверен, как это исправить. Я пытался бросать различные дротики в темноте безуспешно:

  • Переключение между версиями Airflow 1.10.6 и 1.10.7.
  • Подтверждено, что журналы могут быть отправлены на S3 через мою собственную библиотеку регистраторов из экземпляров Airflow во всех группах обеспечения доступности баз данных, включая те, где Airflow не может загрузить свои собственные журналы в S3.
  • Увеличены размеры sql_alchemy_pool в файле airflow.cfg, а также в увеличении аппаратного обеспечения кластера, как я уже читал, ошибка в работе psycopg2 может быть связана с количеством соединений с БД метаданных.

Однако ни одно из вышеперечисленного не оказало никакого влияния по вопросу. Я не решаюсь публиковать более подробные дампы журнала из-за конфиденциальной информации / учетных данных / et c. выдается в журналах DEBUG, но если есть дополнительная информация, которую я могу предоставить, пожалуйста, дайте мне знать, и я сделаю все возможное, чтобы предоставить ее.

1 Ответ

0 голосов
/ 03 апреля 2020

Библиотека журналов, которую мы использовали, неправильно настраивала root и дочерние регистраторы, что, как мне кажется, влияло на конфигурацию регистратора Airflow. Изменение библиотеки журналов, не относящейся к Airflow, для настройки ее собственного «root» с дочерними элементами решило эту проблему, и некоторые другие проблемы с журналированием, с которыми мы столкнулись, не связанные с Airflow.

https://docs.python.org/3/howto/logging-cookbook.html#using -logging- и множество модулей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...