私有部署ELK,搭建自己的日志中心(五)-- 使用filebeat采集K8S pod的jvm日志

一、背景

前文采集的日志是来源于虚拟机,在云原生下的容器化部署时,需要采集Pod里的jvm日志。

二、术语

1、临时存储emptyDir

emptyDir在Pod被分配到Node时创建的,它的初始内容为空,并且无须指定宿主机上对应的目录文件,因为kubernetes会自动分配一个目录,当Pod销毁时,EmptyDir中的数据也会被永久删除,所以也被称为临时存储。

2、ConfigMap

filebeat.yml保存在配置存储ConfigMap里,filebeat进程加载该文件。

filebeat -c /etc/filebeat.yml

三、整体设计

在同一个pod里,使用sidecar模式再部署一个filebeat容器,由它读取jvm容器输出的日志文件。

filebeat本身启动的时候,配置文件filebeat.yml挂载到configMap,供我们方便修改。

filebeat要读取jvm容器的日志文件,通过emptyDir共享日志文件;前者负责读取,后者负责写入。
在这里插入图片描述

四、deployment.yaml

1、增加filebeat容器

      containers:- name: filebeat-containerenv:- name: APPNAMEvalue: {{ .Values.appName }}image: docker.elastic.co/beats/filebeat:8.0.1args:- -c- /etc/filebeat.ymlvolumeMounts:- name: storage-logsmountPath: /opt/{{ .Values.appName }}/logs- name: filebeat-volumemountPath: /etc/filebeat.ymlreadOnly: truesubPath: filebeat.yml
  • 创建一个名称为storage-logs的临时存储emptyDir
	  volumes:- name: storage-logsemptyDir: {}
  • jvm容器把日志文件挂载到storage-logs
		volumeMounts:- mountPath: /opt/{{ .Values.appName }}/logsname: storage-logs

2、ConfigMap配置存储

新增一个名称为filebeat-volume的ConfigMap

	volumes:- name: storage-logsemptyDir: {}#################- configMap:name: filebeat-configname: filebeat-volume

配置存储新增一个名称为filebeat-config的配置:
在这里插入图片描述

下面的截图,可以看出,key值对应上文的“subPath: filebeat.yml”

在这里插入图片描述

  • yaml详情
kind: ConfigMap
apiVersion: v1
metadata:name: filebeat-confignamespace: java-service
data:#对应上文 subPath: filebeat.ymlfilebeat.yml: |filebeat.inputs:- type: logenabled: truebackoff: "1s"tail_files: falsepaths:- /opt/*/logs/*.logmultiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'multiline.negate: falsemultiline.match: afterdocument_type: jvmfields:app: ${APPNAME}output.logstash:enabled: truehosts: ["192.168.8.29:5044"]   

3、jvm容器修改日志的存储

由nfs调整为emptyDir:

  • 修改前:
	- name: {{ .Values.appName }}volumeMounts:- mountPath: /opt/{{ .Values.appName }}/logsname: volume-resourcessubPath: logsvolumes:- name: volume-resourcespersistentVolumeClaim:claimName: application-resources
  • 修改后:
	- name: {{ .Values.appName }}volumeMounts:- mountPath: /opt/{{ .Values.appName }}/logsname: storage-logsvolumes:- name: storage-logsemptyDir: {}

五、总结

1、一定要让filebeat能够读取到被采集的日志,比如本文就是采用emptydir临时文件的方式共享。
2、filebeat容器本身启动的时候,注意需加载filebeat,yml配置。这里使用了args的方式指定配置文件所在路径。

	args:- -c- /etc/filebeat.yml

而/etc/filebeat.yml是挂载到configMap。

这一块踩过的坑就是,没有启动filebeat进程。所以这个必不可少,再次提醒。

3、由于整个deployment.yaml比较大,我就不详细贴出来其内容。而且不同的公司不一,需要你基于原本的配置修改。
下面仅以截图示意:
在这里插入图片描述

这就是k8s的边车模式,除了适用于本文的日志采集方案,还可以被用来做监控、证书管理等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/308212.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

02.Git远程仓库

一、常用的托管服务 1.gitHub 一个面向开源及私有软件项目的托管平台,只支持Git作为唯一的版本库格式进行托管。 2.码云(gitee) 是国内的一个代码托管平台,服务器在国内,所有相较于gitHub使用起来更加方便一点。 3.gitLab 是一个用于仓库管…

【hyperledger-fabric】将智能合约部署到通道

简介 本文主要来自于B站视频教学视频,也主要参看了官方文档中下图这一章节。针对自己开发的代码做出相应的总结。 1.启动网络 # 跳转到指定的目录 cd /root/fabric/fabric-samples/test-network# 启动docker容器并且创建通道 ./network.sh up createChannel2.打…

探索 Node.js 与 C++ 的绑定:使用 node-addon-api

在 Node.js 中使用 C 进行绑定是一种强大的方式,可以充分利用 C 的性能优势。在本文中,我们将探讨如何使用 node-addon-api 来实现这一目标。 1. 为什么选择 C 绑定? Node.js 是一个基于 JavaScript 的平台,它使得开发人员能够使…

Leetcode 746 使用最小花费爬楼梯

题意理解: 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。 一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯 目标:使用最小的花…

2020年认证杯SPSSPRO杯数学建模A题(第一阶段)听音辨位全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 A题 听音辨位 原题再现: 把若干 (⩾ 1) 支同样型号的麦克风固定安装在一个刚性的枝形架子上 (架子下面带万向轮,在平地上可以被水平推动或旋转,但不会歪斜),这样的设备称为一个麦克风树。不同的麦…

Android MVP 写法

前言 Model:负责数据逻辑 View:负责视图逻辑 Presenter:负责业务逻辑 持有关系: 1、View 持有 Presenter 2、Model 持有 Presenter 3、Presenter 持有 View 4、Presenter 持有 Model 辅助工具:ViewBinding 执行…

PostgreSQL PG的流复制搭建

注: 本文为云贝教育 刘峰 原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。【PostgreSQL】PG的流复制搭建 - 课程体系 - 云贝教育https://www.yunbee.net/Home/News/detail/article_id/510.html 一 、主备机…

TCP/IP的网络层(即IP层)之IP地址和网络掩码,在视频监控系统中的配置和应用

在给客户讲解我们的AS-V1000视频监控平台的时候,有的客户经常会配置错误IP地址的掩码和网关,导致出现一些网路问题。而在视频监控系统中,IP地址和子网掩码是用于标识网络中设备的重要标识符。IP地址被用来唯一地标识一个网络设备,…

kafka实现延迟消息

背景 我们知道消息中间件mq是支持延迟消息的发送功能的,但是kafka不支持这种直接的用法,所以我们需要独立实现这个功能,以下是在kafka中实现消息延时投递功能的一种方案 kafka实现延时消息 主要的思路是增加一个检测服务,这个检…

杰发科技AC7840——EEPROM初探

0.序 7840和7801的模拟EEPROM使用不太一样 1.现象 按照官方Demo,在这样的配置下,我们看到存储是这样的(连续三个数字1 2 3)。 使用串口工具的多帧发送功能 看不出多少规律 修改代码后 发现如下规律: 前四个字节是…

github鉴权失败

问题: 如上图所示 git push 时发生了报错,鉴权失败; 解决方案 Settings->Developer settings->Personal access tokens->Generate new token。创建新的访问密钥,勾选repo栏,选择有效期,为密钥命…

06-C++ 类和对象-多态

类与对象 多态 1. 简介 一个事物的多种形态,简称多态。 物的多态 同一个人在不同人面前,角色不同 如: 在父母面前在对象面前在朋友面前在同事面前 事的多态 同一种事情,在不同情况下展现不同 如: 吃饭 中国人 筷子 …