Filebeat k8s 部署(Deployment)采集 PVC 日志发送至 Kafka——日志处理(二)

文章目录

  • 前言
  • Filebeat Configmap 配置
  • Filebeat Deployment
  • 验证
  • 总结

前言

在上篇文章中总结了 Django 日志控制台输出、文件写入按天拆分文件,自定义 Filter 增加 trace_id 以及过滤——日志处理(一),将日志以 JSON 格式写入日志文件。
我们的项目服务是部署在 k8s 上的,日志是挂载在 PVC 中的,接下来我们需要使用 Filebeat 去采集 PVC 中的日志,发送至 kafka 中,本文将总结如何在 k8s 上部署 Filebeat, 来采集 PVC 中的日志。

Filebeat Configmap 配置

使用 k8s 的 configmap 来保存 Filebeat 的配置信息:

apiVersion: v1
kind: ConfigMap
metadata:name: filebeat-config
data:filebeat.yml: |-filebeat.inputs:- type: logenabled: truepaths:# 日志文件路径- /home/dfuser/addcdata/logs/*.logoutput.kafka:# kafka 集群的连接地址hosts: ["kafka.cluster.address:9092"]# 将要发送的 kafka topic, 注意确保该 topic 存在topic: "filebeat_logs"# 连接 kafka 的用户名和密码username: "admin"password: "admin"sasl.mechanism: PLAINcompression: gzip# 这里可以将 timeout 设置长一点,默认好像是几秒timeout: 60sbroker_timeout: 60sretry.backoff: 5s# 日志消息的发送响应要求一般不会特别高,设置为 1就够了required_acks: 1max_message_bytes: 104857600channel_buffer_size: 256keep_alive: 30s
  • 配置文件中定义了 input 信息:采集日志文件路径,以及 output 信息:kafka 连接配置信息等。

关于kafka Producer 配置信息不太熟悉的可以看我之前写的这篇文章:
kafka 生产者 API 实践总结

Filebeat Deployment

apiVersion: apps/v1
kind: Deployment
metadata:labels:workload.user.cattle.io/workloadselector: apps.deployment-addcdata-filebeatname: filebeatnamespace: addcdata
spec:replicas: 1selector:matchLabels:workload.user.cattle.io/workloadselector: apps.deployment-addcdata-filebeattemplate:metadata:labels:workload.user.cattle.io/workloadselector: apps.deployment-addcdata-filebeatnamespace: addcdataspec:containers:- name: filebeatresources:limits:memory: 3000Miimage: elastic/filebeat:7.6.2args: [ "-e", "-c", "/etc/filebeat/filebeat.yml" ]volumeMounts:- mountPath: /home/dfuser/addcdata/logsname: addcdata-logs-pvcsubPath: logs- name: filebeat-configmountPath: /etc/filebeat/filebeat.ymlsubPath: filebeat.ymlimagePullSecrets:- name: addcdata-harborrestartPolicy: AlwaysterminationGracePeriodSeconds: 30volumes:- name: addcdata-logs-pvcpersistentVolumeClaim:claimName: addcdata-pvc- name: filebeat-configconfigMap:name: filebeat-config
  • 这里挂载了两个 volumes:
    • addcdata-pvc: 是我们项目在 k8s 上挂载日志的 PVC,其中日志挂载在 /home/dfuser/addcdata/logs 目录下
    • filebeat-config:是上边 Filebeat 的configMap 配置名称
  • 这里我们使用的镜像是 elastic/filebeat:7.6.2,这个是官方的,没有外网可能不好拉取,我把该镜像上传至了阿里云的镜像仓库,可以从该地址拉取:registry.cn-shenzhen.aliyuncs.com/zhouzy_space/filebeat:7.6.2, 从阿里云镜像仓库拉取 docker 需要先登录阿里云仓库。

验证

如果我们的配置正确,并且上边的 Deployment 部署成功,通过查看 Filebeat Pod 日志如下:
image.png
如果我们的 kafka 配置不正确或者网络连接不上,日志会报错误信息。
接下来我们通过 CMAK 看下 kafka 的 Topic 是否写入:
image.png
可以发现已经有消息写入。
我们写个 Python 脚本消费几条数据看下:
将下边脚本的 kafka 连接信息替换为自己的集群信息

from confluent_kafka import Consumer, KafkaExceptiondef consume_messages(topic):# 创建 Kafka 消费者配置conf = {'bootstrap.servers': 'kafka.address:9092',  # Kafka 服务器地址'group.id': 'my-consumer-group',  # 消费者组ID'auto.offset.reset': 'earliest',  # 自动重置偏移量'enable.auto.commit': False,  # 禁用自动提交偏移量'session.timeout.ms': 6000,  # 会话超时时间}# 如果 Kafka 启用了 SASL 认证,添加 SASL 相关配置conf.update({'security.protocol': 'SASL_PLAINTEXT','sasl.mechanism': 'PLAIN','sasl.username': 'admin','sasl.password': 'admin',})consumer = Consumer(conf)try:consumer.subscribe([topic])while True:msg = consumer.poll(1.0)  # 每秒轮询一次if msg is None:continueif msg.error():raise KafkaException(msg.error())else:print('Received message: {}'.format(msg.value().decode('utf-8')))except KeyboardInterrupt:passfinally:consumer.close()if __name__ == '__main__':topic = 'filebeat_logs'  # 你的 Kafka 主题名称consume_messages(topic)

下边放几条看下:

Received message: {"@timestamp":"2024-07-19T03:31:24.040Z","@metadata":{"beat":"filebeat","type":"_doc","version":"7.6.2"},"log":{"offset":32682537,"file":{"path":"/home/dfuser/addcdata/logs/info.log"}},"input":{"type":"log"},"ecs":{"version":"1.4.0"},"host":{"name":"filebeat-7674bf8777-kdhs2"},"agent":{"ephemeral_id":"b0211f50-71f4-471d-8d01-def1e3b1c303","hostname":"filebeat-7674bf8777-kdhs2","id":"edaefbbb-2d08-4b6c-95aa-46ebdbebd0cc","version":"7.6.2","type":"filebeat"},"message":"{\"time\": \"2024-07-19 11:31:23\", \"thread\": \"ThreadPoolExecutor-0_14\", \"level\": \"INFO\", \"func\": \"apps.data_report.views.views.report_data_v1:65\", \"trace_id\": \"9794977c-c8f5-4f75-a450-655eda5f58c4\",  \"message\": \"======================\"}"}
Received message: {"@timestamp":"2024-07-19T03:31:25.043Z","@metadata":{"beat":"filebeat","type":"_doc","version":"7.6.2"},"host":{"name":"filebeat-7674bf8777-kdhs2"},"agent":{"ephemeral_id":"b0211f50-71f4-471d-8d01-def1e3b1c303","hostname":"filebeat-7674bf8777-kdhs2","id":"edaefbbb-2d08-4b6c-95aa-46ebdbebd0cc","version":"7.6.2","type":"filebeat"},"log":{"offset":32689465,"file":{"path":"/home/dfuser/addcdata/logs/info.log"}},"message":"{\"time\": \"2024-07-19 11:31:24\", \"thread\": \"ThreadPoolExecutor-0_4\", \"level\": \"INFO\", \"func\": \"apps.data_report.views.views.report_data_v1:64\", \"trace_id\": \"26c55b5c-a660-4420-ab27-72e7cf9d1f1a\",  \"message\": \"params: <QueryDict: {'car_type': ['H97C'], 'path': ['H97C/2024071911/LDP95H966PE302771/204_31da1b2e254481914d851f9740a1f580_1721351130419507_slave/31da1b2e254481914d851f9740a1f580_1_1_1721354458372069_1.data'], 'env': ['prod'], 'sync': ['0']}>\"}","input":{"type":"log"},"ecs":{"version":"1.4.0"}}
Received message: {"@timestamp":"2024-07-19T03:31:25.043Z","@metadata":{"beat":"filebeat","type":"_doc","version":"7.6.2"},"message":"{\"time\": \"2024-07-19 11:31:24\", \"thread\": \"ThreadPoolExecutor-0_38\", \"level\": \"INFO\", \"func\": \"apps.data_report.views.views.report_data_v1:63\", \"trace_id\": \"7f754755-fb70-4212-9a80-55ba19f5e5c9\",  \"message\": \"=====data report======\"}","log":{"offset":32695607,"file":{"path":"/home/dfuser/addcdata/logs/info.log"}},"input":{"type":"log"},"ecs":{"version":"1.4.0"},"host":{"name":"filebeat-7674bf8777-kdhs2"},"agent":{"ephemeral_id":"b0211f50-71f4-471d-8d01-def1e3b1c303","hostname":"filebeat-7674bf8777-kdhs2","id":"edaefbbb-2d08-4b6c-95aa-46ebdbebd0cc","version":"7.6.2","type":"filebeat"}}

可以发现 filebeat 采集我们的日志往 kafka 里发的时候,会加上一些它自己的字段信息,比如说 timestamp, metadata 等,但是我们并不关心这些信息,我们最需要的是 message 字段,也就是我们自己的日志信息:
image.png

总结

filebeat 的 k8s 部署还是比较简单的,只需要部署一个 configmap,通过部署一个 Deployment 就可以采集我们 PVC 中的日志,但是需要确保我们的 kafka 配置信息正确 (确保写入 Topic 存在) 和日志挂载路径一致。

网上很多都是通过 DaemonSet 或者 sidecar 的方式部署 Filebeat,个人觉得没必要,太过复杂,只要我们的日志是挂载到 PVC 中的,简单部署一个 Deployment 就足够了,目前我们的服务每天会产生百万条日志,都是正常发送至 kafka 的。

日志搜集至 kafka 不是最终目的,我们的最终目标是要能够分析日志,排查问题,以及做出一些指标看板和错误告警等。接下来我会总结,如何使用 Flink SQL 实时的将 kafka 中的日志写入 Clickhouse 进行日志分析,以及如何结合 Superset 使用 Clickhouse 数据源查询日志数据,做出指标看板。

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

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

相关文章

COD论文笔记 Deep Gradient Learning for Efficient Camouflaged 2022

动机 这篇论文的动机在于解决伪装目标检测(COD)中的一个关键问题&#xff1a;在复杂背景下&#xff0c;伪装目标与背景的边界模糊&#xff0c;使得检测变得极其困难。现有的方法&#xff0c;如基于边界或不确定性的模型&#xff0c;通常仅响应于伪装目标的稀疏边缘&#xff0c…

[米联客-安路飞龙DR1-FPSOC] FPGA基础篇连载-21 VTC视频时序控制器设计

软件版本&#xff1a;Anlogic -TD5.9.1-DR1_ES1.1 操作系统&#xff1a;WIN10 64bit 硬件平台&#xff1a;适用安路(Anlogic)FPGA 实验平台&#xff1a;米联客-MLK-L1-CZ06-DR1M90G开发板 板卡获取平台&#xff1a;https://milianke.tmall.com/ 登录“米联客”FPGA社区 ht…

ACM中国图灵大会专题 | 图灵奖得主Manuel Blum教授与仓颉团队交流 | 华为论坛:面向全场景应用编程语言精彩回顾

ACM 中国图灵大会&#xff08;ACM Turing Award Celebration Conference TURC 2024&#xff09;于2024年7月5日至7日在长沙举行。本届大会由ACM主办&#xff0c;in cooperation with CCF&#xff0c;互联网之父Vinton Cerf、中国计算机学会前理事长梅宏院士和廖湘科院士担任学术…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【26】【内网穿透】cpolar

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【27】【内网穿透】cpolar 内网穿透cpolar内网穿透联调配置练习—使用公网地址访问gulimall.com参考 内网穿透 正常的外网需要访问我们项目的流程是&#xff1a; 买服务器并且有公网固定…

系统架构设计师教程 第3章 信息系统基础知识-3.7 企业资源规划(ERP)-解读

系统架构设计师教程 第3章 信息系统基础知识-3.7 企业资源规划&#xff08;ERP&#xff09; 3.7.1 企业资源规划的概念3.7.2 企业资源规划的结构3.7.2.1 生产预测3.7.2.2 销售管理&#xff08;计划&#xff09;3.7.2.3 经营计划&#xff08;生产计划大纲&#xff09;3.7.2.4 …

小白新手搭建个人网盘

小白新手搭建个人网盘 序云服务器ECS重置密码远程连接ECS实例 安装OwnCloud安装Apache服务PHP运行环境NAS挂载挂载验证操作体验 序 阿里云文件存储NAS&#xff08;Apsara File Storage NAS&#xff09;是一个可大规模共享访问&#xff0c;弹性扩展的分布式文件系统。本文主要是…

好玩的调度技术-场景编辑器

好玩的调度技术-场景编辑器 文章目录 好玩的调度技术-场景编辑器前言一、演示一、代码总结好玩系列 前言 这两天写前端写上瘾了&#xff0c;顺手做了个好玩的东西&#xff0c;好玩系列也好久没更新&#xff0c;正好作为素材写一篇文章&#xff0c;我真的觉得蛮好玩的&#xff…

免费视频批量横转竖

简介 视频处理器 v1.3 是一款由是貔貅呀开发的视频编辑和处理工具&#xff0c;提供高效便捷的视频批量横转竖&#xff0c;主要功能&#xff1a; 导入与删除文件&#xff1a;轻松导入多个视频文件&#xff0c;删除不必要的文件。暂停与继续处理&#xff1a;随时暂停和继续处理。…

【JavaEE进阶】——Spring AOP

目录 &#x1f6a9;Spring AOP概述 &#x1f6a9;Spring AOP快速⼊⻔ &#x1f393;引入AOP依赖 &#x1f393;编写AOP程序 &#x1f6a9;Spring AOP 详解 &#x1f393;Spring AOP核⼼概念 &#x1f393;通知类型 &#x1f393;PointCut &#x1f393;切⾯优先级 Ord…

泰迪科技2024年高校(本科/职业院校)大数据实验室建设及大数据实训平台整体解决方案

高校大数据应用人才培养目标 大数据专业是面向信息技术行业&#xff0c;培养德智体美劳全面发展的大数据领域的高素质管理型专门人才&#xff0c;毕业生具备扎实的管理学、经济学、自然科学、技术应用、人文社科的基本理论, 系统深入的大数据管理专业知识和实践能力&#xff0c…

如何学习Spark:糙快猛的大数据之旅

作为一名大数据开发者,我深知学习Spark的重要性。今天,我想和大家分享一下我的Spark学习心得,希望能够帮助到正在学习或准备学习Spark的朋友们。 目录 Spark是什么?学习Spark的"糙快猛"之道1. 不要追求完美,在实践中学习2. 利用大模型作为24小时助教3. 根据自己的节…

宠物空气净化器哪款品牌好?口碑好的猫用空气净化器排名

猫咪每年掉毛两次&#xff0c;一次掉半年的现象真让人头疼。作为一位5年资深铲屎官&#xff0c;特别是在掉毛季节&#xff0c;猫毛无处不在&#xff0c;对此深有体会。宠物空气净化器已成为铲屎官们的救星&#xff0c;能迅速清理家中的宠物毛发和异味&#xff0c;是养猫家庭的必…

四个节点即可实现的ComfyUI批量抠图工作流

原文链接&#xff1a;ComfyUI面部修复完全指南 (chinaz.com) 下图就是批量抠图的工作流 虽然工作流很简单&#xff0c;但是我们前提还是需要安装好我们的节点 首先安装我们的抠图节点 安装 BiRefNet 所需依赖&#xff1a;timm&#xff0c;如已安装无需运行 requirements.txt…

【最新发布】生成式人工智能全球研究报告

7月10日&#xff0c;美国著名的大数据分析平台和全球最大的数据分析公司之一SAS在其官网发布了一份关于生成式人工智能&#xff08;AIGC&#xff09;深度应用的调查报告。 本次的报告主要对以美国、中国、英国、法国、巴西、日本等为主的北美、拉美、欧洲、亚太地区主要国家的1…

云计算实训09——rsync远程同步、自动化推取文件、对rsyncd服务进行加密操作、远程监控脚本

一、rsync远程同步 1.rsync基本概述 &#xff08;1&#xff09;sync同步 &#xff08;2&#xff09;async异步 &#xff08;3&#xff09;rsync远程同步 2.rsync的特点 可以镜像保存整个目录树和文件系统 可以保留原有权限&#xff0c;owner,group,时间&#xff0c;软硬链…

vue3 + antd vue 纯前端 基于xlsx 实现导入excel 转 json,将json数据转换XLSX并下载(下载模版)

一、导入 0、关键代码 // 安装插件 npm i xlsx/yarn add xlsx // 导入xlsx import * as XLSX from xlsx; 点击提交的时候才整理数据。上传的时候文件保存在 state.form.file[0] 中的 // 定义字段映射关系 const fieldMap {sheet2json: {技能名称: skill_name,技能等级: …

AI 绘画|Midjourney设计Logo提示词

你是否已经看过许多别人分享的 MJ 咒语&#xff0c;却仍无法按照自己的想法画图&#xff1f;通过学习 MJ 的提示词逻辑后&#xff0c;你将能够更好地理解并创作自己的“咒语”。本文将详细拆解使用 MJ 设计 Logo 的逻辑&#xff0c;让你在阅读后即可轻松上手&#xff0c;制作出…

机器学习-18-统计学与机器学习中回归的区别以及统计学基础知识

参考通透!一万字的统计学知识大梳理 参考3万字长文!手把手教你学会用Python实现统计学 参考统计学的回归和机器学习中的回归有什么差别? 1 研究对象 一维:就是当前摆在我们面前的“一组”,“一批数据。这里我们会用到统计学的知识去研究这类对象。 二维:就是研究某个“事…

【性能优化】在大批量数据下使用 HTML+CSS实现走马灯,防止页面卡顿

切换效果 页面结构变化 1.需求背景 项目首页存有一个小的轮播模块,保密原因大概只能这么展示,左侧图片右侧文字,后端一次性返回几百条数据(开发环境下,生产环境只会更多).无法使用分页解决,前端需要懒加载防止页面卡顿 写个小demo演示,如下 2.解决思路 获取到数据后,取第一…

【electron6】浏览器实时播放PCM数据

pcm介绍&#xff1a;PCM&#xff08;Puls Code Modulation&#xff09;全称脉码调制录音&#xff0c;PCM录音就是将声音的模拟信号表示成0,1标识的数字信号&#xff0c;未经任何编码和压缩处理&#xff0c;所以可以认为PCM是未经压缩的音频原始格式。PCM格式文件中不包含头部信…