Higress的日志收集中,底层用的是Envoy,可不可以实现类似NGINX的rsyslog发送?

Higress的日志收集中,底层用的是Envoy,可不可以实现类似NGINX的rsyslog发送?

展开
收起
三分钟热度的鱼 2024-01-24 16:27:02 337 分享 版权
3 条回答
写回答
取消 提交回答
  • Higress 日志收集中,默认底层依赖 Envoy 代理处理日志。Envoy 提供了丰富的日志记录能力,包括访问日志、集群管理日志等,并可通过自定义配置将日志输出到不同的目的地,如标准输出、文件、或者是远程的 TCP/UDP 地址。

    尽管 Envoy 原生并不直接支持像 NGINX 那样通过 rsyslog 进行日志发送,但可以通过以下间接方法实现类似的日志传输机制:

    1. 通过 Sidecar 容器:
      在 Kubernetes 等容器化环境中,可以部署一个专门负责日志收集的 sidecar 容器,比如运行 rsyslog 容器,并配置 Envoy 将日志输出到本地文件。然后通过 sidecar 容器读取该日志文件并利用 rsyslog 转发到中央日志服务器。

    2. 管道输出:
      如果环境支持,可以直接将 Envoy 输出的日志流导向 rsyslog 服务正在监听的 Unix 域套接字或其他网络端口。

    3. 自定义过滤器和输出插件:
      对于更高级的需求,Envoy 提供了扩展机制,允许编写自定义过滤器和日志处理器。理论上可以通过编写一个 Envoy 扩展,使其能够直接与 rsyslog 协议兼容并发送日志。

    因此,虽然 Envoy 本身不直接支持 rsyslog 发送日志,但通过上述方案可以构建一个与 NGINX 使用 rsyslog 类似的日志收集架构

    2024-01-26 14:14:36
    赞同 展开评论
  • 是的,可以实现类似NGINX的rsyslog发送。

    Higress作为基于Envoy的Ingress控制器,其日志系统是可以配置的。虽然Higress默认使用的是JSON格式的日志,但是它的日志收集和输出是可以定制的。要实现类似NGINX的rsyslog发送,您需要对Higress所在的服务器进行一些配置。具体步骤如下:

    • 安装rsyslog服务:首先确保您的服务器上安装了rsyslog服务。如果没有安装,可以通过包管理器进行安装。
    • 配置rsyslog:在rsyslog的配置文件中(通常位于/etc/rsyslog.conf),您可以指定将日志数据从Higress的日志目录传输到指定的日志服务器。这通常涉及到编辑配置文件,添加相应的规则来监听Higress的日志文件路径,并将其转发到远程服务器的指定位置。
    • 配置Higress日志输出:您可能需要配置Higress以将其日志输出到文件系统中的一个特定位置,这样rsyslog就可以读取这些日志文件并将其发送到远程服务器。
    • 启动rsyslog服务:配置完成后,启动或重启rsyslog服务以应用更改。

    通过上述步骤,您应该能够实现将Higress的日志通过rsyslog发送到远程服务器,类似于NGINX的配置方式。这样做的好处是可以利用rsyslog的强大功能,包括日志的集中管理、远程存储和灵活的日志处理规则。

    2024-01-26 08:48:21
    赞同 展开评论
  • envoy不支持这个,可以用一下云原生的一些日志收集方案 比如loki。此回答整理自钉群“Higress 社区交流 2 群”

    2024-01-24 17:53:49
    赞同 展开评论

为微服务建设降本增效,为微服务落地保驾护航。

还有其他疑问?
咨询AI助理