Ad Widget

Collapse

Проверка содержимого файла.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • ruslango
    Junior Member
    • Apr 2016
    • 24

    #1

    Проверка содержимого файла.

    Доброго времени суток!
    Есть несколько десятков сайтов. Сайты на разных хостингах.
    Необходимо мониторить файлы robots.txt на предмет изменений.
    Как это лучше всего организовать? С забиксом неделю как познакомился, только доступность сайтов настроил. Дальше пока не очень понимаю как и что делать.

    P.S. возможности поставить агента на серверах нет. надо именно сверять файл на сайте.

    Спасибо!
  • Mr.Marmaduke
    Junior Member
    • Feb 2014
    • 13

    #2
    Вариант сходу: написать скрипт, который получает адрес сайта, вытаскивает оттуда robots.txt и возвращает md5sum от него; положить этот скрипт в externalscripts и вызывать его из item-ов типа external check с нужными именами сайтов; на каждый такой item навесить триггер, который будет орать при изменении md5sum.

    Это если нужно отслеживать только сам факт изменения, без хранения историй этих изменений.

    Comment

    • ruslango
      Junior Member
      • Apr 2016
      • 24

      #3
      Originally posted by Mr.Marmaduke
      Вариант сходу: написать скрипт, который получает адрес сайта, вытаскивает оттуда robots.txt и возвращает md5sum от него; положить этот скрипт в externalscripts и вызывать его из item-ов типа external check с нужными именами сайтов; на каждый такой item навесить триггер, который будет орать при изменении md5sum.

      Это если нужно отслеживать только сам факт изменения, без хранения историй этих изменений.
      Спасибо. Буду пробовать скрипт писать.
      Ну и читать документацию на тему externalscripts.

      P.S. Да, достаточно самого факта изменения файла.

      Comment

      • Mr.Marmaduke
        Junior Member
        • Feb 2014
        • 13

        #4
        Originally posted by ruslango
        Спасибо. Буду пробовать скрипт писать
        Да там по большому счёту и писать-то нечего, под Unix-GNU будет что-то типа:
        Code:
        egor@shutter:~$ curl -s [url]http://www.zabbix.com/robots.txt[/url] | md5sum | sed "s/[[:space:]].*//"
        9f03e08c82a8fd125b244447b324372d
        egor@shutter:~$

        Comment

        • ruslango
          Junior Member
          • Apr 2016
          • 24

          #5
          Понимаю что это наглость. Но может Вы сможете мне помочь пошагово?
          Был бы очень признателен!
          Нашел я внешние проверки, но как туда засунуть скрипт?
          Потом же надо где-то указать с чем сравнивать md5. Или заббикс будет сравнивать с предыдущим значением?
          Пока что больше вопросов чем ответов

          Comment

          • Mr.Marmaduke
            Junior Member
            • Feb 2014
            • 13

            #6
            Примерно так:

            1. Создать скрипт script.sh подобный вешеприведённому однострочнику, принимающий URL в качестве аргумента и возвращающий строку с MD5-хэшем от содержимого. Положить скрипт в то место, где у вас лежат externalscripts, и дать на него право запуска тому пользователю, от которого у вас работает Zabbix-сервер.

            2. На сервере Zabbix создать Item someurl_md5sum типа External check, в качестве Key указать script.sh["http://somesite.tld/robots.txt"] а в Type of information - Character. Update interval и прочее по вкусу.

            3. Создать Trigger условием {someurl_md5sum.diff(0)}>0, Severity по вкусу. Он и будет сравнивать текущее значение someurl_md5sum с предыдущим и вопить при несовпадении.

            Comment

            • aib
              Senior Member
              • Jan 2014
              • 1615

              #7
              И еще один вариант - посмотрите, как в шаблоне "Template OS Linux" обрабатывается триггером изменение файла /etc/passwd
              Code:
              {Template OS Linux:vfs.file.cksum[/etc/passwd].diff(0)}>0
              Т.е. если возможно поставить на удаленные сайты Zabbix Agent, то вы сможете сконфигурировать и такой тип проверки, какой использован для контроля изменения /etc/passwd
              Sincerely yours,
              Aleksey

              Comment

              • ruslango
                Junior Member
                • Apr 2016
                • 24

                #8
                Спасибо огромное за советы! Утром начну воплощать в жизнь!

                Comment

                • Mr.Marmaduke
                  Junior Member
                  • Feb 2014
                  • 13

                  #9
                  Originally posted by aib
                  если возможно поставить на удаленные сайты zabbix agent
                  В условии задачи как раз написано, что нельзя.

                  Comment

                  • ruslango
                    Junior Member
                    • Apr 2016
                    • 24

                    #10
                    Originally posted by Mr.Marmaduke
                    Примерно так:

                    1. Создать скрипт script.sh подобный вешеприведённому однострочнику, принимающий URL в качестве аргумента и возвращающий строку с MD5-хэшем от содержимого. Положить скрипт в то место, где у вас лежат externalscripts, и дать на него право запуска тому пользователю, от которого у вас работает Zabbix-сервер.

                    2. На сервере Zabbix создать Item someurl_md5sum типа External check, в качестве Key указать script.sh["http://somesite.tld/robots.txt"] а в Type of information - Character. Update interval и прочее по вкусу.

                    3. Создать Trigger условием {someurl_md5sum.diff(0)}>0, Severity по вкусу. Он и будет сравнивать текущее значение someurl_md5sum с предыдущим и вопить при несовпадении.
                    Вроде все сделал как Вы писали, но триггер не создается.
                    Попробую по пунктам написать:
                    1. Создаю Host с любым названием.
                    2. В нем создаю Item с названием someurl_md5sum (не стал менять, для одной проверки пойдет).
                    3. указываю Type - External Check.
                    4. Key robots.sh["http://url.ru/robots.txt"]
                    5. Type of information - Character
                    6. Создаю триггер {someurl_md5sum.diff(0)}>0

                    В итоге получаю ошибку:
                    Code:
                    Incorrect trigger expression. Check expression part starting from "{someurl_md5sum.diff(0)}>0".
                    Права на скрипт верные.

                    Comment

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

                      #11
                      Ну, в триггере ссылаются всё же на ключ элемена данных (item-а), а не на его название. Т.е. должно быть что-то вроде
                      Code:
                      {Host:robots.sh["http://url.ru/robots.txt"].diff(0)}>0

                      Comment

                      • sadman
                        Senior Member
                        • Dec 2010
                        • 1611

                        #12
                        Originally posted by ruslango
                        1. Создаю Host с любым названием.
                        2. В нем создаю Item с названием someurl_md5sum (не стал менять, для
                        ...
                        4. Key robots.sh["http://url.ru/robots.txt"]
                        Code:
                        Incorrect trigger expression. Check expression part starting from "{someurl_md5sum.diff(0)}>0".
                        Права на скрипт верные.
                        Неверно то, что в триггере указываете не ключ элемента данных, как положено, а его имя.

                        При создании триггера воспользуйтесь "Expression constructor" для первого раза.

                        Comment

                        • ruslango
                          Junior Member
                          • Apr 2016
                          • 24

                          #13
                          {Node1:robots.sh["http://ruspilstroy.ru/robots.txt"].diff(0)}>0

                          с таким триггером ошибок система не выдала, но и уведомления при изменении файла не присылает.
                          хотя если md5 в консоли проверить, то видно что изменения есть.

                          Comment

                          • sadman
                            Senior Member
                            • Dec 2010
                            • 1611

                            #14
                            Originally posted by ruslango
                            хотя если md5 в консоли проверить, то видно что изменения есть.
                            А в Latest Data изменения есть по данному айтему?

                            Comment

                            • ruslango
                              Junior Member
                              • Apr 2016
                              • 24

                              #15
                              Originally posted by sadman
                              А в latest data изменения есть по данному айтему?
                              Пусто. Но ошибок больше нет вообще. Все работает )

                              Comment

                              Working...