AWS EKS 日志记录到 CloudWatch - 如何仅发送日志而不发送指标?

问题描述 投票:0回答:3

我想将 EKS 集群上运行的选定服务的日志转发到 CloudWatch,以实现独立于集群的存储和更好的可观察性。

按照 https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-setup-EKS-quickstart.html 中概述的快速入门,我已成功通过 Fluent Bit 服务转发日志,但这也生成了 170 个 Container Insights 指标通道。这些指标不仅不需要,而且似乎也花费相当多。

如何禁用CPU/内存/网络等集群指标的收集,而只继续将容器日志转发到CloudWatch?我很难找到这方面的任何文档。

amazon-web-services amazon-cloudwatch amazon-eks fluent-bit
3个回答
0
投票

我想我已经弄清楚了 - 快速入门指南中的

cloudwatch-agent
守护进程集是发送指标的内容,但日志转发不需要它。快速入门
cloudwatch-agent
文件中名称与
yaml
相关的所有对象都不需要进行日志转发。


0
投票

按照 Toms Mikoss 的建议,您需要删除配置文件中的

metrics
对象。该文件是您启动时传递给代理的文件

这适用于“本地”“Linux”安装。我没有在 Windows 上测试过这个,也没有在 EC2 上测试过,但我想它会是类似的。 此处的 AWS 文档表示您还可以通过 SSM 分发配置,但我想这里的答案仍然适用。

包含指标的文件示例:

{
    "agent": {
        "metrics_collection_interval": 60,
        "run_as_user": "root"
    },
    "logs": {
        "logs_collected": {
            "files": {
                "collect_list": [
                    {
                        "file_path": "/var/log/nginx.log",
                        "log_group_name": "nginx",
                        "log_stream_name": "{hostname}"
                    }
                ]
            }
        }
    },
    "metrics": {
        "metrics_collected": {
            "cpu": {
                "measurement": [
                    "cpu_usage_idle",
                    "cpu_usage_iowait"
                ],
                "metrics_collection_interval": 60,
                "totalcpu": true
            }
        }
    }
}

没有指标的文件示例:

{
    "agent": {
        "metrics_collection_interval": 60,
        "run_as_user": "root"
    },
    "logs": {
        "logs_collected": {
            "files": {
                "collect_list": [
                    {
                        "file_path": "/var/log/nginx.log",
                        "log_group_name": "nginx",
                        "log_stream_name": "{hostname}"
                    }
                ]
            }
        }
    }
}

供参考,Linux 本地服务器的启动命令:

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config \
 -m onPremise -s -c file:configuration-file-path

更多详细信息请参阅AWS 文档


0
投票

如果使用

CloudWatch Observability
EKS 插件,它将 现在(从版本 1.5.0 开始)自动启用具有增强可观察性的 Container Insights

通过将以下内容添加到控制台中附加组件的

Advanced configuration
部分,我设法在保留日志的同时禁用增强的可观察性指标:

"agent": {
    "config": {
      "logs": {
        "metrics_collected": {
          "application_signals": {},
          "kubernetes": {
            "enhanced_container_insights": false
          }
        }
      },
      "traces": {
        "traces_collected": {
          "application_signals": {}
        }
      }
    }
}

注意

enhanced_container_insights: false
线。

您也可以使用 CLI 执行此操作:

aws eks update-addon --cluster-name <CLUSTER_NAME> --addon-name amazon-cloudwatch-observability --addon-version <ADDON_VERSION> --configuration-values '
  "agent": {
    "config": {
      "logs": {
        "metrics_collected": {
          "application_signals": {},
          "kubernetes": {
            "enhanced_container_insights": false
          }
        }
      },
      "traces": {
        "traces_collected": {
          "application_signals": {}
        }
      }
    }

}' --resolve-conflicts preserve

该附加组件仍会提供常规指标和日志组,但您不会获得增强的指标(通常会深入到 Pod 或容器级别)。默认指标足以满足我的用例,并且我仅使用这些指标就可以节省成本。

© www.soinside.com 2019 - 2024. All rights reserved.