Size: a a a

2019 December 27

AS

Artem Savinov in rannts
Dmitry Viskov
Сложный вопрос - не отвечу
контейнеры можно запускать в одном и том же сетевом неймспейсе(если они на одном хосте)- то есть твоя приложуха сможет стучаться в сислог tcp сокет как на локалхост, если без докера проблема не проявляется, то попробуйте так(если допустим такой вариант)
источник

RH

Roman Haritonov in rannts
Dmitry Viskov
Граждане, есть такая ситуация - докер контейнер, внутри сислог хендлер шлёт логи по tcp в сислог, который крутится в другом докер контейнере. В питоне это сделано в виде отправки сообщений в сокет.
Админ рестартует сислог, и тут происходит магия - сообщения всё так же пишутся в сокет, ошибок нет, но на сислог не прилетают. Есть идеи почему так?
А как ты узнаешь, что они все еще пишутся в сокет если они не прилетают?
источник

БС

Байт Словович in rannts
У меня что то подобное было в до докеровскую эпоху, деталей не помню 😚 рсислог оказался очень мерзопакостной штукой.. и конфиги через ж пишутся и формат часто не удобный, может сообщения потерять.
Попробуй на UDP поменять.
источник

БС

Байт Словович in rannts
Кстати а кто каким способом логирует в докерах / куберах?
канонический способ это логировать всё в stdout/stderr. Но блин, им не удобно пользоваться. Вся мощь греповской  магии только с файлами работает. В общем я сейчас логирую в два места. Сначала в файл внутри контейнера, для ручных грепов / седов / лессов. И заодно пишу jsonчики в stdout, которые с помощью logstash|filebeat отправляются в ненавидимый эластик.
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Байт Словович
У меня что то подобное было в до докеровскую эпоху, деталей не помню 😚 рсислог оказался очень мерзопакостной штукой.. и конфиги через ж пишутся и формат часто не удобный, может сообщения потерять.
Попробуй на UDP поменять.
На UDP наверное имеет смысл, когда надо что бы приложуха не зависала в таймаутах, пытаясь по TCP протолкнуть что-то в подвисший Syslog. А тут видимо что-то другое - приложение не виснет, и не выдаёт ошибок при отправке в TPC, который должен был бы отвалиться
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Байт Словович
Кстати а кто каким способом логирует в докерах / куберах?
канонический способ это логировать всё в stdout/stderr. Но блин, им не удобно пользоваться. Вся мощь греповской  магии только с файлами работает. В общем я сейчас логирую в два места. Сначала в файл внутри контейнера, для ручных грепов / седов / лессов. И заодно пишу jsonчики в stdout, которые с помощью logstash|filebeat отправляются в ненавидимый эластик.
Ну к докеру можно настроить syslog драйвер и он stdout из контейнера будет туда пихать. А там уж настраивай что и куда. Хоть в файлы сохраняй, хоть в логстешь, хоть одновременно везде
источник

БС

Байт Словович in rannts
Kirill (Cykooz) Kuzminykh
На UDP наверное имеет смысл, когда надо что бы приложуха не зависала в таймаутах, пытаясь по TCP протолкнуть что-то в подвисший Syslog. А тут видимо что-то другое - приложение не виснет, и не выдаёт ошибок при отправке в TPC, который должен был бы отвалиться
так tcp соединение должно переоткрыться или ошибку какую нить выпленуть. Давно не лазил в питоновские хендлеры
источник

AS

Artem Savinov in rannts
Байт Словович
Кстати а кто каким способом логирует в докерах / куберах?
канонический способ это логировать всё в stdout/stderr. Но блин, им не удобно пользоваться. Вся мощь греповской  магии только с файлами работает. В общем я сейчас логирую в два места. Сначала в файл внутри контейнера, для ручных грепов / седов / лессов. И заодно пишу jsonчики в stdout, которые с помощью logstash|filebeat отправляются в ненавидимый эластик.
а ротируешь как - самим же питончиком?
источник

БС

Байт Словович in rannts
планировал да, но пока не дошли руки настроить 😊
источник

AS

Artem Savinov in rannts
ну хоть обнуляй раз в сутки
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
А если по теме - то мы просто монтируем /dev/log с хоста внутрь контейнера, и приложуха в него логирует как будто в локальный сислог
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
rsyslog на хосте сохраняет логи в локальный файлик с ротацией + отправляет их в логстеш
источник

DB

Dmitry Belyaninov in rannts
Вопрос такой: есть много python скриптов. Запускаются они неким шедулером, он же трекает их исполнение и убивает в случае превышения таймаута (зависания).

Суть скриптов(если прям по коду): настройка [куча импортов системных и нет, окружение, логирование], бизнес_логика [коннект к иному хосту, получение и обработка данных].

Так вот вся эта предварительная фигня выполняется условно 0.8 сек, бизнес_логика 0.01-0.02сек.

Если вызвать БЛ дважды- то общее время почти не меняется...

Как ускорить всё это хозяйство и снизить нагрузку на проц..?
Буду рад любым советам.
источник

БС

Байт Словович in rannts
только написать скедлер на питоне и все эти скрипты заимпортить. а потом дергать их main()
источник

DB

Dmitry Belyaninov in rannts
Была попытка форкаться при первом запуске, оставлять живым процесс с БЛ, чтоб в дальнейшем повторный запуск лишь отправлял команду инициирующую выполнение БЛ и завершался, возвращая результат в шедулер.
источник

DB

Dmitry Belyaninov in rannts
но уперся в выжранную память сцк
источник

БС

Байт Словович in rannts
питоновский интерпретатор тормоз. он во время старта делает миллион обращений к файловой системе 😞
источник

DB

Dmitry Belyaninov in rannts
Байт Словович
питоновский интерпретатор тормоз. он во время старта делает миллион обращений к файловой системе 😞
именно. а там пзц, если коротко, сколько всякой шляпы импортится из кучи мест
источник

БС

Байт Словович in rannts
в общем к тому варианту что я озвучил, можно добавить еще использовать другой интерпретатор, самому написать кеширующий интерпретатор, переписать на гошечку.
источник

SA

Sergey Arkhipov in rannts
Можно создать virtualenv на рамдиске, в этом случае упираться в тормоза не будете
источник