Higress的日志收集中,底层用的是Envoy,可不可以实现类似NGINX的rsyslog发送?
Higress 日志收集中,默认底层依赖 Envoy 代理处理日志。Envoy 提供了丰富的日志记录能力,包括访问日志、集群管理日志等,并可通过自定义配置将日志输出到不同的目的地,如标准输出、文件、或者是远程的 TCP/UDP 地址。
尽管 Envoy 原生并不直接支持像 NGINX 那样通过 rsyslog 进行日志发送,但可以通过以下间接方法实现类似的日志传输机制:
通过 Sidecar 容器:
在 Kubernetes 等容器化环境中,可以部署一个专门负责日志收集的 sidecar 容器,比如运行 rsyslog 容器,并配置 Envoy 将日志输出到本地文件。然后通过 sidecar 容器读取该日志文件并利用 rsyslog 转发到中央日志服务器。
管道输出:
如果环境支持,可以直接将 Envoy 输出的日志流导向 rsyslog 服务正在监听的 Unix 域套接字或其他网络端口。
自定义过滤器和输出插件:
对于更高级的需求,Envoy 提供了扩展机制,允许编写自定义过滤器和日志处理器。理论上可以通过编写一个 Envoy 扩展,使其能够直接与 rsyslog 协议兼容并发送日志。
因此,虽然 Envoy 本身不直接支持 rsyslog 发送日志,但通过上述方案可以构建一个与 NGINX 使用 rsyslog 类似的日志收集架构
是的,可以实现类似NGINX的rsyslog发送。
Higress作为基于Envoy的Ingress控制器,其日志系统是可以配置的。虽然Higress默认使用的是JSON格式的日志,但是它的日志收集和输出是可以定制的。要实现类似NGINX的rsyslog发送,您需要对Higress所在的服务器进行一些配置。具体步骤如下:
/etc/rsyslog.conf
),您可以指定将日志数据从Higress的日志目录传输到指定的日志服务器。这通常涉及到编辑配置文件,添加相应的规则来监听Higress的日志文件路径,并将其转发到远程服务器的指定位置。通过上述步骤,您应该能够实现将Higress的日志通过rsyslog发送到远程服务器,类似于NGINX的配置方式。这样做的好处是可以利用rsyslog的强大功能,包括日志的集中管理、远程存储和灵活的日志处理规则。
envoy不支持这个,可以用一下云原生的一些日志收集方案 比如loki。此回答整理自钉群“Higress 社区交流 2 群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。