elasticSearch -logstash

搜集---》过滤---》处理

 

 

Grok:匹配需要收集的字段信息

Date:处理日期类型

Geoip:添加地理位置信息

Useragent:提取请求用户信息

 

logstsh input插件

stdin

输入插件:可以管道输入,也可以从终端交互输入

通用配置:

codec:类型为codec

type:类型为string自定义该事件类型,可用于后续判断

tags:类型为array,自定义事件的tag,可用于后续判断

add_field:类型为hash,为该事件添加字

input{
stdin{
codec => “plain”
tags => [“test”]
type => “std”
add_field => {“key”=>”value”}
}
}

output{
stdout{
codec => “rubydebug”
}
}

 

file

从文件读取数据,如常见的日志文件

配置:

path => [“/var/log/**/*.log”,”/var/log/message”] 文件位置

exclude => “*.gz” 不读取哪些文件

sincedb_path => “/var/log/message” 记录sincedb文件路径

start_position => “beginning” 或者”end” 是否从头读取文件

stat_interval => 1000 单位秒,定时检查文件是否有更新,默认

input {
 file {
  path => ["/home/elk/logstsh/config/nginx_logs"]
  start_position => "beginning"
  type => "web"
 }
}

output {
 stdout {
  codec => "rubydebug"
 }
}

 

 

Elasticsearch

input {
  elasticsearch {
    hosts => "192.168.14.10"
    index => "atguigu"
    query => '{ "query": { "match_all": {} }}'
  }
}

output {
 stdout {
  codec => "rubydebug"
 }
}

 

 

logstsh filter

Filter是logstsh功能强大的原因,它可以对数据进行丰富的处理,比如解析数据、删除字段、类型转换等

date:日期解析

grok:正则匹配解析

dissect:分割符解析

mutate:对字段作处理,比如重命名、删除、替换等

json:按照json解析字段内容到指定字段中

geoip:增加地理位置数据

ruby:利用ruby代码来动态修改logstsh Event

input {
  stdin {codec => “json”}
}

filter {
 date {
  match => ["logdate","MM dd yyyy HH:mm:ss"]
 }
}
output {
 stdout {
  codec => "rubydebug"
 }
}

 

 

 

 

 

 

 

 

 

Elasticsearch 使用的是标准的 RESTful 风格的 API 和 JSON。

操作es方式 1、TransportClient (tcp) 2、RestClient。(http)3、Spring Data  4 、JestClient

TransportClient: 

官网宣布We plan on deprecating the TransportClient in Elasticsearch 7.0 and removing it completely in 8.0.

(https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-api.html)

所以TransportClient 不准备了解了。

RestClient:

elasticsearch 5.0引入了一个新的客户端 RestClient ,使用HTTP API elasticsearch代替内部协议。这需要更少依赖关系。你也不需要关注那么多版本,当前客户端也可以用于elasticsearch 2.x版本。

Java REST客户端有两种风格:

    Java Low Level REST Client:官方提供的低级客户端。该客户端通过http来连接Elasticsearch集群。用户在使用该客户端时需要将请求数据手动拼接成Elasticsearch所需JSON格式进行发送,收到响应时同样也需要将返回的JSON数据手动封装成对象。虽然麻烦,不过该客户端兼容所有的Elasticsearch版本。

    Java High Level REST Client:官方提供的高级客户端。该客户端基于低级客户端实现,它提供了很多便捷的API来解决低级客户端需要手动转换数据格式的问题。(也就是说,使用高级客户端我们不再需要去关注如何将请求数据拼接成Elasticsearch所需JSON格式,也不需要关注如何将响应返回数据封装成对象)

Jest:

jest是一款java Rest client,它支持SSL、proxy等等,而原生的transport client是TCP连接,用户认证授权要自己想办法实现,并且封装接口控制用户的操作。 


Spring Data Elasticsearch:(ElasticsearchRepository

Spring Data Elasticsearch更适合于使用Spring数据库的开发人员,并且不想直接与REST API接触。
 从设计上来讲属于两种思路,Spring Data的思路就是将ElasticSearch当自家的数据仓库来管理,直接通过Java客户端代码操作ES;Jest的思路是将ElasticSearch当为独立的服务端,自己作为客户端用兼容性最强的RestFul格式来与之交互。


个人比较倾向于Jest方式,第一兼容性好,不需要考虑版本的问题。第二,从ElasticSearch本身的设计上来分析,9200是对外服务端口,9300是内部管理和集群通信端口,请求9200获取搜索服务更符合ES的设计初衷,不会影响集群内部的通信。

 

未完待续

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值