Я пытаюсь настроить путь назначения syslog-ng для использования сокетов unix-stream для взаимодействия между процессами. Я просмотрел эту документацию http://www.balabit.com/sites/default/files/documents/syslog-ng-ose-3.3-guides/en/syslog -ng-ose-v3.3-guide-admin-en / html / configuring_destinations_unixstream.html.
Мой syslog.conf (только его часть) выглядит следующим образом:
source s_dxtcp { tcp(ip(0.0.0.0) port(514)); };
filter f_request {program("dxall");};
destination d_dxall_unixstream {unix-stream("/var/run/logs/all.log");};
log {source(s_dxtcp); filter(f_request); destination(d_dxall_unixstream);};
Когда я перезапускаю свой сервер syslog-ng, я получаю следующее сообщение:
Connection failed; fd='11', server='AF_UNIX(/var/run/logs/all.log)',
local='AF_UNIX(anonymous)', error='Connection refused (111)'
Initiating connection failed, reconnecting; time_reopen='60'
Что означает эта ошибка? Как я могу использовать сокеты unix с syslog-ng? Может ли кто-нибудь мне помочь.
1 ответ
До сих пор я не могу создать сокет домена Unix для межпроцессного взаимодействия. Но у меня есть способ обойти это. Все, что мне нужно, - это односторонняя связь для отправки данных, созданных в syslog-ng, в работающую java-программу (я могу сказать, процесс). Этого я добился с помощью именованных каналов в Syslog-ng. Документы для достижения: http://www.balabit.com/sites/default/files/documents/syslog-ng-ose-3.4-guides /en/syslog-ng-ose-v3.4-guide-admin/html-single/index.html#configuring-destinations-pipe.
Чтение из именованного канала аналогично чтению из обычного файла. Следует отметить один важный момент: процесс Reader (здесь программа Java) должен запускаться до Syslog-ng (Writer, который записывает сообщения журнала в именованный канал).
Причина, Writer будет заблокирован, пока не будет Reader. Отсутствие Reader приведет к потере некоторых сообщений, накопленных до запуска Reader. И должен быть только один экземпляр Reader. Если имеется несколько читателей, второй читатель получит исключение нулевого указателя, поскольку сообщение, которое он хочет прочитать, уже прочитано первым читателем. Пожалуйста, обратите внимание, что это из моего опыта. Дай мне знать, если я ошибаюсь.
Похожие вопросы
Новые вопросы
sockets
Конечная точка двунаправленного межпроцессного взаимодействия. Это часто относится к потоку процессов через сетевое соединение, но ни в коем случае не ограничивается этим. Не следует путать с WebSocket (протоколом) или другими абстракциями (например, socket.io).