首页 > 解决方案 > 限制每个部署或容器的 Log Analytics 日志记录

问题描述

我们已经看到我们的 Log Analytics 成本飙升,并发现 ContainerLog 表急剧增长。这似乎是容器中的所有标准输出/标准错误日志。

是否可以在不禁用集群上的 Log Analytics 的情况下将日志记录限制到此表(至少对于某些部署或容器)?我们仍然需要性能记录和洞察力。

标签: azure-container-serviceazure-aksazure-log-analytics

解决方案


AFAIK ContainerLog 表下的 stdout 和 stderr 日志基本上是我们在手动运行命令“kubectl logs”时看到的日志,因此可以通过部署文件来限制对 ContainerLog 表的日志记录而不禁用集群上的 Log Analytics如下所示,它将日志写入容器内的日志文件。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: xxxxxxx
spec:
  selector:
    matchLabels:
      app: xxxxxxx
  template:
    metadata:
      labels:
        app: xxxxxxx
    spec:
      containers:
      - name: xxxxxxx
        image: xxxxxxx/xxxxxxx:latest
        command: ["sh", "-c",  "./xxxxxxx.sh &> /logfile"]

但是,最佳实践是将日志消息发送到标准输出以供在容器中运行的应用程序使用,因此上述过程不是一种可取的方式。

因此,当数据收集高于预期时,您可以创建警报,如本文所述,和/或通过利用清除REST API偶尔删除不需要的数据,如本文所述(但请确保您只清除不需要的数据,因为日志中的删除分析是不可逆的!)。

希望这可以帮助!!


推荐阅读