首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在kubernetes中将应用程序的日志从一个容器中获取到另一个容器中

如何在kubernetes中将应用程序的日志从一个容器中获取到另一个容器中
EN

Stack Overflow用户
提问于 2020-05-22 21:21:33
回答 2查看 885关注 0票数 1

我们计划使用Prometheus实现Kubernetes应用程序监控。我们的应用程序在apache中运行,并部署到kubernetes集群。我们正在开发自定义Apache exporter,它将运行在与我的应用程序容器相同的POD中,并从apache收集指标并将其推送到Prometheus。作为监控的一部分,我们需要在apache中解析access.log,以获得2xx、3xx、4xx和5xx请求的数量。但是我们部署在Kubernetes中的应用程序不会在POD中存储任何日志,但它会将日志记录到STDOUT。所以我可以通过kubectl logs命令访问日志。现在,我正在构建的Apache exporter托管在与我的应用程序容器相同的POD中。现在我的问题是,如何让应用程序日志(access.log)呈现/可供我的apache exporter容器访问,这样我就可以解析逻辑并得出2xx、3xx、4xx和5xx的数量等指标。

EN

回答 2

Stack Overflow用户

发布于 2020-05-25 00:35:45

Kubernetes将容器的STDOUT分别存储在每个节点的/var/logs/containers/var/logs/pods中,格式分别为POD_NAMESPACE_CONTAINER_CONTAINERID.logNAMESPACE_POD_CONTAINERID/CONTAINER/*.log。pod从节点逐出后,这些文件将被删除。

您可以将它们中的任何一个挂载到您的导出器pod以读取日志。问题是,

  • CONTAINER ID在Kubernetes中不能作为ENV使用。我们不能生成文件名并准确地挂载我们想要的文件。我们必须挂载整个/var/log/containers//var/log/pods目录。
  • 挂载可写hostPath在Kubernetes中非常容易受到攻击。因此,请确保将其设置为readOnly文件系统或配置PodSecurityPolicy.

YAML

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginx
  name: nginx
spec:
  containers:
  - image: nginx
    name: nginx
    resources: {}
  - image: busybox
    name: exporter
    command: ["cat"]
    tty: true
    volumeMounts:
    - mountPath: /var/log/
      name: logs
      readOnly: true
  volumes:
  - name: logs
    hostPath:
      path: /var/log/containers/
      # path: /var/log/pods/
      type: Directory
  dnsPolicy: ClusterFirst
  restartPolicy: Never
status: {}

日志

代码语言:javascript
复制
$ kubectl exec -it nginx -n dev -c exporter sh -- ls /var/log | grep nginx
nginx_dev_exporter-41a2a80de1b899d1ee848378d2bf31285658bf86700671e560588ac69b2717b4.log
nginx_dev_nginx-e4c12df0c9dae129ed113f4195d750b447a570a686e3b5608e1af37ced788549.log
票数 3
EN

Stack Overflow用户

发布于 2020-05-24 04:09:53

使用日志聚合工具,例如loki,它与kubernetes和grafana很好地集成在一起,然后您可以在grafana仪表板中执行所有这些解析,并在那里创建警报

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61956060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档