Я сталкиваюсь с проблемой при попытке отправить данные из Oracle через UTL_TCP в Graylog GELF TCP.
Я пытаюсь с одним событием (запись в формате JSON, согласно требованиям Graylog).Проблема заключается в том, что, хотя одно событие загружается правильно, я также получаю 45 внутренних событий Graylog, очевидно, связанных с двумя из них:
.....
"2018-12-18T14:13:33.938Z","graylog-server","runit-service","true","6","ERROR [NettyTransport] Error in Input [GELF TCP/5c119b1eb358cb056b417b89] (channel [id: 0x1957cea0, /192.168.1.22:49550 :> /192.168.1.74:41000])"
.....
"2018-12-18T14:13:33.959Z","graylog-server","runit-service","true","6","java.lang.IllegalStateException: GELF message is too short. Not even the type header would fit."
.....
Код PL SQL, который я использую в Oracle, выглядит какниже:
create or replace procedure AAA_GRAYLOG_TCP_05
is
conn utl_tcp.connection;
v_GL_record clob;
ret_val pls_integer;
v_lms_host varchar2(4000) := '192.168.1.74';
v_lms_port number := 41000;
begin
v_GL_record :=
'{ "version": "1.1", "host": "dataplus05", "short_message": "A short message", "level": 5, "_some_info": "foo" }'
;
dbms_output.put_line(v_GL_record);
conn := utl_tcp.open_connection(
remote_host => v_lms_host,
remote_port => v_lms_port
);
ret_val := UTL_TCP.WRITE_LINE(conn, v_GL_record);
utl_tcp.close_connection(conn);
end;
Я попытался добавить некоторые:
\"0", or \0, after the last }
в конец записи v_GL_record, но безрезультатно.У меня все еще есть 45 дополнительных записей, и ОШИБКА и Java.IllegalState сгенерировали
Пытался также поставить те же нули с обратной косой чертой вместо CL-FR по умолчанию при открытии соединения:
conn := utl_tcp.open_connection(
remote_host => v_lms_host,
remote_port => v_lms_port,
newline => '\0'
);
все та же проблема.
кто-то может помочь?
С наилучшими пожеланиями,
Altin
Список внутренних сообщений Graylog:
Graylog дополнительные внутренние сообщения