перезапуск астериска в ручную проблему то снимает, точно постгрес может быть виноват? не хочется апгрейдить его до 9
um2010 ( 2012-08-01 08:05:25 +0400 )редактироватьПри перезапуске сервера, поднимаются сервисы в нужном порядке: сначала posgress, в самом конце asterisk.
Asterisk настроен на CDR-логирование в postgres, однако в консоли видим:
> [INSERT INTO cdr () VALUES ()]
[Aug 1 08:40:43] ERROR[2671]: cdr_pgsql.c:308 pgsql_log: Failed to insert call detail record into database!
[Aug 1 08:40:43] ERROR[2671]: cdr_pgsql.c:309 pgsql_log: Reason: ERROR: syntax error at or near ")" at character 18
[Aug 1 08:40:43] ERROR[2671]: cdr_pgsql.c:310 pgsql_log: Connection may have been lost... attempting to reconnect.
[Aug 1 08:40:43] ERROR[2671]: cdr_pgsql.c:313 pgsql_log: Connection reestablished.
[Aug 1 08:40:43] ERROR[2671]: cdr_pgsql.c:319 pgsql_log: HARD ERROR! Attempted reconnection failed. DROPPING CALL RECORD!
[Aug 1 08:40:43] ERROR[2671]: cdr_pgsql.c:320 pgsql_log: Reason: ERROR: syntax error at or near ")" at character 18
при этом астериск сам зацеплен к базе, realtime , например, работает!
Если остановить, потом запустить - всё ок. Asterisk 1.8.15.0, postgres 8.4 Что-то даже запрос то к гуглу на ум не идет, а что нагуглилось - не спасло!
Попробуйте обновить Postgres до 9.1
перезапуск астериска в ручную проблему то снимает, точно постгрес может быть виноват? не хочется апгрейдить его до 9
um2010 ( 2012-08-01 08:05:25 +0400 )редактироватьскорее всего нет прав на селект. астеиск делает select * from cdr чтоб определить какие поля есть в базе.
почему после останова астериска и запуска его от того же пользователя - всё ок?
um2010 ( 2012-08-01 08:03:42 +0400 )редактироватьтакое ощущение, что нехватает каких-то путей или переменных окружения
um2010 ( 2012-08-01 08:49:47 +0400 )редактироватьне делает он такой, кстати, селект, даже когда успешно всё пишет. судя по дебагу постгреса
um2010 ( 2012-08-01 13:18:18 +0400 )редактироватьделает. при рестарте модуля cdr_*. смотрите может порядок загрузки модулей неправильный
meral ( 2012-08-01 13:26:46 +0400 )редактироватьдело действительно в порядке, cdr_pgsql.so нужно грузить последним, осталось отрыть как это сделать, при autoload=on
um2010 ( 2012-08-01 14:21:44 +0400 )редактироватьстранно.. module show и в том и в том случае выводит один и тот же порядок модулей, но после автозагрузки сдр не пишет. Если сделать module unload cdrpgsql, потом module load cdrpgsql то в консоли появляются радостные мессаджи по поводу взятия параметров и дальше все ок. Что не хватает cdr_pgsql при загрузке? Дебаг постгреса показывает, что он запускается ранее астериска и видит его начальный селект по поводу параметров? мож какой модуль трет их?
um2010 ( 2012-08-01 14:54:46 +0400 )редактироватьруками выстроил весь порядок, cdr_pgsql грузится последним, всё равно после автозапуска нет записей в логе
um2010 ( 2012-08-01 15:10:00 +0400 )редактироватьну. читайте код. добавляйте в код дебаг где его недостаточно. при загрузке он спрашивает поля. у вас почемуто результат - пустое множество.
meral ( 2012-08-01 16:07:49 +0400 )редактироватьпутем дебага астера выяснил, что при автозагрузке отсутствует строчка: cdr_pgsql.c: Successfully connected to PostgreSQL database. т.е. астер вроде как раньше прогружается постгреса получается? и как быть? а если постгрес перегрузить, что логи тож отвалятся?
um2010 ( 2012-08-01 16:14:26 +0400 )редактироватьопределенно в этом дело, в скрипт запуска астера добавил /bin/sleep 10 и все полетело.. но это ж ведь не дело! Как сделать так, чтоб "было хорошо", т.е. астериск чтоб грузился гарантированно после постгреса? Система Centos 5.8
um2010 ( 2012-08-01 17:17:34 +0400 )редактироватьну зависит от ОС. можно просто в /etc/rc.local(последний после загрузки) дописать релоад
meral ( 2012-08-01 18:24:11 +0400 )редактироватьпочему это? у меня есть куча инсталяций с glusterfs так там я вообще делаю полный рестарт астериска после загрузки. иначе он файлы конфигурации с шары не читает.
meral ( 2012-08-02 00:12:03 +0400 )редактироватьну правильно конечно поменять порядок загрузки. но это только на критичных проектах делается и сильно зависит от ОС. а вы так и не сказали что у вас за ОС.
meral ( 2012-08-02 00:16:08 +0400 )редактироватьЗадан: 2012-08-01 01:10:46 +0400
Просмотрен: 1,981 раз
Обновлен: Aug 01 '12
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
Давайте дебажить. Включить лог всех запросов в Postgres. http://stackoverflow.com/questions/722221/how-to-log-postgres-sql-queries
litnimax ( 2012-08-01 11:50:32 +0400 )редактироватьща почетаем, дебах, ога!
um2010 ( 2012-08-01 13:04:21 +0400 )редактироватьвключил, только такая херь:
ERROR: syntax error at or near ")" at character 25 STATEMENT: INSERT INTO public.cdr () VALUES () ERROR: syntax error at or near ")" at character 25 STATEMENT: INSERT INTO public.cdr () VALUES ()
um2010 ( 2012-08-01 13:14:21 +0400 )редактироватьи никаких селектов, хотя если сделать ручками какой-нибудь селект , в лог валится
um2010 ( 2012-08-01 13:14:52 +0400 )редактироватьзаметил такую особенность, если в cdr_pgsql.conf поменять настройки, к примеру сменить базу, и релоаднуть - все начинает работать, если еще раз поменять, то имена столбцов прописываются дважды
um2010 ( 2012-08-01 13:15:47 +0400 )редактироватьтакое ощущение, что порядок загрузки модулей надо где-то поменять, не?
um2010 ( 2012-08-01 13:16:17 +0400 )редактировать