DevOps от первого лица
698 subscribers
209 photos
23 videos
154 links
Пишу реальные истории из АйТи о том как:
👨‍💻 пишу код
🏗 строю инфраструктуру
🧨 шатаю продакшен

Полезные заметки: https://byurrer.ru/
Download Telegram
💾 Устраняем заполнение диска Sentry

В последние полгода Sentry self-hosted беспокоит своим пожиранием диска, его постоянно не хватает, требуется все больше и больше объема. При этом очистка от старых issue (старше 90 дней) включена и действительно работает - старых данных нет.

☎️ Когда дело дошло до 130гб диска терпению пришел конец и было найдено решение.

👉 Для нас важно было не только освободить место, но и остановить большой поток данных, чтобы предотвратить повторное быстрое заполнение диска.

Детали в статье: https://byurrer.ru/sentry-big-disk
🔥1🤔1
📟 Попробовал сегодня Qwen Chat в сравнении с ChatGPT 4o, тест конечно не полноценный, всего лишь один вопрос, но сходу выигрывает Qwen Chat.

Регистрация на email, максимально простое начало использования. Буду пробовать дальше.

👉 Вы уже попробовали Qwen Chat? Поделитесь мнением в комментариях ⬇️
👍2🔥1
📲 Основы управления MariaDB/MySQL

Еще с осени прошлого года начал собирать SQL-запрос, которые использую в работе, теперь нормально оформил и опубликовал. По репликации будет отдельный материал.

https://byurrer.ru/mariadb-base-admin-sql
🤝5🔥3
🧨 На прошлой неделе внезапно исчезли все таски из коннекторов в Kafka Connect, а на этой неделе начались странности: таски в коннекторах рандомно переходили в статус Unassigned и эта ситуация не исправлялась простым перезапуском коннектора и таска.

В ходе решения проблемы мы аккуратно шатали кластер Kafka и Kafka Connect как могли:
⚡️ рестартовали ноды по отдельности
⚡️ удаляли ноды из кластера и заново добавляли
⚡️ полностью тушили кластер и заново поднимали (оказывается для Kafka Connect данные подтягиваются из топиков в Kafka)

🤯 Ничего не помогало. В этот момент впервые за все время работы в компании я услышал отчаяние в словах коллег, никто не понимал что происходит.

Но с самого начала мы видели строку в логе:
Joined group at generation 2261 with protocol version 2 and got assignment ... leaderUrl='http://172.31.1.27:8083/'

Подозрение вызывает IP адрес, потому что он находится в сети Docker из инфраструктуры для машин разработчиков, остальные наши адреса имеют другую подсеть. Иными словами: к кластеру подключается кто-то из разработки.

👨‍💻 Никакого злого умысла, просто легаси инфраструктуры. Оказывается строка search .local в /etc/resolv.conf позволяет искать домены для не полностью квалифицированных доменных имен (FQDN). Например, при пинге домена kafka резолвер подставит суффикс .local если домен kafka не получится найти и будет пинговать kafka.local.

🧐 И что нам это дает?

👉 А то что доменные имена docker-контейнеров могут быть не полностью квалифицированными доменными именами.

Например, у нас есть кластер Kafka в Docker, где есть контейнеры kafka1, kafka2 и kafka3. Если kafka2 или kafka3 отвалятся, а kafka1 останется, то он попробует подключиться к kafka2 или kafka3 и ... он подключиться к kafka2.local или kafka3.local, а там у нас продакшен 🤪

😬 Нам еще повезло, коннекторы и данные с продакшена не разъехались по dev-окружению, потому что эта связь работала только в один конец: dev => prod, а обратно не получалось достучаться до IP адреса ноды, потому что в кластер передавался локальный адрес.

Знатное получилось расследование 🙈

#инциденты_дежурства
👍4😱3
🛰 Мониторинг доступности Sentry self-hosted

На днях мониторинг сообщил об ошибках в доступности Sentry, который в очередной раз сообщает об инфраструктурных проблемах. На Хабре я уже писал об этом кратко, а теперь решил подробнее разобрать как мы настроили процесс мониторинга доставляемости и принимаемости событий в Sentry self-hosted.

https://byurrer.ru/sentry-availability-monitoring
👍2🤔1
📺 В подкасте 20 лет опыта в IT меня задела одна мысль, которую я никак не мог ни подтвердить ни опровергнуть с самого начала работы в IT:
Наше общество построено на одном важном критерии и это успех, который строится на том что ты достигаешь результата и не важно какой у тебя код и что ты читал.

На самом деле в подкасте много интересных мыслей.

🙈С одной стороны я вижу как люди нацелены на решение вопросов бизнеса и генерируют сомнительные решения, они добиваются движения вверх, потому что бизнес растет от таких решений.
🤯С другой стороны эти сомнительные решения через некоторое время называют легаси, и это легаси кому-то нужно поддерживать и переделывать, но создатели сего уже далеко ушли "вверх".

⚡️ С учетом развития ИИ, когда в общем-то уже не нужно глубоко понимать многие вещи на практике, а это значит не нужно знать нюансы, и когда в целом, ИИ может сделать "прототип на выброс", который потом будет работать годами на проде, становится с одной стороны страшно, ведь это будущее, а с другой стороны спокойно в этом будущем всегда будет работа 🦧

🤦‍♂️ Получается, качество выполненных задач не всегда связано с успехом, качественная работа не может выступать гарантом успеха или спускаясь еще ниже - качество не может быть инвестицией успеха.

🎭 Пожалуй, это естественное явление, и профессионал должен балансировать на тонком льду качества, в угоду успеху, ведь если будет успех, то будет и развитие этого сомнительного решения, которое привело у успеху.

Хотя, большинство из того что мы делаем не связано с полетами в космос и хирургией, так что может и не надо париться 🥳

Интересно узнать, что вы думаете по этому поводу в комментариях ⬇️
🔥21
🚠 Fluentd как шина данных для HTTP сервисов

Уже второй год мы используем Fluentd для доставки событий из разных источников в Sentry, посредством HTTP. Все доставляется, схема рабочая. Теперь оформил в статью и репозиторий на Github для примера, чтобы можно было самостоятельно опробовать данное решение.

Детали в статье: https://byurrer.ru/fluentd-as-bus-for-http
👍4🙏1
🗃 Управление спейсами в Tarantool 2.X через консоль

🤯 Несколько недель назад на продакшене упал кластер Tarantool, из-за массовых DML-запросов, а точнее из-за наших механизмов очистки от старых данных (жаль в Tarantool нет таких же механизмов протухания данных как в Redis).

🧨 Конечно у нас есть запас по ресурсам и можно на время отказаться от удаления устаревших данных, но проблему нужно решать.

🥷 Как бы я умело не уворачивался от близкого знакомства с Tarantool, но все-равно пришлось. Причем так плотно что эта штука заняла большую часть моего свободного времени.

Как-нибудь в другой раз я расскажу подробнее про случившееся, а пока за выходные более детально разобрался как работать со спейсами и индексами в Tarantool 2.X из консоли и сделал из этого изучения статью: https://byurrer.ru/tarantool-space
50🔥21👍1
Вакансии на PHP 5.3 видел, но промокод на PHP 2 впервые 😁
😁71👍1
В прошлый раз было управление спейсами Tarantool со стороны пользователя, в этот раз углубляемся внутрь и разбираемся как устроен движок Vinyl.

🦧 Поверхностное представление о том, что Vinyl работает с диском не дает полного понимания механизмов заложенных внутри для обслуживания кластера.

🤯 Оказывается здесь не классическое B-tree как в реляционных СУБД типа InnoDB в MySQL или Postgress, а LSM-tree со всеми вытекающими. В документации по Vinyl есть исчерпывающее объяснение разницы, но ...

Меня интересовали концептуальные механизмы с точки зрения администратора этой СУБД, поэтому в статье разберем:
🧐 Что такое Vinyl
🗂 Из чего состоит файловая структура спейса на Vinyl
🖼 Визуализируем хранилище Vinyl (это пирамида)
📥 Посмотрим как данные перемещаются по пирамиде
🛠 Определим как управлять габаритами пирамиды и на что они влияют
🎡 Какие фоновые процессы обслуживают движок Vinyl
💣 Как работа Vinyl влияет на систему
🪣 Как очистить дерево от старых версий и удаленных кортежей и вообще почему есть в этом необходимость

Детали в статье: https://byurrer.ru/tarantool-vinyl

P. S. если есть непонятки или я что-то упустил - пишите в комментариях ⬇️
👍31
Долго молчал и не просто так ...

🤯 Конец 2024 и начало 2025 (~4 месяца) были весьма трудными в плане работы из-за большого количества инцидентов, которые приходилось разруливать, а времени на осмысление было очень мало. Подгорел не хило и кое как дожил до отпуска в апреле. Отдыхал почти 2 недели, отрефлексировал произошедшее и сделал выводы. А потом ...

👉 В общем вот: https://youtu.be/VPPm66OfUW8 или вот https://rutube.ru/video/165b7c12eac26346c7552862432221ad/

Я давно хотел сделать 3 вещи:
✔️ сходить в отпуск и не работать
✔️ сделать видео для youtube
✔️ делать контент без перфекционизма

⚡️ И все это получилось в этом видео! ⚡️

🤪 Крч, я разобрал свой домашний сервер, изучил документацию по материнской плате Asus Z9PE-D16/2L, провел некоторые тесты, выяснил чего еще я не понимаю в этом железе и изучил, а потом записал это в краткий видосик, смонтировал, наложил музыку моего любимого композитора Karl Casey (он кстати royalty free) и выложил в интернет.

⏱️ Все это делал примерно 10 дней, дольше всего монтаж (еще бы, это было почти впервые), еще нужно было докупить предметы для съемки (белый коврик, перчатки, пирометр).

👨‍💻 Процесс понравился, было весьма интересно, хочу дальше продолжать снимать интересные мне темы :)

👉 Для просмотра переходите по ссылке: https://youtu.be/VPPm66OfUW8 или вот https://rutube.ru/video/165b7c12eac26346c7552862432221ad/

Напишите в комментариях как вам видео?)
🔥9👍4👏2
➡️ Подъехал текстовый обзор серверной платы Asus Z9PE-D16/2L.

🗃 Внутри текст, скрины из видео и фото элементов платы, а также всевозможные ссылки на различные сопутствующие ресурсы (спецификации, магазины и прочее).

А теперь все ссылки на этот обзор:
👉 видео на youtube: https://youtu.be/VPPm66OfUW8
👉 видео на rutube: https://rutube.ru/video/165b7c12eac26346c7552862432221ad/
👉 статья на сайте: https://byurrer.ru/asus-z9pe-d16-2l
🔥3
DevOps от первого лица
В прошлый раз было управление спейсами Tarantool со стороны пользователя, в этот раз углубляемся внутрь и разбираемся как устроен движок Vinyl. 🦧 Поверхностное представление о том, что Vinyl работает с диском не дает полного понимания механизмов заложенных…
🚲 Fibers - кастомные скрипты в Tarantool

Вот и добрался до самой важной части недавнего рабочего инцидента в этом году - файберы в Tarantool, а точнее черный ящик, в который они были упакованы.

❗️Как известно, в Tarantool Community Edition нет встроенного механизма EXPIRE, как это сделано в Redis, поэтому любителям халявы опенсорса приходиться реализовывать подобные механизмы самостоятельно, как раз при помощи файберов.

В статье рассмотрим:
✔️ что такое файберы на примерах
✔️ как они устроены в Tarantool, даже немного внутрянка
✔️ как логировать и мониторить работу файберов чтобы получить максимальную подотчетность

👉 Детали в статье: https://byurrer.ru/tarantool-fiber
2
🎅 Олды тут?)

💽 Игры в стиме это одно, но держать в руках игру на физическом носителе это совсем другое.

На фото высококачественная реплика Half-Life 2, продавец на авито сказал что это "заводская штамповка", то есть "не старая лицензия", да и вообще очень трудно отличить старую лицензию от такой качественной реплики, там все качественное и даже коды активации есть.

Решил взять и пополнить свою коллекцию таким интересным изданием)
🔥10👍3👌1
📀 Держать в руках лицензионный физический носитель с почти 20-ти летней историей, это не то же самое что иметь игры в стиме и уж тем более ремастеры.

На скрине лицензионный диск Crysis с глянцевой книжкой-вкладышем с описанием игры и диск с дополнением Warhead.

🗜 Качество исполнения на высшем уровне, состояние близкое к идеалу.
🏣 Я периодически просматриваю Авито и ищу объявления с платами, видеокартами и прочими интересными для меня штуками. Что-то покупаю, за чем-то наблюдаю)

Решил поделиться своим "избранным", может кому-то будет интересно. Указанные цены, по моим наблюдениям вполне приемлемые, поэтому эти объявления у меня в избранных)

⚡️ Серверная Lenovo RD450X за ~7000р, ссылки вот и вот, пару недель назад тоже заказал себе для тестов. Здесь: LGA 2011v3, IPMI и LAN 10gb.
🚞 Для рабочих станций Huananzhi x99 F8D Plus, давно уже вижу это объявление, цена интересная ~15000р, примерно за такую же цену я урвал последнюю плату по скидке на AliExpress. Здесь LGA 2011, без IPMI, есть m2.

🧐 Machinist x99 MD8, цена 8500р, судя по всему для рабочих станций, но использовать в деле не доводилось. Ссылка. LGA 2011v3.

⚡️ Серверные огрызки Supermicro x9DBU-if за 5100р и Supermicro X9DRW-3TF-AI036 за 3000р. Обе LGA 2011, на первой есть слот PCIe, на второй нет и у нее непоняятный форм-фактор. Интересная цена первой) Еще было такое поинтереснее, но уже разобрали.

⚡️ Серверная SuperMicro X9DRi-F за 7500р, это уже полноценная плата формата EATX c 6-ю PCIe. LGA 2011, IPMI, PCIe x 6 и прочие прелести полноценной платы на чипсете c600.

❗️ Серверная Supermicro X9DB3-TPF за 6000р на сокете LGA 1356 с поддержкой NVMe, что весьма интересно, потому что в прошлый раз на этом сокете у меня не получилось завести ее полноценно.

👉 Серверный огрызок Supermicro X11DDW-NT за ~27000р, на LGA 3647, не щупал не знаю что там, но очень интересно)


Для меня наибольший интерес представляют:
- Supermicro X11DDW-NT так как еще не пробовал такое
- Supermicro X9DB3-TPF потому что в прошлый раз не получилось NVMe, а теперь продаван заявляет что работает
- Lenovo RD450X уже купил, скоро буду тестировать)

⬇️ В комментах можем обсудить)
👍51
📺 На Авито нашел 2 интересных объявления, продают майнерские варианты видеокарт RTX 2070 super (CMP 40hx), переделанные на игровые варианты: вот и вот.

🧐 Посмотрел интернеты, вроде очень интересный вариант по соотношению цена/качество и судя по всему мощнее RX 580 8gb, а цена примерно такая же, причем обе из под майнинга, а RX 580 при этом пережила несколько волн, что повышает риск неликвида среди этой серии.

А заинтересовало меня это потому что я недавно провел игровые тесты RX 580 8gb на своем домашнем сервере на LGA 2011 (здесь был обзор платы), а потом провел тесты на своем домашнем ПК на базе LGA 2011v3 и оба результата меня приятно удивили: бюджетные сборки справляются с современными играми, причем где-то даже на высоких настройках выдает 60fps.

Кто пробовал на деле? Поделитесь в комментариях.

👍 Кому интересно чтобы я купил протестировал и рассказал - ставьте лайк)
👍6