当前位置: 首页 > news >正文

ELK日志收集之多文件提取文件名和日志时间

需求:多个设备的日志同时保存在一台服务器上,日志文件的文件名是设备的ID,需要将多个文件提取文件名作为最终的筛选字段,同时提取日志中的时候日期时间替换系统的@timestamp
在这里插入图片描述
在这里插入图片描述

filebeat配置:

filebeat.inputs:- type: logenabled: truepaths:- /opt/data/*.logtags: ["test-android-log"]fields:log_source: my_log_sourcefields_under_root: trueprocessors:- dissect:tokenizer: "/opt/data/%{filename}.log"field: "log.file.path"target_prefix: "file"output:logstash:hosts: ["192.168.0.102:5044"]

logstash配置:

input {beats {port => 5044}
}filter {if [file][filename] {mutate {add_field => { "device_no" => "%{[file][filename]}" }}}grok {match => { "message" => "%{MONTHNUM:month}-%{MONTHDAY:day} %{TIME:time} %{GREEDYDATA:log_message}" }add_field => { "timestamp" => "%{month}-%{day} %{time}" }}date {match => ["timestamp", "MM-dd HH:mm:ss.SSS"]target => "@timestamp"}mutate {remove_field => [ "timestamp", "month", "day", "time" ]}
}output {if "test-android-log" in [tags] {elasticsearch {hosts => ["192.168.0.101:9200"]index => "test-android_log_t2014"}}stdout { codec => rubydebug }
}

使用kibana的开发工具获取一下对应index的结果看下是否有想要的字段传过来

GET /test-android_log_t2014/_search
{"size": 1,"_source": ["device_no"]
}

我这边想要的是device_no,查看见过如下表示获取成功:

{"took": 1,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 5392,"relation": "eq"},"max_score": 1,"hits": [{"_index": "test-android_log_t2014","_id": "vohlxZABk6v1MxO1ydv2","_score": 1,"_source": {"device_no": "20240718173333"}}]}
}

以上便完成了多个设备日志上传以及设备日志筛选,欢迎大家指正。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vue侦听器(Watch)精彩案例剖析二
  • 如何实现Web服务只允许特定客户端访问
  • 【Java 数据结构】ArrayList类介绍
  • thinkphp8结合layui2.9 图片上传验证
  • LeetCode-day24-2766. 重新放置石块
  • AV1技术学习:Constrained Directional Enhancement Filter
  • 免费【2024】springboot 趵突泉景区的智慧导游小程序
  • 解决 Android 应用安装错误:INSTALL_FAILED_BAD_PERMISSION_GROUP
  • 网络安全常用易混术语定义与解读(Top 20)
  • Unity 批处理详讲(含URP)
  • 什么品牌的开放式耳机好用?南卡、韶音、cleer 三款主流王炸爆款横评
  • 46 uniApp
  • IPython的剪贴板魔法:%%cpaste命令全攻略
  • 【Gin】精准应用:Gin框架中工厂模式的现代软件开发策略与实施技巧(下)
  • 10 ES6的模板字符串
  • Android优雅地处理按钮重复点击
  • egg(89)--egg之redis的发布和订阅
  • Git学习与使用心得(1)—— 初始化
  • Go 语言编译器的 //go: 详解
  • GraphQL学习过程应该是这样的
  • JS函数式编程 数组部分风格 ES6版
  • Median of Two Sorted Arrays
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • Rancher如何对接Ceph-RBD块存储
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • Zsh 开发指南(第十四篇 文件读写)
  • 安卓应用性能调试和优化经验分享
  • 分布式熔断降级平台aegis
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 基于 Babel 的 npm 包最小化设置
  • 基于组件的设计工作流与界面抽象
  • 技术发展面试
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 交换综合实验一
  • ​flutter 代码混淆
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​学习一下,什么是预包装食品?​
  • # 安徽锐锋科技IDMS系统简介
  • #Datawhale AI夏令营第4期#多模态大模型复盘
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #VERDI# 关于如何查看FSM状态机的方法
  • (10)ATF MMU转换表
  • (55)MOS管专题--->(10)MOS管的封装
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (pytorch进阶之路)扩散概率模型
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考