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

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

相关推荐
JackSparrow4142 天前
使用Elasticsearch代替数据库like以加快查询的各种技术方案+实现细节
大数据·clickhouse·elk·elasticsearch·搜索引擎·postgresql·全文检索
工作log3 天前
从零搭建 ELK + Kafka 日志收集系统(Spring Boot + Logback 直连 Kafka)
spring boot·elk·kafka
總鑽風14 天前
搭建Spring Boot + ELK日志平台,实现可视化日志监控
spring boot·elk·macos
七七powerful14 天前
运维养龙虾--使用workbuddy专家模式一句话部署ELK 日志分析平台
elk·workbuddy
人间打气筒(Ada)16 天前
「码动四季·开源同行」go语言:如何使用 ELK 进行日志采集以及统一处理?
开发语言·分布式·elk·go·日志收集·分布式日志系统
艾伦_耶格宇16 天前
【ELK】-1 ELK的简要介绍
elk
尽兴-21 天前
微服务日志采集与分析系统实战:ELK 架构全解析与落地
elk·微服务·架构·kibana·es·logstash·filebeat
泡沫·1 个月前
ELK 企业日志分析系统核心总结
elk
我爱学习好爱好爱1 个月前
ELK 7.17.10 收集Docker Compose部署的SpringBoot2+Vue3项目日志(Rockylinux9.6)
elk·docker·容器
我爱学习好爱好爱1 个月前
ELK 7.17.10 + Redis 5.0.7 构建高可用 Nginx 日志收集系统(Rocky Linux 9.6 实战)
redis·nginx·elk