k8s中部署filebeat进行日志监听并发送到es中

embedded/2024/11/29 14:56:52/

注意事项

1. 需要将namespace修改为自己项目中的命名空间

2. es换成对应的地址

3. filebeat-inputs中的两个配置(根据需要用任意一个就可以)

3.1 第一个配置是监听docker日志,由于系统日志太多所以这里只监听项目部署命名空间下的内容
- type: dockercontainers.ids:- "*"exclude_files: ['.*/syslog.*']  # 排除系统日志文件(示例)  multiline.pattern: '^\d{4}-\d{2}-\d{2}'multiline.negate: truemultiline.match: afterprocessors:- drop_fields:fields: ["input_type", "offset", "stream", "beat"]- add_kubernetes_metadata:in_cluster: true- drop_event:when:or:# 丢弃不属于 gateway 和 api 容器的日志- not:or:- equals:kubernetes.container.name: "gateway"  # 只记录 gateway 容器- equals:kubernetes.container.name: "api"  # 只记录 api 容器# 丢弃健康检查相关的日志- contains:message: "/health/status"
3.2 第二个是配置监听指定文件夹下的所有日志信息,日志有变更就会发送到es中(如果修改路径地址,需要把挂载logger-path路径一并改掉)
	- type: logenabled: truepaths:- /home/k8s/logger/*/*.txt    # 指定文件夹下的日志multiline.pattern: '^\d{4}-\d{2}-\d{2}' # 长文本合并multiline.negate: truemultiline.match: afterfields_under_root: trueexclude_lines: ['^DEBUG']  # 可选,排除 DEBUG 日志exclude_files: ['.gz$'] # 排除压缩文件

完整配置

---
apiVersion: v1
kind: ConfigMap
metadata:name: filebeat-confignamespace: giteelabels:k8s-app: filebeat
data:filebeat.yml: |-filebeat.config:inputs:# Mounted `filebeat-inputs` configmap:path: ${path.config}/inputs.d/*.yml# Reload inputs configs as they change:reload.enabled: truemodules:path: ${path.config}/modules.d/*.yml# Reload module configs as they change:reload.enabled: falseoutput.elasticsearch:hosts: ['elasticsearch.gitee:9200']
---
apiVersion: v1
kind: ConfigMap
metadata:name: filebeat-inputsnamespace: giteelabels:k8s-app: filebeat
data:kubernetes.yml: |-- type: dockercontainers.ids:- "*"exclude_files: ['.*/syslog.*']multiline.pattern: '^\d{4}-\d{2}-\d{2}'multiline.negate: truemultiline.match: afterprocessors:- drop_fields:fields: ["input_type", "offset", "stream", "beat"]- add_kubernetes_metadata:in_cluster: true- drop_event:when:and:- not:or:- equals:kubernetes.container.name: "gateway"- equals:kubernetes.container.name: "api"- contains:message: "/health/status"file-logs.yml: |-- type: logenabled: truepaths:- /home/k8s/logger/*/*.txtmultiline.pattern: '^\d{4}-\d{2}-\d{2}'multiline.negate: truemultiline.match: afterfields_under_root: trueexclude_lines: ['^DEBUG']exclude_files: ['.gz$']
---
apiVersion: apps/v1
kind: DaemonSet
metadata:name: filebeatnamespace: giteelabels:k8s-app: filebeat
spec:selector:matchLabels:k8s-app: filebeattemplate:metadata:labels:k8s-app: filebeatspec:serviceAccountName: filebeatterminationGracePeriodSeconds: 30containers:- name: filebeatimage: elastic/filebeat:7.9.2args: ["-c", "/etc/filebeat.yml","-e",]securityContext:runAsUser: 0resources:limits:memory: 200Mirequests:cpu: 100mmemory: 100MivolumeMounts:- name: configmountPath: /etc/filebeat.ymlreadOnly: truesubPath: filebeat.yml- name: inputsmountPath: /usr/share/filebeat/inputs.dreadOnly: true- name: datamountPath: /usr/share/filebeat/data- name: varlibdockercontainersmountPath: /var/lib/docker/containersreadOnly: true- name: logger-path # 持久化地址mountPath: /home/k8s/logger/volumes:- name: configconfigMap:defaultMode: 0600name: filebeat-config- name: varlibdockercontainershostPath:path: /var/lib/docker/containers- name: inputsconfigMap:defaultMode: 0600name: filebeat-inputs- name: datahostPath:path: /var/lib/filebeat-datatype: DirectoryOrCreate- name: logger-pathhostPath:path: /home/k8s/logger/type: Directory
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: filebeat
subjects:
- kind: ServiceAccountname: filebeatnamespace: gitee
roleRef:kind: ClusterRolename: filebeatapiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: filebeatlabels:k8s-app: filebeat
rules:
- apiGroups: [""] # "" indicates the core API groupresources:- namespaces- podsverbs:- get- watch- list
---
apiVersion: v1
kind: ServiceAccount
metadata:name: filebeatnamespace: giteelabels:k8s-app: filebeat

http://www.ppmy.cn/embedded/141498.html

相关文章

【速通GO】基础结构和语法

独立站原文 基础结构以及执行方式 基础结构 // 包名 package main// 引入包 import "fmt"// main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数 // 注意 { 不能单独放在一…

【C++笔记】数据结构进阶之二叉搜索树(BSTree)

【C笔记】数据结构进阶之二叉搜索树(BSTree) 🔥个人主页:大白的编程日记 🔥专栏:C笔记 文章目录 【C笔记】数据结构进阶之二叉搜索树(BSTree)前言一.二叉搜索树的概念二.二叉搜索树的性能分析三.二叉搜索树的实现3.1二叉树的中序…

机器学习6-梯度下降法

梯度下降法 目的 梯度下降法(Gradient Descent)是一个算法,但不是像多元线性回归那样是一个具体做回归任务的算法,而是一个非常通用的优化算法来帮助一些机器学习算法求解出最优解的,所谓的通用就是很多机器学习算法都是用它,甚…

如何做好一份技术文档?

技术文档的创作与优化 一、技术文档的规划布局(一)明确文档目的与受众确定目的分析受众 (二)构建章节框架概述章节基础技术概念章节系统架构章节功能实现章节测试与验证章节结论与展望章节 二、技术文档的语言表达(一&…

初级数据结构——二叉搜索树题库(c++)

目录 前言[1.——108. 将有序数组转换为二叉搜索树](https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/)[2.——LCR 052. 递增顺序搜索树](https://leetcode.cn/problems/NYBBNL/)[3.——897. 递增顺序搜索树](https://leetcode.cn/problems/increasi…

c/c++ 用easyx图形库写一个射击游戏

#include <graphics.h> #include <conio.h> #include <stdlib.h> #include <time.h>// 定义游戏窗口的大小 #define WINDOW_WIDTH 800 #define WINDOW_HEIGHT 600// 定义玩家和目标的尺寸 #define PLAYER_SIZE 50 #define TARGET_SIZE 20// 玩家的结构…

【qiankun】主应用css隔离、js隔离、日常通信机制

qiankun是一个微前端框架&#xff0c;它提供了多种机制来确保主应用与子应用之间的独立性&#xff0c;包括CSS隔离、JS隔离以及日常通信等。以下是对这些机制的详细解释&#xff1a; 一、CSS隔离 qiankun通过以下方式实现CSS隔离&#xff1a; 自动添加命名空间&#xff1a; …

Exchange 2016(ESEUTIL命令的应用)

使用eseutil命令进行修复 执行ESEUTIL /MH <数据库绝对路径>&#xff0c;查看state是 dirtyshutdown还是cleanshutdown. 1.如果是clean shutdown状态可以执行软修复 注意&#xff1a;软恢复过程的一个基本假设是故障未移动、删除或破坏任何数据库文件或日志文件&#xf…