ELK+Kafka日志分析平台搭建

配置环境:
CentOS7.3
Test1:192.168.1.222
Test2:192.168.1.223
Test3:192.168.1.224

架构图:
在这里插入图片描述

1、 安装java环境以及依赖包 (test2 和test3都要安装)

yum –y install epel-release
yum –y install java-1.8.0 git wget lrzsz

2、安装elasticsearch (可以先在一台安装,后面把目录移过去再改一下配置文件即可)

[root@test2~]#wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.3.tar.gz
[root@test2 ~]# tar -xf elasticsearch-1.7.3.tar.gz -C /usr/local

3、修改配置文件

[root@test2 ~]# vim /usr/local/elasticsearch-1.7.3/config/elasticsearch.yml
32 cluster.name: elk-cluster    #集群名称
40 node.name: "test2"      #节点名称,不能和其他的一样
47 node.master: true     #节点是否会被当选为主节点
51 node.data: true       #是否存储数据
107 index.number_of_shards: 5     #索引分片的个数
111 index.number_of_replicas: 1    #分片的副本个数
145 path.conf: usr/local/elasticsearch-1.7.3/config/    #配置文件的路径
149 path.data: /data/es/data   #存放数据的目录
159 path.work: /data/es/work    #工作目录路径
163 path.logs: /usr/local/elasticsearch-1.7.3/logs/   #日志文件路径 	
167 path.plugins: /data/es/plugins     #插件路径
184 bootstrap.mlockall: true       #内存不向swap交换
212 network.host: 192.168.1.223  #当前节点IP地址
224 http.port: 9200     #对外提供的服务端口
231 http.enabled: true    #启用http
326 discovery.zen.ping.unicast.hosts: ["192.168.1.223", "192.168.1.224"] #集群每个节点IP地址,也可以使用els、els.shuaiguoxia.com等名称,需要各节点能够解析

4、创建相关目录

[root@test2 ~]# mkdir -p  /data/es{data,work,plugins}
[root@test2 ~]# cd /usr/local/elasticsearch-1.7.3/
[root@test2 elasticsearch-1.7.3]# mkdir logs

5、启动es

[root@test2 ~]# cd /usr/local/elasticsearch-1.7.3/bin/
[root@test2 bin]# nohup  sh elasticsearch &   #忽略输入并把输出追加到"nohup.out”
[root@test2 ~]# netstat -antulp | grep -E "9200|9300"  #查看端口是否开启

在这里插入图片描述

用浏览器输入ip地址+端口号测试一下,如果出现这个就是成功了
在这里插入图片描述

6、test2这台安装完成了,把目录丢给test3

[root@test2 ~]# scp -r /usr/local/elasticsearch-1.7.3/  192.168.1.224:/usr/local/

#test2也要创建好相应 的目录,配置文件的话把IP nodename改一下就行 其他配置都相同

7、安装es的管理插件,可以清晰直观的看到es集群的状态

[root@test2 ~]# /usr/local/elasticsearch-1.7.3/bin/plugin -i mobz/elasticsearch-head

安好后访问一下
浏览器输入:http://192.168.1.223:9200/_plugin/head/

在这里插入图片描述
Ok,es集群部署完成

Logstash安装
在test1上安装Logstassh
1、 Logstash需要安装java环境

[root@test1 ~]# yum -y install java-1.8.0

2、安装logstash

[root@test1~]# wget  https://download.elastic.co/logstash/logstash/logstash-2.0.0.tar.gz
[root@test1~]#tar -xf logstash-2.0.0.tar.gz  -C /usr/local/
[root@test1~]#cd /usr/local
[root@test1~]#mkdir etc 

3、用Logstash向es集群写数据

[root@test1 etc]# cd /usr/local/logstash-2.0.0/etc/
[root@test1 etc]# cat logstash.conf 
input {               #数据的输入从标准输入
  stdin {}   
}

output {            #数据的输出我们指向es集群
  elasticsearch {
    hosts => ["192.168.1.223:9200","192.168.1.224:9200"]   #es主机的ip以及端口
  }
}

[root@test1 bin]#/usr/local/logstash/bin/logstash -f /usr/local/logstash-2.0.0/etc/logstash.conf --configtest --verbose
Configuration OK #检查配置文件是否有语法错误

在这里插入图片描述
显示OK就启动执行一下

[root@test1 bin]# ./logstash -f ../etc/logstash.conf 

在这里插入图片描述

输入完去ES的web界面看看
在这里插入图片描述
Ok,成功写入了
在这里插入图片描述

4、现在把系统日志收集到es去
修改刚才的配置文件 ,然后再启动就可以了

[root@test1 etc]# cat logstash.conf
input {              #这里输入使用的文件,即日志文件secure
file{
   path => ["/var/log/secure"]    #这是日志文件的绝对路径
   start_position => "beginning"       #这表示从secure的第一行开始读取
}
}

output {            #输出到es
  elasticsearch {
    hosts => ["192.168.1.223:9200","192.168.1.224:9200"]  
    index => "system-secure-%{+YYYY-MM}"    #这里将按照这个索引格式来创建索引
  }
}

启动logstash后,我们来看head这个插件的web页面
在这里插入图片描述
在这里插入图片描述

ok,系统日志我们已经成功的收集到了且已经写入到es集群中,那上面的演示是logstash直接将日志写入到es集群中的,这种场合我觉得如果量不是很大的话直接像上面已将将输出output定义到es集群即可,如果量大的话需要加上消息队列来缓解es集群的压力。

Kafka集群安装配置:
前面写了kafka的集群安装配置了 放在这篇文章里
https://blog.csdn.net/weixin_43112000/article/details/84108042

Kafka集群搭建好后将test1上面的logstash的输出改到kafka上面去 修改如下

[root@test1 etc]# cat logstash.conf 
input {             
file{
   type => "system-secure"
   path => ["/var/log/secure"]
   start_position => "beginning" 
}
}

output {          
  kafka {
    bootstrap_servers  => ["192.168.1.222:19092,192.168.1.223:19092,192.168.1.224:19092"]
    topic_id => "system-secure"
  }
}

进到logstash的bin目录执行命令

[root@test1 bin]# cd /usr/local/logstash/bin/ 
[root@test1 bin]# ./logstash -f ../etc/logstash.conf 
Default settings used: Filter workers: 1
Logstash startup completed

到test2这台机器上看kafka有没有创建新的topic

[root@test2 bin]#  ./kafka-topics.sh --list --zookeeper localhost:12181

在这里插入图片描述
发现确实生成了
进去看看
[root@test2 bin]# ./kafka-console-consumer.sh --zookeeper 127.0.0.1:12181 --topic system-secure --from-beginning
在这里插入图片描述
发现数据写进去了,这时候可以试试开多一个窗口去远程test2,数据在不断的写入

现在我们要把kafka收集到的数据发给es集群中去
在kafka集群上安装Logstash,安装过程看一下上面,这里不再赘述了,这里我再test1使用logstash将kafka上的数据发送给es

修改logstash的配置文件

[root@test1 etc]# cat /usr/local/logstash-2.0.0/etc/logstash.conf 
input {             
 kafka {
   zk_connect  => "192.168.1.222:12181,192.168.1.223:12181,192.168.1.224:12181"
   topic_id  => "system-secure"
   codec => plain
   reset_beginning => false
   consumer_threads => 5
   decorate_events => true
}
}

output {          
  elasticsearch {
    hosts  => ["192.168.1.223:9200","192.168.1.224:9200"]
    index  => "test-system-secure-%{+YYYY-MM}"
  }
} 

在这里插入图片描述

检测一下会不会报错
[root@test1 etc]# /usr/local/logstash/bin/logstash -f /usr/local/logstash-2.0.0/etc/logstash.conf --configtest –verbose

在这里插入图片描述

Ok,语法没有问题,为了看出效果,到test2上随便写一段话到/var/log/secure 里去 看看能不能到es里看到数据
[root@test2 log]# echo “我将随便写几句话进es里” >> /var/log/secure
#解释一下为什么要写东西到test2这台机器上的secure日志,因为test2上的logstash收集/var/log/secure的日志发送给test2上的kafka集群,然后test1上的logstash负责将kafka集群上收集来的日志发送给test3(2)的ES集群上
在浏,览器输入ES的地址
在这里插入图片描述

可以看到kafka上的topic确实通过Logstash顺利的将数据写到了ES上去
进去看看 刚才写的话确实发到了这里
在这里插入图片描述

Ok,现在去部署一下Kibana
切到test2上,因为这台机器上有ES

[root@test2~]# wget https://download.elastic.co/kibana/kibana/kibana-4.1.0-linux-x64.tar.gz
[root@test2 ~]# tar -xf kibana-4.1.0-linux-x64.tar.gz  -C /usr/local/
[root@test2 ~]# cd /usr/local/
[root@test2 local]# ln -sv kibana-4.1.0-linux-x64 kibana 
[root@test2 local]# vim kibana/config/kibana.yml

在这里插入图片描述

修改完后启动kibana #用nohup将kibana放在后台启动
[root@test2 bin]# nohup sh /usr/local/kibana/bin/kibana &

浏览器访问本机的5601端口
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

注意,如果进到kibana并用es上的索引名创建后出现这个界面,可能是时间设置有问题,最好就设置为今天或者今年都可以

在这里插入图片描述

Ok,搭建的过程到这里就完了,具体的使用方法还需要慢慢的探索

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: elk+kafka+filebeat 是一种常见的数据处理和分析架构。ELK指的是Elasticsearch、Logstash和Kibana,它们分别用于数据存储、数据处理和数据可视化。Kafka是一个分布式流处理平台,用于处理大量的实时数据流。Filebeat是一个轻量级的日志数据收集器,用于将日志数据发送到ELKKafka中进行处理和分析。这种架构可以帮助企业实现实时数据处理和分析,提高数据的价值和利用率。 ### 回答2: Elk(Elasticsearch,Logstash和Kibana)是一个开源的数据分析平台,其可帮助组织收集、分析、可视化并作出更明智的决策。Elk框架大致包含三个主要组成部分:Elasticsearch、Logstash和Kibana。其中,Elasticsearch是一个基于Lucene的搜索和分析引擎,Logstash是一种数据收集引擎,而Kibana则为数据可视化提供了一种界面。 Kafka 是一个分布式的消息发布订阅系统,其主要目的是为服务之间的通信提供高吞吐和低延迟的解决方案。Kafka 的核心设计思想是基于发布订阅模式,确保系统的整个数据流可以持久化存储,同时支持高效和可扩展的水平拓展。 相比之下,Filebeat 是一个轻量级的日志收集器,用于从多个服务器上收集和转发日志数据。该工具提供了一个快速且灵活的方法来读取多个日志文件,包括系统日志、应用程序日志和安全日志等。由于其轻量化的特性,Filebeat 可以提供高性能的数据收集,并消耗较少的系统资源。 底层架构上,Filebeat 可以将日志数据转发到 Kafka 以供后续处理,同时,Kafka 可以将处理完成的数据转发到 Elasticsearch 索引中,从而让 Kibana 提供友好的用户界面进行可视化和分析。在这个集成方案中,每个组件都贡献其自身的优势,从而实现了一个用于日志收集、处理、存储和展现的完整系统。 ### 回答3: Elasticsearch、Logstash、Kibana和Beats,简称ELK,是一个开源的数据收集和分析平台。随着互联网的不断发展,日志数据的产生量已经变得越来越大,ELK逐渐成为了企业处理和分析大数据的主流工具之一。其中,Kafka和Filebeat则是ELK平台中重要的两个工具。 Kafka是一种高吞吐量的分布式发布-订阅消息系统,它可以处理消费者规模不断增长的数据流,实现消息的持久化、数据复制、分区和提交等功能。在ELK平台中,Kafka用于将采集过来的日志数据进行传输,具体流程如下: 首先,用Filebeat采集产生的日志数据,将数据推送到Kafka中;然后,从Kafka中取出数据,通过Logstash进行数据过滤、解析和清洗;最后,Logstash将清洗后的数据推送到Elasticsearch中进行存储和分析。 Filebeat是一个开源的轻量级数据收集工具,可以采集不同服务器上的日志数据,并将数据发送到Kafka中。Filebeat具有占用资源低、运行效率高等优点,是在ELK平台中数据采集的重要工具。 综上所述,Kafka和Filebeat作为ELK平台中重要的数据收集和传输工具,可以帮助企业快速、高效地收集和分析海量的日志数据,实现企业数据的全面监控和分析,提高企业的运营效率和竞争力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值