Ad Widget

Collapse

web мониторинг сервиса(health Check)

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • SergeyL
    Member
    • Jan 2022
    • 89

    #1

    web мониторинг сервиса(health Check)

    Всем привет! Столкнулся с такой проблемой:
    Мне необходимо мониторить мои сервисы на их доступность.
    У меня есть Linux сервер на котором работает этот сервис и установлен zabbix-agent, сервис доступен по 8787 порту.
    Я создал запрос на проверку:
    Click image for larger version

Name:	image.png
Views:	476
Size:	62.5 KB
ID:	462687
    Click image for larger version

Name:	image.png
Views:	404
Size:	25.0 KB
ID:	462688


    Я получаю ошибку:
    Step "HealthCheck" [1 of 1] failed: Couldn't connect to server: Failed to connect to localhost port 8787: Connection refused
    ​Что естественно, т.к. на сколько я понял запрос
    http://localhost:8787/ams/actuator/health
    ​идет с моего Zabbix сервера, а не с Агента установленного на Сервере, где бежит мой сервис.
    У Zabbix Server а нет доступа к этому сервису по этому порту.

    Подскажите, есть ли способ запускать проверку именно с Агента установленного на сервере, на котором бежит Сервис!?​​
  • Hamardaban
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2019
    • 2713

    #2
    Весь вопрос - что для вас значит «сервис доступен»

    веб мониторинг в вашем случае не подходит ( ну вы поняли почему)
    если можно ограничиться фактом наличия открытого порта - используйте ключи агента (!) net.tcp.port​ или/и net.tcp.listen
    если нужно подключаться и получать данные для анализа - используйте system.run или userparameter с вызовом curl и анализом полученного в припроцессинге (или зависимых элементах)

    Comment

    • SergeyL
      Member
      • Jan 2022
      • 89

      #3
      Originally posted by Hamardaban
      Весь вопрос - что для вас значит «сервис доступен»

      веб мониторинг в вашем случае не подходит ( ну вы поняли почему)
      если можно ограничиться фактом наличия открытого порта - используйте ключи агента (!) net.tcp.port​ или/и net.tcp.listen
      если нужно подключаться и получать данные для анализа - используйте system.run или userparameter с вызовом curl и анализом полученного в припроцессинге (или зависимых элементах)
      curl мне подходит, опишите подробнее пожалуйста, буду благодарен
      Click image for larger version

Name:	image.png
Views:	385
Size:	5.4 KB
ID:	462719
      вот по сути, что мне нужно проверять - либо, что бы выдавало 200, либо проверять, что отдает {"status":"UP"}, потом на этот Item я настрою триггер.
      Я просто не до конца еще разобрался и не могу понять, куда что заполнять, спасибо!
      Click image for larger version

Name:	image.png
Views:	377
Size:	46.0 KB
ID:	462720

      Comment

      • Semiadmin
        Senior Member
        • Oct 2014
        • 1625

        #4
        Originally posted by SergeyL
        вот по сути, что мне нужно проверять - либо, что бы выдавало 200, либо проверять, что отдает {"status":"UP"}, потом на этот Item я настрою триггер.
        web.page.get​ даст всю необходимую информацию

        Comment

        • SergeyL
          Member
          • Jan 2022
          • 89

          #5
          Originally posted by Semiadmin
          web.page.get​ даст всю необходимую информацию
          Его можно использовать с помощью zabbix agent, либо это будет HTTP agent? Мне важно, что бы запрос был с самого сервера, где у меня сервис работает, а не с Zabbix сервера.

          Comment

          • Semiadmin
            Senior Member
            • Oct 2014
            • 1625

            #6

            Comment

            • Hamardaban
              Senior Member
              Zabbix Certified SpecialistZabbix Certified Professional
              • May 2019
              • 2713

              #7
              О! Как-то я пропустил этот ключик… Возьмем на заметку :-)

              Comment

              • SergeyL
                Member
                • Jan 2022
                • 89

                #8
                Originally posted by Hamardaban
                О! Как-то я пропустил этот ключик… Возьмем на заметку :-)
                Click image for larger version

Name:	image.png
Views:	368
Size:	43.7 KB
ID:	462769
                вот так оно у меня сейчас выглядит, только почему-то данные пока не собирает, пока не разобрался(хотя убрал полностью Preprocessing - все ровно пусто)

                Comment

                • Hamardaban
                  Senior Member
                  Zabbix Certified SpecialistZabbix Certified Professional
                  • May 2019
                  • 2713

                  #9
                  По нажатию кнопочки Test что возвращает?

                  Comment

                  • SergeyL
                    Member
                    • Jan 2022
                    • 89

                    #10
                    Originally posted by Hamardaban
                    По нажатию кнопочки Test что возвращает?
                    Click image for larger version

Name:	image.png
Views:	372
Size:	23.5 KB
ID:	462792
                    все есть, что мне нужно​ - разбираюсь с синтаксисом, что бы оно попадало в Latest Data

                    Comment


                    • Hamardaban
                      Hamardaban commented
                      Editing a comment
                      В последние данные и вся эта "простыня" должна попадать без припроцессинга.
                  • Semiadmin
                    Senior Member
                    • Oct 2014
                    • 1625

                    #11
                    Лучше всего создать 2 зависимых айтема - для http code и для status. При таймауте можно через препроцессинг "Check for not supported value​" возвращать, например, HTTP/1.1 0, как это сделал бы curl

                    Comment


                    • Hamardaban
                      Hamardaban commented
                      Editing a comment
                      Это конечно правильно, но в данном случае можно первым шагом проверить на совпадение с "HTTP/1.1 0" и при ошибке присвоить значение "{"status":"DOWN"}" (или вообще любое) , а вторым шагом проверять на совпадение с "{"status":"UP"}" : совпало - храним 1, не совпало - 0.
                      Чтоб не плодить items. Понятно что потеряется информация о причинах проблемы - но тут уж надо выбирать :-)
                  • SergeyL
                    Member
                    • Jan 2022
                    • 89

                    #12
                    Originally posted by Semiadmin
                    Лучше всего создать 2 зависимых айтема - для http code и для status. При таймауте можно через препроцессинг "Check for not supported value​" возвращать, например, HTTP/1.1 0, как это сделал бы curl
                    Спасибо за совет, сейчас буду разбираться как реализовать.

                    Comment

                    • SergeyL
                      Member
                      • Jan 2022
                      • 89

                      #13
                      Возможно кто-то сможет подсказать почему данные не попадают в Latest Data?
                      При Test все выдает отлично, но данные не попадают в Latest Data...
                      Click image for larger version

Name:	image.png
Views:	351
Size:	43.6 KB
ID:	463056
                      Click image for larger version

Name:	image.png
Views:	347
Size:	64.3 KB
ID:	463057

                      Storage Period выставлен 7 дней...

                      Comment

                      Working...