You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过ingress-nginx Helm Chart仅向DataDog上传错误日志?

解决ingress-nginx日志过滤问题(仅向DataDog上传错误日志)

你配置的controller.config.log-level: error只控制ingress-nginx控制器自身的系统日志(比如启动、配置加载类日志),但产生大量日志的请求访问日志是独立配置项,这就是DataDog仍收到Info级日志的核心原因。

以下是两种可行解决思路:

方法一:在ingress-nginx源头仅记录错误请求日志(推荐,直接削减日志量)

修改Helm values.yaml,配置nginx只记录状态码为4xx/5xx的请求日志:

controller:
  config:
    # 关闭默认全量访问日志
    enable-access-log: "false"
    # 自定义规则,仅记录错误请求的访问日志
    custom-http-snippet: |
      map $status $loggable {
          ~^[45] 1;
          default 0;
      }
      access_log /var/log/nginx/access.log combined if=$loggable;
  # 挂载日志目录,确保DataDog Agent可采集
  extraVolumes:
    - name: nginx-logs
      emptyDir: {}
  extraVolumeMounts:
    - name: nginx-logs
      mountPath: /var/log/nginx

配置完成后执行helm upgrade生效,此时nginx仅将错误请求日志写入文件,DataDog采集后只会收到错误级日志。

方法二:修正控制器日志配置(若需过滤控制器自身日志)

部分ingress-nginx Helm Chart版本的日志级别配置项不在controller.config下,而是直接使用controller.logLevel:

controller:
  logLevel: error

可对照你使用的Chart版本官方values文档确认配置项,执行helm upgrade后,通过kubectl logs <ingress-controller-pod-name>查看控制器pod日志,验证是否仅输出error级内容。

备选:DataDog侧过滤(不推荐,仍产生传输成本)

若暂时无法修改ingress-nginx配置,可在DataDog日志管道中添加过滤规则:

  • 过滤条件设为status >= 400(针对访问日志状态码)
  • 或过滤日志级别字段为error(若日志包含级别标识)
    此方法仅在DataDog端丢弃非错误日志,但日志仍会从集群传输到DataDog,无法节省带宽与传输成本。

内容的提问来源于stack exchange,提问作者Zvika Glick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 05:06:04