采集k8s挂载Nas后的日志

该文档主要介绍使用logtail以两种不同的方式进行k8s挂载Nas后的日志采集。两种采集方式的实现原理是一样的,都是通过将Logtail和业务容器挂载到相同的NAS上,使Logtail和业务容器的日志数据共享,以此实现日志采集。下面是两种采集方式的各自特点:

  1. SideCar模式。比较灵活、适合水平扩容,适用于数据量较大的场景;
  2. 单独部署Logtail的Deployment。资源消耗比较低、但灵活性以及伸缩性不强,适用于整体集群数据量较少的场景(建议整体日志量不超过每秒10M)。

1. Sidecar NAS采集方式

通过 链接 使用PV&PVC的方式配置挂载Nas的nas-pvc

  • 步骤一 创建pv
  • 步骤二 创建pvc
  • 步骤三 根据下面的yaml模板创建含有logtail的Pod,进行单个Pod的内部采集

sideCar模式实验yaml内容:

apiVersion: batch/v1
kind: Job
metadata:name: nginx-log-sidecar1-demo
spec:template:metadata:name: nginx-log-sidecar-demospec:# volumes配置volumes:- name: nginx-logpersistentVolumeClaim:claimName: nas-pvccontainers:# 主容器配置- name: nginx-log-demoimage: registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latestcommand: ["/bin/mock_log"]args: ["--log-type=nginx", "--stdout=false", "--stderr=true", "--path=/var/log/nginx/access.log", "--total-count=1000000000", "--logs-per-sec=100"]volumeMounts:- name: nginx-logmountPath: /var/log/nginx# Logtail的Sidecar容器配置- name: logtailimage: registry.cn-hangzhou.aliyuncs.com/log-service/logtail:latestenv:# user id- name: "ALIYUN_LOGTAIL_USER_ID"value: "${your_aliyun_user_id}"# user defined id- name: "ALIYUN_LOGTAIL_USER_DEFINED_ID"value: "${your_machine_group_user_defined_id}"# config file path in logtail's container- name: "ALIYUN_LOGTAIL_CONFIG"value: "/etc/ilogtail/conf/${your_region_config}/ilogtail_config.json"# env tags config- name: "ALIYUN_LOG_ENV_TAGS"value: "_pod_name_|_pod_ip_|_namespace_|_node_name_|_node_ip_"- name: "_pod_name_"valueFrom:fieldRef:fieldPath: metadata.name- name: "_pod_ip_"valueFrom:fieldRef:fieldPath: status.podIP- name: "_namespace_"valueFrom:fieldRef:fieldPath: metadata.namespace- name: "_node_name_"valueFrom:fieldRef:fieldPath: spec.nodeName- name: "_node_ip_"valueFrom:fieldRef:fieldPath: status.hostIP# 和主容器共享volumevolumeMounts:- name: nginx-logmountPath: /var/log/nginx# 健康检查livenessProbe:exec:command:- /etc/init.d/ilogtaild- statusinitialDelaySeconds: 30periodSeconds: 30restartPolicy: "Never"

SLS控制台采集配置设置如下图:

  • 日志路径与被采集容器的日志所在路径一致
  • 注意:由于NAS路径已经挂载到了Logtail容器上,所以不需要打开docker文件的按钮

采集上来的系统默认字段含义:

__source__:  pod容器内部IP
__tag__:__hostname__:  pod名称
__tag__:__path__:  日志路径
__tag__:__receive_time__:  采集时间
__tag__:__user_defined_id__:  用户自定义标识
__tag__:_namespace_:  pod所属namaspace
__tag__:_node_ip_:  pod所在Node的IP地址
__tag__:_node_name_:  pod所属Node的name
__tag__:_pod_ip_:  pod容器内部IP
__tag__:_pod_name_:  pod名称

用户参数:

参数

说明

${your_region_config}

该参数由日志服务Project所在Region以及网络类型决定,请根据网络类型输入正确的格式。包括:

  • 公网:region-internet。例如,华东一为cn-hangzhou-internet

  • 阿里云内网:region。例如,华东一为cn-hangzhou

其中,region为 表一,请根据Project地域选择正确的参数。

${your_aliyun_user_id}

用户标识,请替换为您的阿里云主账号用户ID。主账号用户ID为字符串形式,如何查看ID请参考 用户标识配置中的2.1节。

说明?用户标识一定是?主账号用户ID,子账号ID没有任何意义。

${your_machine_group_user_defined_id}

您集群的机器组自定义标识。需确保该标识在您的日志服务所在Region内唯一。详细内容可参考 创建用户自定义标识机器组。

2. 一个Logtail采集所有POD的NAS数据

注意项:副本数spec.replicas只能为1,不能更多,多了会重复采集。

首先,创建一个logtail的deployment,以下是本次使用的模板:

apiVersion: apps/v1
kind: Deployment
metadata:name: logtail-deploymentnamespace: kube-systemlabels:k8s-app: nas-logtail-collecter
spec:replicas: 1selector:matchLabels:k8s-app : nas-logtail-collectertemplate:metadata:name: logtail-deploymentlabels:k8s-app : nas-logtail-collecterspec:containers:# Logtail的配置- name: logtailimage: registry.cn-hangzhou.aliyuncs.com/log-service/logtail:latestenv:# aliuid- name: "ALIYUN_LOGTAIL_USER_ID"value: "${your_aliyun_user_id}"# user defined id- name: "ALIYUN_LOGTAIL_USER_DEFINED_ID"value: "${your_machine_group_user_defined_id}"# config file path in logtail's container- name: "ALIYUN_LOGTAIL_CONFIG"value: "/etc/ilogtail/conf/${your_region_config}/ilogtail_config.json"volumeMounts:- name: nginx-logmountPath: /var/log/nginx# volumes配置volumes:- name: nginx-logpersistentVolumeClaim:claimName: pvc-test-nginx
  • __注意:__这里的 claimName: pvc-test-nginx 以及mountPath: /var/log/nginx 是将logtail的/var/log/nginx挂载了Nas下的/nginx文件夹
  • 相关参数设置请参考方案1中的表格说明

logtail运行成功之后,可以在SLS控制台根据模板中的ALIYUN_LOGTAIL_USER_DEFINED_ID创建对应的机器组,请参考方案1中的表格说明。

这里新建2个Pod来测试采集是否成功,其中一个POD的模板为:

apiVersion: v1
kind: Pod
metadata:name: "test-nginx-2"
spec:containers:- name: "nginx-log-demo"image: "registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest"command: ["/bin/mock_log"]args: ["--log-type=nginx", "--stdout=false", "--stderr=true", "--path=/var/log/nginx/access.log", "--total-count=1000000000", "--logs-per-sec=100"]volumeMounts:- name: "nas2"mountPath: "/var/log/nginx"volumes:- name: "nas2"flexVolume:driver: "alicloud/nas"options:server: "Nas挂载地址"path: "/nginx/test2"vers: "4.0"

另一个Pod将 /var/log/nginx 挂载在了 /nginx/test1 目录下;结合logtail的挂载情况,现在两个Pod分别挂载在 /nginx/test1 和 /nginx/test2,而logtail挂载在了 /nginx 下。

最后配置logtail的采集配置


因为logtail也挂载了相同的Nas,所以logtail只需要采集自身文件夹下的日志就可以了,这里的是否为docker文件选项关闭。
注意:由于NAS路径已经挂载到了Logtail容器上,所以不需要打开docker文件的按钮

#阿里云开年Hi购季#幸运抽好礼!
点此抽奖:https://www.aliyun.com/acts/product-section-2019/yq-lottery?utm_content=g_1000042901

原文链接
本文为云栖社区原创内容,未经允许不得转载。

使用Logtail采集Kubernetes上挂载的NAS日志相关推荐

  1. nas挂载windows_在windows2012上挂载NAS文件系统

    如果您想要使用分布式文件系统,并在多台虚机实例上共享存储,您可以使用NAS服务.本文以Windows Server 2012 R2系统为例,描述了如何在一台Windows 虚机实例上挂载一个NAS文件 ...

  2. kubernetes上部署rook-ceph存储系统

    文章目录 1. 简单说说为什么用rook 2. rook-ceph部署 2.1 环境 2.2 Rook Operator部署 2.3 Ceph集群创建 2.3.1 标识osd节点 2.3.2 yaml ...

  3. 阿里云上自建k8s挂载ali nas

    阿里云上自建k8s挂载ali nas@TOC k8s nas ali 基础环境: 阿里云上两台ecs搭建k8s平台,版本信息: k8s: 1.23.5 docker: 20.10.7 ubuntu: ...

  4. [KubeCon+CloudNativeCon China 2018] 在Kubernetes上运行区块链服务(BaaS)

    笔者注:本文是在2018年11月15日由Linux基金会CNCF主办的KubeCon & CloudNativeCon China 2018大会的"Running Blockchai ...

  5. 在Kubernetes上运行区块链服务(BaaS)

    本文是在2018年11月15日由Linux基金会CNCF主办的KubeCon & CloudNativeCon China 2018大会的"Running Blockchain as ...

  6. 同程旅行大数据集群在 Kubernetes 上的服务化实践

    本文将向大家介绍同程旅行大数据集群在 Kubernetes 上服务化建设的一些实践和经验. 同程旅行大数据集群从 2017 年开始容器化改造,经历了自研调度 Docker 容器 ,到现在的云舱平台,采 ...

  7. 在 Kubernetes 上弹性深度学习训练利器 -- Elastic Training Operator

    作者 | 徐晓舟(萧元) 来源|阿里巴巴云原生公众号 背景 由于云计算在资源成本和弹性扩容方面的天然优势,越来越多客户愿意在云上构建 AI 系统,而以容器.Kubernetes 为代表的云原生技术,已 ...

  8. SpringCloud 应用在 Kubernetes 上的最佳实践 — 高可用(熔断)

    作者 | 宿何 导读:前几篇我们主要站在应用发布的场景,描述在发布过程中会遇到的灰度.监控.回滚.优雅上下线等保障发布能顺利进行的注意事项.作为一个程序员 GG,可灰度的发布顺利上线往往意味着准点下班 ...

  9. SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(可监控)

    作者 | 骐羽 阿里巴巴技术专家 导读:本篇是"SpringCloud 应用在 Kubernetes 上的最佳实践"系列文章的第六篇,主要介绍了如何保障生产环境服务稳定,做到随时发 ...

最新文章

  1. SSG140 web、telnet、ssh无法访问,仅支持console
  2. 哪里可以找到python的免费教程-哪里有免费的python3教程啊?最好是有例子的视频教学...
  3. 转:关于CCDISK的优化
  4. 插上翅膀,让Excel飞起来——xlwings(一)
  5. java 不能反序列化_java中的序列化与反序列化
  6. 今天正式开通51CTO技术博客
  7. biztalk在用户代码中构造多部分消息
  8. Eclipse导出可执行JAR文件的方法
  9. unity3d collider自动调整大小_3dmax室内模型导入Unity3d快速烘焙光照【2020】
  10. Linux之SELinux自主访问控制系统
  11. arraylist 线程安全_Java集合---ArrayList的实现原理
  12. c#使用正则表达式获取TR中的多个TD_Linux之正则表达式
  13. 20200131每日一句
  14. 三角波的傅里叶变换对_傅里叶变换推导详解
  15. Protel DXP 2004 SP3_SP4 注册机
  16. 守夜人誓言+考研誓言
  17. Vulntarget靶场渗透笔记[持续更新中]
  18. 静态博客网站——vuepress功能进化
  19. Windows10分屏显示的3种方式
  20. DeepLab系列理解

热门文章

  1. 2.3.0配置 spark_配置scala 2.11.12的spark-2.3.0 maven依赖项的问题
  2. 【LeetCode笔记】剑指Offer 43. 1~n 整数中1出现的次数(Java、数位dp、偏数学)
  3. run till exit from #0_华为认证hcip H13821 v2.0云服务考试真题每日一练(一)
  4. android fragment 管理器,Android Fragment 與 Fragment管理器
  5. java kettle6_java 调用kettle 6.1 转换
  6. mysql必知必会_MySQL必知必会
  7. 计算机网络构成ppt,计算机网络体系结构ppt课件.ppt
  8. php 清空一个数组_php如何删除一个数组
  9. tga文件怎么打开_教你win10系统怎么打开stp文件
  10. 你见过哪些堪称绝妙的数学证明?