文档章节

Logstash 与Elasticsearch整合使用示例

孤岛旭日
 孤岛旭日
发布于 2015/11/24 13:47
字数 707
阅读 1535
收藏 12

不多废话了,直接上操作步骤:

环境准备

这里使用Docker搭建,我Docker宿主机的IP是192.168.4.99

Zookeeper

docker run -d --name monitor-zk -p 2181:2181 -p 2888:2888 -p 3888:3888 jplock/zookeeper

Kafka

吐嘈一下,docker hub的有不少 kafka ,但好用的太少了

docker run -d \
 --name monitor-kafka \
 -p 9092:9092 \
 -e KAFKA_ADVERTISED_HOST_NAME=192.168.4.99 \
 -e ZOOKEEPER_IP=192.168.4.99 \
 ches/kafka

# Kafka Test(可以忽略)
docker run --rm --interactive ches/kafka  kafka-console-producer.sh --topic m1 --broker-list 192.168.4.99:9092
docker run --rm ches/kafka kafka-console-consumer.sh --topic test --from-beginning --zookeeper 192.168.4.99:2181

参考:

Docker:https://hub.docker.com/r/ches/kafka/

HTTP插件:https://github.com/confluentinc/kafka-rest

SSL加密:https://cwiki.apache.org/confluence/display/KAFKA/Deploying+SSL+for+Kafka

Elasticsearch

这里用2.x版本

docker run -d \
 --name monitor-es \
 -p 9200:9200 -p 9300:9300 \
 -v /opt/monitor/es/data:/usr/share/elasticsearch/data \
 -v /opt/monitor/es/plugins:/usr/share/elasticsearch/plugins \
 elasticsearch:2.0.0 \
 -Des.node.name="Node01" \
 -Des.network.host=::0

参考:

SQL化查询插件:https://github.com/NLPchina/elasticsearch-sql/wiki

Logstash

同样是2.x版本

docker run -d \
 --name monitor-logstash \
 -p 7001-7005:7001-7005 \
 -v /opt/monitor/logstash/config/:/config-dir \
 -v /opt/monitor/logstash/input_test/:/input_test \ # 用于测试File输入的目录映射
 logstash:2.0.0 \
 logstash -f /config-dir/config.conf # 配置文件,后面会介绍

参考:

Kafka输入插件:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-kafka.html

CSV过滤插件:https://www.elastic.co/guide/en/logstash/current/plugins-filters-csv.html

ES输出插件:https://www.elastic.co/guide/en/logstash/current/plugins-filters-elasticsearch.html

Logback输入插件:https://github.com/logstash/logstash-logback-encoder

Log4j输入插件:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-log4j.html

Websocket输出插件:https://www.elastic.co/guide/en/logstash/current/plugins-outputs-websocket.html

Logstash 配置

在上面环境准备的最后一步我们启动了Logstash,其中引用到了一个config.conf的配置文件,它的格式如下:

input { 
  kafka { # 这个用于kafka输入
    type => 'key_trace_log'
    topic_id => 'format_key_trace_topic'
    zk_connect => '192.168.4.99:2181'
  } 
  log4j { # 这个用于Log4j输入
    type => 'tp_log_test1'
    mode => 'server'
    host => '0.0.0.0'
    port => 7001
  } 
  tcp { # 这个用于Logback输入
    type => 'tp_log_test2'
    host => '0.0.0.0'
    port => 7002
    codec => 'json_lines'
  }
  file { # 这个用于File输入
    type => 'tp_log_test3'
    path => ['/input_test/logs/*.log'] # 这是文件所在的目录
    start_position => 'beginning'
  }
}
filter {
  if [type] == 'key_trace_log' {
    csv { # Kafka输入的个message,这里假设是用tab分隔的,对应的字段如下
      separator => '	'
      columns => ['level','time','job_code','task_code','clue_value','node_code','stage','message']
    }
  }
  if [type] == 'tp_log_test3' {
    grok { # 对于File输入的数据需要做正则解析,下面正则解析的内容类似:2015-11-24 11:28:58  [ main:4234 ] - [ DEBUG ]  logstash slf4j test loop 109
      pattern => '(?<datetime>.{19}) *\[ (?<class>.*):(?<line>\d*) \] - \[ (?<level>.*) \] (?<msg>.*)'
    }
  }
}
output {
  if [type] == 'key_trace_log' {
    elasticsearch {
      hosts => ['192.168.4.99:9200']
      index => 'monitor_key_trace_log'
      document_type => 'default'
    }
    websocket {
      host => '0.0.0.0'
      port => 7005
    }
  }
  if [type] == 'tp_log_test1' {
    elasticsearch {
      hosts => ['192.168.4.99:9200']
      index => 'tp_log'
      document_type => 'test1'
    }
  }
  if [type] == 'tp_log_test2' {
    elasticsearch {
      hosts => ['192.168.4.99:9200']
      index => 'tp_log'
      document_type => 'test2'
    }
  }
  if [type] == 'tp_log_test3' {
    elasticsearch {
      hosts => ['192.168.4.99:9200']
      index => 'tp_log'
      document_type => 'test3'
    }
  }
  stdout { codec => rubydebug }
}

几点说明:

Logback 需要有专门的插件

在目标系统中加入依赖:

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>4.5.1</version>
</dependency>

修改logback.xml,加入:

<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
    <destination>192.168.4.99:7002</destination>
    <encoder class="net.logstash.logback.encoder.LogstashEncoder" />
    <keepAliveDuration>5 minutes</keepAliveDuration>
</appender>

<root level="TRACE">
    <appender-ref ref="logstash"/>
</root>

Log4j 需要加上Socket适配

log4j.appender.SOCKET=org.apache.log4j.net.SocketAppender
log4j.appender.SOCKET.port=7001
log4j.appender.SOCKET.remoteHost=192.168.4.99

grok测试

http://grokdebug.herokuapp.com/

© 著作权归作者所有

共有 人打赏支持
孤岛旭日
粉丝 42
博文 58
码字总数 30599
作品 3
杭州
架构师
私信 提问
VulnWhisperer:数据可被ElasticSearch索引的漏洞数据及报告整合工具

  VulnWhisperer是一个漏洞数据和报告的整合工具。VulnWhisperer会提取所有报告并创建一个具有唯一文件名的文件,然后将其发送给logstash。Logstash则会从文件名中提取数据标记报告中的所有...

FreeBuf
2018/07/26
0
0
logstash、elasticsearch、kibana搭建日志平台

1、下载logstash a、官方下载地址:https://www.elastic.co/downloads/logstash b、解压:tar -xzvf logstash-5.1.1.tar.gz c、设置用户测试的配置文件:vim logstatsh_test.conf,编辑内容如...

binhu
2018/05/23
0
0
CentOS下使用ELK套件搭建日志分析和监控平台

1 概述 ELK套件(ELK stack)是指ElasticSearch、Logstash和Kibana三件套。这三个软件可以组成一套日志分析和监控工具。 由于三个软件各自的版本号太多,建议采用ElasticSearch官网推荐的搭配...

周宇1991
2018/06/29
0
0
基于Bro的应用层数据包识别工具

  拓扑介绍   应用识别系统将会通过bro识别应用并生成日志。ELK部署在远程端,用于收集,分析,存储和识别所有日志。BRO安装在IP为192.168.1.147的机器上,ELK安装在IP为192.168.1.142的...

FreeBuf
2018/08/13
0
0
CentOS7.3下ELK日志分析系统集群搭建

Elasticsearch是个基于Lucene实现的开源、分布式、restful的全文本搜索引擎,此外他还是一个分布式实时文档存储,其中每个文档的每个filed均是可被索引的数据,且可被搜索,也是一个带实时分...

wujunqi1996
2018/07/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Windows 上安装 Scala

在安装 Scala 之前需要先安装 Java 环境,具体安装的详细方法就不在这里描述了。 您可以自行搜索我们网站中的内容获得其他网站的帮助来获得如何安装 Java 环境的方法。 接下来,我们可以从 ...

honeymose
今天
1
0
数据库篇多表操作

第1章 多表操作 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系...

stars永恒
今天
3
0
nginx日志自动切割

1.日志配置(Nginx 日志) access.log----记录哪些用户,哪些页面以及用户浏览器,IP等访问信息;error.log------记录服务器错误的日志 #配置日志存储路径:location / {      a...

em_aaron
昨天
5
0
java 反射

基本概念 RTTI,即Run-Time Type Identification,运行时类型识别。RTTI能在运行时就能够自动识别每个编译时已知的类型。   要想理解反射的原理,首先要了解什么是类型信息。Java让我们在运...

细节探索者
昨天
2
0
推荐转载连接

https://www.cnblogs.com/ysocean/p/7409779.html#_label0

小橙子的曼曼
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部