Ad Widget

Collapse

Мониторинг работы самого Zabbix-сервера со стороны

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • ADvorkin
    Junior Member
    • Jan 2018
    • 27

    #1

    Мониторинг работы самого Zabbix-сервера со стороны

    Недавно сервис zabbix-server перестал работать из-за фатальной ошибки при этом не сообщив никому ничего, только оставив запись в логе. О том, что с сервером какие-то проблемы узнал только по надписи "Zabbix сервер не запущен: отображаемая информация может быть не актуальной" в веб-интерфейсе. Возникла идея мониторить сам сервис, что можно сделать с помощью еще одного zabbix-сервера, но делать это не хочется, а хочется настроить мониторинг по-минимуму. Например, на другом сервере по планировщику проверять какой-либо файл... Идеи кое-какие есть, но вдруг эта задача как-то просто решается и не придется все придумывать заново.
  • Hamardaban
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2019
    • 2713

    #2
    Дергай через zabbix_get с другого узла данные для эд отражающие работу z сервера. Не получил - значит ос умерла. Получил неверные - значит процесс сервера невпорядке.

    Comment

    • ADvorkin
      Junior Member
      • Jan 2018
      • 27

      #3
      Я таким образом только zabbix-агента проверю. То что собирается самим сервером (например, пинги) через zabbix_get недоступно.

      Пока придумал обновлять какой-нибудь файлик каждую минуту (touch /var/log/zabbix/heartbeat), создав элемент данных для этого, а с помощью планировщика проверять сколько прошло секунд с последнего обновления: $((`date +%s` - `stat --printf '%Y\n' /var/log/zabbix/heartbeat`)). Причем это можно делать не снаружи, а прямо с сервера, где стоит zabbix.
      Last edited by ADvorkin; 20-01-2020, 16:52.

      Comment

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

        #4
        Не только! Верее так - всё. что может вернуть агент. Например количество процессов сервера. или любой userparameter ..

        Comment

        • ADvorkin
          Junior Member
          • Jan 2018
          • 27

          #5
          Я попробовал. Он возвращает правильное количество процессов, независимо от того запущен zabbix-server или нет.

          Comment

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

            #6
            да не может быть! вот только что проверил на тестовом сервере - -k "proc.num[zabbix_server]" замечательно отрабатывает. если сервер погиб - процессов сразу меньше.

            Comment

            • ADvorkin
              Junior Member
              • Jan 2018
              • 27

              #7
              Так он все равно возвращает какое-то количество процессов. Да, оно меньше, но если изменить настройки zabbix, базы данных, web-сервера, то количество процессов тоже изменится. Количество процессов можно отслеживать, но это ненадежный показатель, к сожалению.

              Comment

              • ADvorkin
                Junior Member
                • Jan 2018
                • 27

                #8
                Есть еще один вариант. Если настроить SNMP к серверу, то можно искать процесс usr/sbin/zabbix_server и если его нет, то информировать. Но это все-таки чуть сложнее, чем то что сделал я.

                Расскажу на всякий случай, вдруг кому пригодится.

                Создал внешний скрипт /usr/lib/zabbix/externalscripts/heartbeat.sh (не забыть дать права на исполнение) следующего содержания:
                Code:
                #!/usr/bin/env bash
                touch /var/log/zabbix/heartbeat
                rm /var/log/zabbix/testfile 2> /dev/null
                Потом создал элемент данных в узле мониторинга самого Zabbix типа "Внешняя проверка" и ключом heartbeat.sh, запускаемый раз в минуту.

                Скрипт, который проверяет файл выглядит примерно так:
                Code:
                #!/usr/bin/env bash
                
                secondsDiff=$((`date +%s` - `stat --printf '%Y\n' /var/log/zabbix/heartbeat`))
                
                if [ $secondsDiff -gt 70 ] && [ ! -f /var/log/zabbix/testfile ]
                then
                  (echo "FROM:[email protected]"; echo "TO:[email protected]"; echo "Subject:ZABBIX server down"; echo "File /var/log/zabbix/heartbeat don't update.";) | sendmail  [email protected]
                  touch /var/log/zabbix/testfile
                fi
                И добавил его ежеминутный запуск в Cron
                Code:
                * * * * *    root    /usr/lib/zabbix/alertscripts/testfile.sh
                Данный способ не только проверяет наличие сервиса, но его работоспособность. Например, если деактивировать узел сети Zabbix, то скрипт проинформирует о проблеме.

                Comment

                Working...