【问题标题】:Logstash - Send output from log files to elkLogstash - 将日志文件的输出发送到 elk
【发布时间】:2016-12-19 15:11:11
【问题描述】:

我在弹性搜索中有一个索引,它有一个名为 locationCoordinates 的字段。它正在从 logstash 发送到 ElasticSearch。

该字段中的数据如下所示...

-38.122, 145.025

当此字段出现在 ElasticSearch 中时,它不会作为地理点出现。

我知道如果我在下面这样做,它会起作用。

{
  "mappings": {
    "logs": {
      "properties": {
        "http_request.locationCoordinates": {
          "type": "geo_point"
        }
      }
    }
  }
}

但我想知道的是如何更改我的 logstash.conf 文件,以便它在启动时执行此操作。

目前我的 logstash.conf 看起来有点像这样......

input {

    # Default GELF input
    gelf {
        port => 12201
        type => gelf
    }

    # Default TCP input
    tcp {
        port => 5000
        type => syslog
    }

    # Default UDP input
    udp {
        port => 5001
        type => prod
        codec => json
    }
    file {
       path =>  [ "/tmp/app-logs/*.log" ]
       codec =>   json {
          charset => "UTF-8"
       }
       start_position => "beginning"
       sincedb_path => "/dev/null"
   }
}

filter {
   json{
      source => "message"
   }
}

output {
    elasticsearch {
        hosts => "elasticsearch:9200"
    }
}

我最终在 Kibana 中得到了这个(没有小地理标志)。

【问题讨论】:

  • 这个答案应该会有所帮助:stackoverflow.com/questions/35844409/…
  • 嗨@Val。感谢您的回复。是的,我看过那篇帖子,但这对我来说仍然不是很清楚。我已经根据那篇文章尝试了一些东西,但我认为如果可能的话我需要更清楚一些。
  • 很公平。您可以将elasticsearch 输出配置添加到您的问题中吗?
  • 你想从 es 中看到什么? elasticsearch.yml?
  • elasticsearch 输出配置来自您的 logstash 配置(在过滤器下方)

标签: elasticsearch logstash


【解决方案1】:

您只需修改您的elasticsearch 输出以配置一个索引模板,您可以在其中添加您的附加映射。

output {
    elasticsearch {
        hosts => "elasticsearch:9200"
        template_overwrite => true
        template => "/path/to/template.json"
    }
}

然后在/path/to/template.json 的文件中,您可以添加额外的geo_point 映射

{
  "template": "logstash-*",
  "mappings": {
    "logs": {
      "properties": {
        "http_request.locationCoordinates": {
          "type": "geo_point"
        }
      }
    }
  }
}

如果你想保留官方的logstash模板,你可以download it并添加你特定的geo_point映射到它。

【讨论】:

  • 我很高兴能够说这有效,但它没有。我在日志中收到消息,告诉我 "{"template":"logstash-*","mappings":{"logs":{"properties":{"http_response.locationCoordinates":{"type":"geo_point" }}}}}”。但我无法让它工作。我明天继续。
  • 你能运行这个并用你得到的更新你的问题吗? curl -XGET localhost:9200/_template/logstash
  • 另外,您可能需要删除您的 logstash 索引,该索引具有带有错误字符串映射的 http_request.locationCoordinates 字段。我提供的新模板只会在下一次创建索引时启动,除非您删除今天的 logstash 索引,以便从新模板重新创建它。
  • 嗨@Val 感谢您回复我。关于您的最后一条评论,sincedb_path => "/dev/null" 设置是否会在每次启动 logstash 时负责删除和重新创建索引?
  • 不,将sincedb_path 设置为/dev/null 只会在每次启动logstash 时从头开始重新读取日志文件,仅此而已,但这对您的elasticsearch 输出没有任何影响。
猜你喜欢
  • 2018-08-13
  • 1970-01-01
  • 1970-01-01
  • 2018-09-09
  • 2021-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-10
相关资源
最近更新 更多