Supervisor: تعطل إذا كان دليل السجل غير موجود

تم إنشاؤها على ٣ يوليو ٢٠١٥  ·  4تعليقات  ·  مصدر: Supervisor/supervisor

ورد في تعليقات العدد رقم 120:

لا أعرف ما إذا كان هذا قد تم حله بطريقة ما في الفرع الرئيسي ، ولكن في الإصدار 3.1.1 ، قام شخص ما بطريق الخطأ بإزالة دليل السجل في الخادم الخاص بنا ، وتوقف المشرف ببساطة عن العمل ، وأخذ معه جميع البرامج الأخرى ، وليس فقط البرنامج الذي يحتوي على دليل السجل مفقود.

logging

التعليق الأكثر فائدة

ثابت في fd22ca89ff353fbe92845e9d2517645e6cf149ac. سيتم تضمين هذا الإصلاح في المشرف 3.2.

إليك كيفية تكراره والتحقق من أنه تم إصلاحه. الحد الأدنى supervisord.conf :

[supervisord]
logfile = /tmp/supervisord.log

[inet_http_server]
port = 127.0.0.1:9001

[supervisorctl]
serverurl = http://127.0.0.1:9001

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[program:cat]
command = /bin/cat
stdout_logfile = /thelogdir/foo.txt
autostart = false

يجب أن يكون دليل السجل موجودًا وإلا فإن supervisord سيرفض البدء. أنشئ دليل السجل وابدأ supervisord في المقدمة بهذا التكوين:

$ mkdir /thelogdir
$ supervisord --version
3.2.0.dev0
$ supervisord -n -c /path/to/supervisord.conf
2015-08-18 14:38:52,503 INFO Increased RLIMIT_NOFILE limit to 1024
2015-08-18 14:38:52,516 INFO RPC interface 'supervisor' initialized
2015-08-18 14:38:52,516 CRIT Server 'inet_http_server' running without any HTTP authentication checking
2015-08-18 14:38:52,516 INFO supervisord started with pid 49508

قم بإزالة دليل السجل أثناء تشغيل supervisord :

$ rmdir /thelogdir

حاول أن تبدأ العملية:

$ supervisorctl -c /path/to/supervisord.conf 
cat                              STOPPED   Not started
supervisor> start cat
cat: ERROR (spawn error)
supervisor> status
cat                              FATAL     unknown error making dispatchers for 'cat': ENOENT

ال 4 كومينتر

لقد رأيت هذا السلوك وأزعجته أيضًا. أعتقد أن السلوك الصحيح هو إنشاء logdir إذا كان ذلك ممكنًا ، وعلى الأقل لا ينبغي السماح له بتعطيل المهام الأخرى

لقد رأيت هذا السلوك وأزعجته أيضًا.

متى تحدث؟ التعليق الأصلي ليس محددًا. هل يحدث عطل عندما يحدد stdout_logfile في قسم [program:x] دليل سجل غير موجود؟ ما إصدار المشرف الذي تستخدمه؟

أعتقد أن السلوك الصحيح هو إنشاء logdir إن أمكن

لا أستخدم أي برنامج آخر له سلوك كهذا. supervisord على معلومات كافية لإنشاء دليل سجل تلقائيًا ، لأنه لا يعرف أي مستخدم يجب أن يمتلك الدليل أو ما يجب أن تكون الأذونات. أعتقد أن الشيء الوحيد الذي يمكن أن يفعله دون زيادة مجموعة من الخيارات لكل هذا هو إظهار رسالة خطأ واضحة عند عدم وجود دليل سجل.

على الأقل لا ينبغي السماح لها بتعطيل المهام الأخرى

أوافق على أن إضافة قسم [program:x] حيث يحدد stdout_logfile أو stderr_logfile دليلاً غير موجود يجب ألا يؤدي إلى تعطل supervisord .

هل يحدث الانهيار عندما يحدد stdout_logfile في قسم [program: x] دليل سجل غير موجود>؟ ما إصدار المشرف الذي تستخدمه؟

نعم فعلا. بعض المشاكل بالنسبة لي 3.1.3.

ثابت في fd22ca89ff353fbe92845e9d2517645e6cf149ac. سيتم تضمين هذا الإصلاح في المشرف 3.2.

إليك كيفية تكراره والتحقق من أنه تم إصلاحه. الحد الأدنى supervisord.conf :

[supervisord]
logfile = /tmp/supervisord.log

[inet_http_server]
port = 127.0.0.1:9001

[supervisorctl]
serverurl = http://127.0.0.1:9001

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[program:cat]
command = /bin/cat
stdout_logfile = /thelogdir/foo.txt
autostart = false

يجب أن يكون دليل السجل موجودًا وإلا فإن supervisord سيرفض البدء. أنشئ دليل السجل وابدأ supervisord في المقدمة بهذا التكوين:

$ mkdir /thelogdir
$ supervisord --version
3.2.0.dev0
$ supervisord -n -c /path/to/supervisord.conf
2015-08-18 14:38:52,503 INFO Increased RLIMIT_NOFILE limit to 1024
2015-08-18 14:38:52,516 INFO RPC interface 'supervisor' initialized
2015-08-18 14:38:52,516 CRIT Server 'inet_http_server' running without any HTTP authentication checking
2015-08-18 14:38:52,516 INFO supervisord started with pid 49508

قم بإزالة دليل السجل أثناء تشغيل supervisord :

$ rmdir /thelogdir

حاول أن تبدأ العملية:

$ supervisorctl -c /path/to/supervisord.conf 
cat                              STOPPED   Not started
supervisor> start cat
cat: ERROR (spawn error)
supervisor> status
cat                              FATAL     unknown error making dispatchers for 'cat': ENOENT
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات