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"
        }
      }
    ]
  }
}

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

相关推荐
幽弥千月20 小时前
【ELK】ES单节点升级为集群并开启https【亲测可用】
elk·elasticsearch·https
IT猿手20 小时前
基于PWLCM混沌映射的麋鹿群优化算法(Elk herd optimizer,EHO)的多无人机协同路径规划,MATLAB代码
算法·elk·机器学习·matlab·无人机·聚类·强化学习
流穿2 天前
ELK系列-(六)Redis也能作为消息队列?(下)
数据库·redis·ubuntu·elk·docker·容器
流穿2 天前
ELK系列-(五)指标收集-MetricBeat(下)
linux·运维·ubuntu·elk·docker·容器
流穿3 天前
ELK系列-(五)指标收集-MetricBeat(上)
ubuntu·elk·elasticsearch·docker
高hongyuan3 天前
Linux环境下 搭建ELk项目 -单机版练习
大数据·运维·服务器·elk·elasticsearch·搜索引擎
运维&陈同学4 天前
【Elasticsearch04】企业级日志分析系统ELK之Elasticsearch 插件
大数据·运维·后端·elk·elasticsearch·搜索引擎·全文检索·哈希算法
幽弥千月5 天前
【ELK】Filebeat采集Docker容器日志
elk·docker·容器
运维&陈同学6 天前
【Elasticsearch03】企业级日志分析系统ELK之Elasticsearch访问与优化
大数据·elk·elasticsearch·搜索引擎·云原生·全文检索·高可用
运维&陈同学8 天前
【Elasticsearch01】企业级日志分析系统ELK之Elasticsearch单机部署
大数据·linux·elk·elasticsearch·微服务·云原生·jenkins