В 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»