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

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

filebeat配置:

yaml 复制代码
filebeat.inputs:
  - type: log
    enabled: true
    paths:
      - /opt/data/*.log
    tags: ["test-android-log"]
    fields:
      log_source: my_log_source
    fields_under_root: true
    processors:
      - dissect:
          tokenizer: "/opt/data/%{filename}.log"
          field: "log.file.path"
          target_prefix: "file"

output:
  logstash:
    hosts: ["192.168.0.102:5044"]

logstash配置:

yaml 复制代码
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的结果看下是否有想要的字段传过来

yaml 复制代码
GET /test-android_log_t2014/_search
{
  "size": 1,
  "_source": [
    "device_no"
  ]
}

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

yaml 复制代码
{
  "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"
        }
      }
    ]
  }
}

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

相关推荐
陆鳐LuLu10 小时前
日志管理利器:基于 ELK 的日志收集、存储与可视化实战
运维·elk·jenkins
程序猿熊跃晖16 小时前
多环境日志管理:使用Logback与Logstash集成实现高效日志处理
spring boot·elk·logback
Swift社区20 小时前
【微服务优化】ELK日志聚合与查询性能提升实战指南
spring·elk·微服务·云原生·架构
日月星宿~5 天前
【ELK】【Elasticsearch 】DSL 和 DQL
elk
学Linux的语莫7 天前
ELK架构基础
linux·elk
运维老司机8 天前
Elasticsearch+Logstash+Kibana可视化集群部署
大数据·elk·elasticsearch·logstash·kibana的使用
艾文伯特18 天前
最新EFK(Elasticsearch+FileBeat+Kibana)日志收集
elk·elasticsearch·运维开发
huhy~18 天前
基于ansible部署elk集群
elk·ansible
S-X-S23 天前
ELK模块封装starter
elk
运维实战课程1 个月前
elk(都是6.2.4重点-版本2-收集nginx日志并分析绘图(单点es,redis缓存)-无filebeat
nginx·elk·缓存