Vladimir
Эм. Не в любой крупной компании
Ну в рамках Яндекса кажется до сих пор так
George
Гуголь, Яндекс - скорее да, чем нет
George
Ну в рамках Яндекса кажется до сих пор так
Ну, монорепо, своя система сборки - ну, да. Но вопрос нужно ли это.
George
Моя цель в жизни не разбираться в каждом решении, а выделять главное
Pavel
На rsyslog
Чо с ним не так?
Vladimir
Ну, монорепо, своя система сборки - ну, да. Но вопрос нужно ли это.
У этого есть причины) как и у многих других компаний выбравших монореп и свои системы сборки
George
Чо с ним не так?
Ну, видишь, наезжают ?
Bogdan (SirEdvin)
Чо с ним не так?
С ним все нормально, на самом деле. Просто когда рассказывают про то, какой он офигенный, забывают упомянуть про то, что для этого его нужно хорошенько раскурить. Рекламируют везде как серебрянную пулю, а на практике там надо с нуля решать проблемы, которые в том же filebeat просто несуществуют для обычного пользователя.
Bogdan (SirEdvin)
Для filebeat мне хватило с головой доки, для rsyslog почему-то нет. Может это так не повезло, или я не очень, но так как люди хвалят rsyslog прикрываясь всякими "он стабилен и производителен", то я тоже могу тоже могу аппелировать к субъективным проблемам, кмк
Tadeusz
filebeat мне CPU вгружал в полку, ушли на rsyslog
Tadeusz
только в fbsd не было libnotify )
Aliaksandr
написал статью, как делать докер-имеджи размером в 5 мегабайт - https://medium.com/@valyala/stripping-dependency-bloat-in-victoriametrics-docker-image-983fb5912b0d
Igor
читать лень, но поставил лойс
Igor
вы сделали свой клиент для прометеуса на go?
Bogdan (SirEdvin)
Это скорее свой remote storage с поддержкой запросов на языке promql
λ
Я уверен у вас уже богатый опыт саппорта проектов. Как правильно реализовать логирование в (?web) Python проекте?
Vladimir
Я уверен у вас уже богатый опыт саппорта проектов. Как правильно реализовать логирование в (?web) Python проекте?
Структурированные логи (см например https://engineering.grab.com/structured-logging о граблях) Возможность менять лог левел без рестарта Сэмплирование по request id для всего что выше уровня инфо.
Vladimir
Не важно проект веб или нет, питон или нет
Bogdan (SirEdvin)
+1 к выше. правда стоит отменить, что в монолитах вместо request id можно попробовать использовать id сущности, связанной с операцией, которая логгируется
Alex
До структурированных логов народу ещё доходить и доходить 😊 RFC5424 же просто так написан
Самое интересное, что я в час ночи rfc читаю, а моя девушка-филолог на сайте проституток зависает
Sergey
Ну пусть идут в верном направлении)
Не, ну порой приходится тащить. Я серьёзно. Я реально видел своими глазами и слышал, как мне разработчик заявлял, что хочет поиск по логам (ибо с десяток железных хостов), но не хочет ничего для этого в логи добавлять. Слава яйцам, таки я его убедил, но блиииииииин.........
Alex
Кажется она поняла, что учителем не заработать
Alex
толсто
Было бы, не будь это правдой
Alex
Зря я скинул статью с хабра про аналитику
Bogdan (SirEdvin)
Я вот не пойму, это такой троллинг или как?
То есть вот я открываю RFC и что там написано. Ах да, набор каких-то полей, актуальных в 80-х и чисто для access логов и потом такое "а хреначте все поверх этого в msg".
Oleksandr
@AlexGluck тогда что-то пошлО не так
Bogdan (SirEdvin)
Просто 10 бесполезных RFC из 10
λ
А я хочу нормально слать логи, но локально видеть не json в stdout, а стандартные логи в stdout.
Alex
@AlexGluck тогда что-то пошлО не так
Не верит что средний ценник 3к
Bogdan (SirEdvin)
λ
Просто в Python (по хорошему) используется logging а к нему уже можно обработчиков нацеплять. В том числе и для отправки их в хранилище;
λ
В питоне для этого можно два хендлера сделать для логов
Вово. Только у меня gunicorn, и вот тут сложность в "логировать все" (даже падения оного) и "логировать что с обработчиком"
Bogdan (SirEdvin)
Вот в этом и твоя проблема, что ты открываешь, а не читаешь. Из коробки парсер умеет в structured data.
Ваша проблема в том, что вы залипли на одном стеке и пытаетесь его разрекламировать этим всем хипсерам на других стеках. Этот рфц про транспорт для логов, он ортагонален структурированым логам, если что
λ
Собирай через rsyslog
Эм… Это странно. Но возможно я еще не созрел 😊
Sergey
Ваша проблема в том, что вы залипли на одном стеке и пытаетесь его разрекламировать этим всем хипсерам на других стеках. Этот рфц про транспорт для логов, он ортагонален структурированым логам, если что
Отнюдь. Просто прежде чем тащить в продакшн очередную штуку, свалившуюся под ноги с hype train, я читаю доки на сервисы, которые система предоствляет искаропки.
Sergey
И RFC5424 - про протокол, всё верно. А если кто-то напишет "более лучше", чем rsyslog - пожалуйста, кто против-то?
Sergey
Только чот не видать богатырей.
Alex
Только чот не видать богатырей.
Потому что нет серебряной пули
Bogdan (SirEdvin)
Отнюдь. Просто прежде чем тащить в продакшн очередную штуку, свалившуюся под ноги с hype train, я читаю доки на сервисы, которые система предоствляет искаропки.
Что делать если в доке написано, что "ой, на убунте rsyslog протух и сконфигурен админом винды на минималках?"
Bogdan (SirEdvin)
И RFC5424 - про протокол, всё верно. А если кто-то напишет "более лучше", чем rsyslog - пожалуйста, кто против-то?
Зачем мне ваш протокол, когда нужно для логов инфу в приложении не в строку кидать, а словарем
Bogdan (SirEdvin)
А потом тот же syslogHandler и оно условно работает
Oleksandr
Старое оно. Скорее методичка
Bogdan (SirEdvin)
Вот так log.info('aaa'. extra={1:1, 2:2})
Bogdan (SirEdvin)
И работает
Евгений
Что не ночь, то сислог-срач
Евгений
Такое ощущение, что фанаты сислога по ночам вылезают из нор
Sergey
Вот так log.info('aaa'. extra={1:1, 2:2})
Ооооооо, какая знакомая срань. Питон? 😊 В приличных местах _такое_ код-ревью не проходит.
Bogdan (SirEdvin)
Адъ
А как передавать всякие скоуп метки в духе process:pay
Bogdan (SirEdvin)
На входе в функции скоупами?
Oleksandr
json
Sergey
А как передавать всякие скоуп метки в духе process:pay
Опираясь на неявный вызов repr(), который за тебя добрый дядя интерпретатор делает? Это дзену Питона не соответствует вообще никак.
Sergey
"Explcit is better than implcit".
Евгений
Честно говоря непонятно нахрена кому-то джейсон в логах, вполне достаточно таймстемп + сообщение + простое kv лейбл-значение
Sergey
Честно говоря непонятно нахрена кому-то джейсон в логах, вполне достаточно таймстемп + сообщение + простое kv лейбл-значение
Просто для того, чтобы ты потом мог выполнить поиск. Это, считай, семантическая разметка.
Евгений
log.info("crap", shit="poo")
Bogdan (SirEdvin)
Куда передавать?
Ну вот у меня логи в джейсоне. Нужно добавить к ним еще пару полей, как это делать не через extra?
Евгений
Просто для того, чтобы ты потом мог выполнить поиск. Это, считай, семантическая разметка.
Докажи, что тебе для этого плоского ассоциативного массива не хватит. В промкле хватает за глаза
Pavel
Посоны, у чем проблемма? Шлите асинхронно у сислог, а дальше там уже проблемма сислога