Консоль наше все? или когда тебе скучно

Привет, хабровчане! Сегодня я хочу рассказать вам о своём новом детище — AlertCLI (https://github.com/romashqua/alertcli.git). Это CLI-утилита для работы с Alertmanager, которая превращает ваши страдания от мониторинга в... ну, скажем так, в менее мучительные страдания. Потому что давайте признаем: когда в 3 часа ночи звонит PagerDuty, хочется не решать проблемы, а решить того, кто их создал.

"О, великий Alertmanager, почему ты так сложен?"

Все мы любим Alertmanager. Ну как любим... Терпим. Потому что альтернатив особо нет. Но почему для простого просмотра алертов нужно:

  1. Открыть браузер

  2. Найти вкладку (которая у вас уже открыта, но вы её потеряли среди 200 других)

  3. Дождаться загрузки (пока вы молились, чтобы Prometheus не упал)

  4. Прокликивать интерфейс, который последний раз видел 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: "Что-то горит, но что именно?"

Раньше:

  1. Открываем Alertmanager

  2. Прокручиваем 500 алертов

  3. Находим тот самый MemoryLeak

  4. Осознаём, что это production

  5. Паникуем

Теперь:

alertctl alerts list -l critical | grep MemoryLeak

Паника остаётся, но наступает на 4 шага быстрее!

Ситуация 2: "Надо бы починить, но release уже завтра"

Раньше:

  1. Создаём silence через веб-интерфейс

  2. Тратим 5 минут на поиск нужной кнопки

  3. Ошибаемся с таймингом

  4. Получаем алерт ночью

Теперь:

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

Комментарии (1)


  1. chemtech
    01.07.2025 15:25

    Большое спасибо за утилиту. Сделайте пожалуйста бинарник в релизах github.