AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1039675
Accepted
vvvvv
vvvvv
Asked: 2020-10-23 01:43:23 +0800 CST2020-10-23 01:43:23 +0800 CST 2020-10-23 01:43:23 +0800 CST

在 syslog-ng 中使用网络指令时出现“EOF 空闲时”

  • 772

我想将日志从本地机器转发到远程服务器。借助 SSH 隧道,可以通过 localhost:5514 访问远程服务器。我写了以下conf:

# Filters
filter f_local0 { facility(local0); };
filter f_worker { program("^worker."); };

# Destinations
destination d_log01_local { file("/home/myuser/logs/worker/$YEAR$MONTH$DAY/$PROGRAM.$YEAR$MONTH$DAY" template("$HOST $MSG\n") create_dirs(yes) dir_group("adm") group("adm") dir_perm(0770) perm(0644) ); };
destination d_log01_remote { network("localhost" transport(tcp) port(5514) persist-name("remote_worker") disk-buffer( reliable(yes) disk-buf-size(50000000) )); };

# Logs
log { source(s_src); filter(f_local0); filter(f_worker); destination(d_log01_local); };
log { source(s_src); filter(f_local0); filter(f_worker); destination(d_log01_remote); };

本地目的地运行良好,但远程目的地没有:我没有在位于 localhost:5514 的服务器上收到任何日志。

当 I 时tail -f /var/log/syslog,syslog 记录以下行:

Oct 22 11:25:05 esad-10076 syslog-ng[17319]: Syslog connection established; fd='35', server='AF_INET(127.0.0.1:5514)', local='AF_INET(0.0.0.0:0)'
Oct 22 11:25:05 esad-10076 syslog-ng[17319]: EOF occurred while idle; fd='35'
Oct 22 11:25:05 esad-10076 syslog-ng[17319]: Syslog connection broken; fd='35', server='AF_INET(127.0.0.1:5514)', time_reopen='60'

我不明白这个错误,也不知道如何解决它。

我应该指定在编写这个 conf 之前,我有另一个 conf 用来syslog代替,network这个 conf 可以完美地工作。我现在只需要使用网络来使用的功能,reliable以便在网络中断的情况下不会丢失任何日志。

# Filters
filter f_local0 { facility(local0); };
filter f_worker { program("^worker."); };

# Destinations
destination d_log01_local { file("/home/myuser/logs/worker/$YEAR$MONTH$DAY/$PROGRAM.$YEAR$MONTH$DAY" template("$HOST $MSG\n") create_dirs(yes) dir_group("adm") group("adm") dir_perm(0770) perm(0644) ); };
destination d_log01_remote { syslog("localhost" transport(tcp) port(5514) persist-name("remote_worker")); };

# Logs
log { source(s_src); filter(f_local0); filter(f_worker); destination(d_log01_local); };
log { source(s_src); filter(f_local0); filter(f_worker); destination(d_log01_remote); };
tcp syslog syslog-ng
  • 1 1 个回答
  • 922 Views

1 个回答

  • Voted
  1. Best Answer
    vvvvv
    2020-10-30T09:00:08+08:002020-10-30T09:00:08+08:00

    问题发生在另一端:接收方。目前有两种不同的 syslog 协议:rfc3164一种(旧的)和rfc5424一种(新的)。有关更多信息,请参阅此博客文章。

    我正在使用旧协议在我的服务器上接收日志,并且消息与使用较新协议的发送机器发送的日志不匹配(因此出现“标头”问题)。

    我的conf如下:

    source mysource {
            syslog(
                   ip(0.0.0.0) 
                   transport(udp) 
                   port(514) 
                   max-connections(80) 
                   keep-hostname(yes) 
            );
            syslog(
                   ip(0.0.0.0) 
                   transport(tcp) 
                   port(514) 
                   max-connections(80) 
                   log_iw_size(8000)
                   keep-hostname(yes) 
            );
    };
    
    ...
    

    当我tail -f /var/log/syslog,我收到以下错误:

    Oct 29 16:37:28 servername syslog-ng[718]: Syslog connection accepted; fd='83', client='AF_INET(127.0.0.1:40034)', local='AF_INET(0.0.0.0:514)'
    Oct 29 16:37:28 servername syslog-ng[718]: Invalid frame header; header=''
    Oct 29 16:37:28 servername syslog-ng[718]: Syslog connection closed; fd='83', client='AF_INET(127.0.0.1:40034)', local='AF_INET(0.0.0.0:514)'
    

    编写以下行代替这两个syslog指令可以解决问题:

    source mysource {
        network(transport(tcp) port(514) max-connections(80));
    }
    
    • 1

相关问题

  • 使用 TOAD 客户端通信配置保活

  • ping 尝试中的“TTL 在传输中过期”是什么意思?

  • 在自写的 tcp 服务器上使用哪些端口

  • 将文本文件输出到 TCP 端口

  • 使用多个 NIC 增加带宽

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve