Консоль наше все? или когда тебе скучно
Привет, хабровчане! Сегодня я хочу рассказать вам о своём новом детище — AlertCLI (https://github.com/romashqua/alertcli.git). Это CLI-утилита для работы с Alertmanager, которая превращает ваши страдания от мониторинга в... ну, скажем так, в менее мучительные страдания. Потому что давайте признаем: когда в 3 часа ночи звонит PagerDuty, хочется не решать проблемы, а решить того, кто их создал.
"О, великий Alertmanager, почему ты так сложен?"
Все мы любим Alertmanager. Ну как любим... Терпим. Потому что альтернатив особо нет. Но почему для простого просмотра алертов нужно:
Открыть браузер
Найти вкладку (которая у вас уже открыта, но вы её потеряли среди 200 других)
Дождаться загрузки (пока вы молились, чтобы Prometheus не упал)
Прокликивать интерфейс, который последний раз видел UX-дизайнера в 2016 году
AlertCLI решает эту проблему так же элегантно, как кувалда решает вопрос с гвоздём.))))))
Установка: проще, чем объяснить коллеге, что такое SLO
# Клонируем (не переживайте, это не клонирование в стиле "Острова доктора Моро")
git clone https://github.com/romashqua/alertcli.git
cd alertcli
# Собираем (предупреждение: процесс может вызвать ностальгию по "Hello World")
go build -o alertctl
# Устанавливаем (sudo — это как "пожалуйста", но для компьютера)
sudo mv alertctl /usr/local/bin/
Альтернативно — можно скачать готовый бинарник и пропустить этап "а почему у меня не компилируется?".
Фишки, которые заставят вас сказать "ну наконец-то!"
1. Фильтрация алертов: от "ой, всё" до "дайте мне только самое важное"
# Все алерты (включая те, что вы старательно игнорируете)
alertctl alerts list -A
# Только silenced (чтобы вспомнить, что вы уже "пофиксили" эти проблемы)
alertctl alerts list -s
# Только critical (когда хотите по-настоящему испугаться)
alertctl alerts list -l critical
2. Управление silence'ами: искусство заминоривания проблем
# Создаём silence (или "временно отключаем мониторинг", как говорят в отчётах)
alertctl silences create \
--comment "Planned maintenance" \
--duration 8h \ # Чисто теоретически, должно хватить
--alertname "MemoryLeak" \ # Который мы "обязательно пофиксим в следующем спринте"
--instance "legacy-server-01" # Которому уже 10 лет, но "оно же работает"
3. Автодополнение: потому что печатать — это для пещерных людей (НО МОГУТ БЫТЬ БАГИ!!!!)
# Для bash (тех, кто всё ещё живёт в 2005)
echo 'source <(alertctl completion bash)' >> ~/.bashrc
# Для zsh (модные ребята)
echo 'source <(alertctl completion zsh)' >> ~/.zshrc
# Для fish (экстремалы)
alertctl completion fish > ~/.config/fish/completions/alertctl.fish
Реальные кейсы из жизни
Ситуация 1: "Что-то горит, но что именно?"
Раньше:
Открываем Alertmanager
Прокручиваем 500 алертов
Находим тот самый MemoryLeak
Осознаём, что это production
Паникуем
Теперь:
alertctl alerts list -l critical | grep MemoryLeak
Паника остаётся, но наступает на 4 шага быстрее!
Ситуация 2: "Надо бы починить, но release уже завтра"
Раньше:
Создаём silence через веб-интерфейс
Тратим 5 минут на поиск нужной кнопки
Ошибаемся с таймингом
Получаем алерт ночью
Теперь:
alertctl silences create --alertname "FlakyTest" --duration 168h # Неделя — это разумно, да?
FAQ (Frequently Avoided Questions)
В: Это точно работает?
О: Работает лучше, чем моё утреннее кофе.
В: А что, если у меня старая версия Alertmanager?
О: AlertCLI поддерживает API v1 и v2. Если у вас что-то древнее — может, пора апгрейдить?
В: Почему я должен использовать это, а не веб-интерфейс?
О: Ну, во-первых, это круто. Во-вторых, попробуйте вызвать веб-интерфейс из скрипта. В-третьих, вы же читаете Хабр, вы не можете не любить CLI!
Заключение: Alertmanager больше не будет прежним
AlertCLI — это как ssh для Alertmanager:
Быстро
Удобно
Позволяет делать всё, не вставая из терминала
Иногда пугает новичков
Попробуйте и, возможно, вы наконец-то перестанете ненавидеть мониторинг. Ну или хотя бы ненавидеть его чуть меньше.
P.S. Если найдёте баги — это фичи. Если фичи — это было запланировано. Если ничего не работает — ну, вы знаете, где Issues на GitHub.
Так же любые помидоры кидайте смело, делал тулзу для себя и планирую до конца года порадовать вас, и себя более крупным проектом, которого ру сегмент для опенсурса еще не видал :-)
ДОБРА БОБРА, СТАБИЛЬНОГО ПРОДА <3
chemtech
Большое спасибо за утилиту. Сделайте пожалуйста бинарник в релизах github.