gpt4 book ai didi

elasticsearch - logstash:如何包含输入文件行号

转载 作者:行者123 更新时间:2023-11-29 02:46:44 25 4
gpt4 key购买 nike

我正在尝试创建一种导航我的日志文件的方法,我需要的主要功能是:

  1. 在日志文件中搜索字符串(并返回出现的行)。
  2. x 行到 y 行的分页。

现在我正在检查 Logstash,它看起来非常适合我的第一个功能(搜索),但第二个功能却不是那么好。我的想法是我可以以某种方式索引文件行号以及每条记录的日志信息,但我似乎找不到办法。

是否有某种 Logstash 过滤器可以执行此操作?还是 Filebeat 处理器?我做不到。

我在想也许我可以创建一种方法让我的所有进程使用处理过的信息登录到数据库中,但这也有点不可能(或非常困难),因为日志处理程序也不知道当前日志是什么行。

最后我能做的是,为了提供一种对我的日志文件进行分页的方法(通过服务),将实际打开它,导航到特定行并在不是很理想的服务中显示它,因为文件可能非常大,我已经将其编入 Elasticsearch(使用 Logstash)中。

我目前的配置非常简单:

文件拍

filebeat.prospectors:
- type: log
paths:
- /path/of/logs/*.log
output.logstash:
hosts: ["localhost:5044"]

Logstash

input {
beats {
port => "5044"
}
}
output {
elasticsearch {
hosts => [ "localhost:9200" ]
}
}

例如,现在我得到了这样的元素:

    {
"beat": {
"hostname": "my.local",
"name": "my.local",
"version": "6.2.2"
},
"@timestamp": "2018-02-26T04:25:16.832Z",
"host": "my.local",
"tags": [
"beats_input_codec_plain_applied",
],
"prospector": {
"type": "log"
},
"@version": "1",
"message": "2018-02-25 22:37:55 [mylibrary] INFO: this is an example log line",
"source": "/path/of/logs/example.log",
"offset": 1124
}

如果我能以某种方式在该项目中包含一个像 line_number: 1 这样的字段,那就太好了,因为我可以使用 Elasticsearch 过滤器来实际浏览整个日志。


如果你们对存储我的日志(和导航)的不同方式有想法,也请告诉我

最佳答案

日志文件是由您生成的吗?或者你能改变日志结构吗?然后你可以添加一个计数器作为前缀,并用 logstash 过滤掉它。

例如

12345 2018-02-25 22:37:55 [mylibrary] INFO: this is an example log line

您的过滤器必须如下所示:

filter {
grok {
match => {"message" => "%{INT:count} %{GREEDYDATA:message}"
overwrite => ["message"]
}
}

将创建新字段“count”。然后您可以将它用于您的目的。

关于elasticsearch - logstash:如何包含输入文件行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48996697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com