First time here? Check out the FAQ!

Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Cdr log в postgres

0

При перезапуске сервера, поднимаются сервисы в нужном порядке: сначала 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 Что-то даже запрос то к гуглу на ум не идет, а что нагуглилось - не спасло!

спросил Jul 31 '12

um2010 Gravatar um2010
2056 70 13 55

Comments

Давайте дебажить. Включить лог всех запросов в Postgres. http://stackoverflow.com/questions/722221/how-to-log-postgres-sql-queries

litnimax (Aug 1 '12)edit

ща почетаем, дебах, ога!

um2010 (Aug 1 '12)edit

включил, только такая херь:

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 (Aug 1 '12)edit

и никаких селектов, хотя если сделать ручками какой-нибудь селект , в лог валится

um2010 (Aug 1 '12)edit

заметил такую особенность, если в cdr_pgsql.conf поменять настройки, к примеру сменить базу, и релоаднуть - все начинает работать, если еще раз поменять, то имена столбцов прописываются дважды

um2010 (Aug 1 '12)edit

такое ощущение, что порядок загрузки модулей надо где-то поменять, не?

um2010 (Aug 1 '12)edit

2 Ответа

0

Попробуйте обновить Postgres до 9.1

ссылка удалить спам редактировать

ответил Jul 31 '12

litnimax Gravatar litnimax
1453 11 8 29
http://www.pbxware.ru/

Comments

перезапуск астериска в ручную проблему то снимает, точно постгрес может быть виноват? не хочется апгрейдить его до 9

um2010 (Aug 1 '12)edit
0

скорее всего нет прав на селект. астеиск делает select * from cdr чтоб определить какие поля есть в базе.

ссылка удалить спам редактировать

ответил Aug 1 '12

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

Comments

почему после останова астериска и запуска его от того же пользователя - всё ок?

um2010 (Aug 1 '12)edit

такое ощущение, что нехватает каких-то путей или переменных окружения

um2010 (Aug 1 '12)edit

не делает он такой, кстати, селект, даже когда успешно всё пишет. судя по дебагу постгреса

um2010 (Aug 1 '12)edit

делает. при рестарте модуля cdr_*. смотрите может порядок загрузки модулей неправильный

meral (Aug 1 '12)edit

как посмотреть порядок загрузки модулей?

um2010 (Aug 1 '12)edit

дело действительно в порядке, cdr_pgsql.so нужно грузить последним, осталось отрыть как это сделать, при autoload=on

um2010 (Aug 1 '12)edit

странно.. module show и в том и в том случае выводит один и тот же порядок модулей, но после автозагрузки сдр не пишет. Если сделать module unload cdrpgsql, потом module load cdrpgsql то в консоли появляются радостные мессаджи по поводу взятия параметров и дальше все ок. Что не хватает cdr_pgsql при загрузке? Дебаг постгреса показывает, что он запускается ранее астериска и видит его начальный селект по поводу параметров? мож какой модуль трет их?

um2010 (Aug 1 '12)edit

руками выстроил весь порядок, cdr_pgsql грузится последним, всё равно после автозапуска нет записей в логе

um2010 (Aug 1 '12)edit

ну. читайте код. добавляйте в код дебаг где его недостаточно. при загрузке он спрашивает поля. у вас почемуто результат - пустое множество.

meral (Aug 1 '12)edit

путем дебага астера выяснил, что при автозагрузке отсутствует строчка: cdr_pgsql.c: Successfully connected to PostgreSQL database. т.е. астер вроде как раньше прогружается постгреса получается? и как быть? а если постгрес перегрузить, что логи тож отвалятся?

um2010 (Aug 1 '12)edit

определенно в этом дело, в скрипт запуска астера добавил /bin/sleep 10 и все полетело.. но это ж ведь не дело! Как сделать так, чтоб "было хорошо", т.е. астериск чтоб грузился гарантированно после постгреса? Система Centos 5.8

um2010 (Aug 1 '12)edit

ну зависит от ОС. можно просто в /etc/rc.local(последний после загрузки) дописать релоад

meral (Aug 1 '12)edit

ну это ж не выход?

um2010 (Aug 1 '12)edit

почему это? у меня есть куча инсталяций с glusterfs так там я вообще делаю полный рестарт астериска после загрузки. иначе он файлы конфигурации с шары не читает.

meral (Aug 1 '12)edit

ну правильно конечно поменять порядок загрузки. но это только на критичных проектах делается и сильно зависит от ОС. а вы так и не сказали что у вас за ОС.

meral (Aug 1 '12)edit

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: Jul 31 '12

Просмотрен: 2,005 раз

Обновлен: Aug 01 '12

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.