Konstantin
а какая версия пчп?)
совершенно без понятия, мне больше интересно как люди пишут правильный код, чем как умеют какое-то говно разбирать
Юра
Как думаете валидный код?
function foo() {
;;;
return 123;
}
Юра
В попилку вопросов на собес )
Jonny
Если на собесе такое спрашивают, надо подумать о адекватности
Denis
Юра
Пхп
Иван
Kirill
Ivan
Всем привет! Может есть какой-то пример правильной настройки monolog в symfony для коннекта с ELK? С максимальной производительностью? Сейчас смотрю в сторону https://docs.graylog.org/docs/gelf с передачей в ELK через UDP.
Konstantin
самый правильный путь - писать в файлы/стдаут, если писать напрямую в логстеш из пхп, любые проблемы с логстешем автоматически ломают приложение. это неоправданно высокая цена за лень (когда можно сделать нормально, но хочется побыстрее и попроще)
Konstantin
но если это всё не смущает, то да, gelf_handler и вперед. могу в целом поискать примеры конфигурации, если сами не найдете
Ivan
Спасибо! Да я тоже конечно к файлам склонялся, надо делать правильно) Значит будет связка Filebeat + ELK.
Konstantin
да. это правильнее
Konstantin
если будут вопросы - могу попробовать помочь
Ivan
Спасибо!)
Павел
А для чего нужен filebeat в связке с ELK ? Типо что он полегче logstash и можно filebeat на стороне приложухи оставить, а elk на другой сервер ?
Юра
Ну допустим у тебя 10 контейнеров
Юра
Как ты будешь собирать логи
Konstantin
Konstantin
типа разделение ответственности: приложение просто делает write в дескриптор открытый с O_APPEND, остальное кто-то еще делает
Konstantin
логстеш не собирает, он для трансформа нужен: принять строку лога, разобрать ее, обогатить и потом записать в хранилище/отбросить
Konstantin
откуда в него пишут строки он не знает
Павел
Konstantin
нет, ну правда не собирает
Konstantin
он ждет поступающие события на 5044 порту по тцп
Павел
У логстеша есть input file
Konstantin
о, ну правда. беру слова обратно :)
Konstantin
никогда не задумывался что так можно
Павел
Возможно логстеш просто тяжелый, он жрет так нормально.
Konstantin
но это скорее для дебага
Konstantin
в проде не будешь ставить по инстансу логстеша к каждому приложению сайдкаром
Konstantin
он реально жруч
Павел
Konstantin
вообще попробуйте vector.dev
Konstantin
ему сильно меньше нужно ресурсов чем логстешу (запускать софт на jruby мог придумать конкретный наркоман), там правда не 1в1 ложится логика процессинга
Konstantin
но почти все то же самое можно сделать, только сильно дешевле по цпу
Konstantin
особенно если sink не эластик, а то вектор в балансировку записей в дата-ноды не умеет)
Юра
Я юзаю кроны вообще ) и телеграм
Юра
Работает месяцами стабильно
Юра
Вообще не лажу туда
Юра
Какими месяцами. Получается год уже. Правда только ошибки. Без сбора аксес логов и прочей ерунды
Юра
Вот такую ерунду накидал себе и юзаю https://github.com/zim32/climonitoring
Юра
Но это чисто мой велосипед никого не призываю
Юра
Сервера уже десять раз из бекапв поднимались, падали, а эта хрень поднимается сама и пролжает работать я даже удивился ) кроны рулят
Konstantin
логи != мониторинг. оно друг друга дополняет, но это разные плоскости observability
Konstantin
за велосипед плюс, но лично мне надоело такие велосипеды кочегарить. количество скриптов, что ты пишешь, растет экспоненциально. и всё равно не хватает
Konstantin
поэтому теперь только прометеус-стек. за меня всё пишет коммунити, а что не пишет оно, тривиально инструментируется на любом языке
Konstantin
ну типа один node_exporter писать на баше очумеешь, это год работы, наверное
Юра
Ну да велосипед чисто для мелких проектов
Юра
Для чего-то посерьёзнее конечно надо серьезные инструменты
Konstantin
да скорее гошку подботать)
Konstantin
даже для мелких проще пром поднять
Юра
В моем велосипеде просто мне нравится что в принципе нет точки отказа
Юра
Любой сервер самодостаточен
Konstantin
но я не настаиваю, велосипеды всегда дело полезное. но бизнес, думаю, вряд ли бы обрадовался, если бы я его я оставил с таким мониторингом 🙂
Юра
Не надо еще переживать за сервер мониторинга которого просто нет
Юра
Да это больше инструмент личного использования )
Konstantin
вообще, мониторинг, оказывается (реально, я как-то не сразу это осознал) лучше рассматривать не как триггер 0/1, а как таймсирис-базу
Konstantin
появляется тонна дополнительных ручек, о которых ты с zabbix-like инструментами (где алерт - это 0/1) и не мечтал. ну типа "если количество запросов за последние 10 минут упало втрое относительно средне-12-часового, то кинуть алерт"
Konstantin
"если линейная интерполяция утилизация диска через час превысит 80% то кинуть алерт" итд
Юра
А это у меня есть
Konstantin
а как это происходит, если нету бд под метрики? каюсь, читал по диагонали
Юра
Ну еать процессор average
Konstantin
в рамках одного сервера метрики хранятся? а если он перезагрузится/удалится/добавится новый? если нужна стата, агрегированная по нескольким серверам? ну типа есть десяток бэкендов, на которые запросы балансируются и надо по ним суммарный рпс посчитать и что-то там с ним сделать?
Юра
Он внутри высчитывает среднее
Юра
И выплёвывает
Konstantin
ага, ну это в памяти агрегация, она не особо персистент
Юра
Ну там падает только если упал сервер ) так что там уже не average тогда значит
Konstantin
и среднемесячное какое считать уже довольно накладно (копятся данные в памяти) и ненадежно (процесс-агрегатор может умереть и потерять все накопленное)
Юра
Да база надежнек. Но опять таки мне не нужно было все так усложнять
Юра
Хранить еще
Юра
Диски под это дело выделять. Основная идея была как раз без центрального узла
Юра
Чтобы если твое хранения посыпалось, что часто бывает, то все продолжило работать
Konstantin
с промом это удобно: это не агенты пишут в сервер (и встают раком если он сломался), а сервер сам опрашивает агентов. если сервер лёг, то агентам пофигу
The Ant
Вот это можно как-то в шторме пофиксить? пишет only read but never written
Konstantin
безотносительно сути вопроса: а почему нуллабельное-то?
Konstantin
ваще интересно, у меня так не пишет почему-то
Max