Ad Widget

Collapse

Проблема с мониторингом Nginx

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Dijkstra
    Junior Member
    • Mar 2017
    • 12

    #1

    Проблема с мониторингом Nginx

    Добрый день, 3 дня назад настроил мониторинг nginx, шаблон и конфиг брал отсюда https://github.com/zabbix/zabbix/tre...app/nginx_http
    Все прекрасно работало пару дней, потом увидел кучу ошибок в логе zabbix_server следующего содержания:
    1. Failed: cannot perform regular expression "Reading: ([0-9]+) Writing: ([0-9]+) Waiting: ([0-9]+)" match for value of type "string": pattern does not match
    4331:20200409:153316.530 error reason for "WEBSITENAME.ORG:nginx.connections.active" changed: Preprocessing failed for: HTTP/1.1 200 OK..Server: nginx..Date: Thu, 09 Apr 2020 09:34:01 GMT..Content-Type: text/html; cha...
    1. Failed: cannot perform regular expression "Active connections: ([0-9]+)" match for value of type "string": pattern does not match
    4331:20200409:153316.530 error reason for "WEBSITENAME.ORG:nginx.connections.handled.rat e" changed: Preprocessing failed for: HTTP/1.1 200 OK..Server: nginx..Date: Thu, 09 Apr 2020 09:34:01 GMT..Content-Type: text/html; cha...
    1. Failed: cannot perform regular expression "server accepts handled requests\s+([0-9]+) ([0-9]+) ([0-9]+)" match for value of type "string": pattern does not match
    4331:20200409:153316.530 error reason for "WEBSITENAME.ORG:nginx.requests.total.rate" changed: Preprocessing failed for: HTTP/1.1 200 OK..Server: nginx..Date: Thu, 09 Apr 2020 09:34:01 GMT..Content-Type: text/html; cha...
    1. Failed: cannot perform regular expression "server accepts handled requests\s+([0-9]+) ([0-9]+) ([0-9]+)" match for value of type "string": pattern does not match
    4331:20200409:153316.530 error reason for "WEBSITENAME.ORG:nginx.connections.writing" changed: Preprocessing failed for: HTTP/1.1 200 OK..Server: nginx..Date: Thu, 09 Apr 2020 09:34:01 GMT..Content-Type: text/html; cha...
    1. Failed: cannot perform regular expression "Reading: ([0-9]+) Writing: ([0-9]+) Waiting: ([0-9]+)" match for value of type "string": pattern does not match
    4331:20200409:153316.549 value cache is fully used: please increase ValueCacheSize configuration parameter

    Мониторится только 2 параметра это служба nginx и отклик.

    с самого сервера при выполнении zabbix_agentd -t web.page.get[localhost,basic_status,80]
    получаем
    web.page.get[localhost,basic_status,80] [t|HTTP/1.1 200 OK
    Server: nginx
    Date: Thu, 09 Apr 2020 09:40:23 GMT
    Content-Type: text/plain
    Content-Length: 103
    Connection: close
    X-XSS-Protection: 1; mode=block
    X-Content-Type-Options: nosniff
    X-Frame-Options: SAMEORIGIN

    Active connections: 1
    server accepts handled requests
    349 349 224
    Reading: 0 Writing: 1 Waiting: 0 ]
    я уже не знаю куда копать.

    версия nginx
    root@lb01:/etc/nginx/vhost.d# nginx -V
    nginx version: nginx/1.14.0 (Ubuntu)


  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Проверьте, не сбилось ли значение макроса {$NGINX.STUB_STATUS.PATH} для хоста. Похоже, что препроцессинг обрабатывает какую-то другую страничку - не ту, что возвращается в вашем примере в ответ на запрос пути:"/basic_status":
    Content-Type: text/plain
    Content-Length: 103
    А при обработке:
    Preprocessing failed for: HTTP/1.1 200 OK..Server: nginx..Date: Thu, 09 Apr 2020 09:34:01 GMT..Content-Type: text/html; cha...
    Значение айтема Zabbix_raw_items в Latest data можно посмотреть?

    Comment

    • Dijkstra
      Junior Member
      • Mar 2017
      • 12

      #3
      Originally posted by Kos
      Проверьте, не сбилось ли значение макроса {$NGINX.STUB_STATUS.PATH} для хоста. Похоже, что препроцессинг обрабатывает какую-то другую страничку - не ту, что возвращается в вашем примере в ответ на запрос пути:"/basic_status":

      я шаблон заного импортировал, перепроверил, значение в макросе верное

      Click image for larger version  Name:	Сним1ок.JPG Views:	0 Size:	69.7 KB ID:	399060



      А при обработке:

      Значение айтема Zabbix_raw_items в Latest data можно посмотреть?
      Из значений по nginx есть только эти
      Click image for larger version  Name:	Снимок.JPG Views:	0 Size:	24.5 KB ID:	399059

      vhost я описал в дефолтном конфиге /etc/nginx/
      Code:
      root@lb01:/etc/nginx/vhost.d# pwd
      /etc/nginx/vhost.d
      root@lb01:/etc/nginx/vhost.d# ll
      total 20
      drwxr-xr-x 2 root root 4096 Apr 10 11:08 ./
      drwxr-xr-x 8 root root 4096 Apr  7 11:18 ../
      -rw-r--r-- 1 root root  117 Apr  9 14:57 default.conf
      -rw-r--r-- 1 root root 1576 Apr  9 14:56 loadbalance.conf
      -rw-r--r-- 1 root root 1579 Apr  9 14:52 loadbalance.conf_bkp
      root@lb01:/etc/nginx/vhost.d#





      Code:
      server {
      location = /basic_status {
          stub_status;
          allow 172.16.240.1;
          allow 127.0.0.1;
          deny all;
      }
      }
      комментил denay all и осталял только allow all, тоже не помогло.

      Comment

      • Dijkstra
        Junior Member
        • Mar 2017
        • 12

        #4
        Kos Спасибо за то что откликнулись. У меня вопрос, если в хедере при запросе агентом basic_status время не верное, может проблемы быть из за этого?

        Code:
        root@lb01:/etc/nginx/vhost.d# date
        [B]Fri Apr 10 11:12:28 +06 2020[/B]
        root@lb01:/etc/nginx/vhost.d#
        root@lb01:/etc/nginx/vhost.d#
        root@lb01:/etc/nginx/vhost.d#
        root@lb01:/etc/nginx/vhost.d# zabbix_agentd -t web.page.get[localhost,basic_status,80]
        web.page.get[localhost,basic_status,80]       [t|HTTP/1.1 200 OK
        Server: nginx
        [B]Date: Fri, 10 Apr 2020 05:12:33 GMT[/B]
        Content-Type: text/plain
        Content-Length: 106
        Connection: close
        X-XSS-Protection: 1; mode=block
        X-Content-Type-Options: nosniff
        X-Frame-Options: SAMEORIGIN
        
        Active connections: 1
        server accepts handled requests
         5557 5557 5624
        Reading: 0 Writing: 1 Waiting: 0 ]

        Comment

        • Kos
          Senior Member
          Zabbix Certified SpecialistZabbix Certified Professional
          • Aug 2015
          • 3404

          #5
          День добрый!
          если в хедере при запросе агентом basic_status время не верное, может проблемы быть из за этого?
          В том, что процитировано, не видно заголовков запросов. Видны только заголовки ответов, и они вполне корректны: 11:12 при часовом поясе "+06" - это и есть 05:12 GMT.

          Из значений по nginx есть только эти
          Посмотрите повнимательнее: если ставили из того шаблона, на который дали ссылку, то в Latest data, кроме группы элементов данных "nginx", должна быть ещё группа "Zabbix raw items" - в ней и прячется элемент данных "Zabbix raw items" (он же - nginx.get_stub_status). История хранится час, в течение этого часа должны быть доступны значения. Я, к сожалению, не вижу, с каким интервалом снимаются значения (похоже, что в шаблоне это поле вообще опущено).

          Comment

          • Kos
            Senior Member
            Zabbix Certified SpecialistZabbix Certified Professional
            • Aug 2015
            • 3404

            #6
            Dijkstra , удалось ли решить проблему?

            Comment

            • Dijkstra
              Junior Member
              • Mar 2017
              • 12

              #7
              Originally posted by Kos
              Dijkstra , удалось ли решить проблему?
              Добрый день, преостановил на время поиск проблемы, был занят дрегими задачами. Я сегодня проверю, отпишу. Спасибо!

              Comment

              • Dijkstra
                Junior Member
                • Mar 2017
                • 12

                #8
                Originally posted by Kos
                День добрый!

                В том, что процитировано, не видно заголовков запросов. Видны только заголовки ответов, и они вполне корректны: 11:12 при часовом поясе "+06" - это и есть 05:12 GMT.


                Посмотрите повнимательнее: если ставили из того шаблона, на который дали ссылку, то в Latest data, кроме группы элементов данных "nginx", должна быть ещё группа "Zabbix raw items" - в ней и прячется элемент данных "Zabbix raw items" (он же - nginx.get_stub_status). История хранится час, в течение этого часа должны быть доступны значения. Я, к сожалению, не вижу, с каким интервалом снимаются значения (похоже, что в шаблоне это поле вообще опущено).
                Добрый день, и в правду не внимательно смотрел, есть RAW item
                Click image for larger version

Name:	Снимок.JPG
Views:	1419
Size:	18.7 KB
ID:	401430 В хистори это стаб статуса должно быть что то типа этого?
                Active connections: 40
                server accepts handled requests
                779954 779954 1634950
                Reading: 0 Writing: 1 Waiting: 39

                Там выдает всю страницу сайта. Не статистику.

                Comment

                • Kos
                  Senior Member
                  Zabbix Certified SpecialistZabbix Certified Professional
                  • Aug 2015
                  • 3404

                  #9
                  Originally posted by Dijkstra
                  В хистори это стаб статуса должно быть что то типа этого?
                  Active connections: 40
                  server accepts handled requests
                  779954 779954 1634950
                  Reading: 0 Writing: 1 Waiting: 39

                  Там выдает всю страницу сайта. Не статистику.
                  Насколько я понимаю - да, тут должна быть именно вся страничка. Остальное разбирается зависимыми элементами данных через препроцессинг. На этой страничке все данные есть; получается, что они собираются корректно, но не работает уже следующая фаза: разбор этой странички при помощи препроцессинга на зависимые айтемы.

                  У меня на эту тему есть две гипотезы:

                  1) шаблон предназначен для Zabbix v4.4. Для более старых версий этот вид препроцессинга работать не будет, поскольку там он ещё полноценно не реализован. Какая у вас версия сервера Zabbix?

                  2) в первоначальном сообщении была, помимо прочего, ругань на нехватку выделенной памяти:
                  4331:20200409:153316.549 value cache is fully used: please increase ValueCacheSize configuration parameter
                  Возможно, что проблема в этом, и надо просто подкорректировать конфиг сервера, дав ему достаточно RAM (и перестартовать после этого, конечно)?

                  Comment

                  • Dijkstra
                    Junior Member
                    • Mar 2017
                    • 12

                    #10
                    Originally posted by Kos
                    Насколько я понимаю - да, тут должна быть именно вся страничка. Остальное разбирается зависимыми элементами данных через препроцессинг. На этой страничке все данные есть; получается, что они собираются корректно, но не работает уже следующая фаза: разбор этой странички при помощи препроцессинга на зависимые айтемы.

                    У меня на эту тему есть две гипотезы:

                    1) шаблон предназначен для Zabbix v4.4. Для более старых версий этот вид препроцессинга работать не будет, поскольку там он ещё полноценно не реализован. Какая у вас версия сервера Zabbix?

                    2) в первоначальном сообщении была, помимо прочего, ругань на нехватку выделенной памяти:

                    Возможно, что проблема в этом, и надо просто подкорректировать конфиг сервера, дав ему достаточно RAM (и перестартовать после этого, конечно)?
                    Я не правильно выразился, стаб статус в хистори имеет не страницу статуса nginx, а сам основной сайт. Проблема как раз с самим stub_status. В хистори stub_status то, если сделать например curl http://site_name.com. я не знаю как правильно выразиться)))

                    Шаблон и проверки работали, до момента, когда вэб админы что то не подкрутили.

                    Версия zabbix сервера 4.4.1

                    я могу немного рассказать как устроен в целом сайт, есть 5 виртуальных машин, 2 БД, 2 бэкэнда(app сервера) и 1 балансер, вот с балансера я и пытаюсь снимать статистику. Если с консоли я делаю

                    [root@lb01 ~]# curl http://127.0.0.1/basic_status
                    Active connections: 19
                    server accepts handled requests
                    798267 798267 1674782
                    Reading: 0 Writing: 1 Waiting: 17

                    выдает то что должен забирать stub_status. Но что то идет не так) я не особо понимаю в вэб разработки, поэтому мне самому сложно понять в чем проблема.
                    Last edited by Dijkstra; 19-05-2020, 14:12.

                    Comment

                    • Kos
                      Senior Member
                      Zabbix Certified SpecialistZabbix Certified Professional
                      • Aug 2015
                      • 3404

                      #11
                      Т.е. при запросах с самого веб-сервера, когда обращение идёт по loopback-интерфейсу (127.0.0.1) отдаётся то, что нужно, а когда идёт опрос со стороны сервера Zabbix (видимо, на другой IP), то возвращается просто заглавная страничка сайта?
                      Может, тогда админы веб-сервера перекрутили с настройками безопасности и перекрыли доступ со стороны сервера Zabbix?
                      В документации к этому шаблону сказано:
                      Example configuration of Nginx:
                      Code:
                      location = /basic_status {
                          stub_status;
                          allow <IP of your Zabbix server/proxy>;
                          deny all;
                      }
                      Похоже, что тут оставлен только 127.0.0.1.

                      Comment

                      Working...