Парсинг HTML страни...
 

[Решено] Парсинг HTML страницы

10 Записи
2 Пользователи
3 Reactions
4,724 Просмотры
(@bor13)
Active Member
Присоединился: 5 лет назад
Записи: 16
Создатель темы  

Всем доброго. Не скажу что с заббиксом совсем на ты, но обычно проблем не было.  Возникла необходимость в парсинге html страницы с помощью http агента. Нужно получить цифры, указанные на скриншоте (). Простым парсингом именно эти цифры получить не удается. Думаю, что лучше всего в этом случае подойдет json или xpath парсинг. Какие мысли?

 

Тема была редактированна 5 лет назад 5 раз от bor13

   
ОтветитьЦитата
(@zerox)
Prominent Member Admin
Присоединился: 11 лет назад
Записи: 926
 

Если совсем не получается настроить парсинг через http агент, всегда есть запасной вариант с парсингом через bash скрипт. Забирайте страницу через wget или curl и вытягивайте нужные значения через grep, cut и т.д. 


   
STALKER_SLX reacted
ОтветитьЦитата
(@bor13)
Active Member
Присоединился: 5 лет назад
Записи: 16
Создатель темы  

@zerox

Вот более менее рабочий вариант, только нули почему то не выводит.

cat test.html | awk -F'</*td>' '$2{print $2}'

Как тут файл присоединить? всё перепробовал, не нашёл.

Что не так ? 

Это сообщение было изменено 5 лет назад от bor13

   
ОтветитьЦитата
(@zerox)
Prominent Member Admin
Присоединился: 11 лет назад
Записи: 926
 

Без файла я не могу помочь. Его можно выложить на любой файловый хостинг и дать ссылку.


   
ОтветитьЦитата
(@bor13)
Active Member
Присоединился: 5 лет назад
Записи: 16
Создатель темы  

@zerox

Решил, вот так. Сделал sh скрипт и зарядил с помощью внешних проверок. Правда громоздко очень получилось.

awk -F "</*td>|</b>" '/<td>.*[0-9]/ {print $2}' test.html | grep -v '<a' | awk 'NR==1,NR==12' | head -n 1

awk -F "</*td>|</b>" '/<td>.*[0-9]/ {print $2}' test.html | grep -v '<a' | awk 'NR==1,NR==12' | tail -n 4 | head -n 1

Ссылка на файл   http://zalil.su/2155605

Если есть более удобный способ, буду рад совету или решению. Жаль конечно, что нельзя сделать с помощью http агента, ведь по-сути это костыль.


   
ОтветитьЦитата
(@zerox)
Prominent Member Admin
Присоединился: 11 лет назад
Записи: 926
 

@bor13

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

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


   
ОтветитьЦитата
(@bor13)
Active Member
Присоединился: 5 лет назад
Записи: 16
Создатель темы  

@zerox

Да, сейчас работает, но внешними проверками как раз и пришлось нагрузить заббикс. Благо хостов на нем немного и нагрузки почти нет.

От: @zerox

лучше как раз через cron на хостах делать проверки и передавать в заббикс уже готовые данные. 

Я правильно понимаю, с помощью zabbix_sender и элемента данных траппер, можно передавать данных в заббикс, не используя внешние проверки?


   
ОтветитьЦитата
(@zerox)
Prominent Member Admin
Присоединился: 11 лет назад
Записи: 926
 

@bor13

Не обязательно sender и trapper использовать. Можно и через UserParameter в агенте передавать данные. Главное, что они вычисляются и формируются на хосте.

Тут тем более парсинг данных. Удаленный хост, откуда берутся данные, может тормозить или тупить, долго не отдавать страницу. Эти соединения будут висеть на zabbix сервере, если все делать через него. Когда таких тупящих проверок будет много, начнутся проблемы. 

Если же эту нагрузку переносить на агенты, то это будут проблемы только конкретных агентов, а не сервера. В общем, тут надо каждый раз прикидывать, как лучше сделать. Одно дело удобство управления, другое стабильность работы и быстродействие.

К примеру, если есть возможность автоматически раскатывать настройки агентов и скрипты проверок автоматически через ansible или что-то подобное, то может быть это будет неплохим вариантом, в отличие от проверок только на сервере. 


   
STALKER_SLX and bor13 reacted
ОтветитьЦитата
(@zerox)
Prominent Member Admin
Присоединился: 11 лет назад
Записи: 926
 

В этом, кстати, и прелесть заббикса. Он, по сути, framework, который позволяет настроить работу мониторинга очень гибко, именно так, как надо тебе в конкретной ситуации. 


   
ОтветитьЦитата
(@bor13)
Active Member
Присоединился: 5 лет назад
Записи: 16
Создатель темы  

@zerox

Спасибо большое за советы. Тему можно считать закрытой.


   
ОтветитьЦитата
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar