Ad Widget

Collapse

Web monitoring и Content-Encoding: gzip

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Gwynn
    Junior Member
    • May 2014
    • 15

    #1

    Web monitoring и Content-Encoding: gzip

    Требуется мониторить сайты которые возвращают ответ в gzip.
    Заббикс вэб мониторинг этого заголовка, как я понимаю, не знает, и потому пытается искать слова в сжатом ответе.

    Кто-то пробовал это обойти ?
  • filipp.sudanov
    Senior Member
    Zabbix Certified Specialist
    • May 2014
    • 137

    #2
    Ну в норме заббикс (а точнее говоря, libcurl) серверу в заголовках ничего про компрессию не говорит. Т.е. сервер при этом должен отдать страницу без сжатия.

    Можно ручками в описании шага веб мониторинга указать заголовок, что-то типа
    Code:
    Accept-Encoding: gzip, deflate
    . Вы, наверное, так и сделали.
    Тогда сервер вернет страницу в сжатом виде, libcurl (т.к. он не вникает в дополнительно указанный заголовок) страницу разжимать не будет и так ее заббиксу и отдаст.

    Чтоб libcurl страницу разжимал, ему нужно для этого передать параметр. В консольном curl для этого есть ключ --compress.

    По идее нужно править исходинки заббикса, насколько я понимаю вот это место в ./src/zabbix_server/httppoller/httptest.c
    Code:
    	
    if (CURLE_OK != (err = curl_easy_setopt(easyhandle, CURLOPT_PROXY, httptest->httptest.http_proxy)) ||
    	CURLE_OK != (err = curl_easy_setopt(easyhandle, CURLOPT_COOKIEFILE, "")) ||
    	CURLE_OK != (err = curl_easy_setopt(easyhandle, CURLOPT_USERAGENT, httptest->httptest.agent)) ||
    	CURLE_OK != (err = curl_easy_setopt(easyhandle, CURLOPT_WRITEFUNCTION, WRITEFUNCTION2)) ||
    	CURLE_OK != (err = curl_easy_setopt(easyhandle, CURLOPT_HEADERFUNCTION, HEADERFUNCTION2)) ||
    	CURLE_OK != (err = curl_easy_setopt(easyhandle, CURLOPT_SSL_VERIFYPEER, 0 == httptest->httptest.verify_peer ? 0L : 1L)) ||
    	CURLE_OK != (err = curl_easy_setopt(easyhandle, CURLOPT_SSL_VERIFYHOST, 0 == httptest->httptest.verify_host ? 0L : 2L)))
    и добавить туда установку параметра CURLOPT_ACCEPT_ENCODING.

    Comment

    • Zentarim
      Senior Member
      • Mar 2012
      • 526

      #3
      Может быть feature request надо добавить, чтобы это можно было включать?

      Comment

      • Gwynn
        Junior Member
        • May 2014
        • 15

        #4
        Originally posted by filipp.sudanov
        Ну в норме заббикс (а точнее говоря, libcurl) серверу в заголовках ничего про компрессию не говорит. Т.е. сервер при этом должен отдать страницу без сжатия.
        Да, но к сожалению это не всегда так.

        Originally posted by filipp.sudanov
        По идее нужно править исходинки заббикса, насколько я понимаю вот это место в ./src/zabbix_server/httppoller/httptest.c
        Code:
        	
        if (CURLE_OK != (err = curl_easy_setopt(easyhandle, CURLOPT_PROXY, httptest->httptest.http_proxy)) ||
        	CURLE_OK != (err = curl_easy_setopt(easyhandle, CURLOPT_COOKIEFILE, "")) ||
        	CURLE_OK != (err = curl_easy_setopt(easyhandle, CURLOPT_USERAGENT, httptest->httptest.agent)) ||
        	CURLE_OK != (err = curl_easy_setopt(easyhandle, CURLOPT_WRITEFUNCTION, WRITEFUNCTION2)) ||
        	CURLE_OK != (err = curl_easy_setopt(easyhandle, CURLOPT_HEADERFUNCTION, HEADERFUNCTION2)) ||
        	CURLE_OK != (err = curl_easy_setopt(easyhandle, CURLOPT_SSL_VERIFYPEER, 0 == httptest->httptest.verify_peer ? 0L : 1L)) ||
        	CURLE_OK != (err = curl_easy_setopt(easyhandle, CURLOPT_SSL_VERIFYHOST, 0 == httptest->httptest.verify_host ? 0L : 2L)))
        и добавить туда установку параметра CURLOPT_ACCEPT_ENCODING.
        Так и сделал, это оказался единственный вариант. Но теперь возник другой вопрос. Как это реализовать еще и на прокси.
        Т.е. zabbix server теперь понимает отлично сжатые страница, но при вэб мониторинге через прокси этого не происходит (

        Буду благодарен любым подсказкам.

        Comment

        • Gwynn
          Junior Member
          • May 2014
          • 15

          #5
          Originally posted by gwynn
          Да, но к сожалению это не всегда так.


          Так и сделал, это оказался единственный вариант. Но теперь возник другой вопрос. Как это реализовать еще и на прокси.
          Т.е. Zabbix server теперь понимает отлично сжатые страница, но при вэб мониторинге через прокси этого не происходит (

          Буду благодарен любым подсказкам.
          Вопрос снят. Конечно же надо было перекомпилить заббикс с этим патчем и на прокси серверах.

          Comment

          • Gwynn
            Junior Member
            • May 2014
            • 15

            #6

            Comment

            Working...