Maxim
Вот я пока хер знает, как им помочь
Anonymous
да, мне бы тоже хотелось знать когда "деплой завершился" или "ну не смогла я, давай хозяин все откатим" - доки пошерстил и че-то не нашел возможных эндпоинтов
Maxim
Нене
Maxim
Это легко
Anonymous
через prometeus?
Anonymous
а по поводу мониторинга деплоев (ну когда ошибки происходят) - я пока заюзал opbeat.com, он бесплатный
Anonymous
правда подход не совсем правильный: это я библиотеку в код вставляю которая ошибки шлет
Dmitry
Для логов пытаюсь fluentd + graylog2
У вас не 12factors app? В stdout же проще + ES +kibana
Maxim
ну так эти стдауты собрать же надо
Maxim
флюент для сборки
Dmitry
ну в кубернтесе это из коробки
Dmitry
fluentd
Maxim
через prometeus?
не, банальнее все spec: template: spec: containters: - <container> lifecycle: postStart: exec: command: - /bin/bash - /app/bin/post_start_notify.sh
Maxim
есть еще preStop
Anonymous
ну тут мы узнаем о том что под стартанул
Anonymous
если мы разворачиваем на 10 инстансов...
Maxim
> да, мне бы тоже хотелось знать когда "деплой завершился" ответ на этот вопрос
Maxim
костыльненько
вариант знатоков? ;)
Dmitry
Прометус?) И кастомные метрики
Maxim
метрики из чего?
Dmitry
ну например kubectl дергать и смотреть статус подов/деплоймента
Maxim
я могу в прометее узнать, что running_containers_total стало +=1 за последнюю минуту
Anonymous
кстати, по поводу 12 факторов: а вот есть stdout/stderr, условно говоря это log.info и log.error... а если я хочу log.warn иметь и log.debug то как поступать?
Maxim
но какой конкретно контейнер добавился - уже не могу
Dmitry
мы выплевываем json в stdout , там уже тип ошибки указывается
Dmitry
кибана /ES все парсит
Anonymous
хм ну да ок
Dmitry
самая проблема в stdout в пхп
Dmitry
там php-fpm к каждому сообщению добавляет ворнинг
Maxim
s/в stdout//
Dmitry
s/в stdout//
ну была идея писать в fifo
Dmitry
Можно конечно писать в fifo и тейлить его в контейнере
Dmitry
но тогда в контейнере уже два процесса
Maxim
да нет, это была шутка если из фразы "самая проблема в stdout в пхп" убрать "в stdout", то получится "самая проблема в пхп"
Maxim
ну я типа под хейтера закосил
Maxim
шучу-шучу
Maxim
хаха-хаха...
Dmitry
да ладно, пэхэпэ норм, я вообще свою карьеру с битрикса начинал)
Dmitry
тот еще зашквар
Maxim
я вот тут не понял ты вроде как соглашаешься, с тем что флюент из коробки, но говоришь, что лучше лось
Maxim
ну в кубернтесе это из коробки
Maxim
fluentd
Dmitry
лучше что?
Maxim
ELK
Dmitry
Ну они в связке с fluentd работают
Maxim
ну то есть понятно, что скорее всего на миллионах событий в секунду флюентд наверное усреццо но это труднодостижимый кейс сам по себе
Dmitry
и собирают логи с кластера
Maxim
ааа, это было ELK vs graylog2
Dmitry
http://kubernetes.io/docs/getting-started-guides/logging-elasticsearch/
Dmitry
С fluentd кстати забавно вообще было, мы добавили правило в конфиг, посылать копию всех записей в сислог на другом сервере, так у нас стали рандомом пропадать сообщения и в ELK и в сислоге, причем разные
Maxim
o_O
Dmitry
ну и в логах пусто, я даже через strace уже процесс смотрел
Dmitry
никаких ошибок
Dmitry
отключили это - все перестало пропадать
Maxim
по поводу мониторинга деплоев и кастомных метрик
Maxim
программисты у меня тут ленивые, поэтому мне пришлось написать им обертку вокруг kubectl
Maxim
такой недохельм
kay
страсти какие
Maxim
она обновляет версию в манифесте и пушает все в гитхаб с деплойным тегом
Maxim
в итоге получается так:
kay
кстати какую ACL используешь для программистов?
Maxim
скрипт (да и деплой вообще) сейчас работает так: 1. обновление версии в манифесте 2. git commit; git tag -a; git push; git push —tags 3. kubectl apply -f <манифест> дальше скрипт умирает, а все остальное разделяется на два потока 1. квай получает хук от гитхаба и начинает билдить образ 2. кубернетес получает обновленный манифест и начинает готовить его к запуску 2.1 подготавливается новый под в состоянии pending 2.2 качается образ с квая (до усера, пока квай его не опубликует) после того, как квай собрал и опубликовал новый образ 2.3 образ скачивается на ту ноду, где под в состоянии pending 2.4 гасится один из старых подов 2.5 под, бывший в состоянии pending, получает образ и стартует 2.6 гасится второй старый под 2.7 поднимается второй новый под ... профит
kay
об этом
Maxim
токены для аутентификации, ABAC для авторизации
kay
"версия в манифесте" ты имеешь в виду tag?
Maxim
да
Maxim
и вот этот вышеописанный процесс надо как-то отмониторить
Maxim
пока что в голову пришла только такая схема:
Maxim
шаг 1: в скрипте куда-то высираем номер версии, которую деплоим шаг 2: в постСтарт хуке контейнера высираем туда же номер версии, которая задеплоилась цифирьки сошлись - улюлю, все хорошо цифирьки не сошлись - какое-то говно второй цифирьки нет больше н-минут - что-то с вероятностью пошло не так
Maxim
но куда срать и чем ловить пока не придумал
Maxim
нужен совет знатоков ;)
Anonymous
а почему не запустить какой-нибудь CI сервер прямо в кубике? тогда все может происходить в одном pipeline
Maxim
заеб компании
Maxim
все что можно вынести наружу, надо вынести наружу
Maxim
поэтому никакого гитлаба, никаких CI внутре, etc
Etki
У вас не 12factors app? В stdout же проще + ES +kibana
грейлог - это тот же ES, но в более интересной обертке, чем кибана