ELK+Kafka 企业日志收集平台(一)

摘要:
背景:最近,ELK已经上线,但中间只有一个Redis作为消息队列,以缓解前端es集群的压力。Redis的集群解决方案暂时没有联系,Redis作为消息队列并不是它的强项;最近,Redis已经被Kafka取代,Kafka是一个专业的信息发布和订阅系统。有关卡夫卡的更多信息,请参阅门户网站。网上有很多ELK知识。本博客主要总结了当前在线平台的实现步骤,以及ELK如何与Kafka结合。

背景:

最近线上上了ELK,但是只用了一台Redis在中间作为消息队列,以减轻前端es集群的压力,Redis的集群解决方案暂时没有接触过,并且Redis作为消息队列并不是它的强项;所以最近将Redis换成了专业的消息信息发布订阅系统Kafka, Kafka的更多介绍大家可以看这里:传送门  ,关于ELK的知识网上有很多的哦, 此篇博客主要是总结一下目前线上这个平台的实施步骤,ELK是怎么跟Kafka结合起来的。好吧,动手!

ELK架构拓扑:

然而我这里的整个日志收集平台就是这样的拓扑:
1

1,使用一台Nginx代理访问kibana的请求;
2,两台es组成es集群,并且在两台es上面都安装kibana;(以下对elasticsearch简称es)
3,中间三台服务器就是我的kafka(zookeeper)集群啦; 上面写的消费者/生产者这是kafka(zookeeper)中的概念;
4,最后面的就是一大堆的生产服务器啦,上面使用的是logstash,当然除了logstash也可以使用其他的工具来收集你的应用程序的日志,例如:Flume,Scribe,Rsyslog,Scripts……

角色:

11111

软件选用:

 
1
2
3
4
5
6
elasticsearch-1.7.3.tar.gz#这里需要说明一下,前几天使用了最新的elasticsearch2.0,java-1.8.0报错,目前未找到原因,故这里使用1.7.3版本
Logstash-2.0.0.tar.gz
kibana-4.1.2-linux-x64.tar.gz
以上软件都可以从官网下载:https://www.elastic.co/downloads
 
java-1.8.0,nginx采用yum安装

部署步骤:

1.ES集群安装配置;

2.Logstash客户端配置(直接写入数据到ES集群,写入系统messages日志);

3.Kafka(zookeeper)集群配置;(Logstash写入数据到Kafka消息系统);

4.Kibana部署;

5.Nginx负载均衡Kibana请求;

6.案例:nginx日志收集以及MySQL慢日志收集;

7.Kibana报表基本使用;

ES集群安装配置;

es1.example.com:

1.安装java-1.8.0以及依赖包

 
1
2
yum install-yepel-release
yum install-yjava-1.8.0git wget lrzsz

2.获取es软件包

 
1
2
3
wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.3.tar.gz
tar-xf elasticsearch-1.7.3.tar.gz-C/usr/local
ln-sv/usr/local/elasticsearch-1.7.3/usr/local/elasticsearch

3.修改配置文件

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@es1~]# vim /usr/local/elasticsearch/config/elasticsearch.yml
32cluster.name:es-cluster                         #组播的名称地址
40node.name:"es-node1 "                           #节点名称,不能和其他节点重复
47node.master:true                                #节点能否被选举为master
51node.data:true                                  #节点是否存储数据
107index.number_of_shards:5                       #索引分片的个数
111index.number_of_replicas:1                     #分片的副本个数
145path.conf:/usr/local/elasticsearch/config/     #配置文件的路径
149path.data:/data/es/data                        #数据目录路径
159path.work:/data/es/worker                      #工作目录路径
163path.logs:  /usr/local/elasticsearch/logs/      #日志文件路径
167path.plugins:  /data/es/plugins                 #插件路径
184bootstrap.mlockall:true                        #内存不向swap交换
232http.enabled:true                              #启用http

4.创建相关目录

 
1
mkdir/data/es/{data,worker,plugins}-p

5.获取es服务管理脚本

 
1
2
3
4
5
6
7
8
9
10
11
12
[root@es1~]# git clone https://github.com/elastic/elasticsearch-servicewrapper.git
[root@es1~]# mv elasticsearch-servicewrapper/service /usr/local/elasticsearch/bin/
[root@es1~]# /usr/local/elasticsearch/bin/service/elasticsearch install
Detected RHEL orFedora:
Installing the Elasticsearch daemon..
[root@es1~]#
#这时就会在/etc/init.d/目录下安装上es的管理脚本啦
 
#修改其配置:
[root@es1~]#
set.default.ES_HOME=/usr/local/elasticsearch   #安装路径
set.default.ES_HEAP_SIZE=1024                  #jvm内存大小,根据实际环境调整即可

6.启动es ,并检查其服务是否正常

 
1
2
3
[root@es1~]# netstat -nlpt | grep -E "9200|"9300
tcp        0      00.0.0.0:9200                0.0.0.0:*                   LISTEN      1684/java          
tcp        0      00.0.0.0:9300                0.0.0.0:*                   LISTEN      1684/java

访问http://192.168.2.18:9200/ 如果出现以下提示信息说明安装配置完成啦,

2

7.es1节点好啦,我们直接把目录复制到es2

 
1
2
3
4
5
6
[root@es1 local]# scp -r elasticsearch-1.7.3  192.168.12.19:/usr/local/
 
[root@es2 local]# ln -sv elasticsearch-1.7.3 elasticsearch
[root@es2 local]# elasticsearch/bin/service/elasticsearch install
 
#es2只需要修改node.name即可,其他都与es1相同配置

8.安装es的管理插件

es官方提供一个用于管理es的插件,可清晰直观看到es集群的状态,以及对集群的操作管理,安装方法如下:

 
1
[root@es1 local]# /usr/local/elasticsearch/bin/plugin -i mobz/elasticsearch-head

安装好之后,访问方式为: http://192.168.2.18:9200/_plugin/head,由于集群中现在暂时没有数据,所以显示为空,

3

      此时,es集群的部署完成。

Logstash客户端安装配置;

在webserve1上面安装Logstassh

1.downloads  软件包 ,这里注意,Logstash是需要依赖java环境的,所以这里还是需要yum install -y java-1.8.0.

 
1
2
3
4
5
[root@webserver1~]# wget https://download.elastic.co/logstash/logstash/logstash-2.0.0.tar.gz
[root@webserver1~]# tar -xf logstash-2.0.0.tar.gz -C /usr/local
[root@webserver1~]# cd /usr/local/
[root@webserver1 local]# ln -sv logstash-2.0.0 logstash
[root@webserver1 local]# mkdir logs etc

2.提供logstash管理脚本,其中里面的配置路径可根据实际情况修改

 
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/bin/bash
#chkconfig: 2345 55 24
#description: logstash service manager
#auto: Maoqiu Guo
FILE='/usr/local/logstash/etc/*.conf'    #logstash配置文件
LOGBIN='/usr/local/logstash/bin/logstash agent --verbose --config'  #指定logstash配置文件的命令
LOCK='/usr/local/logstash/locks'         #用锁文件配合服务启动与关闭
LOGLOG='--log /usr/local/logstash/logs/stdou.log'  #日志
 
START(){
if[-f$LOCK];then
echo-e"Logstash is already

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇前端下载文件(GET、POST方法)flask的配置设置的几种方式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

海康摄像头web观看操作rtmp/hls推流rtsp流转rtmp流

源码介绍:   海康摄像头web端无插件播放是指设置好摄像头参数后,即可在web浏览器不安装任何自定义插件即可实现流程播放。   系统通过拉取海康rtsp流,在用户点击观看时,自动将流转换为rtmp与hls流,推送到自定义流媒体服务器,实现web端 flash播放与html5原生播放。  如有需求,可在线留言或者发消息都可以,看到后会第一时间回复。  ...

webim如何保证消息的可靠投递

消息的可靠性,即消息的不丢失和不重复,也是im系统中的一个难点。当初qq在技术上(当时叫oicq)因为以下两点原因才打败了icq:1)qq的消息投递可靠(消息不丢失,不重复)2)qq的垃圾消息少(它antispam做得好,这也是一个难点,但不是本文重点讨论的内容)今天,本文将用十分通俗的语言,来讲述webim系统中消息可靠性的问题。 一、报文类型im的客户端...

FPGA--UART串口通信

一,串口相关知识 UART 通信 UART 首先将接收到的并行数据转换成串行数据来传输。消息帧从一个低位起始位开始,后面是 7 个或 8 个数据位,一个可用的奇偶位和一个或几个高位停止位。接收器发现开始位时它就知道数据准备发送,并尝试与发送器时钟频率同步。如果选择了奇偶校验,UART 就在数据位后面加上奇偶位。奇偶位可用来帮助错误校验。在接收过程中, UA...

高并发的场景下,如何保证生产者投递到消息中间件的消息不丢失

  生产端如何保证消息不丢失的问题 在消息的生产端,如果投递的消息出去在网络传输过程中丢失,或者在RabbitMQ内存中,还没有写入磁盘的时候,发生宕机,都会导致生产端,投递到MQ的数据丢失。     保证消息不丢失的confirm机制 在生产端,首先要开启一个confirm机制, 接着投递到队列中的消息,如果MQ一旦将消息持久化到磁盘后,就必须要回传一个...

netty中的UDP

UDP 提供了向多个接收者发送消息的额外传输模式: 多播——传输到一个预定义的主机组; 广播——传输到网络(或者子网)上的所有主机。 本示例应用程序将通过发送能够被同一个网络中的所有主机所接收的消息来演示 UDP 广播的使用。为此,我们将使用特殊的受限广播地址或者零网络地址 255.255.255.255。 发送到这个地址的消息都将会被定向给本地网络...

ANDROID窗体管理服务实现机制和架构分析

 一、功能     窗体管理是ANDROID框架一个重要部分,主要包含例如以下功能:    (1)Z-ordered的维护   (2)窗体的创建、销毁   (3)窗体的绘制、布局    (4)Token管理,AppToken    (5)活动窗体管理(FocusWindow)    (6)活动应用管理(FocusAPP)    (7)输入法管理  ...