阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

离线部署ELK+Kafka日志管理系统

220次阅读
没有评论

共计 16997 个字符,预计需要花费 43 分钟才能阅读完成。

1、简介

对于日志来说,最常见的需求就是收集、查询、显示,正对应 logstash、elasticsearch、kibana 的功能。ELK 日志系统在系统中,主要可解决的问题:

  • 基于日志的数据挖掘
  • 问题排查,上线检查
  • 根据关键字查询日志详情
  • 异常数据自动触发消息通知
  • 服务器监控,应用监控,Bug 管理
  • 统计分析,比如接口的调用次数、执行时间、成功率等
  • 性能分析,用户行为分析,安全漏洞分析,时间管理

Logstash:

Logstash 是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和 JMX,它能够以多种方式输出数据,包括电子邮件、websockets 和 Elasticsearch。与其他监控系统的整合也很方便,可以将数据输出到 zabbix、nagios 等。还可以把数据统计后输出到 graphite,实现统计数据的可视化显示。

logstash 对日志的处理逻辑很简单,就是一个 pipeline 的过程:

inputs >> codecs >> filters>> outputs

agent 分布在每一台需要采集数据的节点上,agent 只是 Logstash 承担的一个角色,与此对应的是 indexer。agent 会分别将各自获取的日志作为输入输出到一个消息代理(例如 Redis 或者 kafka),indexer 会将消息代理作为输入再输出到 ES 上,由 ES 做 indexing。其实 Logstash 在整个过程中只负责输入输出,对 Logstash 而言并没有 agent 和 index 之分。如果日志量小的话完全不需要设置 indexer,直接将 ES 作为 agent 的输出源。

Elasticsearch:

elasticsearch 是基于 lucene 的开源搜索引擎,主要的特点有

  • real time
  • distributed
  • high availability
  • document oriented
  • schema free
  • restful api

kibana:

Kibana 是一个基于 Web 的图形界面,用于搜索、分析和可视化存储在 Elasticsearch 指标中的日志数据。它利用 Elasticsearch 的 REST 接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。kibana 是根据前台过滤的条件,生成 query 发送到 elasticsearch, 然后根据返回的值重绘页面。

下面用一张图来展示整个架构:

离线部署 ELK+Kafka 日志管理系统

以上是我查看网上资料最终总结的,感谢各位大神的贡献。

2、测试环境说明

下面通过在测试环境下搭建 ELK 日志系统来对 ELK 进行更加深入的认识。

软件环境:

logstash-2.3.3.tar.gz  marvel-2.3.3.tar.gzelasticsearch-2.3.3.zip  kibana-4.5.1-linux-x64    marvel-agent-2.3.3.zip  elasticsearch-head-master.zip  license-2.3.3.zip  jdk-8u101-linux-x64.tar.gz  kafka_2.10-0.10.0.1.tgz  zookeeper-3.4.6.tar.gz

服务器和角色:

192.168.1.101          kafka+zookeeper   

192.168.1.102          kafka+zookeeper     

192.168.1.103          kafka+zookeeper  logstash shipper

192.168.1.104          logstash shipper

192.168.1.105            elasticsearch kibana

192.168.1.106        logstash indexer

说明:

本篇分别对上边的物理节点标识为 node1—node6,下面都以这种称谓。

Node1 和 nide2 以及 node3 三台节点上搭建 kafka+zookeeper 集群,另外 node3 本身也是一个 nginx 服务器。

Node4 上搭建 nginx 服务器,和 node3 一起负责 logstash 日志数据生产端,把 nginx 日志传给 kafka 集群。

日志传输方向:

Nginx 日志 –>logstash shipper–>kafka+zookeeper–>logstash indexer–>elasticsearch

最后 kibana 负责展示 es 收集到的数据

3、配置 Java 环境
 

各节点配置 jdk1.8 的环境

/home/apps # tar -zxvf jdk-8u101-linux-x64.tar.gz

/home/apps # ln -sv /home/apps/jdk1.8.0_101/usr/local/jdk1.8.0_101

`/usr/local/jdk1.8.0_101′ ->`/home/apps/jdk1.8.0_101′

编辑环境变量文件,注释掉之前的 java 环境配置,添加下面的内容

/home/apps # vi /etc/profile

JAVA_HOME=/usr/local/jdk1.8.0_101

PATH=$JAVA_HOME/bin:$PATH

CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar

export PATH JAVA_HOME CLASSPATH

/home/apps #source /etc/profile

/home/apps # java -version

java version “1.8.0_101”

Java(TM) SE Runtime Environment (build1.8.0_101-b13)

Java HotSpot(TM) 64-Bit Server VM (build25.101-b13, mixed mode)

4、搭建 kafka+zookeeper 集群环境

4.1、node1 上安装配置 zookeeper

 

解压包

# tar -xf kafka_2.10-0.10.0.1.tgz -C /usr/local

# tar -zxf zookeeper-3.4.6.tar.gz -C /usr/local

# cd /usr/local

# mv kafka_2.10-0.10.0.1/ kafka

# mv zookeeper-3.4.6/ zookeeper

生成 zookeeper 配置文件

# cd zookeeper/conf

# cp zoo_sample.cfg zoo.cfg

编辑配置文件

# vi zoo.cfg

dataDir=/usr/local/zookeeper/tmp/zookeeper

server.1=192.168.1.101:2888:3888

server.2=192.168.1.102:2888:3888

server.3=192.168.1.103:2888:3888

# cd ..

# mkdir -p tmp/zookeeper

# echo “1” >tmp/zookeeper/myid

4.2、配置 node2 和 node3 的 zookeeper

 

依照 node1 的配置配置 node2 和 node3,注意下面的参数三个节点各有差异

Node2:

# echo “2” >tmp/zookeeper/myid

Node3:

# echo “3” >tmp/zookeeper/myid

其他配置都一样

4.3、依次启动三个节点的服务

 

# ./bin/zkServer.sh start conf/zoo.cfg

Using config:/usr/local/zookeeper/bin/../conf/zoo.cfg

Starting zookeeper … STARTED

查看三个节点的状态

Node1:

# ./bin/zkServer.sh status

JMX enabled by default

Using config:/usr/local/zookeeper/bin/../conf/zoo.cfg

Mode: follower

Node2:

# ./bin/zkServer.sh status

JMX enabled by default

Using config:/usr/local/zookeeper/bin/../conf/zoo.cfg

Mode: follower

Node3:

# ./bin/zkServer.sh status

JMX enabled by default

Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg

Mode: leader

4.4、配置 node1 的 kafka

# cd ../kafka

# vi config/server.properties

broker.id=0

port=9092

host.name=node1

log.dirs=/usr/local/kafka/tmp/kafka-logs

num.partitions=2

zookeeper.connect=192.168.1.101:2181,192.168.1.102:2181,192.168.1.103:2181

4.5、配置 Node2 和 node3 的 kafka

依照 node1 的配置配置 node2 和 node3,注意下面的参数三个节点各有差异

Node2:

broker.id=1

host.name=node2

node3:

broker.id=2

host.name=node3

说明:

host.name 是节点的主机名

依次启动三个节点的 kafka

# ./bin/kafka-server-start config/server.properties

4.6、创建 topic 验证集群是否正常

Node1 上创建 topic

/usr/local/kafka# bin/kafka-topics.sh –create –zookeeper 192.168.1.100:2181–replication-factor 3 –partitions 2 –topic test1

Created topic “test1”.

Node2 上发送消息至 kafka(2 节点模拟 producer)

/usr/local/kafka # bin/kafka-console-producer.sh –broker-list 192.168.1.100:9092 –topic test1

hello world

Node3 显示消息的消费(3 节点模拟 consumer)

/usr/local/kafka # bin/kafka-console-consumer.sh –zookeeper  192.168.1.100:2181 –topic test1 –from-beginning

hello world

可以看到在 node2 节点的输入的信息可以在 nide3 节点显示,说明集群正常使用。

使用下面的命令可以查看 zookeeper 服务的端口

# netstat -nlpt | grep -E “2181|2888|3888”

5、配置 es 和 kibana

在 node5 节点配置 es

5.1、创建 elasticsearch 账户

# groupadd eSUSEr

# useradd -d /home/esuser -m esuser

# passwd esuser

/home/apps # unzip elasticsearch-2.3.3.zip

/home/apps # mv elasticsearch-2.3.3 /usr/local/elasticsearch

5.2、编辑 es 配置文件

# cd /usr/local/elasticsearch/

编辑 es 配置文件

# vi config/elasticsearch.yml

cluster.name: es_cluster

node.name: node5

path.data: /usr/local/elasticsearch/data

path.logs: /usr/local/elasticsearch/logs

network.host: 192.168.1.105

http.port: 9200

# mkdir data logs

修改目录权限

/home/apps # chown -R esuser:esuser /usr/local/elasticsearch/

切换到 esuser 用户,启动 es 服务

/usr/local/elasticsearch> ./bin/elasticsearch

可使用下面命令查看 es 服务端口情况

# netstat -nlpt | grep -E “9200|9300”

浏览器输入 http://192.168.1.105:9200/,显示如下所示信息,说明服务正常

{

  “name” : “node5”,

  “cluster_name” : “es_cluster”,

  “version” : {

    “number” : “2.3.3”,

    “build_hash” : “218bdf10790eef486ff2c41a3df5cfa32dadcfde”,

    “build_timestamp” : “2016-05-17T15:40:04Z”,

    “build_snapshot” : false,

    “lucene_version” : “5.5.0”

  },

  “tagline” : “You Know, for Search”

}

5.3、ES 插件配置

/home/apps # unzip elasticsearch-head-master.zip

# mv elasticsearch-head-master /usr/local/elasticsearch/plugins/head

在浏览器中输入 http://192.168.1.105:9200/_plugin/head/,出现如图【ELK&kafka1】所示的画面。

离线部署 ELK+Kafka 日志管理系统

ELK&kafka1

marvel 插件的安装

/usr/local/elasticsearch # ./bin/plugininstall file:///home/apps/license-2.3.3.zip

-> Installing fromfile:/home/apps/license-2.3.3.zip…

Trying file:/home/apps/license-2.3.3.zip…

Downloading .DONE

Verifying file:/home/apps/license-2.3.3.zipchecksums if available …

NOTE: Unable to verify checksum fordownloaded plugin (unable to find .sha1 or .md5 file to verify)

Installed license into/usr/local/elasticsearch/plugins/license

/usr/local/elasticsearch # ./bin/plugininstall file:///home/apps/marvel-agent-2.3.3.zip

-> Installing fromfile:/home/apps/marvel-agent-2.3.3.zip…

Tryingfile:/home/apps/marvel-agent-2.3.3.zip …

Downloading ..DONE

Verifyingfile:/home/apps/marvel-agent-2.3.3.zip checksums if available …

NOTE: Unable to verify checksum fordownloaded plugin (unable to find .sha1 or .md5 file to verify)

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@    WARNING: plugin requires additional permissions    @

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

* java.lang.RuntimePermission setFactory

* javax.net.ssl.SSLPermission setHostnameVerifier

Seehttp://docs.Oracle.com/javase/8/docs/technotes/guides/security/permissions.html

for descriptions of what these permissionsallow and the associated risks.

Continue with installation? [y/N]y

Installed marvel-agent into/usr/local/elasticsearch/plugins/marvel-agent

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2017-03/141430p2.htm

重启 es 服务

在浏览器中输入 http://192.168.1.105:9200/_plugin/head/,出现如图【ELK&kafka2】所示的画面。

离线部署 ELK+Kafka 日志管理系统

ELK&kafka2

5.4、配置 kibana

/home/apps # tar -zxvfkibana-4.5.1-linux-x64.tar.gz

/home/apps #mv kibana-4.5.1-linux-x64/usr/local/kibana             

编辑 kibana 配置文件

/home/apps # cd /usr/local/kibana

/usr/local/kibana # vi config/kibana.ym

server.port: 5601

server.host: “192.168.1.105”

elasticsearch.url:”http://192.168.1.105:9200″                                                                                     

启动 kibana

# ./bin/kibana &

在浏览器中输入 192.168.1.105:5601,可以【ELK&kafka3】所示的画面。

离线部署 ELK+Kafka 日志管理系统

ELK&kafka3

在 Kibana 中把 marvel 插件安装完成(安装过程需要一些时间)

/home/apps # cd /usr/local/kibana/

/usr/local/kibana # ./bin/kibana plugin–install marvel –url file:///home/apps/marvel-2.3.3.tar.gz

Installing marvel

Attempting to transfer from file:///home/apps/marvel-2.3.3.tar.gz

Transferring 1597693bytes………………..

Transfer complete

Extracting plugin archive

Extraction complete

Optimizing and caching browser bundles…

Plugin installation complete

重启 kibana 后,访问 kibana,可以【ELK&kafka4】所示的画面。

离线部署 ELK+Kafka 日志管理系统

ELK&kafka4

6、Node4 日志生产端配置

6.1、node4 节点安装配置 nginx

# tar -zxf pcre-8.21.tar.gz -C /usr/local

# tar -zxf nginx-1.2.7.tar.gz -C /usr/local

# cd pcre-8.21/

# ./configure

# make && make install

# cd nginx-1.2.7/

# ./configure –with-http_stub_status_module –prefix=/usr/local/nginx

# make && make install

在 nginx 配置文件中的 http {} 段添加下面的内容:

log_format  main  ‘$remote_addr – $remote_user [$time_local] ‘

                          ‘”$request” $status $body_bytes_sent ‘

                          ‘”$http_referer” “$http_user_agent” ‘;

/usr/local/nginx/sbin # ./nginx -s reload

6.2、logstash 配置

# tar -zxvf logstash-2.3.3.tar.gz

# mv logstash-2.3.3 /usr/local/logstash

配置 logstash 生产端文件

/usr/local # cd logstash/

/usr/local/logstash # mkdir logs etc

/usr/local/logstash # vi etc/logstash_nginx_shipper.conf

input {

  file {

      type => “nginx-access”

      path => “/usr/local/nginx/logs/access.log”

  }

}

output {

stdout {codec => rubydebug}

kafka {

bootstrap_servers => “192.168.1.101:9092,192.168.1.102:9092,192.168.1.103:9092”

topic_id => “nginx-messages”

compression_type => “snappy”

}

}

说明:

配置文件中的 stdout {codec => rubydebug} 参数是为了在标准输出显示信息

通过这个文件的配置 node4 节点可以把 nginx 产生的日志信息发送到 kafka 集群

6.3、node3 节点生产端的配置

因为 node3 本身就是一个 nginx web 服务器,所以只需要一个 logstash 配置文件就可以了,依照 node4 节点产生一个相同的文件。

日志消费端配置

依照 node4 的 logstash 配置,只不过配置文件不同,node6 的配置文件如下所示:

/usr/local/logstash # vi etc/logstash_nginx_indexer.conf

input {

kafka {

zk_connect =>”192.168.1.101:2181,192.168.1.102:2181,192.168.1.103:2181″

topic_id => “nginx-messages”

codec => plain

reset_beginning => false

consumer_threads => 5

decorate_events => true

}

}

output {

#stdout {

#      debug => true

#      debug_format => json

#  }

stdout {codec => rubydebug}

elasticsearch {

hosts => “192.168.1.105:9200”

index =>”nginx-messages-%{+YYYY-MM}”

}

}

7、验证

启动服务加载文件

日志生产端 Node4:

/usr/local/logstash # ./bin/logstash -f etc/logstash_nginx_shipper.conf

日志消费端 node6:

/usr/local/logstash # ./bin/logstash -f etc/logstash_nginx_indexer.conf

往 node4 的 nginx 日志文件中插入数据,可从图【ELK&kafka5】和【ELK&kafka6】看到多了 nginx 的索引,es 中出现数据。

离线部署 ELK+Kafka 日志管理系统

ELK&kafka5

离线部署 ELK+Kafka 日志管理系统

ELK&kafka6

日志生产端 Node3:

/usr/local/logstash # ./bin/logstash -f etc/logstash_nginx_shipper.conf

往 node3 的 nginx 日志文件中插入数据,可从图【ELK&kafka7】看到 es 中出现的数据。

离线部署 ELK+Kafka 日志管理系统

ELK&kafka7

在 kibana 的访问页面首先做配置,建立一个和 es 里展示的索引相对应的索引名“nginx-mes

sages-*”,如图【ELK&kafka8】否则的话不能创建索引。

离线部署 ELK+Kafka 日志管理系统

ELK&kafka8

可从图【ELK&kafka9】看到 kibana 中出现的数据。

离线部署 ELK+Kafka 日志管理系统

ELK&kafka9

8、拓展

接下来还有很多的工作要做,例如环境架构的适用性和高可用、日志的格式化和过滤、kibana 图表的分析、索引的清理、ELK 系统的优化等等。

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-03/141430.htm

1、简介

对于日志来说,最常见的需求就是收集、查询、显示,正对应 logstash、elasticsearch、kibana 的功能。ELK 日志系统在系统中,主要可解决的问题:

  • 基于日志的数据挖掘
  • 问题排查,上线检查
  • 根据关键字查询日志详情
  • 异常数据自动触发消息通知
  • 服务器监控,应用监控,Bug 管理
  • 统计分析,比如接口的调用次数、执行时间、成功率等
  • 性能分析,用户行为分析,安全漏洞分析,时间管理

Logstash:

Logstash 是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和 JMX,它能够以多种方式输出数据,包括电子邮件、websockets 和 Elasticsearch。与其他监控系统的整合也很方便,可以将数据输出到 zabbix、nagios 等。还可以把数据统计后输出到 graphite,实现统计数据的可视化显示。

logstash 对日志的处理逻辑很简单,就是一个 pipeline 的过程:

inputs >> codecs >> filters>> outputs

agent 分布在每一台需要采集数据的节点上,agent 只是 Logstash 承担的一个角色,与此对应的是 indexer。agent 会分别将各自获取的日志作为输入输出到一个消息代理(例如 Redis 或者 kafka),indexer 会将消息代理作为输入再输出到 ES 上,由 ES 做 indexing。其实 Logstash 在整个过程中只负责输入输出,对 Logstash 而言并没有 agent 和 index 之分。如果日志量小的话完全不需要设置 indexer,直接将 ES 作为 agent 的输出源。

Elasticsearch:

elasticsearch 是基于 lucene 的开源搜索引擎,主要的特点有

  • real time
  • distributed
  • high availability
  • document oriented
  • schema free
  • restful api

kibana:

Kibana 是一个基于 Web 的图形界面,用于搜索、分析和可视化存储在 Elasticsearch 指标中的日志数据。它利用 Elasticsearch 的 REST 接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。kibana 是根据前台过滤的条件,生成 query 发送到 elasticsearch, 然后根据返回的值重绘页面。

下面用一张图来展示整个架构:

离线部署 ELK+Kafka 日志管理系统

以上是我查看网上资料最终总结的,感谢各位大神的贡献。

2、测试环境说明

下面通过在测试环境下搭建 ELK 日志系统来对 ELK 进行更加深入的认识。

软件环境:

logstash-2.3.3.tar.gz  marvel-2.3.3.tar.gzelasticsearch-2.3.3.zip  kibana-4.5.1-linux-x64    marvel-agent-2.3.3.zip  elasticsearch-head-master.zip  license-2.3.3.zip  jdk-8u101-linux-x64.tar.gz  kafka_2.10-0.10.0.1.tgz  zookeeper-3.4.6.tar.gz

服务器和角色:

192.168.1.101          kafka+zookeeper   

192.168.1.102          kafka+zookeeper     

192.168.1.103          kafka+zookeeper  logstash shipper

192.168.1.104          logstash shipper

192.168.1.105            elasticsearch kibana

192.168.1.106        logstash indexer

说明:

本篇分别对上边的物理节点标识为 node1—node6,下面都以这种称谓。

Node1 和 nide2 以及 node3 三台节点上搭建 kafka+zookeeper 集群,另外 node3 本身也是一个 nginx 服务器。

Node4 上搭建 nginx 服务器,和 node3 一起负责 logstash 日志数据生产端,把 nginx 日志传给 kafka 集群。

日志传输方向:

Nginx 日志 –>logstash shipper–>kafka+zookeeper–>logstash indexer–>elasticsearch

最后 kibana 负责展示 es 收集到的数据

3、配置 Java 环境
 

各节点配置 jdk1.8 的环境

/home/apps # tar -zxvf jdk-8u101-linux-x64.tar.gz

/home/apps # ln -sv /home/apps/jdk1.8.0_101/usr/local/jdk1.8.0_101

`/usr/local/jdk1.8.0_101′ ->`/home/apps/jdk1.8.0_101′

编辑环境变量文件,注释掉之前的 java 环境配置,添加下面的内容

/home/apps # vi /etc/profile

JAVA_HOME=/usr/local/jdk1.8.0_101

PATH=$JAVA_HOME/bin:$PATH

CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar

export PATH JAVA_HOME CLASSPATH

/home/apps #source /etc/profile

/home/apps # java -version

java version “1.8.0_101”

Java(TM) SE Runtime Environment (build1.8.0_101-b13)

Java HotSpot(TM) 64-Bit Server VM (build25.101-b13, mixed mode)

4、搭建 kafka+zookeeper 集群环境

4.1、node1 上安装配置 zookeeper

 

解压包

# tar -xf kafka_2.10-0.10.0.1.tgz -C /usr/local

# tar -zxf zookeeper-3.4.6.tar.gz -C /usr/local

# cd /usr/local

# mv kafka_2.10-0.10.0.1/ kafka

# mv zookeeper-3.4.6/ zookeeper

生成 zookeeper 配置文件

# cd zookeeper/conf

# cp zoo_sample.cfg zoo.cfg

编辑配置文件

# vi zoo.cfg

dataDir=/usr/local/zookeeper/tmp/zookeeper

server.1=192.168.1.101:2888:3888

server.2=192.168.1.102:2888:3888

server.3=192.168.1.103:2888:3888

# cd ..

# mkdir -p tmp/zookeeper

# echo “1” >tmp/zookeeper/myid

4.2、配置 node2 和 node3 的 zookeeper

 

依照 node1 的配置配置 node2 和 node3,注意下面的参数三个节点各有差异

Node2:

# echo “2” >tmp/zookeeper/myid

Node3:

# echo “3” >tmp/zookeeper/myid

其他配置都一样

4.3、依次启动三个节点的服务

 

# ./bin/zkServer.sh start conf/zoo.cfg

Using config:/usr/local/zookeeper/bin/../conf/zoo.cfg

Starting zookeeper … STARTED

查看三个节点的状态

Node1:

# ./bin/zkServer.sh status

JMX enabled by default

Using config:/usr/local/zookeeper/bin/../conf/zoo.cfg

Mode: follower

Node2:

# ./bin/zkServer.sh status

JMX enabled by default

Using config:/usr/local/zookeeper/bin/../conf/zoo.cfg

Mode: follower

Node3:

# ./bin/zkServer.sh status

JMX enabled by default

Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg

Mode: leader

4.4、配置 node1 的 kafka

# cd ../kafka

# vi config/server.properties

broker.id=0

port=9092

host.name=node1

log.dirs=/usr/local/kafka/tmp/kafka-logs

num.partitions=2

zookeeper.connect=192.168.1.101:2181,192.168.1.102:2181,192.168.1.103:2181

4.5、配置 Node2 和 node3 的 kafka

依照 node1 的配置配置 node2 和 node3,注意下面的参数三个节点各有差异

Node2:

broker.id=1

host.name=node2

node3:

broker.id=2

host.name=node3

说明:

host.name 是节点的主机名

依次启动三个节点的 kafka

# ./bin/kafka-server-start config/server.properties

4.6、创建 topic 验证集群是否正常

Node1 上创建 topic

/usr/local/kafka# bin/kafka-topics.sh –create –zookeeper 192.168.1.100:2181–replication-factor 3 –partitions 2 –topic test1

Created topic “test1”.

Node2 上发送消息至 kafka(2 节点模拟 producer)

/usr/local/kafka # bin/kafka-console-producer.sh –broker-list 192.168.1.100:9092 –topic test1

hello world

Node3 显示消息的消费(3 节点模拟 consumer)

/usr/local/kafka # bin/kafka-console-consumer.sh –zookeeper  192.168.1.100:2181 –topic test1 –from-beginning

hello world

可以看到在 node2 节点的输入的信息可以在 nide3 节点显示,说明集群正常使用。

使用下面的命令可以查看 zookeeper 服务的端口

# netstat -nlpt | grep -E “2181|2888|3888”

5、配置 es 和 kibana

在 node5 节点配置 es

5.1、创建 elasticsearch 账户

# groupadd eSUSEr

# useradd -d /home/esuser -m esuser

# passwd esuser

/home/apps # unzip elasticsearch-2.3.3.zip

/home/apps # mv elasticsearch-2.3.3 /usr/local/elasticsearch

5.2、编辑 es 配置文件

# cd /usr/local/elasticsearch/

编辑 es 配置文件

# vi config/elasticsearch.yml

cluster.name: es_cluster

node.name: node5

path.data: /usr/local/elasticsearch/data

path.logs: /usr/local/elasticsearch/logs

network.host: 192.168.1.105

http.port: 9200

# mkdir data logs

修改目录权限

/home/apps # chown -R esuser:esuser /usr/local/elasticsearch/

切换到 esuser 用户,启动 es 服务

/usr/local/elasticsearch> ./bin/elasticsearch

可使用下面命令查看 es 服务端口情况

# netstat -nlpt | grep -E “9200|9300”

浏览器输入 http://192.168.1.105:9200/,显示如下所示信息,说明服务正常

{

  “name” : “node5”,

  “cluster_name” : “es_cluster”,

  “version” : {

    “number” : “2.3.3”,

    “build_hash” : “218bdf10790eef486ff2c41a3df5cfa32dadcfde”,

    “build_timestamp” : “2016-05-17T15:40:04Z”,

    “build_snapshot” : false,

    “lucene_version” : “5.5.0”

  },

  “tagline” : “You Know, for Search”

}

5.3、ES 插件配置

/home/apps # unzip elasticsearch-head-master.zip

# mv elasticsearch-head-master /usr/local/elasticsearch/plugins/head

在浏览器中输入 http://192.168.1.105:9200/_plugin/head/,出现如图【ELK&kafka1】所示的画面。

离线部署 ELK+Kafka 日志管理系统

ELK&kafka1

marvel 插件的安装

/usr/local/elasticsearch # ./bin/plugininstall file:///home/apps/license-2.3.3.zip

-> Installing fromfile:/home/apps/license-2.3.3.zip…

Trying file:/home/apps/license-2.3.3.zip…

Downloading .DONE

Verifying file:/home/apps/license-2.3.3.zipchecksums if available …

NOTE: Unable to verify checksum fordownloaded plugin (unable to find .sha1 or .md5 file to verify)

Installed license into/usr/local/elasticsearch/plugins/license

/usr/local/elasticsearch # ./bin/plugininstall file:///home/apps/marvel-agent-2.3.3.zip

-> Installing fromfile:/home/apps/marvel-agent-2.3.3.zip…

Tryingfile:/home/apps/marvel-agent-2.3.3.zip …

Downloading ..DONE

Verifyingfile:/home/apps/marvel-agent-2.3.3.zip checksums if available …

NOTE: Unable to verify checksum fordownloaded plugin (unable to find .sha1 or .md5 file to verify)

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@    WARNING: plugin requires additional permissions    @

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

* java.lang.RuntimePermission setFactory

* javax.net.ssl.SSLPermission setHostnameVerifier

Seehttp://docs.Oracle.com/javase/8/docs/technotes/guides/security/permissions.html

for descriptions of what these permissionsallow and the associated risks.

Continue with installation? [y/N]y

Installed marvel-agent into/usr/local/elasticsearch/plugins/marvel-agent

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2017-03/141430p2.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计16997字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中