Logstash输出到Elasticsearch笔记

output配置中elasticsearch配置

action

  • index 给一个文档建立索引
  • delete 通过id值删除一个文档(这个action需要指定一个id值)
  • create 插入一条文档信息,如果这条文档信息在索引中已经存在,那么本次插入工作失败
  • update 通过id值更新一个文档。更新有个特殊的案例upsert,如果被更新的文档还不存在,那么就会用到upsert

示例:

action => "index"
  • 1

index

写入事件所用的索引。可以动态的使用%{foo}语法,它的默认值是: 
“logstash-%{+YYYY.MM.dd}”,以天为单位分割的索引,使你可以很容易的删除老的数据或者搜索指定时间范围内的数据。

索引不能包含大写字母。推荐使用以周为索引的ISO 8601格式,例如logstash-%{+xxxx.ww}

示例:

 index => "tomcat_logs_index_%{+YYYY.MM.dd}"
  • 1

hosts

是一个数组类型的值

意http协议使用的是http地址,端口是9200,示例:

hosts => ["192.168.102.209:9200", "192.168.102.216:9200"]
  • 1

document_type

定义es索引的type,一般你应该让同一种类型的日志存到同一种type中,比如debug日志和error日志存到不同的type中

如果不设置默认type为logs

template

如果你愿意,你可以设置指向你自己模板的路径。如果没有设置,那么默认的模板会被使用

template_name

这个配置项用来定义在Elasticsearch中模板的命名

注意删除旧的模板

curl -XDELETE <http://localhost:9200/_template/OldTemplateName?pretty>
  • 1

template_overwrite

布尔类型 默认为false 
设置为true表示如果你有一个自定义的模板叫logstash,那么将会用你自定义模板覆盖默认模板logstash

manage_template

布尔类型 默认为true 
设置为false将关闭logstash自动管理模板功能 
比如你定义了一个自定义模板,更加字段名动态生成字段,那么应该设置为false

order参数

ELK Stack 在入门学习过程中,必然会碰到自己修改定制索引映射(mapping)乃至模板(template)的问题。 
这时候,不少比较认真看 Logstash 文档的新用户会通过下面这段配置来制定自己的模板策略:

output {
    elasticsearch {
        host => "127.0.0.1"
        manage_template => true
        template => "/path/to/mytemplate"
        template_name => "myname"
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

然而随后就发现,自己辛辛苦苦修改出来的模板,通过 curl -XGET ‘http://127.0.0.1:9200/_template/myname’ 看也确实上传成功了,但实际新数据索引创建出来,就是没生效!

这个原因是:Logstash 默认会上传一个名叫 logstash 的模板到 ES 里。如果你在使用上面这个配置之前,曾经运行过 Logstash(一般来说都会),那么 ES 里就已经存在这么一个模板了。你可以curl -XGET ‘http://127.0.0.1:9200/_template/logstash’ 验证。

这个时候,ES 里就变成有两个模板,logstash 和 myname,都匹配 logstash-* 索引名,要求设置一定的映射规则了。

ES 会按照一定的规则来尝试自动 merge 多个都匹配上了的模板规则,最终运用到索引上

其中要点就是:template 是可以设置 order 参数的!而不写这个参数,默认的 order 值就是 0。order 值越大,在 merge 规则的时候优先级越高。

所以,解决这个问题的办法很简单:在你自定义的 template 里,加一行,变成这样:

{
    "template" : "logstash-*",
    "order" : 1,
    "settings" : { ... },
    "mappings" : { ... }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

当然,其实如果只从 Logstash 配置角度出发,其实更简单的办法是:直接修改原来默认的 logstash 模板,然后模板名称也不要改,就好了:

output {
    elasticsearch {
        host => "127.0.0.1"
        manage_template => true
        template_overwrite => true
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

为elasticsearch配置模板

在使用logstash收集日志的时候,我们一般会使用logstash自带的动态索引模板,虽然无须我们做任何定制操作,就能把我们的日志数据推送到elasticsearch索引集群中

但是在我们查询的时候,就会发现,默认的索引模板常常把我们不需要分词的字段,给分词了,这样以来,我们的比较重要的聚合统计就不准确了:

所以这时候,就需要我们自定义一些索引模板了

在logstash与elasticsearch集成的时候,总共有如下几种使用模板的方式:

  1. 使用默认自带的索引模板 ,大部分的字段都会分词,适合开发和时候快速验证使用

  2. 在logstash收集端自定义配置模板,因为分散在收集机器上,维护比较麻烦

  3. 在elasticsearc服务端自定义配置模板,由elasticsearch负责加载模板,可动态更改,全局生效,维护比较容易

使用默认自带的索引模板

ElasticSearch默认自带了一个名字为”logstash”的模板,默认应用于Logstash写入数据到ElasticSearch使用

优点:最简单,无须任何配置

缺点:无法自定义一些配置,例如:分词方式

在logstash收集端自定义配置模板

使用第二种,适合小规模集群的日志收集

需要在logstash的output插件中使用template指定本机器上的一个模板json路径, 例如 template => “/tmp/logstash.json”

优点:配置简单

缺点:因为分散在Logstash Indexer机器上,维护起来比较麻烦

在elasticsearc服务端自定义配置模板

manage_template => false//关闭logstash自动管理模板功能  
template_name => "xxx"//映射模板的名字  
  • 1
  • 2

第三种需要在elasticsearch的集群中的config/templates路径下配置模板json,在elasticsearch中索引模板可分为两种

静态模板

适合索引字段数据固定的场景,一旦配置完成,不能向里面加入多余的字段,否则会报错

优点:scheam已知,业务场景明确,不容易出现因字段随便映射从而造成元数据撑爆es内存,从而导致es集群全部宕机,维护比较容易,可动态更改,全局生效。

缺点:字段数多的情况下配置稍繁琐

一个静态索引模板配置例子如下:

{  
  "xxx" : {  
      "template": "xxx-*",  
        "settings": {  
            "index.number_of_shards": 3,  
            "number_of_replicas": 0   
        },  
    "mappings" : {  
      "logs" : {  
        "properties" : {  
          "@timestamp" : { //这是专门给kibana用的一个字段,时间索引
            "type" : "date",  
            "format" : "dateOptionalTime",  
            "doc_values" : true  
          },  
          "@version" : {  
            "type" : "string",  
            "index" : "not_analyzed",  
            "doc_values" : true      
          },  
          "id" : {  
            "type" : "string",  
            "index" : "not_analyzed"  
          },  
          "name" : {  
            "type" : "string",  
            "index" : "not_analyzed"  
          }
        }  
      }  
    }  
  }  
}  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

【声明:转载请注明出处 
独立:http://wangnan.tech 
简书:http://www.jianshu.com/u/244399b1d776 
CSDN:http://blog.csdn.net/wangnan9279

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Logstash可以将处理过的数据输出Elasticsearch中,实现数据的存储和检索。具体的步骤如下: 1. 在Logstash的配置文件中,添加Elasticsearch输出插件,指定Elasticsearch的地址和索引名称等参数。 2. 启动Logstash,它会读取指定的数据源,对数据进行处理,并将处理后的数据输出Elasticsearch中。 3. 在Elasticsearch中,可以使用Kibana等工具进行数据的可视化和检索。 总的来说,LogstashElasticsearch是一对非常强大的组合,可以帮助我们快速构建数据处理和检索系统。 ### 回答2: Logstash是一个用于数据收集、处理和转换的工具,可以从不同的源获取数据并将其输出到各种目标存储。而Elasticsearch则是一个开源的分布式搜索引擎,它能够在高效、安全、可伸缩的基础上索引与搜索海量实时数据。 Logstash输出Elasticsearch,是一种常见的数据处理和存储的方案,也是Elastic Stack(ELK)的一部分。这种方案可以结合多个数据源和数据格式,并通过logstash进行数据转换和处理,最终将收集的数据存储到Elasticsearch中,同时在Kibana中进行数据展示和分析。 为了实现这种方案,需要在Logstash中配置Elasticsearch插件,通过设置输出插件的类型和参数来指定Elasticsearch作为输出目标。在数据从不同源收集后,Logstash会将其进行过滤和转换处理,然后将处理后的数据输出Elasticsearch中。 当数据存储到Elasticsearch中后,可以使用Kibana进行数据展示和分析。通过Kibana的图表和仪表盘 ,我们可以对数据进行实时监控,进行查询分析和可视化。同时,Elasticsearch还具有高效、可伸缩的实时搜索和分布式存储特性,可以支持海量数据的存储和查询。 总的来说,Logstash输出Elasticsearch是一个实现实时数据收集和分析的强大工具和技术,可以帮助我们更好的理解数据,以便做出更好的决策和优化业务。 ### 回答3: Logstash是一种开源数据收集引擎,可以将不同来源的数据进行过滤、转换和聚合,最终输出到不同目的地。其中,输出Elasticsearch是最常见的用例之一。 首先,我们需要安装和配置LogstashElasticsearchLogstash的配置文件中需要指定输出插件为Elasticsearch,并配置Elasticsearch的IP地址和端口等参数。例如: ``` output { elasticsearch { hosts => ["127.0.0.1:9200"] index => "myindex-%{+YYYY.MM.dd}" } } ``` 上面的配置表示将数据输出到本地的Elasticsearch实例,并将索引的名称设为“myindex-年月日”的格式,可以实现按天切分索引,方便后续的查询和维护。 在Logstash中,我们可以使用不同的插件对数据进行处理和转换,以满足不同的需求。比如,使用grok插件将日志中的格式化信息提取出来,使用date插件解析时间戳等等。这些插件都可以在Logstash的插件库中找到,也可以自己编写插件满足特定的需求。 在输出Elasticsearch时,Logstash会将数据转化为JSON格式,并根据指定的索引名称和类型进行索引Elasticsearch提供了强大的搜索和聚合功能,可以对数据进行复杂的查询和分析。同时,Elasticsearch也支持分布式架构,可以横向扩展以处理海量数据和高并发量。 总之,Logstash输出Elasticsearch是一种非常方便和实用的数据处理和分析方案,实现了数据的集中化和可视化,可以帮助我们更好地理解和利用数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值