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

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

相关推荐
史努比.18 小时前
ELK 企业级日志分析系统
elk
檀越剑指大厂18 小时前
【Elasticsearch系列四】ELK Stack
大数据·elk·elasticsearch
2401_8401922720 小时前
ELFK日志分析平台,架构和通信
elk·elasticsearch·架构
ygqygq24 天前
ElK 8 收集 Nginx 日志
nginx·elk
纪佰伦6 天前
ELK在Linux服务器下使用docker快速部署(超详细)
linux·服务器·elk
写....写个大西瓜7 天前
【Docker部署ELK】(7.15)
elk·docker
丢爸9 天前
Linux学习-ELK(一)
linux·学习·elk
王一横不要停止努力吖12 天前
ELK学习笔记(三)——使用Filebeat8.15.0收集日志
笔记·学习·elk
王一横不要停止努力吖13 天前
ELK学习笔记(二)——使用K8S部署Kibana8.15.0
笔记·学习·elk·k8s