Dev0ps
40 subscribers
211 photos
3 videos
50 files
3.33K links
Download Telegram
Forwarded from CatOps
В жизни каждого человека, который писал Terraform код встаёт вопрос: когда оглашать переменные?
Во время написания основного кода, до этого или после, или вообще захардкодить всё (нет, не надо хардкодить!)
А как часто вы делали опечатку в названии переменной и TF вылетал?

Мой товарищ написал утилитку, которая позволяет автоматически сгенерить variables.tf файл на основании уже готовых .tf файлов в директории

https://github.com/alexandrst88/terraform-variables-generator

Ну и как обычно, пул реквесты приветствуются!
Forwarded from CatOps
Чеклист от компании Gruntwork о том, готовы ли вы к выходу в продакшн на AWS. Большинство пунктов по своей идее подходят не только к AWS, просто поменяйте названия соответствующих сервисов

#aws
Forwarded from CatOps
Стайлгайд по тому, как писать на Bash от Google:

https://google.github.io/styleguide/shell.xml

Отакот
Forwarded from Dmitry Zaytsev
Полезная часть от okmeter.
Мониторинг нужен для того, чтобы:
Узнать о том, что что-то сломалось.
Быстро узнать что именно и как именно сломалось
Разные операционные задачи - оптимизации, capacity, etc.

Самое главное в системе мониторинга - метрики.
Хорошие графики - это оптимизация над метриками.
Хорошие триггеры - оптимизация над графиками.

Системные метрики:
CPU: usage, core_throttle_count, logical_cores
Mem: usage, swap, errors, numa
Disk: usage, inodes, io, latency, raid+bbu, SMART, fs errors
Net: interfaces metrics+errors, TCP/IP metrics (retrans, overflows, etc), conntrack table
Метрики процессов/контейнеров/cgroups:
CPU (usage, quota, throttled)
Mem (rss, cache, page faults)
Disk io (fs + device)
Open fds, threads, uptime
Net:
Делим всё на in/out
Группируем по listen_ip, listen_port, remote_ip
Снимаем states (count), rtt, rqueue/wqueue
Listen - status, backlog current/max
Навигация при факапе:
1. Даш уровня пользовательского опыта (есть проблема или нет)
2. Summary по сервисам - топ ошибок, времени ответа и т.д. (в каком сервисе проблема)
3. Детализация сервиса (в чём проблема - сервис, база, соседний сервис)
4. Детализация инфраструктуры под сервисом (базы, очереди, сервера)
Автотриггеры на любые сущности:
TCP: backlog/max > 90% - приложение затупило.
Process: max_cpu_per_thread > 90% - тред упёрся в ядро
cgroup: cpu_usage > 90% от лимита - приложение упирается в ограничения
Forwarded from Dmitry Zaytsev
Заметки по первому докладу о прометеусе в авито.
Облако в авито:

k8s, 4 кластера - 2 x prod (baremetal), dev (vm) staging (vm)
50 нод в каждом, 2000 pod в dev
100 релизов в день в prod (разработчики катят сами)
Используют helm, teamcity. Есть линтер для кубера, который проверяет аннотации и правильность описания. Есть slack-бот для создания сервиса, выдаёт репу с шаблонами описания.
2 стека мониторинга в Avito:

Prometheus - облако и всё в нём.
Graphite/Clickhouse - метрики сервисов, монолит, доступность нод
Выбрали prometheus из-за:

глубокой интеграции с k8s и его service discovery
pull-модели
расширяемости через exporters
Минусы prometheus:

Нет HA (и не будет, судя по всему)
Не про долгосрочное хранение метрик
Разное:

Для долгосрочного хранения метрик есть remote-storage адаптер для graphite.
Сейчас экспериментируют с ним. Лаг поступлления метрик - около минуты. Минус - нет фильтрации, можно выгружать только ВСЕ метрики, которые есть в prometheus.
Не используют prometheus operator для k8s, делают простой деплоймент.
Используют cross-monitoring между кластерами, каждый prometheus мониторит prometheus в соседних кластерах.
Используют prometheus federation (hierarchical) для некоторых типов метрик (пока не запустили долгосрочный сторадж на graphite)
Ресурсы:

CPU - простой запрос с агрегацией данных по нодам занимает 5s cpu. Если положить много подобных запросов в графану и открыть несколько дашбордов... Решение - recording-rules - прекомпилированные запросы. Крайне рекомендуют делать для всех запросов на дашбордах.
MEM RSS - До 2.2.1-release были утечки памяти. Огребали OOM на деве из-за множества сущностей и retention в 24h. Решение - уменьшать размер датасета с метриками (уменьшать retention, увеличивать scrape-интервал)
MEM VSZ - tsdb активно использует mmap, все данные в pagecache. Важно мониторить наличие свободных страниц в pagecache.
Статистика по дев-кластеру:
1,2m метрик, размер датасета 5Gb, Retention 2h.
CPU 300%, RSS 9Gb, VSZ 12Gb.
Алертинг:

K8S и облачные сервисы мониторят через Grafana -> slack.
Бизнес-метрики/легаси/доступность через Moira -> slack/sms.
Не используют alert-manager, потому-что уже есть moira.
Что мониторить в k8s:

Ёмкость кластера и утилизация ресурсов кластера (cpu/ram/net), тренд утилизации.
Доступные ноды, kube-apiserver rps и latency, подов на ноду, подов не в running.
Requests/limits подов, usage подов.
Blackbox - http code, latency. TODO - docker pull, go get, etc.
Полезные ссылки:

https://docs.google.com/document/d/199PqyG3UsyXlwieHaqbGiWVa8eMWi8zzAn0YfcApr8Q/edit
http://fabxc.org/tsdb
Forwarded from Mike Prokopchuk
И вот тут немного простых примеров: как отсылать и своего сервиса и простенький экпортер: https://github.com/theairkit/prometheus-examples
Forwarded from ДевОпс Інженер 🇺🇦 (devopsengineer bot)
▶️▶️▶️ ДевОпс Инсайт: #devops_engineer_insights

Как легче всего зайти в Kubernetes?

На реальном опыте отвечает Сергей Михно (в жизни Серенький, в телеграме @Serhii_Mikhno). Уникально и только для подписчиков канала ДевОпс Инженер.

Путь ознакомления k8s зависит от задач, которые перед Вами стоят.
Тут есть два варианта - или для галочки у себя в резюме, или когда нужно поднять существующую инфраструктуру в кубере (как было у меня).

В обоих случаях лучше начинать с тестового проекта в GKE: https://cloud.google.com/kubernetes-engine/.
Например, поднять там какой-то сервис, который Вы уже умеете готовить. Далее можно добавить HA, настроив нужное колличество реплик и добавив healthchecks, а так же заекспоузить сервисы через ingress.

Все основные примитивы и концепции Kubernetes легче и быстрее всего освоить тут: http://kubernetesbyexample.com/ (обязательно добавить в закладочки). 💡

При решении этого задания, в любом случае нужно будет опираться на документацию, и очень желательно опираться на api reference k8s: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.10/

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

Пару слов насчет Helm. Эта штука полезная и стоит уметь ею пользоваться, но далеко не во всех случаях. Потому что это дополнительный уровень абстракции над уже существующей моделью сущностей. Это облегчает управление и группировку громоздких сервисов, но затрудняет понимание того, какие реальные манифесты уходят в исполняемую среду.
По этому плагин helm template обязателен к установке, и важно понимать реализацию go template: (https://golang.org/pkg/text/template/), он очень похож на jinja2 (как в Ansible), так что с этим проблем не будет.

Теперь по поводу CI\CD. Написано уже очень много о том, как правильно готовить процессы с кубером. Мне лично помог блог компании Флант на Хабре: https://habr.com/company/flant/ , у них есть пару хороших видосов, которые проясняют lifecycle в кубере.

Далее, когда приложение уже запущено и работает, освоены основные концепции и примитивы - можно приступать к разворачиванию всяких штук вроде istio, подкручиванию network policy, RBAC, эксперименты с разными ingress controller и тестированию оверлейных сетей.

Простой пример - мы с тремя коллегами перевезли весь прод (с большим кол-вом сервисов и зависимостей в кубер) менее чем за месяц, при этом знания о Kubernetes были на уровне - "слышал, но не трогал".

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

Желаю удачи в изучении Kubernetes! 💪💪💪
Forwarded from DevBrain
Классная обзорная статья форматов сериализациия данных для обмена между системами (Avro, MessagePack, Protobuf и т.д.) — http://vasters.com/blog/data-encodings-and-layout/
Forwarded from DevBrain
Как вкатиться в одну из самых сложных тем Computer Science, а именно Distributed Systems? Нашел на просторах сети гайд от 2015 года от одного из девелоперов RabbitMQ, must read

https://goo.gl/VougZ8
Forwarded from DevOps Deflope News
unsee — дашборд для Prometheus Alertmanager от Cloudflare.
Умеет показывать, фильтровать, агрегировать и дедуплицировать алерты с разных инстансов Alertmanager.

http://amp.gs/kVFm
Forwarded from DevOps Deflope News
Отличная статья про разделение кода, структуру каталогов и хранение стейта для Terraform.

http://amp.gs/kVMd
Forwarded from CatOps
Segment рассказывают про своё изобретение -- Centrifuge

Тулзу для доставки сообщений на 3rd party APIs, часть из которых может быть недоступна, выдавать большой latency или ограничивать колличество запросов.

Проблема и её решение достаточно кастомные для их случая, но почитать интересно
Forwarded from CatOps
​​За ночь как-то много новостей нападало, так что давайте по порядку.

Во-первых, поздровляю вас с началом GDPR!

Во-вторых, в Kubernetes завезли интеграцию с Containerd во всеобщей доступности

Stay tuned!

#kubernetes
Forwarded from DevOps Deflope News
И начать пятницу хотелось бы с DevOps Security чеклиста от компании Sqreen.
Он представляет собой список лучших практик в области безопасности для имплементации DevSecOps.
Каждый пункт по клику раскрывается в описание и ссылки по теме.

http://amp.gs/kO3k
Forwarded from DevBrain
Инженеры Yelp ещё в 2016 году начали писать цикл статей о том как у них выглядит Data Pipeline. Интересно то, что все инструменты лежат в открытом доступе (и большинство на Python). Первая статья из цикла — https://goo.gl/9WbSVr. Инструменты смотреть здесь https://yelp.github.io/
Forwarded from CatOps
Продолжаем разгребать навалившееся:

В блоге Docker Inc появилась статья о Kubernetes Playground -- Play with Kubernetes. Это такая же песочница, как Play with Docker, только про Kubernetes
* логотип Docker Swarm и грустный трамбон *

Кроме этого есть ещё одна классная песочница для изучения Кубера -- Katacoda

Ну и куча других мест для изучения, типа Kubernetes By Example, Kubernetes the Hard Way (и его вариации под другие платформы)

Enjoy!

#kubernetes
Forwarded from CatOps
Вчера слушал интересную лекцию от Yara Paoli -- VP of Growth @ Skyscanner

Вы, возможно, подумаете, при чём тут вообще DevOps? Однако если в этой презентации сделать 's/marketing/development/g' получится типичная презентация о культуре DevOps: здесь и про кросс-функциональные команды, про spotify-культуру, про разрушение барьеров (siloes), T-shaped people, и много других знакомых вам вещей.

Так что можно смело заявить, что:
а) культура DevOps вполне себе вышла за пределы engineeringб просто мы это как-то провтыкали 🙂
b) это работает
с) MarkGrow? GrowMark? ProdMark? whatever...

Слайды презентации:
https://www.slideshare.net/growthhackers/moving-from-a-traditional-to-a-growth-oriented-organization-ghconf18

Статья-пояснение на Medium:
https://blog.growthhackers.com/from-32-to-1-000-employees-my-growth-journey-with-skyscanner-part-1-bb0af7be2225

#slides