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
    • 最新
    • 标签
主页 / user-467906

Noel Nemeth's questions

Martin Hope
Noel Nemeth
Asked: 2024-04-17 17:31:33 +0800 CST

syslog-ng 为 syslog 消息添加前缀

  • 6

我有一个鱿鱼代理将访问日志记录到文件中,syslog-ng 读取这些日志,并根据鱿鱼的操作设置严重性(信息或通知)并将其作为系统日志消息转发到 NetXMS 服务器。问题是 NetXMS 服务器收到如下消息:

1 2024-04-17T11:13:11+02:00 vvsrv-proxy1 1713345191.357 - - [meta sequenceId="5336"]     69 10.30.108.14 TCP_TUNNEL/200 3530 CONNECT api.github.com:443 - HIER_DIRECT/140.82.121.5 -

(空行不是格式错误。)我想将文件中的行按原样转发到 NetXMS,如下所示:

1713345191.357 69 10.30.108.14 TCP_TUNNEL/200 3530 CONNECT api.github.com:443 - HIER_DIRECT/140.82.121.5 -

当前 syslog-ng 配置(不包括默认部分):

source s_squid {
    file ("/var/log/squid/access.log");
};

filter f_squid_denied {
        message ("TCP_DENIED");
};

destination d_squid {
        syslog ("10.0.0.254" transport("udp") port(514) template("${MSG}"));
};

log {
    source (s_squid);
    filter (f_squid_denied);
    rewrite { set_severity("notice"); };
    destination (d_squid);
};

log {
    source (s_squid);                                                                          
    rewrite { set_severity("info"); };
    destination (d_squid);                                                                   
};

版本信息:

syslog-ng 4 (4.1.1)
Config version: 4.0

当我尝试自己解决这个问题时,我发现源中不正确的 syslog 标头可能会导致中继 syslog-ng 服务器添加它自己的标头,但在我的情况下,源是本地文件。我还尝试切换到旧的网络驱动程序 - 而不是系统日志 - 但它仍然是一样的。

当我使用 rsyslog 将系统日志转发到 NetXMS 时,它没有任何额外的数据,因此 NetXMS 会按其应有的方式解析和处理系统日志消息。

更新#1

在深入研究 NetXMS 源代码后,我从日期解析方法中发现它只能解析RFC 3164系统日志消息。在阅读有关使用旧协议的syslog-ng 文档后,我尝试了以下操作:

destination d_squid {
        network ("10.0.0.254" transport(udp) port(514));
};

但它仍然使用新的RFC 5424格式。

更新#2

我正在使用service syslog-ng reload这还不够,重新启动服务后它开始使用 BSD syslog 格式。经过一些调整后,我的目的地现在看起来像这样:

destination d_squid {                                                               
        network ("10.0.0.254" transport(udp) port(514) flags(no-multi-line) template(": ${MSG}"));
};

我没有更改配置的任何其他部分,但现在所有日志条目都具有“通知”严重性,而不是包含TCP_DENIED子字符串的条目。

syslog
  • 2 个回答
  • 65 Views
Martin Hope
Noel Nemeth
Asked: 2020-12-24 18:34:40 +0800 CST

无法从容器外部访问在 Docker 中运行的 GitLab 页面

  • 0

我有一个在 docker 中运行的 GitLab 实例。GitLab 工作正常,但我无法访问GitLab Pages。

设置

概述

           +------------+
Request+-->+ Cloudflare |
           +-----+------+
                 |
                 v       +---------+
               Nginx+--->+Docker   |
                         |  +------+
                         |  |GitLab|
                         +---------+

问题是 Nginx 无法将请求传递给 GitLab Pages 服务器(请注意 GitLab 它自己工作)。
Nginx 错误日志条目

[error] 14932#14932: *30505 connect() failed (111: Connection refused) while connecting to upstream, [...]

码头工人

image: gitlab/gitlab-ce
version: 13.7.1 (latest)
ip: 172.17.0.7 (dynamic)
published ports:
    172.17.0.1:8080 -> 80
    172.17.0.1:8090 -> 8090

Nginx

页面的服务器条目

server {
        listen 80 default_server;
        listen 443 default_server;
        server_name _;
        
        location / {
                proxy_pass      http://172.17.0.1:8090;
        }
}

GitLab

grep -v '^#|^$' gitlab.rb 1

nginx['listen_port'] = 80
nginx['listen_https'] = false
pages_external_url "http://pages.example.com/"
gitlab_pages['enable'] = true
gitlab_pages['external_http'] = []
gitlab_pages['listen_proxy'] = "localhost:8090"
gitlab_pages['inplace_chroot'] = true
gitlab_pages['metrics_address'] = ":9235"
pages_nginx['enable'] = true
pages_nginx['listen_https'] = false
pages_nginx['redirect_http_to_https'] = false

还尝试了绝对最小配置,仅定义pages_external_urland gitlab_pages['enable']。

追查问题

  1. 对 pages.example.com 的请求失败,来自 CF 的 502(错误网关)
  2. 查看Nginx日志,发现上面提到的日志条目
  3. 从主机向容器发出多个请求
    1. # curl 172.17.0.1:8090 -> curl: (7) Failed to connect to 172.17.0.1 port 8090: Connection refused
    2. # curl 172.17.0.7:8090 -> curl: (7) Failed to connect to 172.17.0.7 port 8090: Connection refused
  4. 从容器发出请求
    # curl localhost:8090 -> 404 error page

据此,我假设某些东西正在阻止 8090 (GitLab Pages)的传入流量,但对 80 (GitLab)的请求已成功完成。我花了几天时间在谷歌上搜索这个问题,但我找不到任何东西。


1截断;已删除 SMTP、LDAP 和omniauth 设置
nginx docker gitlab
  • 1 个回答
  • 1393 Views

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