2014-04-05 3 views
1

나는 rabbitmq auth에 대해 openldap을 사용하려고합니다. 그러나 openldap 로그를 모니터링 할 때 항상 오류 정보가 있습니다.rabbitmq ldap 코드를 디버깅하는 방법은 무엇입니까?

ebin 파일을 대체하여 rabbitmq의 소스 코드에 디버그 코드를 삽입 할 계획입니다.

두 질문 : rabbitmq 서버를 만드는 방법

  1. 쉘 입력을 시작, 그래서 온라인으로 디버깅 할 수 있습니다. 기본적으로 ps -ef는 rabbitmq 시작을 noshell으로 시작합니다. 그것을 바꾸는 방법?

    YUS-아이맥 : EBIN yuchen의 $ 추신 -ef | 그렙 ERL

    (501) 16,021 16,014 0 Thu08AM ttys000 48 : 49.47 /usr/local/Cellar/erlang/R16B01/lib/erlang/erts-5.10.2 /bin/beam.smp --root/usr/local/Cellar/erlang/R16B01/lib/erlang -progname erl - -home/Users/yuchen - -newshell -name emacs 501 19097 56527 0 4:56 AM ttys006 0 : 00.00 grep erl 501 18980 56711 0 4:56 AM ttys007 0 : 04.09 /usr/local/Cellar/rabbitmq/3.1.5/erts-5.10.2/bin/../../erts-5.10.2 /bin/beam.smp -W w -K true -A30 -P 1048576 - 루트 /usr/local/Cellar/rabbitmq/3.1.5/erts-5.10.2/bin/../ .. -progname erl - -home/Users/yuchen - -pa /usr/local/Cellar/rabbitmq/3.1.5/ebin -noshell-noinput -s rabbit boot -sn ame 토끼 @ localhost -boot /usr/local/Cellar/rabbitmq/3.1.5/releases/3.1.5/start_sasl -config/usr/local/etc/rabbitmq/rabbitmq -kernel inet_default_connect_options [{nodelay, true}] -rabbit tcp_listeners [{ "127.0.0.1", 5672}] -sasl errlog_type 오류 -sasl sasl_error_logger false -rabbit error_logger {파일, "/ usr/local/var/log /rabbitmq/[email protected]"} -rabbit sasl_error_logger {file , "/ usr/local/var/log/rabbitmq/[email protected]"} -rabbit enabled_plugins_file "/ usr/local/etc/rabbitmq/enabled_plugins"-rabbit plugins_dir "/ usr/local/Cellar/rabbitmq/3.1.5/plugins "-rabbit plugins_expand_dir"/ usr/local/var/lib/rabbitmq/mnesia/rabbit @ localhost-plugins-expand "-os_mon start_cpu_sup false -os_mon start_disksup 거짓 -os_mon start_memsup 거짓 -mnesia dir"/ usr/local/var/lib/rabbitmq/mnesia/rabbit @ localhost "

,210

내가 부트 스크립트 "rabbitmq 서버"

exec ${ERL_DIR}erl \ 
    -pa ${RABBITMQ_EBIN_ROOT} \ 
    ${RABBITMQ_START_RABBIT} \ 
    -sname ${RABBITMQ_NODENAME} \ 
    -boot "${SASL_BOOT_FILE}" \ 
    ${RABBITMQ_CONFIG_ARG} \ 
    +W w \ 
    ${RABBITMQ_SERVER_ERL_ARGS} \ 
    ${RABBITMQ_LISTEN_ARG} \ 
    -sasl errlog_type error \ 
    -sasl sasl_error_logger false \ 
    -rabbit error_logger '{file,"'${RABBITMQ_LOGS}'"}' \ 
    -rabbit sasl_error_logger '{file,"'${RABBITMQ_SASL_LOGS}'"}' \ 
    -rabbit enabled_plugins_file "\"$RABBITMQ_ENABLED_PLUGINS_FILE\"" \ 
    -rabbit plugins_dir "\"$RABBITMQ_PLUGINS_DIR\"" \ 
    -rabbit plugins_expand_dir "\"$RABBITMQ_PLUGINS_EXPAND_DIR\"" \ 
    -os_mon start_cpu_sup false \ 
    -os_mon start_disksup false \ 
    -os_mon start_memsup false \ 
    -mnesia dir "\"${RABBITMQ_MNESIA_DIR}\"" \ 
    ${RABBITMQ_SERVER_START_ARGS} \ 
    "[email protected]" 

다음 디버그 코드를 추가 확인했다.

echo "erl dir:" ${ERL_DIR} 
echo "pa:" ${RABBITMQ_EBIN_ROOT} 
echo "ebin_root:" ${RABBITMQ_EBIN_ROOT} 
echo "boot:" ${SASL_BOOT_FILE} 
echo "start rabbit:" ${RABBITMQ_START_RABBIT} 
echo "config_args:" ${RABBITMQ_CONFIG_ARG} 
echo "server_erl_args:" ${RABBITMQ_SERVER_ERL_ARGS} 
echo "listen_arg:" ${RABBITMQ_LISTEN_ARG} 

디버그 결과는 다음과 같습니다 :

erl dir: /usr/local/Cellar/rabbitmq/3.1.5/erts-5.10.2/bin/ 
pa: /usr/local/Cellar/rabbitmq/3.1.5/ebin 
ebin_root: /usr/local/Cellar/rabbitmq/3.1.5/ebin 
boot: /usr/local/Cellar/rabbitmq/3.1.5/releases/3.1.5/start_sasl 
start rabbit: -noinput -s rabbit boot 
config_args: -config /usr/local/etc/rabbitmq/rabbitmq 
server_erl_args: +K true +A30 +P 1048576 -kernel inet_default_connect_options [{nodelay,true}] 
listen_arg: -rabbit tcp_listeners [{"127.0.0.1",5672}] 

ps -ef의 출력 noshell이 어디에서 오는지,이 단지 '입력이'없다, 그러나이 "noshell을"존재?

  1. 나는 새와 함께 "rabbit_auth_backend_ldap.beam"를 대체했다. 그러나 rabbitmq-server를 다시 시작한 후 연결하면 디버깅 정보는 rabbitmq 로그에 없습니다. 내 새로운 것이 작동하지 않는 것 같습니다.

    YUS-아이맥 : EBIN의 yuchen의 $의 PWD /usr/local/Cellar/rabbitmq/3.1.5/plugins/expand/rabbitmq_auth_backend_ldap-3.1.5/ebin

    YUS-아이맥 : EBIN의 yuchen의 $ 1! - li total 56 20682881 -rw-r - r-- 1 yuchen wheel 9648 Apr 6 03:54 rabbit_auth_backend_ldap.광선 20682882 -rw-r-r-- 1 yuchen wheel 2100 8 월 15 2013 토끼 업데이트 힙합 _ -r-- 1 yuchen 휠 팔월 15 2013 1928 20682885 rabbit_auth_backend_ldap_util.beam -rw-R - r-- 사용 yuchen 1 휠 (994) 팔월 15 2013 rabbitmq_auth_backend_ldap.app

부분적으로는 다음과 같은 코드가 변경된 파일, 템플릿 이후에 111을 더했습니다.

log(_Fmt, _Args, #state{log = false}) -> ok; 
log(Fmt, Args, _State)    -> rabbit_log:info(Fmt ++ "~n", Args). 

fill(Fmt, Args, State) -> 
    ?L2("filling template111 \"~s\" with~n   ~p", [Fmt, Args], State), 
    R = rabbit_auth_backend_ldap_util:fill(Fmt, Args), 
    ?L2("template result: \"~s\"", [R], State), 
    R. 

토끼 이후 로그가 변경되지 않습니다. mq-server가 다시 시작됩니다. "!":이 오류가 뭔가 관련이있을 수도 있지만

=INFO REPORT==== 6-Apr-2014::05:25:21 === 
accepting AMQP connection <0.485.0> (127.0.0.1:62003 -> 127.0.0.1:5672) 

=INFO REPORT==== 6-Apr-2014::05:25:21 === 
LDAP CHECK: login for equipment_serial_001 

=INFO REPORT==== 6-Apr-2014::05:25:21 === 
     LDAP filling template "${username}" with 
      [{username,<<"equipment_serial_001">>}] 

=INFO REPORT==== 6-Apr-2014::05:25:21 === 
     LDAP template result: "equipment_serial_001" 

=INFO REPORT==== 6-Apr-2014::05:25:21 === 
    LDAP bind error: equipment_serial_001 invalidDNSyntax 

=INFO REPORT==== 6-Apr-2014::05:25:21 === 
LDAP DECISION: login for equipment_serial_001: {error,invalidDNSyntax} 

=ERROR REPORT==== 6-Apr-2014::05:25:24 === 
closing AMQP connection <0.485.0> (127.0.0.1:62003 -> 127.0.0.1:5672): 
{handshake_error,starting,0, 
       {amqp_error,access_refused, 
          "PLAIN login refused: rabbit_auth_backend_ldap failed authenticating equipment_serial_001: invalidDNSyntax\n", 
          'connection.start_ok'}} 

답변

0

는 RabbitMQ 3.3.5에서이 오류가 발생할 수 있습니다 하나 개의 조건은 느낌표가 포함 된 암호와 사용자 이름입니다

관련 문제