Привет, коллеги-инженеры! В Pingera мы твёрдо верим, что мониторинг — это не просто инструмент, а часть вашего кода. Именно поэтому мы продолжаем двигаться в сторону концепции Monitoring as Code. Это подход, который позволяет хранить, версионировать и запускать конфигурации мониторинга так же, как и остальной код вашего проекта. Сегодня я рад рассказать о наших последних шагах в этом направлении.
Почему Monitoring as Code так важен?
В современном мире CI/CD и DevOps, настройки мониторинга в UI — это прошлый век. Monitoring as Code позволяет:
- 🤝 Командная работа: Ваши проверки хранятся в репозитории (например, на GitHub), что упрощает их совместную разработку, ревью и отладку.
- 📈 Версионирование: Вы можете отслеживать изменения, откатываться к предыдущим версиям и понимать, кто и когда внёс изменения в логику мониторинга.
- 🤖 Автоматизация: Запуск проверок становится частью вашего CI/CD-пайплайна. Хотите проверить, что новый деплой не сломал критические функции? Запустите проверку автоматически!
- 🔐 Безопасность: В сочетании с нашим недавним обновлением, позволяющим хранить секреты, вы можете вынести конфиденциальные данные (токены, пароли) в безопасное хранилище и ссылаться на них в своих скриптах.
Шаг 1: Маркетплейс проверок
Чтобы облегчить старт, мы создали Маркетплейс проверок на GitHub. Пока это наш репозиторий pingera/marketplace, где мы собрали примеры различных проверок и подробные инструкции к ним. Теперь вы можете:
- Использовать готовые шаблоны: Не нужно изобретать велосипед. Найдите подходящий шаблон для своих задач, например, для пошагового API-мониторинга.
- Делиться своим кодом: Хотите внести свой вклад или поделиться интересным сценарием? Просто отправьте нам Pull Request. Это отличный способ обмениваться знаниями внутри сообщества.
- Найти нужную информацию: Вся документация и примеры удобно расположены в README файлах.
Шаг 2: Хранение проверок как кода
Раньше для создания проверки через CLI вам приходилось использовать флаги, что не всегда удобно для сложных сценариев. Например:
pngr checks create --name "Some name" --type synthetic --pw-script-file some-playwright-script.jsЭто работает, но что, если у вас много параметров или сложный скрипт? Такой подход не соответствует философии Monitoring as Code. Вы же не храните JSON-конфигурацию вашего сервиса в флагах запуска, верно?
Теперь вы можете хранить проверки в виде файлов (например, в формате JSON или YAML) и использовать наш CLI или API для их запуска. Это позволяет полностью интегрировать мониторинг в ваш рабочий процесс.
Вот как это работает на практике:
Представьте, что у вас есть файл simple.json, который описывает проверку доступности нашего API:
{
"active": true,
"interval": 60,
"name": "Простейшая проверка GET API",
"parameters": {
"pw_script": "const { test, expect } = require('@playwright/test');\n\nconst apiUrl = process.env.API_URL || 'https://api.pingera.ru';\n\ntest('Проверка доступности API', async ({ request }) => {\n const response = await test.step(`Отправка GET-запроса на ${apiUrl}`, async () => {\n return await request.get(apiUrl);\n });\n\n await test.step('Проверка статуса ответа', async () => {\n expect(response.status()).toBe(200);\n console.log(`API доступно. Статус ответа: ${response.status()}`);\n });\n});",
"regions": [
"RU, Moscow"
],
"retry_enabled": true
},
"timeout": 15,
"type": "multistep",
"marketplace": {
"tags": [
"api",
"доступность",
"простота",
"http"
],
"name": "Простейший GET API-мониторинг",
"description": "Отправляет простой GET-запрос к API-эндпоинту и проверяет, что он возвращает код 200. Использует переменную окружения для URL.",
"secrets": true
}
}Вы можете хранить этот файл в своём репозитории, версионировать его и делиться с коллегами.
Кстати, наш CLI поддерживает не только локальные файлы, но и удаленные. Для этого можно использовать полный URL, например, https://raw.githubusercontent.com/pingera/marketplace/refs/heads/main/multistep/simple.json.
Чтобы выполнить проверку один раз:
- Через CLI:
pngr checks run custom --from-file multistep/simple.json
# или с использованием сокращенного флага
pngr checks run custom -f multistep/simple.json- Через cURL:
curl -X POST -H "Authorization: ВАШ_ТОКЕН" -H "Content-Type: application/json" -d @multistep/simple.json https://api.pingera.ru/v1/checks/executeЧтобы создать регулярную проверку:
- Через CLI:
pngr checks create -f multistep/simple.json- Через cURL:
curl -X POST -H "Authorization: ВАШ_ТОКЕН" -H "Content-Type: application/json" -d @multistep/simple.json https://api.pingera.ru/v1/checksЗаключение
Мы верим, что Monitoring as Code — это будущее надёжных и масштабируемых систем. Предоставляя инструменты для работы с проверками как с кодом, мы даём вам полный контроль, гибкость и возможность интегрировать мониторинг в ваш привычный рабочий процесс. Это позволяет вам не просто реагировать на инциденты, а проактивно работать над надёжностью и качеством ваших сервисов.
Мы продолжим развивать эти возможности, и ждём ваши идеи и предложения на нашем GitHub-маркетплейсе.