收集K8S容器的标准输出日志实践

这篇具有很好参考价值的文章主要介绍了收集K8S容器的标准输出日志实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考文章

## 自己的博客
https://knight.blog.csdn.net/article/details/121476695

##
https://www.cnblogs.com/dogfei/p/14679813.html

# 他人的博客
https://blog.csdn.net/weixin_38367535/article/details/121117729

## sidecar 和daemonset 收集日志
https://blog.csdn.net/m0_60244783/article/details/127027964

k8s日志文件说明

一般情况下,容器中的日志在输出到标准输出(stdout)时,会以 *-json.log 的命名方式保存在/var/lib/docker/containers目录中。

root@xx-k8s-non-prd-002:/var/lib/docker/containers# pwd
/var/lib/docker/containers
root@hwy-hn1-carsales-k8s-non-prd-002:/var/lib/docker/containers# ll
total 108
drwx------ 27 root root 4096 Dec 22 13:48 ./
drwx--x--x 14 root root 4096 Jun  4  2021 ../
drwx------  4 root root 4096 Jun  4  2021 012fec605ce7ca95aa0bd3805ca823cbfbdbb13bd4f3a4cbcecbbf786e87bf46/
drwx------  4 root root 4096 Jun  4  2021 01936bd10a9d52b94f8d0fad1cda0c61acbccad89ca21965ad55a0f91bd31f21/
drwx------  4 root root 4096 Nov 25 12:39 1a97f6689b4766a14bb247e6372d2994d374ecdf261007959559fd6eeb605b17/
drwx------  4 root root 4096 Dec 22 13:47 

这里能看到,有这么个文件: /data/docker/containers/container id/*-json.log,然后k8s默认会在 /var/log/containers 和 /var/log/pods目录中会生成这些日志文件的软连接,如下所示:

root@hwy-hn1-carsales-k8s-non-prd-002:/var/log/containers# pwd
/var/log/containers
root@hwy-hn1-carsales-k8s-non-prd-002:/var/log/containers# ll
total 68
drwxr-xr-x  2 root root   4096 Dec 22 13:48 ./
drwxrwxr-x 14 root syslog 4096 Dec 23 06:25 ../
lrwxrwxrwx  1 root root     95 Nov 24 23:30 beat-7d969db479-dr7ql_test-ns_filebeat-d4759a3b7c8479cbe6992c354561245554488f5e3c8e4e6c8ab520e2330eb02d.log -> /var/log/pods/test-ns_beat-7d969db479-dr7ql_b91c07f9-bc54-4d04-92ab-c5ad51b76521/filebeat/0.log
lrwxrwxrwx  1 root root    132 Nov 25 17:57 cceaddon-prometheus-node-exporter-wsxbk_monitoring_prometheus-node-exporter-d59cf53ea86ace10a13901d53cb486b24b647f61d473bf6ebfc05b7eefe5a5eb.log -> /var/log/pods/monitoring_cceaddon-prometheus-node-exporter-wsxbk_cf97c646-271e-4927-a0cb-c4e598eec3d7/prometheus-node-exporter/0.log
lrwxrwxrwx  1 root root    107 Jun  4  2021 console-nginx-64775877fd-q4vtl_car-stg_container-0-a66ad1381e335144f8a34bc2b2d77d35151fc20a3d190bfdb3fe650d2d666ee3.log -> /var/log/pods/car-stg_console-nginx-64775877fd-q4vtl_55d64e2c-c9b2-41a4-add2-d766545ff612/container-0/0.log
lrwxrwxrwx  1 root root    111 Jun  9  2021 coredns-59656d8687-6j4m8_kube-system_coredns-bootstrap-f1c05d3aaaeeb841925d1c88aa17de094b2f00bb01c66846a9e428ffc39ba42d.log -> /var/log/pods/kube-system_coredns-59656d8687-6j4m8_56faeca7-c75e-43f0-b0f1-8b6689d7eeae/coredns-bootstrap/0.log
lrwxrwxrwx  1 root root    101 Jun  9  2021 coredns-59656d8687-6j4m8_kube-system_coredns-d2d77af99f8ec093c2f7410440ba9ed0ef380733112306ced6009814554db9da.log -> /var/log/pods/kube-system_coredns-59656d8687-6j4m8_56faeca7-c75e-43f0-b0f1-8b6689d7eeae/coredns/0.log
lrwxrwxrwx  1 root root     97 Nov 23 16:50 css-aly-5f74c45965-pf22z_test-ns_css-aly-61e785bdf54815617168afdfea57818d013a8bb94e0a4f9cd268a07890bee58c.log -> /var/log/pods/test-ns_css-aly-5f74c45965-pf22z_c28d6615-08c9-49c4-a346-a46b1a830b7d/css-aly/0.log
lrwxrwxrwx  1 root root     99 Nov 25 12:39 css-beat-7589645bc4-tfngq_car-dev_filebeat-a59c58937ccd37551ba603514fb9856fbb54a9145b1f897df76edaf266b9bd9e.log -> /var/log/pods/car-dev_css-beat-7589645bc4-tfngq_f65e8727-c1ce-48df-a2a2-87a273d9b6b0/filebeat/0.log
lrwxrwxrwx  1 root root     99 Nov 25 12:39 css-beat-7589645bc4-tfngq_car-dev_java-aly-b41f68f797a46304d66265645d910e44ea54dc3678e2413915c654262c814c49.log -> /var/log/pods/car-dev_css-beat-7589645bc4-tfngq_f65e8727-c1ce-48df-a2a2-87a273d9b6b0/java-aly/0.log
lrwxrwxrwx  1 root root     96 Nov 25 12:39 css-beat-7589645bc4-tfngq_car-dev_nginx-1a97f6689b4766a14bb247e6372d2994d374ecdf261007959559fd6eeb605b17.log -> /var/log/pods/car-dev_css-beat-7589645bc4-tfngq_f65e8727-c1ce-48df-a2a2-87a273d9b6b0/nginx/0.log
lrwxrwxrwx  1 root root    130 Jun  4  2021 everest-csi-controller-9c4bbcb94-2w2df_kube-system_everest-csi-controller-a536b1637c424e068e7cb7fb67515393f9920bb96337c8a8d726b7945fb73388.log -> /var/log/pods/kube-system_everest-csi-controller-9c4bbcb94-2w2df_23ebd20f-6723-436d-b21b-9b6f66a33c23/everest-csi-controller/0.log

然后,会看到这个目录下存在了此宿主机上的所有容器日志,文件的命名方式为:

[podName]_[nameSpace]_[depoymentName]-[containerId].log

上面这个是deployment的命名方式,其他的会有些不同,例如:DaemonSetStatefulSet等,不过所有的都有一个共同点,就是:

*_[nameSpace]_*.log

到这里,知道这个特性,就可以往下来看Filebeat的部署和配置了。

filebeat部署

总结: 

  • 基于daemonset, 用于收集标准输出和标准错误输出的日志,以及所有容器的产生日志。
  • 基于sidecar,用于收集pod中的容器的应用程序打的日志,打的日志通过emptyDir共享给sidcar服务。

基于daemonset部署日志收集进程,实现json-file类型(标准输出/dev/stdout、错误输 出/dev/stderr)日志收集,即应用程序产生的标准输出和错误输出的日志。

使用sidecar容器(一个pod多容器)收集当前pod内一个或者多个业务容器的日志(通常基于emptyDir{}实现业务容器与sidcar之间的日志共享)

下载官网的yaml并进行修改,

##
wget https://raw.githubusercontent.com/elastic/beats/master/deploy/kubernetes/filebeat-kubernetes.yaml

##

修改的内容如下:

pod cpu处建议做个限制,否则发生错误可能会占用很大cpu,另外就是删除了output部分,删除了原文的输出到ES,改为kafka 或者logstash文章来源地址https://www.toymoban.com/news/detail-510853.html

output.kafka:
      enabled: true
      hosts: ["10.10.11.61:9092"]
      topic: 'k8s-uat-log'
      max_message_bytes: 5242880
      partition.round_robin:
        reachable_only: true
      keep-alive: 120
      required_acks: 1

到了这里,关于收集K8S容器的标准输出日志实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • K8s 日志收集-Day 07

    官方文档:https://kubernetes.io/zh/docs/concepts/cluster-administration/logging/ (1)node节点收集 基于daemonset部署日志收集进程,实现json-file类型(标准输出/dev/stdout、错误输出/dev/stderr)日志收集; 该方式的优点:日志收集架构简单,易部署、易维护。 该方式的缺点:node节点产生的日志、

    2024年03月26日
    浏览(39)
  • EFK简单部署收集K8S日志

    安装ES kibana K8S部署

    2024年04月27日
    浏览(32)
  • K8S部署EFK(fluentd)收集日志

    首先部署es和kinban es部署 创建es-svc es-statefulset.yaml 开启es跨域访问 部署kinban 创建kibana的configmap kinban开启中文 创建kibana 部署fluentd 创建fluentd-configmap 只收集pod label 标记为 logging=true 的日志 注意挂载的日志目录出现unreadable 说明日志软连接有问题,无法读取日志 部署fluentd-dae

    2024年02月16日
    浏览(43)
  • k8s日志收集组件 Grafana loki --- 理论篇

    当我们在k8s上运行程序时,习惯的会使用ELK来收集和查询程序运行日志。今天我们介绍一款新的专为日志收集而生的神器:Grafana loki。Grafana Loki 是一组组件,可以组合成一个功能齐全的日志堆栈。 与其他日志记录系统不同,Loki 仅构建索引有关日志的元数据:标签(就像 P

    2024年02月10日
    浏览(46)
  • 第26关 K8s日志收集揭秘:利用Log-pilot收集POD内业务日志文件

    ------ 课程视频同步分享在今日头条和B站 大家好,我是博哥爱运维。 OK,到目前为止,我们的服务顺利容器化并上了K8s,同时也能通过外部网络进行请求访问,相关的服务数据也能进行持久化存储了,那么接下来很关键的事情,就是怎么去收集服务产生的日志进行数据分析及

    2024年02月03日
    浏览(44)
  • k8s 查看程序日志输出

    总是和k8s大交道,把相关的命令也学习一下 查看程序日志输出: kubectl logs -f ce202307130100024-gy-decision-xkygl-64f795ff7b-mtr67 --tail=1000 不重定向的情况下,可以把多进程下的日志都输出出来。挺好用的 kubectl logs -f pod --tail=xxx xxx为追踪的行数 docker 环境给环境变量 docker run -e VAR1=valu

    2024年02月16日
    浏览(37)
  • k8s命令查看容器日志

    ● namespace 以不同命名空间区分环境,如:TEST,DEV ● POD k8s运行的最小单位 ● Service 一种资源类型,将pod开放给外部访问,拥有IP地址,port,target port,前者为对外端口,后者为pod端口 kbpod 功能:列出pod 使用方式: kbpod namespace 说明:如果namespace为all,将打印所有命名空间的

    2024年02月06日
    浏览(47)
  • Rancher中使用promtail+loki+grafna收集k8s日志并展示

    根据应用需求和日志数量级别选择对应的日志收集、过滤和展示方式,当日志量不太大,又想简单集中管理查看日志时,可使用promtail+loki+grafna的方式。本文找那个loki和grafana外置在了k8s集群之外。 方式一: 方式二: 登录rancher,选择集群→应用→Chart仓库→创建,配置仓库

    2024年01月20日
    浏览(38)
  • K8s部署轻量级日志收集系统EFK(elasticsearch + filebeat + kibana)

    目录 K8s部署EFK(elasticsear + filebeat + kibana)日志收集 一.准备镜像 二.搭建Elasticsearch + kibana 1.在可执行kubectl命令的服务器准备安装的yml文件 2.在elasticsearch-kibana目录下创建配置文件elasticsearch.yml 3.创建kibana配置文件kibana.yml 4.在k8s中创建elasticsearch和kibana的配置文件configmap 5.检查

    2024年02月08日
    浏览(64)
  • 一篇可供参考的 K8S 落地实践经验

    k8s 即 Kubernetes,是一个开源的容器编排引擎,用来对容器化应用进行自动化部署、 扩缩和管理 本篇文章将分享 k8s v1.18.8 的安装,以及其面板,监控,部署服务,使用Ingress-Ningx进行负载均衡的实践 因为公司用的这个老版本,并且后面要负责搭建,担心无法复刻,趁此周末,

    2024年02月04日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包