DevOps Brain 🧠
1.21K subscribers
127 photos
16 videos
119 links
Пишу про kubernetes, terraform, linux, сети, автоматизации и полезные тулзы. Без спама и щитпостинга.

Хотите пообщаться? @devopsbrain_chat

Автор: @itcaat
Download Telegram
Нашел консольный аналог postman - как вам? По-моему выглядит круто, там даже command palette есть 🤯Правда ставится через uv. 🙁

https://github.com/darrenburns/posting

#tools
👍5🔥2
Мониторинг и алертинг - это база. Без них не может нормально ехать ни один продукт и ни один бизнес. Если говорить про IT, то чтобы иметь полную картину у вас должны быть:

🟢 Infrastructure-related alerts - например, высокая утилизация CPU на ноде
🟢 Application-related alerts - например, прилка начала сыпать 500-ми ошибками
🟢 Business-related alerts - например, снижение конверсии

✍️ Давайте разберем простой кейс, вам прилетел алерт на CPU от ноды с postre в проде. Дежурный инженер открывает борду в grafana ( или zabbix ), смотрит какие то общие показатели. Потом подключается к базе, смотрит какие запросы сейчас обрабатываются, читает логи и тд. И принимает дальнейшие решения по тому в кого эскалировать проблему или решает вопрос сам. И вот этот порядок действий практически всегда один и тот же.

🔛 Как было бы круто дообогатить алерт уже подготовленной информацией. Например, получить вместе с алертом список выполняющихся сейчас запросов в базе и их потребление по ресурсам. (Например, через SELECT pid AS process_id, query AS active_query FROM pg_stat_activity WHERE state = 'active'; )

🧠Вот ребята из keephq тоже так подумали и запилили просто офигенскую прилу, добавив нереальное количество интеграций (провайдеров), которые можно интегрировать в различные флоу обработки алертов

Просто взгляните на список провайдеров: AKS, AppDynamics, Auth0, Axiom, Azure, BigQuery, Centreon, Chat, Checkmk, Cilium, Clickhouse, Cloud, Cloudwatch, Coralogix, Datadog, Discord, Elastic, GCP, GKE, GitHub, GitLab, Google, Grafana, Graylog, Incident, Jira, Kafka, Kubernetes, Linear, LinearB, Mailchimp, Manager, Mattermost, Microsoft, MongoDB, Monitor, Monitoring, MySQL, Netdata, New, Now, On-Prem, OnCall, OpenAI, OpenObserve, Openshift, OpsGenie, PagerDuty, PagerTree, Pipelines, Planner, PostgreSQL, Pushover, QuickChart, Redmine, Relic, Resend, Rollbar, SIGNL4, SMTP, SSH, SendGrid, Service, SignalFx, Slack, Snowflake, Splunk, Squadcast, Statuscake, SumoLogic, Teams, Telegram, Trello, Twilio, UptimeKuma, Webhook, Zenduty

https://github.com/keephq/keep

Я пока сам не тестровал, но выглядит это просто 🔥 В ближайшее время буду поднимать и тестировать, а результатами поделюсь с вами 👍
🔥11👍1🍓1
Всем привет! А давайте разыграем новенькую обложку на паспорт с лого github 🍾

Оставляй коммент "хотеть это" (или любой другой) и в понедельник выберем победителя великим рандомом. 😁
👍3🐳2
Всем доброго утра. Я к вам с отличной новостью.

Теперь github copilot for vscode бесплатный. Никаких подписок, триалов, карточек не требуется.

Более того, вы можете сами решать какую модель использовать.

Как активировать и другие подробности по ссылке: https://code.visualstudio.com/blogs/2024/12/18/free-github-copilot
🔥7💯2
😁10
Всем привет. Надеюсь, все выжили после праздников и готовы делать мир лучше (или хуже - тут уж от каждого по способностям каждому по потребностям). 🎅

Я вам вакансию принес на Junior Devops Engineer, не проходите мимо кому актуально
https://www.aviasales.ru/about/vacancies/3870114
🔥6
Всем привет, я тут показывал недавно как сделать такую красоту котлеге и сразу записал небольшой гайд. Хотите такой же zsh на стеройдах? Без проблем!

Будем юзать Oh My Zsh, который позволит нам получить:

Автодополнения команд (например, Docker).
Алиасы для сокращений (например, gcb – создание ветки).
🎨 Красивую кастомизацию с темами.

# 1. Устанавливаем oh my zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

# 2. Устанавливаем шрифты
git clone https://github.com/powerline/fonts.git --depth=1
cd fonts
./install.sh
cd ..
rm -rf fonts

# 3. Устанавливаем rvm-prompt, чтобы тема не плевала ошибку
curl -sSL https://get.rvm.io | bash

# 4. Устанавливаем тему
git clone https://github.com/consolemaverick/zsh2000.git
ln -s $(pwd)/zsh2000/zsh2000.zsh-theme ~/.oh-my-zsh/themes/zsh2000.zsh-theme


Теперь пропишем нужные плагины. Полный список всех плагинов есть по ссылке https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins c детальным описанием. В любом удобном редакторе открываем ~/.zshrc и прописываем параметры.

ZSH_THEME="zsh2000"

plugins=(
git
macos
docker
docker-compose
)


В настройках терминала выставляем шрифт на Meslo LG M DZ for Powerline, Regular, 11px. Перезапускаем терминал и радуемся.
🔥3
В продолжении темы про терминалы - недавно наткнулся на https://tabby.sh. Я погонял его пару дней - есть небольшие баги, но в целом как альтернативна терминалу очень даже огонь.

🟢 Работает на Windows, Mac и Linux.
🟢 Встроенный SSH-клиент с менеджером подключений.
🟢 Встроенный терминал для работы с последовательными портами.
🟢 Поддержка PowerShell, PS Core, WSL, Git-Bash, Cygwin, Cmder и CMD.
🟢 Полная поддержка Unicode, включая символы двойной ширины.
🟢 Передача файлов в/из SSH-сессий через SFTP и Zmodem.
🟢 Темы оформления и цветовые схемы.
🟢 Полностью настраиваемые горячие клавиши, включая составные комбинации.
🟢 Запоминает ваши вкладки и разделенные панели.
🟢 Полноценный опыт работы с Shell на Windows, включая автодополнение.
🟢 Встроенный зашифрованный контейнер для хранения SSH-секретов и настроек.

#tools
👍1👏1
📎 Dive in performance tools. Часть 1️⃣ [sysdig]

Котлеги, привет. Вдохновленный серией статей от Евгения Козлова про CPU, Memory Models, Concurrency, Multiprocess, Multithreading и Async, я решил написать свой цикл статей по инструментам диагностики производительности linux с примерами.

Сегодняшний обзор я начну с тулы, которая по своей сути является серебрянной пулей в вопросах диагностики проблем с производительностью - sysdig. Конечно, чаще всего ее использование бывает избыточным, но может настать тот момент, когда штатных средств может не хватить и на помощь придет sysdig.

Long story short - sysdig использует модуль ядра для перехвата системных вызовов и событий, что открывает нам невероятные возможности в плане диагностики. Вы буквально можете расковырять практически все что происходит у вас в системе. Можно использовать realtime-диагностику или собрать трейс с системы за определенный период, обычно при проблемах достаточно до 30 секунд сбора данных.


# Установка sysdig
curl -s https://download.sysdig.com/stable/install-sysdig | sudo bash


Есть небольшой минус - sysdig требует заголовки ядра (kernel headers), потому что он использует модуль ядра для перехвата системных вызовов и событий. Но глобально это влияет только на скорость установки и требуется немного места.

Допустим у вас есть какая-то лагучая нода и базовые инструменты дигностики/логи вам не особо помогли. Давайте посмотрим на живом примере как ее использовать.


# Запускаем запись всех эвентов на 30 секунд
sysdig -w capture.scap -M 30


Конечно можно не использовать GUI, а вытащить из трейса событий нужные данные. Но это обычно работает, если вы точно знаете что искать. Например так] (без GUI)


# Вывести срезы которые доступны в этом трейсе (тут вы получите список срезов в различных категориях. Например, bottlenecks - cамые медленные системные вызовы)
sysdig -r capture.scap -cl

# выведем top процессов утилирующих cpu
root@server:~# sysdig -r capture.scap -c topprocs_cpu
CPU% Process PID
--------------------------------------------------------------------------------
15.00% redis-server 1095390
12.60% redis-server 1095391
12.20% redis-server 1095375
....


# Показать top файлов с которыми велась работа (R+W)
root@server:~# sysdig -r capture.scap -c topfiles_bytes proc.name=redis-server
Bytes Filename
--------------------------------------------------------------------------------
72.00M /data/temp-27.rdb
40.00M /data/temp-28.rdb
82.72KB /proc/self/stat
.....


Как я и сказал ранее, все эти данные есть в realtime и можно просто запустить GUI csysdig, но проблема может быть плавающая. В таком случае есть шанс просто пропустить нужные данные. Поэтому, я рекомендую снимать трейс эвентов и работать с ним.


# Открываем консольный GUI и скармливаем ему capture.scap
csysdig -r ./capture.scap


После этого переходим в режим Views (F2) и можем нырять на столько глубоко на сколько у вас хватит фантазии.

Перед нами открываются все тайны нашей системы: что именно передавалось установленным соединением определенного процесса. Сколько данных было передано, порты, ip адреса и тд. Какие ошибки происходили в системе и в каких процессах. Какие процессы какие файлы писали с каким рейтом. Какие открывались каталоги, какие контейнеры работали и какие процессы были запущеные внутри, какие действия делали эти контейнеры. Какие происходили ошибки Page Faults. Где какой был латенси на файлах. Какие порты были открыты и сколько с них было переданно данных. Этот список можно продолжать бесконечно.

А на этом все - спасибо за внимание.

В следующий раз расскажу о более простых инструментах первичной диагностики. А также попробую записать видео-урок с разбором инструмента

Ссылка на habr: https://habr.com/ru/articles/876160/
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥12
Channel name was changed to «DevOps Brain»
Channel name was changed to «DevOps Brain 🧠»
Forwarded from Эшер II. A+
⚡️⚡️⚡️ В России что-то глобально упало. Не работает Я.Почта, Гугл, ничего не работает, кроме Telegram. Как в 2018
🤬4
У нас открылась еще одна вакансия SRE. Шлите тем, кого не любите больше всего 🤓

https://www.aviasales.ru/about/vacancies/3880098
2🔥5🤣1🆒1
Dive in performance tools. Часть 2️⃣. [top / htop]

Сегодня мы максимально подробно разберем такой базовый инструмент диагностики, который встречается чуть ли не в каждом гайде, а именно про top. По ходу мы знатно приправим все теорией и разберем практический пример анализа. Текст будет разбит на несколько разделов из-за ограничений телеги. Погнали 😲

2️⃣.1️⃣ Про память в Linux

Когда вы смотрите на показатели памяти (например, в top, free или через `cat /proc/meminfo`), важно понимать, что именно подразумевается под «used», «free», «buff/cache» и т. д. На первый взгляд может казаться, что система «съедает» всю память, но зачастую это лишь особенности кэширования и работы ядра.

1. Total — Общий объём оперативной памяти (RAM), который распознаёт ядро Linux.

2. Used — Количество памяти, занимаемой процессами вместе буферами и кэшами.

3. Free — Память, которая прямо сейчас не задействована ни под процессы, ни под кэш.

4. Buff/Cache
- Buffers — память, зарезервированная под буферизацию операций ввода-вывода (I/O). Пример: при копировании большого файла cp bigfile /backup/bigfile часть данных попадает в буферы, прежде чем окончательно записаться на диск. Это помогает оптимизировать операции записи. По окончании записи ядро освобождает или переиспользует буферы.
- Cache — память, используемая для кэширования файловых данных. Пример: когда вы повторно открываете один и тот же лог-файл, чтение во второй раз будет быстрее, так как ядро может брать данные из кэша (без повторных обращений к диску). Если приложению понадобится память, ядро автоматически «отдаст» часть кэша, так что buff/cache не означает «пропавшую» память.

5. Available — Показывает объём памяти, который ядро может отдать под новые процессы без использования swap. При необходимости кэш и буфер освобождаются автоматически.

6. Swap — Когда системе не хватает физической памяти (или при определённой настройке swappiness), неиспользуемые страницы памяти могут выгружаться в swap-раздел (или файл). Если swap активно используется, это может указывать на нехватку RAM, но иногда ядро использует swap и при наличии свободной памяти, если считает, что выгрузка «простаивающих» страниц — более эффективный вариант.

Продолжение следует… ⬇️
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥6👍1
Dive in performance tools. Часть 2️⃣ [top / htop]

2️⃣.2️⃣ Про CPU

В строке CPU(s) в top видим восемь основных показателей — проценты от общего времени CPU:

1. us (user) – Время, затраченное на выполнение пользовательских процессов (приложений). Если значение us высокое, значит процессы в userspace активно нагружают процессор. Пример: сложные вычисления в Python, компрессия данных, рендеринг видео.

2. sy (system) – Время, занятое системными вызовами и кодом ядра (kernel space). Если sy растёт, это признак того, что ядро выполняет много работы (обработка I/O, сетевых стэков, драйверов и т. д.). Иногда это бывает из-за большого числа контекстных переключений, или интенсивного чтения-записи на диск.

3. ni (nice) – Время, отведённое процессам с изменённым приоритетом (nice). Если процессы запускаются с nice (пониженным приоритетом) или renice, их CPU-время может отражаться в ni. Редко встречается в большом объёме, если специально не конфигурируете приоритеты.

4. id (idle) – Процент времени, когда CPU простаивает. Если id высок, значит процессор почти без нагрузки. Важно понимать, что часть «простоя» может относиться к iowait, который выделяют отдельно.

5. wa (iowait) – Время, когда CPU простаивает в ожидании операций ввода-вывода (диск, сеть, и т. д.). Если wa велик (например, >10–15%), обычно это говорит, что система не успевает обрабатывать I/O, и процессор «ждёт» данные, вместо вычислять. При высоком iowait стоит проверить диски (iotop, iostat), подсистему хранения (SSD vs HDD) и сетевые операции (если хранилище находится в сети). Как это диагностировать мы поговорим в следующих статьях данного цикла.

6. hi (hardware interrupt) – Время обработки аппаратных прерываний. Например, при поступлении сигнала от сетевой карты или дискового контроллера. Если hi внезапно скачет, есть риск «шторма» прерываний из-за нештатной работы железа.

7. si (software interrupt) – Время обработки программных прерываний (softirqs). Часто связано с сетевыми пакетами, таймерами, межпроцессным взаимодействием. Высокие значения бывают при интенсивном сетевом трафике.

8. st (steal) – «Украденное» время при работе на виртуальной машине. Гипервизор может забирать часть CPU для других виртуалок. Если st высок, значит ваша VM не получает достаточно CPU-ресурсов от хост-сервера.

Важно: Если у вас многоядерный процессор (к примеру, 8 ядер), то проценты показывают агрегированное время по всем ядрам. Можно нажать 1 в top, чтобы увидеть загрузку по каждому ядру отдельно.

Давайте разберем практический пример:


19:48:03 up 403 days, 5:30, 1 user, load average: 6.17, 5.91, 5.64
Tasks: 164 total, 3 running, 161 sleeping, 0 stopped, 0 zombie
%Cpu(s): 7.6 us, 5.7 sy, 0.0 ni, 55.1 id, 26.3 wa, 0.0 hi, 5.2 si, 0.0 st
MiB Mem : 30614.7 total, 846.8 free, 20870.0 used, 8898.0 buff/cache
MiB Swap: 5120.0 total, 5068.7 free, 51.3 used. 9435.4 avail Mem


1. Uptime: up 403 days, 5:30. Сервер не перезагружался более года.

2. Load average: 6.17, 5.91, 5.64. Загрузка за последние 1, 5 и 15 минут. Если на машине, к примеру, 8 ядер, эти значения — не критический показатель. Полезно помнить, что Load Average включает как процессы, использующие CPU, так и те, что ждут ввода-вывода (IO wait).

3. %Cpu(s). us = 7.6% — пользовательские процессы не особо перегружены. sy = 5.7% — умеренная нагрузка на ядро. id = 55.1% — более половины времени CPU простаивает. wa = 26.3% — довольно высокое ожидание I/O. Это может указывать на интенсивную запись/чтение (например, Redis сбрасывает свои данные). si = 5.2% — есть некоторая нагрузка софт-прерываний (сетевой трафик?). st = 0.0% — на данном экземпляре нет «украденного» времени (возможно, это физический сервер).

4. Память. Total: ~30.6 ГБ. Free: ~0.85 ГБ, однако buff/cache = ~8.9 ГБ и avail Mem = ~9.4 ГБ. То есть Linux эффективно использует оставшиеся ~8–9 ГБ под кэш, и при необходимости может её освободить. Swap: практически не используется (51.3 МБ), значит нехватки ОЗУ нет.

Продолжение следует…⬇️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍1
Dive in performance tools. Часть 2️⃣ [top / htop]

2️⃣.3️⃣ Таблица процессов в top

Ниже разберём, что означают поля PR, NI, VIRT, RES, SHR в выводе top (или похожих утилит):

1. PR (Priority) – приоритет, с которым планировщик ядра запускает процесс. В Linux приоритет обычно отображается целым числом, где более высокое число означает более низкий приоритет (несмотря на кажущуюся «логичность» наоборот). Значения PR могут меняться динамически ядром, исходя из нагрузки и «nice»-приоритета процесса.

2. NI (Nice) – «nice»-значение процесса, задающее его базовый приоритет. Диапазон nice: от -20 (самый высокий приоритет) до +19 (низкий приоритет). По умолчанию процессы запускаются с nice = 0. Если запустить процесс с nice -n 10 COMMAND, то процесс получит NI = 10, то есть будет иметь более низкий приоритет при распределении CPU.

3. VIRT (Virtual Memory) – объём виртуального адресного пространства, зарезервированного или видимого для процесса. Большой VIRT не обязательно означает, что процесс реально занимает столько физической памяти; часть из этого может никогда не загружаться в оперативную память (RAM).

4. RES (Resident Memory)резидентная (фактически используемая) память в физической оперативной памяти (RAM). Это объём памяти, действительно загруженный в ОЗУ для данного процесса. Если часть процесса или библиотеки выгружена в swap (или ещё не загружена), она не считается в RES.

5. SHR (Shared Memory) – объём разделяемой памяти, используемой процессом. Обычно это доля памяти, которую процесс использует вместе с другими (например, разделяемые библиотеки, общие сегменты). Если два процесса используют одну и ту же библиотеку, её часть может отображаться в SHR у обоих, но в действительности она хранится в памяти единоразово.

Таким образом:

- PR и NI определяют, с каким приоритетом планировщик будет выделять CPU для процесса.
- VIRT говорит, сколько адресного пространства потенциально доступно процессу.
- RES показывает, сколько физической памяти реально выделено ему в данный момент.
- SHR указывает, какую часть этой резидентной памяти (RES) процесс делит с другими.

Теперь разберем практический пример. Здесь мы видим группу процессов Redis под пользователем с UID 999, а также системные процессы (root). Пример строк с Redis:


PID USER PR NI VIRT RES SHR %CPU %MEM TIME+ COMMAND
110005 999 20 0 8182684 3.2g 1524 36.5 10.8 0:14.70 redis-server
110045 999 20 0 8182684 1.1g 1532 28.2 3.6 1:10.86 redis-server
109437 999 20 0 8182292 3.2g 1744 9.6 12.9 111:19.74 redis-server
... и т.д.


- VIRT ~8.1 ГБ Это виртуальное адресное пространство (не значит, что все 8 ГБ реально заняты). В данном случае для Redis нормально поднимать большие VIRT, особенно если включены RDB/AOF-снапшоты.

- RES (фактическая резидентная память): мы видим 3.2G, 1.1G, 3.8G и т. д. У нескольких процессов Redis довольно большие значения. Суммарно они занимают значительную часть из 30 ГБ ОЗУ.

- %CPU по Redis варьируется от 9.3% до ~36%. Если сложить все Redis-процессы, получится внушительный процент — но поскольку система многопроцессорная, это ещё не обязательно «упор» в один CPU.

Продолжение следует… ⬇️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Dive in performance tools. Часть 2️⃣ [top / htop]

2️⃣.4️⃣ Основные выводы в практическом примере

1. Высокий iowait (26.3% wa). Процессор «ждёт» операций ввода-вывода, что может указывать на интенсивные записи/чтения (например, Redis, сбрасывающий данные на диск). Для дальнейшей диагностики можно использовать утилиты вроде iotop, iostat, dstat, чтобы выявить «виновника» I/O. О них мы поговорим в следующих сериях.

2. Память (buff/cache). ~8.9 ГБ в кэше и буферах — это нормально: ядро старается использовать RAM по максимуму, чтобы ускорять операции. При необходимости эта память освобождается, так что free может быть небольшим, но available (9.4 ГБ) ещё даёт большой запас.

3. Нагрузка на CPU (us, sy, si). Суммарный пользовательский и системный процент невысок (около 13%), однако iowait делает общую картину менее радужной. Нужно следить за si (softirq), если оно продолжит расти, возможно, идёт большой сетевой трафик или нуждаются в настройке сетевые стеки.

4. Load average ~6. На сервере с 8 ядрами это не критично, но при дальнейших пиках нагрузка может дойти до очередей на выполнение задач. Необходимо мониторить в динамике - нет ли дальнейшего роста или все подконтролем.


2️⃣.5️⃣. Что еще можно посмотреть в top

Надо сказать, что вы можете настраивать список столбцов и отображать много других метрик, например:

- SWAP: объём свопа, используемый процессом.
- ENV: перменные окружения которые видит процесс.
- CODE, DATA: размер сегментов кода и данных в памяти.
- MajF, MinF: количество «major» и «minor» ошибок страницы (page faults).
- VolCxt, NonVolCxt: количество переключений контекста (voluntary/involuntary).
- P, CPU: на каком процессоре (или ядре) выполняется процесс.
- Threads: общее число потоков, запущенных процессом.
- И т. д.

Чтобы выбрать и упорядочить столбцы в интерактивном режиме можно нажать F и выбрать интересующую метрику.

И на этом у меня все, всем спасибо и хорошего дня 🦾️️️️️️ Дальше мы будем разбираться с другими тулами

Почитать на habr: https://habr.com/ru/articles/876428/

Бонус: для обучения сделал https://top.tools.devopsbrain.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
1🍓7🔥4