提问人:thepip3r 提问时间:4/23/2022 更新时间:4/23/2022 访问量:1059
Azure AKS 容器内日志到 Azure 日志/Azure Sentinel
Azure AKS in-container logs to Azure Logs/Azure Sentinel
问:
有没有一种动态方法可以从容器内部拉取日志数据?
我的所有搜索都返回 Azure 日志/Azure Sentinel 可以读取有关 AKS 相对于 K8 中存在的容器的数据(联机、运行、失败等),但不能读取实际的容器内日志。要求这样做的结果示例:
- https://learn.microsoft.com/en-us/azure/azure-monitor/containers/container-insights-log-query
- https://learn.microsoft.com/en-us/azure/azure-monitor/containers/container-insights-livedata-overview
- https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/azure-monitor/containers/container-insights-enable-new-cluster.md#enable-monitoring-of-a-new-azure-kubernetes-service-aks-cluster
...所有这些都提供了有关监控容器的文档(因为它们位于 K8s 中),但没有容器中的应用程序级日志......
是否有人知道 Azure Logs/Azure Sentinel 使用容器内、磁盘上的容器日志(例如容器内:/var/log、/var/application/logs 等)的技术或功能?
谢谢!
答:
假设您指的是 linux 容器。只需启用 OMS 代理并指向正确的工作区,即可轻松流式传输日志。
该表将向您显示与 相同的内容。发送到容器和从容器发送的任何内容都应在 Log Analytics 工作区中可用。因此,如果这些日志没有被发送到任何一个,你可以编写一个小脚本作为容器的一部分,将这些日志发送到 .ContainerLog
kubectl logs <pod>
stdout
stderr
stdout
以下是我从容器中获取 SMTP 日志的方法:
评论
好的,所以我忘记了这个问题,但只是为了发布一个答案。我有点使用了@kedmardemootoo建议,我们使用容器的标准日志输出来读取文件。
但是,主要区别在于我使用 K8s sidecar 模式来监视容器中的日志文件,以便我可以专门对特定日志文件执行输出。kubectl logs
清单更改如下所示:
当我们使用 BusyBox 映像时,Alpine 也可以正常工作。这个想法是,它是一个很小的 OS 映像,因此你不会爆炸工作器节点处理器/内存利用率,而是将特定日志的输出回显到 STDOUT,以便 Azure Log Analytics (AZA) 可以捕获它。使用一个小型的 linux 操作系统,它只尾随一个特定的日志文件(其容器名称反映了被尾随的日志文件),它将显示在 AZA 中该容器的日志条目下。
仅供参考 -- BusyBox 和 Alpine 就像 3-5MB 大小的容器映像。
评论