Утро второго января начинается под хруст уже слегка несвежих салатов и бутербродов девопса с икрой и красной рыбой с просеко на завтрак.
Затем, под легкий и приятный хмель, приходит мысль "а чойта мы давно код не писали" и желанием написать свой велосипед.
❕Я в курсе про экспортёры и в частности https://github.com/webdevops/helm-charts
Задача: мониторить протухшесть аппрегистрейшн в ажуре.
Сложности: тенантов десятки и в каждом из них десятки/сотни сабскрипшнов.
Идея:
- сделать единый мультитенанси аппрегистрейшн
- напилить скриптом по нужным нам тенантам(а вот так ещё усложним, что нужно часть, а не все) сервиспринципл
- раскинуть всем сервиспринципал права на сбор метрик по протухшести кердов и не более
- напилить приложение, которое при помощи кредов подключается ко всем тенантам и их сабскрипшнам
- приложение умеет отдавать стандартные метрики прометеус и отдавать на http эндпойнт
Реализация:
- первичная инициация AR + SP + Permissions (я не стал писать код автоматизации, достаточно скрипта в ридми, это же один раз)
https://gist.github.com/kruchkov-alexandr/bd0bd7289d984751f3a92e7f4981c286
- Dockerfile с массивным azure cli и реквайрментс для питона
https://gist.github.com/kruchkov-alexandr/25817a9d2ed0c5daa713cedb1e3da0a1
- сам питон скрипт
https://gist.github.com/kruchkov-alexandr/8c41c33aff606463a17315447e62c25f
- можем смело отслеживать алёрты типа
Дальше пихаем его куда угодно, хоть на виртуальную машину, хоть в кубернетисы и забираем метрики на 8000 порту.
Раз в 30 минут по циклу опрашивает срок жизни всех токенов всех сабскрипшнов и тенантов, куда есть доступ.
Затем этим метрики забирает виктория метрикс.
Практической ценности этот код не имеет, лишь тренировка "давно мы ничего не писали и, судя по коду, лучше и не надо".
Затем, под легкий и приятный хмель, приходит мысль "а чойта мы давно код не писали" и желанием написать свой велосипед.
❕Я в курсе про экспортёры и в частности https://github.com/webdevops/helm-charts
Задача: мониторить протухшесть аппрегистрейшн в ажуре.
Сложности: тенантов десятки и в каждом из них десятки/сотни сабскрипшнов.
Идея:
- сделать единый мультитенанси аппрегистрейшн
- напилить скриптом по нужным нам тенантам(а вот так ещё усложним, что нужно часть, а не все) сервиспринципл
- раскинуть всем сервиспринципал права на сбор метрик по протухшести кердов и не более
- напилить приложение, которое при помощи кредов подключается ко всем тенантам и их сабскрипшнам
- приложение умеет отдавать стандартные метрики прометеус и отдавать на http эндпойнт
Реализация:
- первичная инициация AR + SP + Permissions (я не стал писать код автоматизации, достаточно скрипта в ридми, это же один раз)
https://gist.github.com/kruchkov-alexandr/bd0bd7289d984751f3a92e7f4981c286
- Dockerfile с массивным azure cli и реквайрментс для питона
https://gist.github.com/kruchkov-alexandr/25817a9d2ed0c5daa713cedb1e3da0a1
- сам питон скрипт
https://gist.github.com/kruchkov-alexandr/8c41c33aff606463a17315447e62c25f
- можем смело отслеживать алёрты типа
app_credential_expiry_days < 15
Дальше пихаем его куда угодно, хоть на виртуальную машину, хоть в кубернетисы и забираем метрики на 8000 порту.
Раз в 30 минут по циклу опрашивает срок жизни всех токенов всех сабскрипшнов и тенантов, куда есть доступ.
Затем этим метрики забирает виктория метрикс.
Практической ценности этот код не имеет, лишь тренировка "давно мы ничего не писали и, судя по коду, лучше и не надо".
👏1
#пятница
#всратость
Если бы не помощь местного жителя в Сербии, то у меня была бы ещё одна гениальная всратая история.
Решили вы заменить российские права в другой стране.
У меня, например, сейчас Сербия. И тут начинается самое интересное.
Допустим, у вас в России есть права с категорией А, которая вроде как включает в себя А, АМ, А1.
Но! ПЕРЕД медосмотром (именно до врачей, а не во время!!!!) надо обязательно попросить добавить категории АМ и А2.
В чём подвох? В Сербии это подкатегории А, но в российских правах их отдельно не пишут.
И без их явного указания местные права вам на эти категории не переоформят.
Самый весёлый нюанс - российской категории М здесь соответствует сербская АМ.
Без ее указания вам оформят сербскую категорию М - это
На фото был бы я, если бы меня вовремя не одёрнули в момент медосмотра.
#всратость
Если бы не помощь местного жителя в Сербии, то у меня была бы ещё одна гениальная всратая история.
Решили вы заменить российские права в другой стране.
У меня, например, сейчас Сербия. И тут начинается самое интересное.
Допустим, у вас в России есть права с категорией А, которая вроде как включает в себя А, АМ, А1.
Но! ПЕРЕД медосмотром (именно до врачей, а не во время!!!!) надо обязательно попросить добавить категории АМ и А2.
В чём подвох? В Сербии это подкатегории А, но в российских правах их отдельно не пишут.
И без их явного указания местные права вам на эти категории не переоформят.
Самый весёлый нюанс - российской категории М здесь соответствует сербская АМ.
Без ее указания вам оформят сербскую категорию М - это
мотоблок.😁2🤷♂1
#бытовое
Очень спасибо, что я параноик, очень жаль, что сейчас зима.
Чтобы просверлить дырки для держателя всякого, надо убедиться, что под плиткой нет ни электричества(спасибо тестер), ни горячей воды(спасибо тепловизор, на фото), ни холодной воды.
С первыми двумя пунктами справился, третий пункт сейчас стоппер. Зима, стены в уборной все холодные и холодную воду не увидеть просто. Точнее никак.
Решение:
- отметить сейчас карандашом, где подходит горячая вода
- дождаться весны или лета
- отметить карандашом холодную воду(стена уже не будет насквозь замёрзшей).
- просверлить, где нет труб
Самый долгий муж на час с "давайте уже после праздников" ©
Очень спасибо, что я параноик, очень жаль, что сейчас зима.
Чтобы просверлить дырки для держателя всякого, надо убедиться, что под плиткой нет ни электричества(спасибо тестер), ни горячей воды(спасибо тепловизор, на фото), ни холодной воды.
С первыми двумя пунктами справился, третий пункт сейчас стоппер. Зима, стены в уборной все холодные и холодную воду не увидеть просто. Точнее никак.
Решение:
- отметить сейчас карандашом, где подходит горячая вода
- дождаться весны или лета
- отметить карандашом холодную воду(стена уже не будет насквозь замёрзшей).
- просверлить, где нет труб
Самый долгий муж на час с "давайте уже после праздников" ©
❤2🔥1
Поздравляю сам себя с моим 6-и летним опытом в IT в роли инженера.
DevOps практики, инфраструктура, программирование, немного архитектуры, менторство(совсем чуть-чуть) и очень-очень много SRE скрасило мои последние 6 лет интересными задачками и добавило радости моей супруге количеством денег.
По этому поводу куплю себе стейк рибай, бутылку Brunello di Montalcino и зависну на новом курсе.
DevOps практики, инфраструктура, программирование, немного архитектуры, менторство(совсем чуть-чуть) и очень-очень много SRE скрасило мои последние 6 лет интересными задачками и добавило радости моей супруге количеством денег.
По этому поводу куплю себе стейк рибай, бутылку Brunello di Montalcino и зависну на новом курсе.
🔥10❤2
На всём времени моего опыта и пути для меня самым сложным оказалось работать с несколькими вещам, один из них это
Пока знания не обесценились, накидал простенькую статью на медиуме.
Вдруг кто тоже страдает этими болями.
https://medium.com/@kruchkov.alexandr/a-deep-dive-into-aws-api-gateway-velocity-mapping-templates-9a6c9f4ed742
#AWS #CostOptimization #SQS #Velocity
AWS Velocity mapping template.Пока знания не обесценились, накидал простенькую статью на медиуме.
Вдруг кто тоже страдает этими болями.
https://medium.com/@kruchkov.alexandr/a-deep-dive-into-aws-api-gateway-velocity-mapping-templates-9a6c9f4ed742
#AWS #CostOptimization #SQS #Velocity
Medium
A Deep Dive into AWS API Gateway Velocity Mapping Templates
Working with AWS services can be challenging, but in my years of experience, few things have been as perplexing as AWS Velocity mapping…
👏2
#всратость
В далекие-далёкие годы, когда я только начал путешествовать, билеты были относительно недорогими и визы давали не глядя на цвет паспорта, однажды мы решили сгонять в Благословенные Богами Европы.
На тот момент у нас было не так много опыта путешествий, знаний иностранных языков и удобных путеводителей/чатов телеграм/AI и множество приложений для облечения жизни, как это, к счастью, есть сейчас.
В общем решили мы испробовать сервис заморский, на тот момент не очень нам известный(а я вообще всегда был деревня) с названием Airbnb.
Связались, забронировали, арендовали, оплатили, приехали, заселились, ничего тут нет сложного с гугл словарем.
Всё клоунское веселье началось с утра, когда нам надо было выкинуть мусор.
Такого обилия мусорных контейнеров, помоек, ящиков, урн, как это есть во многих городах России, в частности в Москве, там не было. Мы прошли квартал, ещё один, но мусорки нет нигде.
С мыслью "ну ща пройдём, ну точно помойка будет, выкину я свой ссаный прозрачный пакет с мусором и пустыми бутылками из под алкашки" мы двинулись дальше.
Прошёл примерно час, а я, словно выпускник клоунярного ПТУ, всё ещё гулял по улицам города с прозрачным пакетом с мусором. Мы даже дошли до самого центра, но жена меня уговорила чуть ли не со слезами на глазах от стыда и от смеха не ходить дальше.
Нам было стыдно спрашивать у местных а где тут можно пакет выкинуть, связи у меня тогда не было, как и роуминга, я был нищ.
В общем суммарно я ходил больше 3 часов по городу, в поисках любого места, где я могу выкинуть мусор и ничего не находил.
Тогда я ещё не знал, что урны прячут во дворах, а на улицах практически ничего нет, чтобы не тратить деньги на уборку ещё и этого. А быть может и из-за запаха.
Что же меня спасло? Конечно же
Мекка, а иногда даже оазис, для странствующих ссыкунов и чудаков с мусорными пакетами.
Слово ниндзя я сумел выкинуть свой пакетик в их ящички и пойти дальше.
С тех пор я первым делом у владельцев жилья спрашиваю где и как я смогу выкинуть мусор.
Что для одних естественно, то для других не очень очевидно.
Передаю привет Милану в Италии😅
В далекие-далёкие годы, когда я только начал путешествовать, билеты были относительно недорогими и визы давали не глядя на цвет паспорта, однажды мы решили сгонять в Благословенные Богами Европы.
На тот момент у нас было не так много опыта путешествий, знаний иностранных языков и удобных путеводителей/чатов телеграм/AI и множество приложений для облечения жизни, как это, к счастью, есть сейчас.
В общем решили мы испробовать сервис заморский, на тот момент не очень нам известный(а я вообще всегда был деревня) с названием Airbnb.
Связались, забронировали, арендовали, оплатили, приехали, заселились, ничего тут нет сложного с гугл словарем.
Всё клоунское веселье началось с утра, когда нам надо было выкинуть мусор.
Такого обилия мусорных контейнеров, помоек, ящиков, урн, как это есть во многих городах России, в частности в Москве, там не было. Мы прошли квартал, ещё один, но мусорки нет нигде.
С мыслью "ну ща пройдём, ну точно помойка будет, выкину я свой ссаный прозрачный пакет с мусором и пустыми бутылками из под алкашки" мы двинулись дальше.
Прошёл примерно час, а я, словно выпускник клоунярного ПТУ, всё ещё гулял по улицам города с прозрачным пакетом с мусором. Мы даже дошли до самого центра, но жена меня уговорила чуть ли не со слезами на глазах от стыда и от смеха не ходить дальше.
Нам было стыдно спрашивать у местных а где тут можно пакет выкинуть, связи у меня тогда не было, как и роуминга, я был нищ.
В общем суммарно я ходил больше 3 часов по городу, в поисках любого места, где я могу выкинуть мусор и ничего не находил.
Тогда я ещё не знал, что урны прячут во дворах, а на улицах практически ничего нет, чтобы не тратить деньги на уборку ещё и этого. А быть может и из-за запаха.
Что же меня спасло? Конечно же
Макдональдс.Мекка, а иногда даже оазис, для странствующих ссыкунов и чудаков с мусорными пакетами.
Слово ниндзя я сумел выкинуть свой пакетик в их ящички и пойти дальше.
С тех пор я первым делом у владельцев жилья спрашиваю где и как я смогу выкинуть мусор.
Что для одних естественно, то для других не очень очевидно.
Передаю привет Милану в Италии😅
❤2😁1
Обожаю новые фичи, в частности от яндекс браузера онлайн перевод на русский язык.
Однако есть проект, который может делать тоже самое, но в браузерах сафари/кром.
Сам проект с очень хорошим ридми
https://github.com/ilyhalight/voice-over-translation?tab=readme-ov-file
Если в двух словах
- установить Tampermonkey
- включить режим девелопера расширениях(опционально, я не включал, оно само)
- установить скрипт (я его установил вообще по кнопке в браузере при установке тамперманки)
Теперь есть кнопка перевода видео с ютуба на русский/казахский.
Прям слушаю видео на других языках в онлайн переведённые на русский.
Фантастика как удобно.❤️
Однако есть проект, который может делать тоже самое, но в браузерах сафари/кром.
Сам проект с очень хорошим ридми
https://github.com/ilyhalight/voice-over-translation?tab=readme-ov-file
Если в двух словах
- установить Tampermonkey
- включить режим девелопера расширениях(опционально, я не включал, оно само)
- установить скрипт (я его установил вообще по кнопке в браузере при установке тамперманки)
Теперь есть кнопка перевода видео с ютуба на русский/казахский.
Прям слушаю видео на других языках в онлайн переведённые на русский.
Фантастика как удобно.❤️
👍2❤1
#всратость
Неконтролируемая ярость, бессмысленный гнев, поиск виноватого и традиционная невнимательность.
Да, именно с этого я начал свою пятницу.
Сел за рабочее место, включил комп, винда предложила сделать апдейт.
Хорошо, пока пью кофе пусть сделает апдейт.
Всё завершилось, авторизация и сразу ступор.
"какого рожна ты не переключаешь раскладку привычным shift+command(alt), тварь?!"
Попсиховал про сраный микрософт, вспомнил про второй тип раскладки, неудобный для моих гномьих пальцев - option(win)+whitespace. Работает.
Злость начинает закипать достаточно быстро.
Лезу в настройки языков, клавиатуры, раскладки - ничего вроде не поменялось, однако привычная позиция не работает.
Псих, рестарт, псих, ничего не помогает. Ресет клавиатуры и пресетов. Заново подключение.
Быстрый поиск по интернетам и реддиту "какого хера негодяи Майкрософт снова что-то поломали раскладку" ни к чему не привёл.
Ярость, средневековая ярость заполняет мои легкие.
А потом приходит осознание, что я словно та мелкая потешная собачка чихуахуа с оскалом, ищущий во всех и вся проблемы, но не только от себя и лающая на всех как ебанашка.
Короче повернул на бок клавиатуру и увидел, что переключатель установлен в режиме macos, а не для windows.
Клавиатура не причём, операционная система и обновления ни причём. Сам как клоун случайно переключил режим.
Неконтролируемая ярость, бессмысленный гнев, поиск виноватого и традиционная невнимательность.
Да, именно с этого я начал свою пятницу.
Сел за рабочее место, включил комп, винда предложила сделать апдейт.
Хорошо, пока пью кофе пусть сделает апдейт.
Всё завершилось, авторизация и сразу ступор.
"какого рожна ты не переключаешь раскладку привычным shift+command(alt), тварь?!"
Попсиховал про сраный микрософт, вспомнил про второй тип раскладки, неудобный для моих гномьих пальцев - option(win)+whitespace. Работает.
Злость начинает закипать достаточно быстро.
Лезу в настройки языков, клавиатуры, раскладки - ничего вроде не поменялось, однако привычная позиция не работает.
Псих, рестарт, псих, ничего не помогает. Ресет клавиатуры и пресетов. Заново подключение.
Быстрый поиск по интернетам и реддиту "какого хера негодяи Майкрософт снова что-то поломали раскладку" ни к чему не привёл.
Ярость, средневековая ярость заполняет мои легкие.
А потом приходит осознание, что я словно та мелкая потешная собачка чихуахуа с оскалом, ищущий во всех и вся проблемы, но не только от себя и лающая на всех как ебанашка.
Короче повернул на бок клавиатуру и увидел, что переключатель установлен в режиме macos, а не для windows.
Клавиатура не причём, операционная система и обновления ни причём. Сам как клоун случайно переключил режим.
😁6
#пятница
Мне кажется работа с Dron CI в 2025 это как покупка китайского телефона в 2018 году.
Вместо "здорово, дешево, свиблово и всего за семь тыщ" и работы из коробки, ты превращаешься в модератора топика на 4pda по темам прошивки, кастомизации и ремонту кирпичей.
Мне кажется работа с Dron CI в 2025 это как покупка китайского телефона в 2018 году.
Вместо "здорово, дешево, свиблово и всего за семь тыщ" и работы из коробки, ты превращаешься в модератора топика на 4pda по темам прошивки, кастомизации и ремонту кирпичей.
😁3
Мой первый день в мой первый 41 год.
- доброе утро, солнышко!
- доброе утро, Сашенька, желаю тебе отличной погоды и хорошего настроения!
- доброе утро, госуслуги!
- доброе утро, Сашенька, желаю тебе отличных свершений и хорошей недели!
- доброе утро мэрия Москвы!
- доброе утро, Александр, желаем тебе лучшего и вот твой купон на квартиру в Москве и новый Айпад
- доброе утро, мой негосударствнный пенсионный фонд, на который я потратил 21 год своей жизни и все пенсионные накопления!
- доброе утро, дурачок, добро пожаловать во взрослую жизнь и весь наш фонд сегодня подал на банкротство и угадай, что с твоими деньгами и пенсией
- доброе утро, солнышко!
- доброе утро, Сашенька, желаю тебе отличной погоды и хорошего настроения!
- доброе утро, госуслуги!
- доброе утро, Сашенька, желаю тебе отличных свершений и хорошей недели!
- доброе утро мэрия Москвы!
- доброе утро, Александр, желаем тебе лучшего и вот твой купон на квартиру в Москве и новый Айпад
- доброе утро, мой негосударствнный пенсионный фонд, на который я потратил 21 год своей жизни и все пенсионные накопления!
- доброе утро, дурачок, добро пожаловать во взрослую жизнь и весь наш фонд сегодня подал на банкротство и угадай, что с твоими деньгами и пенсией
❤3
- "а можете ли вы, мои новые интерны, вводить эти команды? всё ли хорошо тут? ответьте, пожалуйста, на вопрос"
- "да вроде хорошо. мы часть команд не знаем, но вроде всё как обычно, гит адд, гит коммит и гит пуш. а может и нельзя, мы не знаем часть команд, мы обычно кнопку в vscode жмём"
#git
git add .
git commit -m "fix" --no-verify
git push origin main --force
git tag -f prod
git push --force origin prod
git clean -fdx
git reset --hard HEAD~5
git push --force-with-lease
git reflog expire --expire=now --all
git gc --aggressive --prune=now
- "да вроде хорошо. мы часть команд не знаем, но вроде всё как обычно, гит адд, гит коммит и гит пуш. а может и нельзя, мы не знаем часть команд, мы обычно кнопку в vscode жмём"
#git
😁6👍1
- "А расскажите, пожалуйста, что не так или так в этом докерфайле. Что выглядит нормально, что смущает, что кажется вы сделали бы иначе? Что может быть вы переделали. На что и почему. Или вообще тут всё идеально и трогать ничего не надо. Поделитесь мыслями. можете пользоваться любой документацией, любой информацией в интернете, кроме AI. Особого лимита времени тут нет, просто говорите всё, что вы об этом думаете, это главное. Правильного/правильных ответов тут нет, интересно всё то, что вы об этом всём думаете."
Давным-давно я проводил интервью и спрашивал кандидатов обо всяком.
В один момент времени я начал использовать этот замечательный докерфайл.
Лично мне он помогал определить сильные и слабые стороны кандидата(да, надо было много работать с кубером и докер имаджами на этой вакансии). На базе него я иногда задавал дополнительные наводящие вопросы: про readOnlyRootFilesystem/allowPrivilegeEscalation/capabilities, про опыт с бекендом, опыт с фронтом, про контекст и так далее. Не для доёба, нет, кому оно нужно.
Просто понять насколько глубоко в бездну нырял кандидат со своим опытом и сможет ли не перейти на темную сторону упоротых девелоперов, пройдя этапы собеседования.
Конечно же я знаю множество инженеров, кто найдёт миллионов доводов, что собеседование неправильное, не верное, вопросы говно, файл тупорылый, такое не надо спрашивать и многое другое.
Да всё возможно.
Однако тут нанимал я, а не кто-то другой, так что козырь самодура🤡 интервьюера был у меня в руках.
Сейчас подобные наработки я использую, чтобы гонять своих интернов на логику и получения опыта без хлебания половника подливы говна из клоунско-птушных легаси проектов с монорепой монолитом.
#собеседование #интервью #всратость #docker
FROM ubuntu:latest
COPY ./ /app
WORKDIR /app
RUN apt-get update
RUN apt-get install -y cowsay
RUN apt-get upgrade
RUN apt-get -y install libpq-dev imagemagick gsfonts ruby-full ssh supervisor
RUN gem install bundler
RUN echo "vm.swappiness=10" >> /etc/sysctl.conf && chmod -R 777 /tmp
RUN curl -sL https://deb.nodesource.com/setup_9.x | sudo bash -
RUN apt-get install -y nodejs
RUN bundle install --without development test --path vendor/bundle
RUN rm -rf /usr/local/bundle/cache/*.gem
RUN apt-get clean
RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
CMD [“/app/init.sh”]
Давным-давно я проводил интервью и спрашивал кандидатов обо всяком.
В один момент времени я начал использовать этот замечательный докерфайл.
Лично мне он помогал определить сильные и слабые стороны кандидата(да, надо было много работать с кубером и докер имаджами на этой вакансии). На базе него я иногда задавал дополнительные наводящие вопросы: про readOnlyRootFilesystem/allowPrivilegeEscalation/capabilities, про опыт с бекендом, опыт с фронтом, про контекст и так далее. Не для доёба, нет, кому оно нужно.
Просто понять насколько глубоко в бездну нырял кандидат со своим опытом и сможет ли не перейти на темную сторону упоротых девелоперов, пройдя этапы собеседования.
Конечно же я знаю множество инженеров, кто найдёт миллионов доводов, что собеседование неправильное, не верное, вопросы говно, файл тупорылый, такое не надо спрашивать и многое другое.
Да всё возможно.
Однако тут нанимал я, а не кто-то другой, так что козырь самодура🤡 интервьюера был у меня в руках.
Сейчас подобные наработки я использую, чтобы гонять своих интернов на логику и получения опыта без хлебания половника подливы говна из клоунско-птушных легаси проектов с монорепой монолитом.
#собеседование #интервью #всратость #docker
👍9👌1
Перетащил на второй гравитрон пару старых кластеров.
Результат пока выглядит ок.
Предыдущие дни график был практически идентичен, а тут, при смене типа инстанса, словно и нагрузка на ЦПУ стала ниже.
Посмотрим как дальше будет это работать.
Экономия ~$73 доллара в месяц за один инстанс(в кластере их несколько).
#AWS #CostOptimization
Результат пока выглядит ок.
Предыдущие дни график был практически идентичен, а тут, при смене типа инстанса, словно и нагрузка на ЦПУ стала ниже.
Посмотрим как дальше будет это работать.
Экономия ~$73 доллара в месяц за один инстанс(в кластере их несколько).
#AWS #CostOptimization
👍7
Использовать CloudWatch Alerts это достаточная большая боль, если мы говорим про IaC.
Неблагодарная задача.
Нет нормальной поддержки циклов, автодискавери и фильтрации.
* все примеры ниже без модулей, без костылей, без новой графаны, чистый терраформ и ямлописаки
Например у вас есть AWS Redis.
Банально с одним шардом для двух нод вам надо сделать буквально следующее:
Это лишь один шард, всего две ноды.
Помножить на существующие 4 кластера + 3 окружения итого у нас сотни строчек.
Потом это улетает в SNS, там, скорее всего на Lambda, оттуда скрипты питона на ваш Slack.
Прямо скажем неудобно.
Могу предложить решение лучше:
если у вас используется Alertmanager и AWS EKS(Kubernetes), то заметно удобнее держать его там.
Установка клаудвоч экспортера(разово):
Конфиг клаудвоч экспортёра:
В данном примере показаны различные вариации использования.
Так же научите(разово) собирать метрики от вашего прометиуса/виктории метрикс
#AWS
Неблагодарная задача.
Нет нормальной поддержки циклов, автодискавери и фильтрации.
* все примеры ниже без модулей, без костылей, без новой графаны, чистый терраформ и ямлописаки
Например у вас есть AWS Redis.
Банально с одним шардом для двух нод вам надо сделать буквально следующее:
# Alarm for Primary Node
resource "aws_cloudwatch_metric_alarm" "redis_cpu_primary" {
alarm_name = "${var.project_prefix}-${var.environment}-redis-cpu-primary"
comparison_operator = "GreaterThanThreshold"
evaluation_periods = "300"
metric_name = "CPUUtilization"
namespace = "AWS/ElastiCache"
period = "60"
statistic = "Average"
threshold = "80"
alarm_description = "Redis CPU utilization is too high on primary node"
alarm_actions = ["arn:aws:sns:us-east-1:${data.aws_caller_identity.this.account_id}:aws-health-notification"]
ok_actions = ["arn:aws:sns:us-east-1:${data.aws_caller_identity.this.account_id}:aws-health-notification"]
dimensions = {
CacheClusterId = "${aws_elasticache_replication_group.******.id}-001"
}
}
# Alarm for Replica Node
resource "aws_cloudwatch_metric_alarm" "redis_cpu_replica" {
alarm_name = "${var.project_prefix}-${var.environment}-redis-cpu-replica"
comparison_operator = "GreaterThanThreshold"
evaluation_periods = "300"
metric_name = "CPUUtilization"
namespace = "AWS/ElastiCache"
period = "60"
statistic = "Average"
threshold = "80"
alarm_description = "Redis CPU utilization is too high on replica node"
alarm_actions = ["arn:aws:sns:us-east-1:${data.aws_caller_identity.this.account_id}:aws-health-notification"]
ok_actions = ["arn:aws:sns:us-east-1:${data.aws_caller_identity.this.account_id}:aws-health-notification"]
dimensions = {
CacheClusterId = "${aws_elasticache_replication_group.******.id}-002"
}
}
Это лишь один шард, всего две ноды.
Помножить на существующие 4 кластера + 3 окружения итого у нас сотни строчек.
Потом это улетает в SNS, там, скорее всего на Lambda, оттуда скрипты питона на ваш Slack.
Прямо скажем неудобно.
Могу предложить решение лучше:
если у вас используется Alertmanager и AWS EKS(Kubernetes), то заметно удобнее держать его там.
Установка клаудвоч экспортера(разово):
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm upgrade cloudwatch-exporter prometheus-community/prometheus-cloudwatch-exporter \
--install \
--version 0.25.0 \
--namespace monitoring \
--set aws.aws_access_key_id="${{ secrets.AWS_ACCESS_KEY_ID }}" \
--set aws.aws_secret_access_key="${{ secrets.AWS_SECRET_ACCESS_KEY }}" \
--values=EKS/cloudwatch-values.yaml
Конфиг клаудвоч экспортёра:
config: |-
region: us-east-1
period_seconds: 30
delay_seconds: 30
metrics:
- aws_namespace: AWS/RDS
aws_metric_name: CPUUtilization
aws_dimensions: [DBInstanceIdentifier]
aws_dimension_select_regex:
DBInstanceIdentifier: [".*production.*"]
aws_statistics: [Average]
- aws_namespace: AWS/SQS
aws_metric_name: ApproximateNumberOfMessagesVisible
aws_dimensions: [QueueName]
aws_dimension_select_regex:
QueueName: [".*production.*"]
aws_statistics: [Sum]
- aws_namespace: AWS/ES
aws_metric_name: FreeStorageSpace
period_seconds: 60
aws_dimensions: [DomainName, ClientId, NodeId]
aws_statistics: [Minimum]
- aws_namespace: AWS/ElastiCache
aws_metric_name: CPUUtilization
period_seconds: 60
aws_dimensions: [CacheClusterId]
aws_statistics: [Average]
В данном примере показаны различные вариации использования.
Так же научите(разово) собирать метрики от вашего прометиуса/виктории метрикс
- job_name: 'cloudwatch-exporter'
scrape_interval: 30s
static_configs:
- targets: ['cloudwatch-exporter-prometheus-cloudwatch-exporter.monitoring.svc.cluster.local:9106']
#AWS
✍1
Всё, метрики от клаудвоча в вашем прометиусе.
Можете создавать любые алёрты.
Например вот так для редиса:
или для RDS:
❤️Profit!
Всё! Больше ничего делать не надо!
Сколько бы вы потом не создали сотен и тысяч SQS/Redis/RDS - вам не надо для каждого из них писать отдельный алёрт!
То есть мы ну вообще никак не завязаны на конкретных инстансах или нодах!
Просто один раз установка экспортёра, один раз внести сбор метрик для прометиуса(если нет автодискавери) и добавить демешны/фильтры.
⚠️ВАЖНО
Важно понимать, что каждый запрос от клаудвоч экспортёра до клаудвоча это деньги.
- нужно собирать метрики не часто, чтобы не чарджить в большую сумму
- можно фильтровать(в конфиге пример с production)
- нужно собирать ровно то, что вам нужно, например только cpu usage average, min/max нам для самого алёрта не надо
- тайминги надо выставить для вас - чтобы не очень часто, чтобы много платить, но чтобы и не слишком редко - тогда вы будете поздно получать алёрты
#AWS
Можете создавать любые алёрты.
Например вот так для редиса:
- alert: REDIS_HIGH_CPU_USAGE
expr: aws_elasticache_cpuutilization_average > 80
for: 5m
labels:
severity: critical
emoji: 🔥
annotations:
summary: '`{{ $labels.cacheclusterid }}` is using {{ $value }}% of CPU. <https://****.grafana-workspace.us-east-1.amazonaws.com/d/AWSERedis/aws-elasticache-redis?var-cacheclusterid={{ $labels.cacheclusterid }}|Dashboard> | <https://****.pagerduty.com/incidents|PD>'
или для RDS:
- alert: RDS_HIGH_CPU_USAGE
expr: round(avg_over_time(aws_rds_cpuutilization_average[5m]), 0.01) > 80
for: 5m
labels:
severity: critical
emoji: 🔥
annotations:
summary: '`{{ $labels.dbinstance_identifier }}` is using {{ $value }}% of CPU. <https://****.grafana-workspace.us-east-1.amazonaws.com/d/AWSRDSdbi/aws-rds?var-dbinstanceidentifier={{ $labels.dbinstance_identifier }}|Dashboard> | <https://***.pagerduty.com/incidents|PD>'
❤️Profit!
Всё! Больше ничего делать не надо!
Сколько бы вы потом не создали сотен и тысяч SQS/Redis/RDS - вам не надо для каждого из них писать отдельный алёрт!
То есть мы ну вообще никак не завязаны на конкретных инстансах или нодах!
Просто один раз установка экспортёра, один раз внести сбор метрик для прометиуса(если нет автодискавери) и добавить демешны/фильтры.
⚠️ВАЖНО
Важно понимать, что каждый запрос от клаудвоч экспортёра до клаудвоча это деньги.
- нужно собирать метрики не часто, чтобы не чарджить в большую сумму
- можно фильтровать(в конфиге пример с production)
- нужно собирать ровно то, что вам нужно, например только cpu usage average, min/max нам для самого алёрта не надо
- тайминги надо выставить для вас - чтобы не очень часто, чтобы много платить, но чтобы и не слишком редко - тогда вы будете поздно получать алёрты
#AWS
🤩2
Почти год назад я ввязался в поддержку одного небольшого проекта.
Признаюсь и я, и команда из этого проекта были откровенно слабыми.
Я категорически слабо разбирался в базах данных, тюнинге, а на проекте никто не понимал что происходит.
База "тупила", клиенты были недовольны, никто не понимал куда копать.
Мы, словно угля в топку, накидывали неделя за неделей ресурсами всё выше и выше, лишь бы поезд ехал, но все понимали, что рано или поздно мы упрёмся в максимум типа инстанса и поезд остановится.
Откровенно говоря я даже не понимал как вот это всё работает, замучав всех в русскоязычных чатах глупыми вопросами по БД перформансу.
Так или иначе я пришёл к мнению, что надо внедрять мониторинг и алёртинг базы данных.
- Мы научились готовить PMM(расширенный бесплатный аналог AWS Performance Insights).
Он нам показал исторически на графиках куча мест, где у нас было сделано не оптимально(селекты, делиты и так далее).
- Мы научились мониторить стандартные метрики БД.
CPU usage, memory free/usage и другие системные ресурсы.
- Этого было мало, мы научились мониторить и алёртить сложные запросы.
Мне пришлось нырнуть дальше и у нас появились борды с MySQL slow query и алёртинг на их.
На правах внезапного репоста этого блога продублирую ссылку на свою статью, как мониторить/алёртить
https://medium.com/@kruchkov.alexandr/monitoring-and-alerting-for-slow-logs-in-amazon-rds-12dd048e16db
* Помню, что медиум это для многих неудобно, но я уже не вспомню зачем я публикую заметки именно там.
#AWS #RDS
Признаюсь и я, и команда из этого проекта были откровенно слабыми.
Я категорически слабо разбирался в базах данных, тюнинге, а на проекте никто не понимал что происходит.
База "тупила", клиенты были недовольны, никто не понимал куда копать.
Мы, словно угля в топку, накидывали неделя за неделей ресурсами всё выше и выше, лишь бы поезд ехал, но все понимали, что рано или поздно мы упрёмся в максимум типа инстанса и поезд остановится.
Откровенно говоря я даже не понимал как вот это всё работает, замучав всех в русскоязычных чатах глупыми вопросами по БД перформансу.
Так или иначе я пришёл к мнению, что надо внедрять мониторинг и алёртинг базы данных.
- Мы научились готовить PMM(расширенный бесплатный аналог AWS Performance Insights).
Он нам показал исторически на графиках куча мест, где у нас было сделано не оптимально(селекты, делиты и так далее).
- Мы научились мониторить стандартные метрики БД.
CPU usage, memory free/usage и другие системные ресурсы.
- Этого было мало, мы научились мониторить и алёртить сложные запросы.
Мне пришлось нырнуть дальше и у нас появились борды с MySQL slow query и алёртинг на их.
На правах внезапного репоста этого блога продублирую ссылку на свою статью, как мониторить/алёртить
AWS RDS slow logs (8.0.mysql_aurora.3.06.0), которую я писал в 2024 году.https://medium.com/@kruchkov.alexandr/monitoring-and-alerting-for-slow-logs-in-amazon-rds-12dd048e16db
* Помню, что медиум это для многих неудобно, но я уже не вспомню зачем я публикую заметки именно там.
#AWS #RDS
🔥5👍1
Сейчас на этом проекте всё работает как часы, инстансы совсем не жирные, а у разработчиков даже есть дашборда, куда они бегут, получив алёрты (их несколько разных).
Получив алёрт, ребята самостоятельно анализируют запросы, которые роняют базу и тут же пилят пулл-реквесты с безжалостным выпиливанием таких косяков. Поезд едет дальше.
#AWS #RDS #MySQL
Получив алёрт, ребята самостоятельно анализируют запросы, которые роняют базу и тут же пилят пулл-реквесты с безжалостным выпиливанием таких косяков. Поезд едет дальше.
#AWS #RDS #MySQL
🔥5❤3👍1