Одной из ключевых метрик в DEVOPS является доступность, то есть: измерение того, сколько в течение заданного периода ваш сервис или приложение — Доступно или доступны. Часто доступность сочетается с масштабируемостью, или мера того, насколько хорошо ваш сервис выполняет пропорционально растущему числу пользователей. Среди прочего, доступность и масштабируемость составляют большой кусок наблюдательности в теории контроля — практика вывода внутреннего состояния системы через внешние наблюдения. Мы вернемся к наблюдаемости на более позднем посте, но в этом мы сосредоточимся к просто наличии, и как начать с ним.
Наиболее простой способ измерения доступности является измерение времени безотказной работы. Зачастую разработчики инженеров и SRES стремятся добиться пяти-девяток доступности, что означает, что услуга доступна 99,999% от времени.
Давайте определим пару целей:
- Мы можем увидеть, будет ли услуга «вверх», выполняя HTTP Get запрос на известную конечную точку
- Мы получаем уведомление всякий раз, когда служба «снижается» или «возвращается» (т.е. его состояние изменения доступности)
- И, наконец, мы можем войти в систему все это где-то для потомки
Представляем Bantay
Когда-нибудь обратно, мне нужно было достичь в значительной степени те же три цели с парой ограничений: один, что способом, которым я достигаю этих целей, это дешевый (или свободный), а два, у меня есть полный и абсолютный контроль над моими данными и Как я выполняю свой мониторинг. В то время как такие решения, как Pinggom, RollBar, новая реликвия и состояния, существуют, ни один из них не полностью свободен, и ни один из них не предлагает полного контроля над моими данными. Следовательно, я построил свой собственный: Bantay Отказ
Bantay стремится быть легким, расширяемым монитором времени работы с поддержкой предупреждений и уведомлений.
Это очень легко начать. Во-первых, мы пишем файл конфигурации под названием checks.yml
:
--- server: poll_interval: 10 checks: - name: Dev.to url: https://dev.to/ valid_status: 200 body_match: dev - name: Local Server url: http://localhost:5555/ valid_status: 200 reporters: - type: log
Давайте пройдем через строку файла YAML по строке:
server: poll_interval: 10
Здесь мы определяем Сервер
раздел, и мы говорим, чтобы это было Poll_Interval
10
Отказ Когда мы запустим Bantay в режиме сервера позже, это частота, с которой она будет выполнять проверки времени работы.
checks: - name: Dev.to url: https://dev.to/ valid_status: 200 body_match: dev - name: Local Server url: http://localhost:5555/ valid_status: 200
Далее мы определяем проверяет
Раздел, с парой записей: Dev.to
и Локальный сервер
Отказ Поля красивые самосвязки, с URL
Будучи конечной точкой, которую Bantay выполнит http, чтобы проверить время, valid_status
Быть код состояния HTTP, мы ожидаем получить, а body_match
Будучи необязательной строкой в телу ответа, мы ожидаем увидеть.
reporters: - type: log
В репортеры
Раздел, мы поместим один объект с типом журнал
. Это будет регистрировать чеки в STDERR/STDOUT.
Прежде чем мы на самом деле начнем Bantay, давайте пойдем вперед и быстро запустите сервер Python HTTP для прослушивания порта 5555
локально (четыре наших локальный сервер
проверка):
# on Py2 $ python -m SimpleHTTPServer 5555 # on Py3 $ python3 -m http.server 5555
Для пользователей Mac OS: изменить checks.yml
использовать http://docker.for.mac.host.indernal: 5555/
вместо http://localhost: 5555/
Наконец, мы вытягиваем новейшее изображение Bantay Docker и запустите проверку:
$ docker run -v "$(pwd)/checks.yml":/opt/bantay/bin/checks.yml --net=host fipanganiban/bantay:latest bantay check
Мы должны получить что-то похожее на:
Выглядит неплохо!
Если мы убьем бегущего Python Server и запустите Bantay Check еще раз, мы должны получить:
Bantay Server
Одноквартирный чек делает мало, чтобы помочь нам измерить доступность. Большую часть времени мы хотим регулярно выполнять эти проверки и получать уведомления, когда что-то идет вниз после проверка. Для этого мы запускаем Bantay в режиме сервера:
# start the local Python HTTP server again $ python3 -m http.server 5555 # and start Bantay in server mode $ docker run -v "$(pwd)/checks.yml":/opt/bantay/bin/checks.yml --net=host --name bantay fipanganiban/bantay:latest bantay server
Мы также можем добавить репортер Slack, чтобы сообщить нам, когда сервис снизится. Добавьте следующее в нижней части вашего checks.yml
Файл (замена ваш-слабый канал Здесь
и Ваш слабый токен Здесь
):
- type: slack options: slack_channel: YOUR-SLACK-CHANNEL-HERE slack_token: YOUR-SLACK-TOKEN-HERE
Теперь, когда мы снова убьем сервер Python, Bantay должен обнаружить, что он спустился, и мы получаем удобное уведомление через Slack:
И если мы снова запустим Python Server, Bantay следует обнаружить так:
Последние ноты
Вот и все! Теперь вы должны быть в состоянии установить базовые проверки обновления с Bantay, всего в нескольких линиях YAML. На момент написания BANTAY также поддерживает уведомление по электронной почте (используя mailgun) и отправлять метрики на intuxdb (для истории графиков и хранения). Узнайте больше обо всех его текущих функциях и как построить Bantay в качестве двоичного, в его GitHub Repo: https://github.com/kixpanganiban/bantay.
Оригинал: «https://dev.to/kixpanganiban/get-started-with-uptime-monitoring-using-bantay-2o6g»