Рубрики
Uncategorized

Управление проверками здоровья в масштабе

В 15Five, как и многие другие компании, мы используем Cron для регулярного планирования рабочих мест. Если работа не пройдет … с меткой архитектуры, DevOps, SRE, ShowDev.

В 15five Как и многие другие компании, мы используем Cron для регулярного планирования рабочих мест. Если задание не завершается в ожидаемое время или выходит с кодом ошибки, мы получаем предупреждение через HealthChecks.io Анкет

Некоторое время это работало довольно хорошо.

Но вскоре мы столкнулись с вызовом. Мы хотели расширить проверки здоровья во всех наших условиях тестирования, но это потребует создания сотен и сотен новых чеков. Это много ручной работы, и зачем работать, когда вы можете автоматизировать?

Я размышлял о различных решениях, таких как написание сценария в Скопируйте чеки из одного проекта в другой , или сценарий для разбора всех конечных точек Ping в формат, который можно легко вставить в нашу кодовую базу, или управлять проверками здоровья через Terraform Анкет Но ни одно из этих решений не было идеальным. Я хотел, чтобы что -то полностью автоматизировало процесс.

К счастью, после разговора с сопровождающим здоровье, оказывается, что они Уже был базовый сценарий для этого Анкет Каждый раз, когда выполняется работа, она проводит простой вызов API HealthCheck, создавая чек, если он еще не существует, и возвращая конечную точку чека. Пинг конечная точка, и все готово! Легкий городок, не связана с человеческой работой.

#!/bin/bash

API_KEY=your-api-key-here

# Check's parameters. This example uses system's hostname for check's name.
PAYLOAD='{"name": "'`hostname`'", "timeout": 60, "grace": 60, "unique": ["name"]}'

# Create the check if it does not exist.
# Grab the ping_url from JSON response using the jq utility:
URL=`curl -s https://healthchecks.io/api/v1/checks/  -H "X-Api-Key: $API_KEY" -d "$PAYLOAD"  | jq -r .ping_url`

# Finally, send a ping:
curl -m 10 --retry 5 $URL

Я расширил это, чтобы работать с каналами оповещения, измерять время начала и окончания и записать сбои.

Установить jq , заменить HealthChecks_api_key с вашим ключом API и отправьте файл с вашим рабочим местом Cron. Теперь вы можете передать команду Cron к сценарию, и она сделает всю вашу работу за вас. Создание новой среды? Просто обновите ключ API, и все готово!

Мы используем Ansible для установки JQ и температуры файла Crontab и HealthCheck. Не стесняйтесь использовать марионетку, или ручное распределение, или Docker, или, черт возьми, блоки Redstone в Minecraft, кто я такой, чтобы судить?

Это хорошо работает в нашей производственной среде уже несколько месяцев. В качестве бонуса, когда мы заходим в HealthChecks.io, мы можем увидеть подробную историю начала работы и окончания работы:

Приятно иметь возможность настроить новый обратный центр обработки данных и утешать в ярком поле с твердыми зелеными чеками, и единственное, что мне нужно было сделать, чтобы настроить, это обновить ключ API!

Оригинал: «https://dev.to/15five/managing-health-checks-at-scale-4731»