DevOps не горит – Telegram
DevOps не горит
490 subscribers
37 photos
2 files
65 links
Привет!)
Я Володя @Mrgreyves
Пришло время наконец-то завести свой канал
Что тут будет: инженерка, статьи про всякие полезные штуки и мемесы
Попробую даже регулярно что-то постить ^_^
Download Telegram
Event Router

Коллеги, всем привет = )
Рано или поздно, во время например дебага, мы смотрим евенты внутри k8s
Историческая справка - event это события которые происходят в namespace, например создание пода, evict и тд
Конечно же у нас есть замечательна команда kubectl get events, но ходить по кластерам и неймспейсам - нууу такое себе, да и наверняка нам хочется поискать что-то в евентах
На помощь нам приходит Event Router
К сожалению проект уже давно не развивается, но это совершенно не мешает ему приносить пользу = )
Установить Event Router мы можем при помощи helm chart от wikimedia
В values нам нужно указать какой sinks мы будем использовать (sinks - это место куда мы хотим отправлять ивенты с кластеров), в нашем случае это stdout
Пример конфигурации:


sink: stdout


По итогу Event Router соберет ивенты со всех неймспейсов и “выкинет” их из своего stdout и тут мы их соберем при помощи какого нибудь логшиппера
А поиск и отрисовка “всякого полезного” уже дело Grafana или Kibana =)
🔥10
Коллеги, всем пятнички =)
А между тем, спешу вас поздравить с праздником - "Днем системного администратора"
Многие из нас в DevOps как раз и попали из админов/сетевиков/etc.
Уррра, коллеги!^_^
🎉18🔥9
KRR

Коллеги, всем привет =)
И еще раз в тему использования ресурсов приложений и рекомендаций
Не так давно с коллегами наткнулись на вот такой интересный проект - Kubernetes Resource Recommendation
Основная его задача это дать рекомендации по ресурсам для приложений, в облаке то оказывается “не все бесплатно”
Пример запуска в нашел случае выглядел следующем образом:
krr simple -p http://VM-ADDRESS:8428 --prometheus-label cluster -l ENV-LABEL -n SERVICE-NAMESPACE --allow-hpa --history_duration=48

То есть krr из victoria metrics собирает информацию о том сколько ресурсов потребляют поды в том или ином неймспейсе за период 48 часов и выдает рекомендации (увеличить или уменьшить)
На выходе мы получаем примерно такую картину (соррян, под рукой krr нет, по этому скриншот с офф репозитория ^_^)
KRR вполне себе может быть встроен в CI/CD pipeline, а разработчиком можно показать/рассказать как им пользовать =)
🔥9👍4👏1
Коллеги, всем пятнички!=)
Вечерний пост в режиме "хозяйке на заметку"
Довелось мне тут "покрутить" почти что selfhosted Gitlab
Конечно же выделили ему дофига ядер/оперативки и все такое
И на него как все накинулись толпой =)
И все это начало безбожно тормозить, репы импортировались медленно, пепелайны запускались долго
Начали разбираться, с ресурсами все было ОК
Оказалось что нужно подтюнить параметры Sidekiq
Суть заключается в том что Sidekiq как раз и занимается бекграунд джобами, а именно импорты/экспорты, пепелайны и все такое.
По умолчанию он !!!ОДИН!!!, может использовать только !!!ОДНО!!! ядро, и работает в 20 потоков 😱
По итогу мы получаем ситуацию, когда в гитлабе много разных активностей которые стоят в очереди, да еще и на одном ядре
Решение может быть следующим:

sidekiq['queue_groups'] = ['*'] * 4

То есть мы увеличиваем количество Sidekiq до 4х
Конечно же у нас увеличится нагрузка на CPU и RAM, это тоже стоит держать в голове
Надеюсь эта заметка вам поможет =)
PS - если упороться, то распределением задач можно достаточно гибко управлять, например группировать их по типам или приоритету =)
👍18
Warp

Коллеги, всем привет =)
В последнее время во многих каналах все чаще и чаще начали появляться посты про Warp
Если вы вдруг не слышали - то это “новомодный” терминал, который обещает быть ооой каким крутым
В качестве базового терминала я уже достаточно давно использую iTerm2 в связке с zsh+oh-my-zshell+powerline10k и данной связки мне вполне себе хватало

Отправился я почитать, что там пишут на офф сайте про Warp
В глаза бросилось сразу 2 вещи:
— оно платное😐
— в нем еще и логиниться надо😠
— оно есть для Linux, уххх как мне в условной “убунте” не хватало нормального терминала💃💃

Спешу вас успокоить:
— оно бесплатное, но если хочется дергать запросы напрямую к Warp AI, то будь добр заплатить некоторое количество денег (больше чем уверен что почти у каждого на этом канале есть та или иная подписка на тот или иной AI-помогатор)
— надо “залогиниться”, да надо - кажется это связано с тем что есть возможно формировать скрипты и обмениваться ими с коллегами
После борьбы с сомнения и лулзами, Warp был установлен
После 10 минут тыканья новой консоли ощущения следующие:
-- выглядит удобно
-- удобно сделан поиск команд
-- удобно сделан список автодополнения

Рекомендовать вам Warp со всей силы не буду, но сам точно попробую
Думаю, через некоторое отпишусь про свой опыт использования, живой скрин будет в треде =)
А каким терминалом и оболочкой вы пользуетесь?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥4😁2❤‍🔥1
Коллеги, всем дооообрейший вечерочек!^_^
Вечерний пост или лень двигатель прогресса 🤣

Многие из нас пользуют terraform для управления своей инфрой
Столкнулся я тут как то с тем что интернет у меня был не очень,
а провайдеров надо качать много и часто
И у меня наконец то дошли руки закэшировать их локально =)
Для этого нужно сделать следующее
Создать в домашней директории пользователя файлик .terraformrc
со следующим содержимым

plugin_cache_dir = "$HOME/.terraform.d/**plugin-cache**/"
disable_checkpoint = true

Продолжать пользоваться терраформом =)
Да-да, рано или поздно кэши нужно будет обновлять
А еще есть вопросы с доступность официальных хранилок провайдеров,
но вы хорошие инженеры, вы точно с этим справитесь
Еще можно использовать зеркала с провайдерами которые предоставляют
многие облака и энтузиасты (но это уже на свой страх и риск😤)

Небольшой пост в режиме "Хозяюшке на заметку"
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥4🤔41
Коллеги, всем привет!

18 сентября буду выступать в Питере на митапе Selectel Kubernetes MeetUp
Расскажу про распределенный трейсинг
В докладе начнем с самых основ:
-- какую проблему решает
-- как он устроен
-- как передается информация о трейсах
-- где трейсы можно хранить, как получить к ним доступ, как визуализировать

А еще коллеги из Selectel будут устраивать экскурсии по своему ЦОДу

Обязательно приходи, будет интересно ^_^
🔥13👍4🎉2👏1
Коллеги, всем привет!)
Да-да, кто-то "не очень меткий" и вместо того что бы отправить сообщение другу в личку, отправил его в канал 😂😂😂
Тематика поста совсем не корреклирует с тематикой моего канала, но что бы у вас не возникал вопрос, а что там было, пересланный пост добавлю в комментарий к этому посту)))
Всем хороших выходных, коллеги ☺️👻
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5
Коллеги, всем привет!=)

25 сентября планирую быть на Yandex Scale 2024
Буду люто поддерживать своего друга/коллегу Дмитрия Баскакова
Дима нам расскажет про Хаос-инжиниринг и все что ним связано
И вы тоже приходите, будет интересно ^_^
🔥1643
Коллеги, всем привет!=)
Напоминаю, завтра будет Selectel Kubernetes MeetUP
Анонс делал немного ранее
Завтра буду там с самого начала
Обязательно планирую сходить на экскурсию в ЦОД
Ииииии в этот раз точно попущу фоточки в канальчик =)
🔥143👍1
Коллеги, всем добрый вечер!=)
Прошел Selectel Kubernetes MeetUP
Запись трансляции доступна по ссылочке
Фоточки с мероприятия для новых аватарок доступны по ссылочке
А вот фоточек из ЦОДа не будет, увы требование безопасности 😤
Мероприятие мне понравилось, греет душу то что кажется что
мой доклад был актуален и полезен для коллег =)
Хотел бы отдельно ответить более полно на пару вопросов
Вопрос - трейсинг на балансировщиках, например в DMZ зонах
Да, такое можно сделать, будет появляться новый span
НО есть пара нюанасов:
-- скорее всего у вас стоит какой нибудь NLB, который "максимально тупой"
и работает на L4 модели OSI, то есть никакие манипуляции с трафиком там не производятся, по этому необходимость в span`е с него потенциально отпадает
-- далее за NLB может стоять условный Nginx (у нас в Magnit Tech именно так и сделано),
и на Nginx`е могут производиться манипуляции с трациком, все зависит от настройки
Если у вас более/менее стандартный конфиг с секциями server, терминацией SSL
сформировать span при помощи opentelemtry модуля вы сможете, при этом nginx будет работать сильно медленее, а для нас это огромный импакт на производительности системы
По этому Nginx`ы у нас стоят в stream режиме
Вопрос - трейсинг для кастомных k8s операторов
Да, думаю вполне такое можно реализовать
Опаратор же начинает свою работу (периодическая проверка чего то, работа с добавленным менифестом, хелсчеки и тд) и на все эти действия можно вполне себе навесить формирование span и trace
Важно только определиться с группировкой действий =)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍32
Привет Yandex Scale!)
🔥162
"Кубернетис это инструмент который позволяет деплоить баги на 1000 серверов" Паша Селиванов, а это , IT Standup
😁18🤩3
Коллеги, всем привет!=)
Минутка интересных наблюдений
С командой обновили Grafana Tempo с версии 2.5 на версию 2.6
И получили следующую картину (на скриншоте)
Все компоненты Grafana Tempo при той же нагрузки стали потреблять гораздо меньше ресурсов (CPU, RAM)
Так же система, а я сейчас про поиск трейсов и визуализацию, стала более отзывчива =)
JFYI, коллеги =)
🔥21
Коллеги, всем привет!)
Готовлюсь к митапу (анонс сделаю немного позже), собираю в своем докладе все грабли/костыли/косяки которые мы ловили с мониторингом/логированием/трейсингом
И вспомнил про самый "веселый" прикол с которым сталкивался (смотри мем)
А какие интересные проблемы вы решали в своем observability?=)
😁13🔥5👏1
Коллеги, всем привет!=)
Задумался я тут о том, что пора превратить нашу Grafana в Grafana HA (это не ha-ha-ha classic, а Grafana High Abailability)
Кажется, что все достаточно просто, Grafana живет в k8s, проставишь в чарте
replicas: 3
и дело к стороне
И сразу же начинают всплывать определенные нюансы
Основной нюанс заключается в том что наша Grafana иногда отправляет алерты которые настраивали команды разработки и если просто увеличить количество реплик с ооооочень большой вероятностью мы получим х3 алертов, что не очень весело
Отправил читать документацию, HA режим для алертов доступен и может работать как с "отдельно стоящим" Redis, так и с самой Grafana
Вариант когда инстансы Grafana синхронизируются между собой, показался более привлекательным, так как нет необходимости в доп компоненте
Конфиг для Grafana выглядит следующий образом

grafana.ini:
unified_alerting:
enabled: true
ha_listen_address: "${POD_IP}:9094"
ha_peers: "grafana-alerting.grafana:9094"
ha_advertise_address: "${POD_IP}:9094"
ha_peer_timeout: 15s
ha_reconnect_timeout: 2m

Так же нам нужен сервис, что бы Grafana`ы могли найти друг друга

apiVersion: v1
kind: Service
metadata:
name: grafana-alerting
namespace: grafana
labels:
app.kubernetes.io/name: grafana-alerting
app.kubernetes.io/part-of: grafana
spec:
type: ClusterIP
clusterIP: 'None'
ports:
- port: 9094
selector:
app.kubernetes.io/name: grafana

Благодаря этому мы получаем Grafana HA, что добавляет нам "выживаемости" в случае внештатных ситуаций с инфрой
Ну и напоследок, как сказать Grafana, что бы она расползалась по разным нодам и зонам кластера

affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app.kubernetes.io/name
operator: In
values:
- grafana
topologyKey: topology.kubernetes.io/zone
- weight: 99
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app.kubernetes.io/name
operator: In
values:
- grafana
topologyKey: topology.kubernetes.io/hostname

PS - для Grafana у нас поднят отдельно стоящий кластер PG
🔥9👍621🤔1
Коллеги, всем пятнички!=)

Как то мимо меня прошла новость о том что в бету вышел Prometheus 3 (спойлер - скорее всего у вас 2.x)
Что там нового:
-- Новый интерфейс, добавили темную тему - не ну такое срочно в прод надо 💃
-- Новый интерфейс для графиков и алертов - вцелом, я всегда использовал интерфейс Prometheus для дебага чего либо, если новый интерфейс позволит делать это удобнее/быстрее - отлично =)
-- Remote Write 2.0 - многие используют remote write что бы "сливать" метрики в какую то большую хранилку, интересно что добавили отсылку exemplars и тд
-- Поддержка OpenTelemetry - а вот это уже действительно круто, так как OpenTelemetry врывается в индустрию и очень скоро станет стандартом, предполагаю что будет возможность пушить метрички напрямую в Prometheus, это точно будет удобно для каких нибудь CronJob
Чего лично мне не хватило, с Prometheus вот все хорошо, кроме потребления ресурсов, особеноо в кластерах в большим количеством сервисов, и потребление ресурсов у Prometheus просто невероятное. Если вопрос потребления ресурсов каким либо образом "порешают", будет вообще пушка-гонка-красота =)

Оригинальный пост вы можете прочитать тут

Ииии всем хорошей пятнички =)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥31
Коллеги, всем привет!=)

Не так давно писал про то как мы накручивали отказоустойчивость у Grafana
И там мы использовали affinity rules
В k8s есть множество различных возможностей для управления тем как поды будут размещены внутри кластера
К примеру, у нас есть 3 зоны доступности A,B,D (особенно внимательные наверняка увидели Yandex Cloud) и нам нужно сделать так что бы 3 пода "разъехались" гарантированно по трем разным зонам, при этом если одна зона не доступна под не мигрировал в другую
Зачем - кейс с blackbox экспортером и мониторингом каких то "внешних" ресурсов из разных зон доступности, дублировать проверки из одной и той же зоны мы не хотим
Для решения этой задачи нам прекрасно подойдет Pod Topology Spread Constraints
Доп конфигурация для официального helm чарта может выглядеть следующим образом:

replicas: 3
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
app.kubernetes.io/name: prometheus-blackbox-exporter


Что произойдет:
-- мы поставили 3 реплики
-- поды разъедутся по одному в каждую зону
-- если какая то зона отвалится, под будет висеть в статусе Pending

Благодаря этому поды разъезжаются по разным зонам, в случае тотального падения зоны под не переезжает в доступную зону и метрики не дублируются =)
👍5🔥51
Коллеги, всем привет!=)

Как восстанавливливать дашборды Grafana если они "внезапно" испарились?0_o
Пришли к нам разработчики с вопросом - "Мы тут наводили порядок в своей директории и парочка важных дашбордов у нас испарилась, спасите, помогите!!!"
Вцелом то ничего страшного, в качестве бекэнда у нас используется Postgresql который к слову бекапится и все такое
Подумали, что достаточно развернуть базe из бекапа, завести вторую Grafana и вытащить Json, ну а дальше его импортнуть
Но все оказалось сильно проще💻
В базе Grafana есть табличка dashboard в которой как раз и хранятся наши дашборды в Json формате, то есть поднимать вторую Grafana уже и не надо, достаточно просто "вытащить" нужный нам дашборд, а потом импортировать. Grafana у нас 11.3.0 версии, у предыдущих версий думаю хранение организовано так же
Вот так мы сэкономили немного вермени, пользуйтесь, коллеги!^_^
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥41
Коллеги, всем привет!=)
Рубрика "мамая, я в телевизоре"
23 октября выступал на Observability Days в Т-банке где рассказывал про наши приключения с Observability в Магнит Омни
Собрал большое количество различных приколов, костылей и мемов в своем докладе
Записи всех докладов доступны тут, Enjoy!

PS - сегодня будет еще один анонс, я надеюсь =)
🔥12👍41
Коллеги, всем добрый вечер!=)
Иииии очередной анонс про который я писал немного ранее
13-11-2024 буду на DevOops Conf 2024

Вместе с Иваном мы расскажем про Cluster API, что это такое, как его можно использовать, как можно катать свои k8s кластера на виртуалках и на железе, да причем тут целая куча k8s операторов

Ссылка на страничку доклада

PS - да, да, я умею не только в Observability ^_^
🔥102👍1