Ad Widget

Collapse

смс-оповещения

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Admin_dim
    Junior Member
    • Jan 2018
    • 5

    #1

    смс-оповещения

    Всем привет, столкнулся с проблемой, не отправляются смс-уведомления на номер.
    При срабатывании триггера, в логах zabbix-сервера появляется запись вида: /etc/zabbix/externalscripts/sms.sh '79251234567' 'OK: Lack of available memory on server pg1.prep' 'pg1.prep
    Сообщение не отпавляется по причине отсутствия символа ' в конце третьего аргумента, если попытаться выполнить команду /etc/zabbix/externalscripts/sms.sh '79260131020' 'OK: Lack of available memory on server pg1.prep' 'pg1.prep' - все отрабатывает, насколько я понимаю zabbix-сервер по какой то причине не ставит закрывающую одинарную кавычку. Сталкивался ли кто нить с такой проблемой? Заранее спасибо.

    P.S. Использую Zabbix 3.4.5, PHP7.0, Nginx 1.12.2, Postgresql 10.
  • SKabanov
    Member
    • Jan 2014
    • 36

    #2
    Доброе утро!

    Покажите как у вас настроены действия и способы оповещения. Пока сложно что-то сказать.

    Спасибо!

    Comment

    • Admin_dim
      Junior Member
      • Jan 2018
      • 5

      #3
      Прилагаю в архиве скриншоты настроек.
      Attached Files
      Last edited by Admin_dim; 30-01-2018, 10:06.

      Comment

      • Admin_dim
        Junior Member
        • Jan 2018
        • 5

        #4
        Включил более подробное логирование, прилагаю кусок лога:

        7063:20180130:072126.706 am_process_alert() alertid:380384 mediatypeid:6 alertpoolid:771635388
        7063:20180130:072126.706 In substitute_simple_macros() data:'{ALERT.SENDTO}'
        7063:20180130:072126.706 End substitute_simple_macros() data:'79251234567'
        7063:20180130:072126.706 In substitute_simple_macros() data:'{ALERT.SUBJECT}'
        7063:20180130:072126.706 End substitute_simple_macros() data:'PROBLEM: Free disk space is less than 20% on volume /'
        7063:20180130:072126.706 In substitute_simple_macros() data:'{ALERT.MESSAGE}'
        7063:20180130:072126.706 End substitute_simple_macros() data:'pg3.prep

        Comment

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

          #5
          Прилагаю в архиве скриншоты настроек.
          Вы издеваетесь? Зачем два скриншота (80 и 101 кБ) паковать в отдельный .tar.gz каждый (чтобы получить 69,8 и 96,3 кБ соответственно - офигенный выигрыш!)?
          Т.е. чтобы помочь Вам, мне нужно было скачать себе два файла, распаковать каждый из них, и только ради того, чтобы посмотреть, что же там за картинки. Вы всерьёз думаете, что каждому посетителю форума не лень этим заниматься?
          Можно же просто ужать картинки до приемлемого размера и приложить их "как есть", тогда они сразу же видны всем без дополнительных телодвижений! >:-E

          А по сути - у Вас в качестве тела сообщения (макрос {ALERT.MESSAGE}) передаётся многострочное сообщение. "'pg1.prep" - это, по-видимому, только начало (значение макроса {HOST.HOST}), далее идут два символа перевода строки и ещё несколько текстовых строк.
          Примеры Ваших сообщений об ошибках Вы обрезаете слишком рано - там дальше должно быть что-то ещё интересное.

          А Ваш скрипт "sms.sh", возможно, не понимает многострочных параметров.
          если попытаться выполнить команду /etc/zabbix/externalscripts/sms.sh '79260131020' 'OK: Lack of available memory on server pg1.prep' 'pg1.prep' - все отрабатывает
          Ну так попробуйте теперь такую команду:
          Code:
          /etc/zabbix/externalscripts/sms.sh '79260131020' 'OK: Lack of available memory on server pg1.prep' 'pg1.prep
          
          Trigger: Lack of available memory on server pg1.prep
          Trigger status: OK'
          - это уже будет немного ближе к тому, что пытается выполнить Zabbix.
          Да, и пробовать запускать это надо не из-под root-а, а от того пользователя, от которого работает Zabbix-сервер. Например, сделав сначала
          Code:
          su - zabbix

          Comment

          • Admin_dim
            Junior Member
            • Jan 2018
            • 5

            #6
            Ссори за неудобство, скриншоты не получилось уменьшить до требуемых форумом размеров, вернее уменьшив их - ничего не было видно на картинках, поэтому заархивировал каждый файл по отдельности.

            По делу: выполнил указанную вами Kos команду результат:
            zabbix@zabbix2:/$ /etc/zabbix/externalscripts/sms.sh '79251234567' 'OK: Lack of available memory on server pg1.prep' 'pg1.prep
            >
            > Trigger: Lack of available memory on server pg1.prep
            > Trigger status: OK'

            0, originator is too long (www.smstraffic.ru)

            Содержимое скрипта sms.sh:
            #!/usr/bin/env bash
            /etc/zabbix/externalscripts/sms-example.pl "$1" "$2" "$3"

            Comment

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

              #7
              Т.е. шелл-скрипт является лишь обёрткой для перл-скрипта, который уже, в свою очередь, и отправляет SMS. При этом многострочный текст этот PERL-скрипт отправить таки не смог - подавился.

              Ну, попробуйте, в качестве workaround-а, в этом шелловском скрипте из последнего параметра вырезать только первую строку. Например:
              Code:
              #!/usr/bin/env bash
              /etc/zabbix/externalscripts/sms-example.pl "$1" "$2" $(echo "$3" | head -n 1)

              Comment

              • Admin_dim
                Junior Member
                • Jan 2018
                • 5

                #8
                Уважаемый Kos, большое Вам спасибо, проблема решена!

                Comment

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

                  #9
                  Спасибо, что отписались о результатах

                  Если по-хорошему, то надо, конечно, либо разбираться с PERL-скриптом (почему он не воспринимает многострочный ввод), либо в шелловском скрипте-обёртке заменять переводы строк, например, пробелами.
                  Но если Вас устраивает получать в виде SMS только первую строку того, что отсылается на e-mail, то можно оставить и так, как работает сейчас

                  Comment

                  Working...