Авторская информация о системном администрировании.
# apt install sshfs
Теперь можно подмонтировать удалённую директорию:
# sshfs [email protected]:/backup /mnt/backup
Вам потребуется ввести пароль для подключения по SSH или настроить аутентификацию по сертификатам.
Сразу предупрежу, что активно работать с данными при таком подключении не стоит. Оно очень медленное и нестабильное. Копировать больше объёмы данных лучше другим способом. А вот если надо что-то читать, проверять, иногда копировать, то способ отлично подходит.
Директорию можно подмонтировать в режиме чтения:
# sshfs [email protected]:/backup /mnt/backup \
-o allow_other -o ro
Sshfs работает в пользовательском пространстве (filesystem in userspace, FUSE). Можно запускать от имени пользователя и монтировать в какую-то его личную точку монтирования с ограниченными правами.
В самом начале я упомянул, что этот способ работает между Linux серверами. На самом деле это не так. Есть порт sshfs под Windows для того, чтобы туда таким же образом монтировать директории.
#terminal# python2 -W ignore /etc/zabbix/WebMonitoring.py \
--metric=discovery --url=https://yandex.ru
{"data":[{"{#URL}":"https://yandex.ru", "{#HEADER}":"None", "{#TIMEOUT}":"30"}]}
Вывод соответствует формату автообнаружения Zabbix Server.
Теперь можно идти на сервер, импортировать шаблон. В нём ровно одно правило автообнаружения с семью прототипами данных. Триггеров нет, их надо делать отдельно. Одно правило обнаружения - один сайт. Для добавления второго сайта надо скопировать правило и изменить в нём url сайта.
Шаблон поддерживает установку параметра timeout (по дефолту 30 секунд) и передачу заголовков. А так же отдельно можно указать проверяемую строку, по наличию которой будет оцениваться корректность содержания страницы.
С помощью этого шаблона можно запускать проверки с разных хостов, делать оповещения на основе данных двух и более проверок. В общем, удобная штука, если вы реально используете веб проверки и опираетесь на них. Базового функционала сильно не хватает.
#zabbix #websitecurl 'https://zont-online.ru/api/get_authtoken' \
-u 'login:password' \
-H 'X-ZONT-Client: your@email' \
-H 'Content-Type: application/json' \
-d '{"client_name": "Zabbix"}'
В самом начале ответа получите токен, который нужно будет использовать в запросах.
2️⃣ Получаем список устройств в личном кабинете. У меня оно одно:
curl 'https://zont-online.ru/api/devices' \
-H 'X-ZONT-Client: your@email' \
-H 'X-ZONT-Token: xxxxxxxxxxxxxxxxxxxx' \
-H 'Content-Type: application/json' \
-d '{"load_io": true}'
Убеждаемся, что всё работает, данные приходят верные. Рекомендую запрос сразу в jq отправить, чтобы было удобно смотреть.
3️⃣ Идём в Zabbix, создаём новый шаблон. Сразу добавляем в него 2 макроса: {$ZONT_CLIENT_EMAIL} и {$ZONT_TOKEN}. Далее добавляем новый айтем:
- тип: HTTP Agent
- тип информации: Журнал (лог)
- url: https://zont-online.ru/api/devices
- поля запроса: load_io ⇒ true
- тип запроса: POST
- заголовки: X-ZONT-Client ⇒ {$ZONT_CLIENT_EMAIL}
X-ZONT-Token ⇒ {$ZONT_TOKEN}
Остальные параметры по желанию.
4️⃣ Прикрепите новый шаблон к любому хосту (я обычно такие шаблоны к Zabbix Server цепляю) и проверьте работу этого айтема. Не забудьте прописать значения макросов. Если данные идут и формат у них json, то двигаемся дальше. Добавляем в шаблон новый зависимый айтем. Я его назвал Температура Бойлерная:
- тип: зависимый элемент данных, в качестве основного указываем предыдущий
- тип информации: числовой с плавающей точкой
Остальное по желанию. Идём в предобработку и добавляем 3 шага:
- JSONPath: $.body.devices[*].thermometers[*].last_value
- Обрезать слева: [
- Обрезать справа: ]
После такой обработки я получаю температуру с термодатчика в бойлерной. JSONPath рекомендую проверять в онлайн сервисе jsonpath.com. Там удобно это делать. В зависимости от строки json, правило у вас будет своё. Аналогично можно добавить все необходимые метрики.
Вот и всё. По такому принципу можно обработать любые данные, поступающие от API в формате json. Более подробно и наглядно я эту тему разбирал в отдельной статье на сайте.
#zabbix