Ad Widget

Collapse

API usergroup.get Insufficient database connection properties given,

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Alex_UUU
    Senior Member
    • Dec 2018
    • 541

    #1

    API usergroup.get Insufficient database connection properties given,

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

    Вызываю метод usergroup.get с параметром "selectRights" => "extend", и получаю вот такое сообщение.

    Insufficient database connection properties given, but method or its parameter requires direct database connection

    Права есть, авторизация проходит. Даже в БД этот юзер имеет права.
    Что делаю не так?
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Какая используется СУБД и какая версия Zabbix-сервера?
    Скажем, у PostgreSQL по умолчанию выставлен параметр "max_connections = 100"​, чего может оказаться маловато для старых версий сервера.
    Типичный симптом: в логе самого Postgres-а видны сообщения такого вида:
    Code:
    FATAL: remaining connection slots are reserved for non-replication superuser connections
    FATAL: sorry, too many clients already​
    До версии 5.4 (где была реализована "фича" ZBXNEXT-782) практически каждый процесс сервера Zabbix (в первую очередь - все поллеры) держал своё соединение с базой. Плюс веб-интерфейс (каждая сессия - своё соединение), плюс всякие дополнительные скрипты (партиционирование, API и т.п.). В итоге параметра по умолчанию могло элементарно не хватать.

    Подозреваю, что нечто подобное может быть и с другими СУБД.

    Comment

    • Alex_UUU
      Senior Member
      • Dec 2018
      • 541

      #3
      Извиняюсь, что забыл написать параметры.
      Заббикс 5,2,4. Основаная базу MySQL, хистори на ClickHouse
      Первым делом полез в процессы: 119 (в основном в липе), максимум 256 (но намного больше). ПРовел несколько экспериментов. Такое сообщение появляется только если указать параметр
      "selectRights" => "extend"
      в любых интерпретациях.

      Comment

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

        #4
        В любом случае, насколько я понимаю сообщение об ошибке, не хватает коннекшенов к базе данных.
        Только пока что не понимаю, с какой стороны их не хватает - на самом сервере БД (MySQL либо ClickHouse), или же в настройках PHP, который обрабатывает API-запросы (возможно, пула PHP-FPM).

        Comment

        • Alex_UUU
          Senior Member
          • Dec 2018
          • 541

          #5
          К ClickHouse этот метод вообще не имеет отношения. Значит может только к MySQL, Но в логах чисто. И ошибка не MySQL.
          Т.е. ошибку формирует zabbix/
          Количество коннектов zabbix к БД стабильно от 117 до 122, если несколько раз подряд смотреть. В конфиге zabbix вроде, параметра, ограничивающего количество коннектов нет.
          Я бы это сообще интерпретировал так:
          "Нет возможности подключиться к БД, этот метод требует прямого подключения к БД."
          Т.е. как будто zabbix хочет какой-то еще коннект сделать.
          Думал может прав не хватает и коннект делается от имени ТУЗ, которая по апи авторизуется - нет. Права в БД есть.
          Только разработчики, наверное, сказать могут :-)

          Comment

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

            #6
            Обращения по API изначально идут на веб-сервер, где обрабатываются PHP-скриптами веб-интерфейса.
            Я так понимаю, что эти скрипты уже дальше, в зависимости от конкретного API, либо обращаются в процессу сервера Zabbix, либо напрямую к базе данных.
            Т.е. с большой вероятностью проблема где-то здесь - либо в настройках PHP, либо (что мне кажется вероятнее) - пула php-fpm (через который, как правило, веб-сервер взаимодействует с PHP).
            Можно ещё открыть баг-репорт на support.zabbix.com, подробно описав свою конфигурацию (только там писать надо по-английски).

            Comment

            Working...