Мониторинг API с авторизацией bearer token в Zabbix

Возникла одна, казалось бы, простая задача: отправлять тело запроса, обращаясь по API, с bearer token для авторизации и ловить код ответа или определенную строку. Выбор пал простейшую веб-проверку через Zabbix, но в процессе настройки обнаружился интересный момент, о котором расскажу.

Для использования авторизации методом bearer token, создается http-заголовок “Authorization” с указаем Bearer и далее сам токен. Ниже на скриншоте условный пример такой настройки.

Но в моём случае возник нюанс, что токен был закодирован в base64 и итоговая строка вышла очень длинной, а потому не вмещалась целиком в поле “Значение”. Я не нашёл решения по этому вопросу, чтобы продолжить настройку веб-проверки через морду Zabbix и написал маленький скрипт, где всё выполнил через curl:

#/bin/bash
 
source_data='{
"dt": "2019-08-11T11:00:00Z",
"text": "тест",
"channelUser":
{ "id": "9142-a2914d-4b9db-8402-8578b402e7bd" }
}'
 
response=`echo "$source_data" | curl -d @- -H "Content-Type: application/json;charset=UTF-8" -H "Authorization: Bearer <my_long_token_here>" https://<destination_ip>/api 2>&1`
 
echo "$response" | grep 'Response: 200' >/dev/null && echo 0 || echo 1

Внесу немного ясности.

В переменной формируется исходный JSON.

Далее он отправляется curl`ом через pipe, отдельные примеры

echo '{"text": "Hello **world**!"}' | curl -d @- https://.../api # From pipe
curl -d @filename.txt https://.../api #  From file

После добавляется заголовок для корректной отправки JSON:

-H "Content-Type: application/json;charset=UTF-8"

И в конце добавляется заголовок авторизации Bearer token, который не влез в веб-интерфейса Zabbix:

-H "Authorization: Bearer <my_long_token_here>"

В конце отлавливается условный код ответа 200, отсекается лишний вывод в консоль, и 1 или 0 получается на выходе, который уже через UserParameter отправляется к нужному узлу с созданным элементом данных и ключом.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: