Ad Widget

Collapse

Многоуровневая проверка web-сервиса

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Anth0ny
    Member
    • Nov 2009
    • 85

    #1

    Многоуровневая проверка web-сервиса

    Приветствую!

    Причина запроса: время от времени на одном из уровней иерархии возникают проблемы с отдачей файлов. Хотелось бы максимально быстро локализовывать очаг проблемы. А не ползать вручную по всей иерархии и не искать проблему вручную.

    Дано: есть 3ёх-уровневый веб-сервис для отдачи видеофайлов. Пользователь обращается к серверу раздачи (IIS7) 3его уровня (video.test.ru), этот сервер проверяет наличие файла в своём кэше, если его нет то запрашивается кэширующий сервер второго уровня (IIS7), если и на нём нет, то сервер второго уровня запрашивает файл в центральном хранилище (IIS7). И отдаёт вверх по иерархии (1->2->3->пользователь).

    Выглядит примерно так:
    Code:
    (3) Пользователь -> Уровень 3 : http://video.test.ru/.test/.test.iis.mov
    
    файла в кэше сервера нет, ищем глубже...
    
    [I]тут стоит цискобалансер, автоматом выбирающий наименее загруженный кэш-сервер более низкого уровня[/I]
    
    (2) Кэш-сервер 1
    Уровень 3 - Уровень 2 : http://video-cache-1.test.ru/.test/.test.iis.mov
    
    или
    
    (2) Кэш-сервер 2
    Уровень 3 - Уровень 2 : http://video-cache-2.test.ru/.test/.test.iis.mov
    
    файла не промежуточных кэш-серверах нет, идём в центральное хранилище
    
    (1) Уровень 2 - Уровень 1 : http://core.test.ru/.test/.test.iis.mov
    Есть: сейчас сделаны web-айтемы для каждого из уровней иерархии. Т.е. 3 уровня- 4 сценария (4 - так как на уровне 2 не одна а две возможные точки отказа).

    Вопрос: можно ли реализовать единую проверку всего сервиса таким образом, чтобы:

    1) проверялась вся иерархия, НО не сверху вниз, а снизу-вверх, от уровня (1) до уровня (3), от Хранилища до Пользователя.
    2) реализовать такую схему без установки дополнительных компонентов, только за счёт логики сервера Zabbix и расставленных на web-серверах Zabbix-агентов (сейчас есть только локальный Zabbix-сервер 1.6 а все указанные сервера стоят на хостинге и, что следует из web-софта, виндовые)?

    Алгоритм:

    ЕСЛИ на уровне (3) всё плохо - остановиться (триггер, экшен-мыло).
    ЕСЛИ на уровне (3) всё хорошо, то производится проверка более вышестоящего уровня (2), проверка обоих кэш-серверов.
    ЕСЛИ на уровне (2) на одном или обоих серверах найдена проблема - остановиться (триггер, экшен-мыло).
    И только ЕСЛИ на уровне (2) всё хорошо, проверять сервер-раздатчик уровня (1).

    При анализе этой задачи почему-то всё время в памяти всплывают отрывки из виденной в разное время в разных темах мысли об иерархической проверке цепочки. Но там это было насколько я помню привязано к проверке цепочки оборудования (сеть из нескольких промежуточных компонентов), когда при падении пинга цепочка проверялась по всей длине (проверялся каждый источник данных мониторинга).

    Не подскажете, как быть в данном случае?
    Спасибо!
    Last edited by Anth0ny; 16-03-2010, 09:35.
  • Anth0ny
    Member
    • Nov 2009
    • 85

    #2
    Алексей, сообщество, нет мысли как можно реализовать цепочную проверку?

    Очень нужен ваш совет.

    Comment

    • dima_dm
      Senior Member
      • Dec 2009
      • 2697

      #3
      Есть следующая мысль:
      На Zabbix-агентах пишем сценарии через UserParameter=, чтобы файлы для скачивания постоянно были другие, и вы проверяли именно нужный уровень,а не работу кэширования предыдущего уровня.
      Пример:
      Пусть файла X нет в кэше
      Тогда скачивая файл 1-й раз через 3-й уровень мы проверяем всю цепочку
      Всё работает, и не тестируем больше
      Если не работает
      Запрашиваем у 2-го уровня, если не работает, проблема между 1 и 2.
      Вешаете на Item триггеры, и определяете зависимости между ними.
      P.S. Если есть средства удаления из кэша конкретного файла, то можно использовать один файл для тестирования, и очищать кэши на уровне 2 и 3
      Last edited by dima_dm; 17-03-2010, 08:43.

      Comment

      • Anth0ny
        Member
        • Nov 2009
        • 85

        #4
        Originally posted by dima_dm
        Есть следующая мысль:
        На Zabbix-агентах пишем сценарии через UserParameter=, чтобы файлы для скачивания постоянно были другие, и вы проверяли именно нужный уровень,а не работу кэширования предыдущего уровня.
        Пример:
        Пусть файла X нет в кэше
        Тогда скачивая файл 1-й раз через 3-й уровень мы проверяем всю цепочку
        Всё работает, и не тестируем больше
        Если не работает
        Запрашиваем у 2-го уровня, если не работает, проблема между 1 и 2.
        Вешаете на Item триггеры, и определяете зависимости между ними.
        P.S. Если есть средства удаления из кэша конкретного файла, то можно использовать один файл для тестирования, и очищать кэши на уровне 2 и 3
        Dima, благодарю =)

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

        Comment

        • dima_dm
          Senior Member
          • Dec 2009
          • 2697

          #5
          Originally posted by Anth0ny
          Dima, благодарю =)

          Однако есть вопрос: а собственно как реализовать это самое "Если не работает"? В отличие от триггеров, где есть зависимости, у айтемов я их не увидел.
          Есть несколько способов:
          1-й способ
          Есть 3 скрипта для проверки 1-го, 2-го и 3-го уровня, им соответствует 3 Item
          UserParameter=level1,prog1
          UserParameter=level2,prog2
          UserParameter=level3,prog3
          На каждый ITEM вешаем триггер, и устанавливаем зависимости между ними.

          2-й способ
          1-н скрипт, который проверяет все 3 уровня
          UserParameter=check,prog
          И возращаемые значения
          0 – все хорошо
          1- проблема на 1-м уровне
          2- проблема на 2-м уровне
          3 - проблема на 3-м уровне.
          И т.д.

          Comment

          • Anth0ny
            Member
            • Nov 2009
            • 85

            #6
            Originally posted by dima_dm
            Есть несколько способов:

            2-й способ

            1-н скрипт, который проверяет все 3 уровня
            UserParameter=check,prog
            И возращаемые значения
            0 – все хорошо
            1- проблема на 1-м уровне
            2- проблема на 2-м уровне
            3 - проблема на 3-м уровне.
            И т.д.
            вот-вот-вот! =)
            вот это очень интересно и выглядит многообещающе...

            я так понимаю, что использование UserParameter перекладывает работу по проверке с сервера на Агента?
            и в данном случае prog должно проверять за один проход все три уровня и выдавать разные значения для разных уровней?
            если так, то на каком уровне нужно это прописывать, на самом глубоком (1) или на ближайшем к Пользователям (3)?

            Comment

            • dima_dm
              Senior Member
              • Dec 2009
              • 2697

              #7
              Originally posted by Anth0ny
              вот-вот-вот! =)
              если так, то на каком уровне нужно это прописывать, на самом глубоком (1) или на ближайшем к Пользователям (3)?
              Можно реализовать на любом из Zabbix Agent, но логичнее на 3-м уровне или вообще на Zabbix Server, чтобы тестовый трафик проходил по маршруту, как работают реальные пользователи системы ( на Zabbix Server можно также реализовать через External Check), чтобы мониторинг показывал и имеющиеся проблемы на сети и не возникало ситуации, что у пользователей ничего не работает из-за проблем на сети, а мониторинг показывает, что все Ok.

              Comment

              • Anth0ny
                Member
                • Nov 2009
                • 85

                #8
                Originally posted by dima_dm
                Можно реализовать на любом из Zabbix Agent, но логичнее на 3-м уровне или вообще на Zabbix Server, чтобы тестовый трафик проходил по маршруту, как работают реальные пользователи системы ( на Zabbix Server можно также реализовать через External Check), чтобы мониторинг показывал и имеющиеся проблемы на сети и не возникало ситуации, что у пользователей ничего не работает из-за проблем на сети, а мониторинг показывает, что все Ok.
                Dima, спасибо за помощь!
                Сейчас буду посмотреть...

                Comment

                Working...