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

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

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

спросил 2012-08-01 01:10:46 +0400

um2010 Gravatar um2010
2056 69 11 52

Comments

Давайте дебажить. Включить лог всех запросов в 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 )редактировать

2 Ответа

0

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

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

ответил 2012-08-01 01:38:46 +0400

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

Comments

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

um2010 ( 2012-08-01 08:05:25 +0400 )редактировать
0

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

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

ответил 2012-08-01 04:32:10 +0400

meral Gravatar meral flag of Ukraine
21228 24 19 169
http://pro-sip.net/

Comments

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

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 )редактировать

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

um2010 ( 2012-08-01 13:34:37 +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 )редактировать

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

um2010 ( 2012-08-01 19:05:25 +0400 )редактировать

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

meral ( 2012-08-02 00:12:03 +0400 )редактировать

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

meral ( 2012-08-02 00:16:08 +0400 )редактировать

Ваш ответ

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 ленту новостей

Статистика

Задан: 2012-08-01 01:10:46 +0400

Просмотрен: 841 раз

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

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