ELK+Kafka日志分析平台搭建

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

架构图:
ELK+Kafka日志分析平台搭建_第1张图片

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地址+端口号测试一下,如果出现这个就是成功了
ELK+Kafka日志分析平台搭建_第2张图片

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/

ELK+Kafka日志分析平台搭建_第3张图片
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界面看看
ELK+Kafka日志分析平台搭建_第4张图片
Ok,成功写入了
ELK+Kafka日志分析平台搭建_第5张图片

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页面
ELK+Kafka日志分析平台搭建_第6张图片
ELK+Kafka日志分析平台搭建_第7张图片

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
ELK+Kafka日志分析平台搭建_第8张图片
发现数据写进去了,这时候可以试试开多一个窗口去远程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}"
  }
} 

ELK+Kafka日志分析平台搭建_第9张图片

检测一下会不会报错
[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的地址
ELK+Kafka日志分析平台搭建_第10张图片

可以看到kafka上的topic确实通过Logstash顺利的将数据写到了ES上去
进去看看 刚才写的话确实发到了这里
ELK+Kafka日志分析平台搭建_第11张图片

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

ELK+Kafka日志分析平台搭建_第12张图片

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

浏览器访问本机的5601端口
ELK+Kafka日志分析平台搭建_第13张图片

ELK+Kafka日志分析平台搭建_第14张图片

ELK+Kafka日志分析平台搭建_第15张图片

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

ELK+Kafka日志分析平台搭建_第16张图片

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

你可能感兴趣的:(ELK+Kafka日志分析平台搭建)